2222#
2323
2424import re
25+ import sys
26+
27+ sys .path .append ("../docs" )
28+
2529from shared_bindings_matrix import support_matrix_by_board
2630
2731
@@ -34,15 +38,16 @@ def module_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent=
3438 row = 0
3539 for board , info in support_matrix .items ():
3640 if (row % rows ) == 0 :
37- csv = ["board,branded_name,mcu,flash,port,pins," +
38- ',' .join (all_modules ) + '\n ' ]
41+ csv = ["board,branded_name,mcu,flash,port,pins," + "," .join (all_modules ) + "\n " ]
3942 chip_pin_set = set ([chip_pin for _ , chip_pin in info ["pins" ]])
4043 n_chip_pins = len (chip_pin_set )
41- module_incidence = [present if m in info ["modules" ]
42- else absent for m in all_modules ]
43- line = f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ," + \
44- f"{ info .get ('flash' )} ,{ info .get ('port' )} ,{ n_chip_pins } ," + \
45- ',' .join (module_incidence ) + '\n '
44+ module_incidence = [present if m in info ["modules" ] else absent for m in all_modules ]
45+ line = (
46+ f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ,"
47+ + f"{ info .get ('flash' )} ,{ info .get ('port' )} ,{ n_chip_pins } ,"
48+ + "," .join (module_incidence )
49+ + "\n "
50+ )
4651 csv .append (line )
4752 row += 1
4853 if (row % rows ) == 0 :
@@ -63,8 +68,7 @@ def frozen_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent=
6368 row = 0
6469 for board , info in support_matrix .items ():
6570 if (row % rows ) == 0 :
66- csv = ["board,branded_name,mcu,flash,port,pins," +
67- "," .join (all_frozen ) + "\n " ]
71+ csv = ["board,branded_name,mcu,flash,port,pins," + "," .join (all_frozen ) + "\n " ]
6872 # remove urls if present
6973 frozen = info ["frozen_libraries" ]
7074
@@ -73,9 +77,12 @@ def frozen_incidence_matrix_csvs(support_matrix, rows=1000, present="1", absent=
7377
7478 frozen = [f [0 ] if type (f ) == tuple else f for f in frozen ]
7579 frozen_incidence = [present if f in frozen else absent for f in all_frozen ]
76- line = f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ," + \
77- f"{ info .get ('flash' )} ,{ info .get ('port' )} ,{ n_chip_pins } ," + \
78- "," .join (frozen_incidence ) + '\n '
80+ line = (
81+ f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ,"
82+ + f"{ info .get ('flash' )} ,{ info .get ('port' )} ,{ n_chip_pins } ,"
83+ + "," .join (frozen_incidence )
84+ + "\n "
85+ )
7986 csv .append (line )
8087 row += 1
8188 if (row % rows ) == 0 :
@@ -91,19 +98,20 @@ def summarize_pins(pins):
9198 summarizing the names in the list"""
9299 pin_prefixes = {}
93100 for p in pins :
94- match = re .match (r' ^(.*?)(\d*)$' , p )
101+ match = re .match (r" ^(.*?)(\d*)$" , p )
95102 if match :
96103 prefix = match .group (1 )
97104 n_str = match .group (2 )
98105 else :
99106 raise ValueError ("Cannot parse pin name" )
100- if prefix in pin_prefixes :
107+ if prefix in pin_prefixes :
101108 pin_prefixes [prefix ].add (n_str )
102109 else :
103110 pin_prefixes [prefix ] = {n_str }
104111
105- return ', ' .join ([f"{ prefix } { span_string (pin_prefixes [prefix ])} "
106- for prefix in sorted (pin_prefixes .keys ())])
112+ return ", " .join (
113+ [f"{ prefix } { span_string (pin_prefixes [prefix ])} " for prefix in sorted (pin_prefixes .keys ())]
114+ )
107115
108116
109117def int_or_zero (s ):
@@ -141,14 +149,24 @@ def board_pins_matrix_csvs(support_matrix, rows=1000):
141149 row = 0
142150 for board , info in support_matrix .items ():
143151 if (row % rows ) == 0 :
144- csv = ["board,branded_name,mcu,flash,port,n_board_pins,"
145- "board_pins,n_chip_pins,chip_pins\n " ]
152+ csv = [
153+ "board,branded_name,mcu,flash,port,n_board_pins,"
154+ "board_pins,n_chip_pins,chip_pins\n "
155+ ]
146156 board_pins = [board_pin for board_pin , _ in info ["pins" ]]
147157 chip_pins = [chip_pin for _ , chip_pin in info ["pins" ]]
148- line = f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ," + \
149- f"{ info .get ('flash' )} ,{ info .get ('port' )} ," + \
150- str (len (set (board_pins ))) + ',"' + summarize_pins (board_pins ) + '",' + \
151- str (len (set (chip_pins ))) + ',"' + summarize_pins (chip_pins ) + '"\n '
158+ line = (
159+ f"{ board } ,{ info .get ('branded_name' )} ,{ info .get ('mcu' )} ,"
160+ + f"{ info .get ('flash' )} ,{ info .get ('port' )} ,"
161+ + str (len (set (board_pins )))
162+ + ',"'
163+ + summarize_pins (board_pins )
164+ + '",'
165+ + str (len (set (chip_pins )))
166+ + ',"'
167+ + summarize_pins (chip_pins )
168+ + '"\n '
169+ )
152170 csv .append (line )
153171 row += 1
154172 if (row % rows ) == 0 :
@@ -159,19 +177,19 @@ def board_pins_matrix_csvs(support_matrix, rows=1000):
159177
160178
161179def write_csvs (rows = 1000 , present = "1" , absent = "0" ):
162- print (' generating csvs...' )
163- s = support_matrix_by_board (use_branded_name = False , add_port = True ,
164- add_chips = True , add_pins = True ,
165- add_branded_name = True )
166- csvs = {"modules" : module_incidence_matrix_csvs ( s , rows = rows ,
167- present = present , absent = absent ),
168- "frozen" : frozen_incidence_matrix_csvs (s , rows = rows ,
169- present = present , absent = absent ),
170- "pins" : board_pins_matrix_csvs ( s , rows = rows ) }
180+ print (" generating csvs..." )
181+ s = support_matrix_by_board (
182+ use_branded_name = False , add_port = True , add_chips = True , add_pins = True , add_branded_name = True
183+ )
184+ csvs = {
185+ "modules" : module_incidence_matrix_csvs ( s , rows = rows , present = present , absent = absent ),
186+ "frozen" : frozen_incidence_matrix_csvs (s , rows = rows , present = present , absent = absent ) ,
187+ "pins" : board_pins_matrix_csvs ( s , rows = rows ),
188+ }
171189 for key in csvs :
172190 for i in range (len (csvs [key ])):
173191 filename = f"{ key } _{ i } .csv"
174- print (f' writing { filename } ' )
192+ print (f" writing { filename } " )
175193 with open (filename , "w" ) as f :
176194 f .writelines (csvs [key ][i ])
177195
0 commit comments