3434import hashlib
3535import json
3636import os
37+ import re
3738import subprocess as sp # nosec B404
3839import sys
3940
@@ -101,7 +102,9 @@ def get_inputs(specs_wf: dict, device=""):
101102 if device and dev ["name" ] != device :
102103 continue
103104 list_inputs += [
104- format_table_name (i ["description" ], i ["subspec" ], i ["origin" ]) for i in dev ["inputs" ] if i ["origin" ].startswith ("AOD" )
105+ format_table_name (i ["description" ], i ["subspec" ], i ["origin" ])
106+ for i in dev ["inputs" ]
107+ if i ["origin" ].startswith ("AOD" )
105108 ]
106109 return list (dict .fromkeys (list_inputs )) # Remove duplicities
107110
@@ -115,7 +118,9 @@ def get_outputs(specs_wf: dict, device=""):
115118 if device and dev ["name" ] != device :
116119 continue
117120 list_outputs += [
118- format_table_name (i ["description" ], i ["subspec" ], i ["origin" ]) for i in dev ["outputs" ] if i ["origin" ].startswith ("AOD" )
121+ format_table_name (i ["description" ], i ["subspec" ], i ["origin" ])
122+ for i in dev ["outputs" ]
123+ if i ["origin" ].startswith ("AOD" )
119124 ]
120125 return list (dict .fromkeys (list_outputs )) # Remove duplicities
121126
@@ -229,7 +234,7 @@ def get_tree_for_table(tab: str, dic_wf_all: dict, dic_wf_tree=None, case_sensit
229234 for p in producers :
230235 get_tree_for_workflow (p , dic_wf_all , dic_wf_tree , case_sensitive , 0 , levels_max , reverse )
231236 else :
232- print (f' No { " consumers" if reverse else " producers" } found' )
237+ print (f" No { ' consumers' if reverse else ' producers' } found" )
233238 return dic_wf_tree
234239
235240
@@ -272,7 +277,7 @@ def main():
272277 dest = "exclude" ,
273278 type = str ,
274279 nargs = "+" ,
275- help = "tables and workflows to exclude" ,
280+ help = "name patterns of tables and workflows to exclude" ,
276281 )
277282 parser .add_argument (
278283 "-l" ,
@@ -299,7 +304,7 @@ def main():
299304 dic_wf_all_simple = {}
300305 for wf , dic_wf in dic_wf_all_full .items ():
301306 # Skip excluded workflows
302- if list_exclude and wf in list_exclude :
307+ if list_exclude and any ( re . search ( pattern , wf ) for pattern in list_exclude ) :
303308 continue
304309 dic_wf_all_simple [wf ] = {}
305310 list_dev = get_devices (dic_wf )
@@ -309,8 +314,8 @@ def main():
309314 list_outputs = get_outputs (dic_wf , dev )
310315 # Skip excluded tables
311316 if list_exclude :
312- list_inputs = [i for i in list_inputs if i not in list_exclude ]
313- list_outputs = [o for o in list_outputs if o not in list_exclude ]
317+ list_inputs = [i for i in list_inputs if not any ( re . search ( pattern , i ) for pattern in list_exclude ) ]
318+ list_outputs = [o for o in list_outputs if not any ( re . search ( pattern , o ) for pattern in list_exclude ) ]
314319 dic_wf_all_simple [wf ][dev ]["inputs" ] = list_inputs
315320 dic_wf_all_simple [wf ][dev ]["outputs" ] = list_outputs
316321 # print_workflows(dic_wf_all_simple)
0 commit comments