66import pathlib
77import shutil
88from collections import defaultdict
9+ from typing import List
910
1011from utils import get_valid_contributions
1112
@@ -45,6 +46,40 @@ def read_contribs_text(filepath):
4546 return contribs_list
4647
4748
49+ def preprocess_contributions () -> List :
50+ all_contributions = get_valid_contributions ()
51+
52+ # sort contributions list by type
53+ def sort_key (d ):
54+ return type_list .index (d ['type' ])
55+ all_contributions = sorted (all_contributions , key = sort_key )
56+
57+ return all_contributions
58+
59+
60+ def write_contribs (all_contributions , fh ):
61+ for contribution in all_contributions :
62+ fh .write (contribution ['type' ] + '\n ' )
63+ for field in contribs_fields_list :
64+ if field in contribution :
65+ if field == 'id' :
66+ fh .write (f'{ field } ={ contribution [field ]:03} \n ' )
67+ elif field == 'categories' :
68+ if contribution ['type' ] == 'library' :
69+ fh .write (f'{ field } ={ "," .join (contribution [field ]) if contribution [field ] else "" } \n ' )
70+ else :
71+ # categories are only relevant for libraries, except for examples with "Books" as category
72+ if contribution [field ] and 'Books' in contribution [field ]:
73+ fh .write (f'{ field } ={ "," .join (contribution [field ]) if contribution [field ] else "" } \n ' )
74+ else :
75+ fh .write (f'{ field } =\n ' )
76+ elif field == 'compatibleModesList' :
77+ fh .write (f'modes={ contribution [field ]} \n ' )
78+ else :
79+ fh .write (f'{ field } ={ "" if contribution [field ] is None else contribution [field ]} \n ' )
80+ fh .write ('\n ' )
81+
82+
4883if __name__ == "__main__" :
4984 pde_folder = pathlib .Path (__file__ ).parent .parent / 'pde/'
5085 # remove sources folder if it already exists
@@ -54,34 +89,10 @@ def read_contribs_text(filepath):
5489
5590 contribs_text_file = pde_folder / 'contribs.txt'
5691
57- contributions_list = get_valid_contributions ()
58-
59- # sort contributions list by type
60- def sort_key (d ):
61- return type_list .index (d ['type' ])
62- contributions_list = sorted (contributions_list , key = sort_key )
92+ contributions_list = preprocess_contributions ()
6393
6494 # write contribs.txt file
6595 with open (contribs_text_file , 'w+' ) as f :
66- for contribution in contributions_list :
67- f .write (contribution ['type' ]+ '\n ' )
68- for field in contribs_fields_list :
69- if field in contribution :
70- if field == 'id' :
71- f .write (f'{ field } ={ contribution [field ]:03} \n ' )
72- elif field == 'categories' :
73- if contribution ['type' ] == 'library' :
74- f .write (f'{ field } ={ "," .join (contribution [field ]) if contribution [field ] else "" } \n ' )
75- else :
76- # categories are only relevant for libraries, except for examples with "Books" as category
77- if contribution [field ] and 'Books' in contribution [field ]:
78- f .write (f'{ field } ={ "," .join (contribution [field ]) if contribution [field ] else "" } \n ' )
79- else :
80- f .write (f'{ field } =\n ' )
81- elif field == 'compatibleModesList' :
82- f .write (f'modes={ contribution [field ]} \n ' )
83- else :
84- f .write (f'{ field } ={ "" if contribution [field ] is None else contribution [field ]} \n ' )
85- f .write ('\n ' )
96+ write_contribs (contributions_list , f )
8697
8798
0 commit comments