@@ -264,7 +264,8 @@ def parse_module_file(mod):
264264 if len (mod_name ) >= 6 and mod_name [:6 ] == "paddle" :
265265 fn_splited = os .path .splitext (src_file )
266266 if len (fn_splited ) > 1 and fn_splited [1 ].lower () == ".py" :
267- mod_ast = ast .parse (open (src_file , "r" ).read ())
267+ with open (src_file , "r" ) as f :
268+ mod_ast = ast .parse (f .read ())
268269 for node in mod_ast .body :
269270 short_names = []
270271 if (
@@ -425,16 +426,14 @@ def set_display_attr_of_apis():
425426 set the display attr
426427 """
427428 if os .path .exists (NOT_DISPLAY_DOC_LIST_FILENAME ):
428- display_none_apis = {
429- line .strip () for line in open (NOT_DISPLAY_DOC_LIST_FILENAME , "r" )
430- }
429+ with open (NOT_DISPLAY_DOC_LIST_FILENAME , "r" ) as f :
430+ display_none_apis = {line .strip () for line in f }
431431 else :
432432 logger .warning ("file not exists: %s" , NOT_DISPLAY_DOC_LIST_FILENAME )
433433 display_none_apis = set ()
434434 if os .path .exists (DISPLAY_DOC_LIST_FILENAME ):
435- display_yes_apis = {
436- line .strip () for line in open (DISPLAY_DOC_LIST_FILENAME , "r" )
437- }
435+ with open (DISPLAY_DOC_LIST_FILENAME , "r" ) as f :
436+ display_yes_apis = {line .strip () for line in f }
438437 else :
439438 logger .warning ("file not exists: %s" , DISPLAY_DOC_LIST_FILENAME )
440439 display_yes_apis = set ()
@@ -447,21 +446,17 @@ def set_display_attr_of_apis():
447446 # file the same apis
448447 for id_api in api_info_dict :
449448 all_names = api_info_dict [id_api ]["all_names" ]
450- display_yes = False
451- for n in all_names :
452- if n in display_yes_apis :
453- display_yes = True
454- break
449+ # Check if any name is in display_yes_apis (O(1) lookup with set)
450+ display_yes = any (n in display_yes_apis for n in all_names )
451+
455452 if display_yes :
456453 api_info_dict [id_api ]["display" ] = True
457454 else :
455+ # Check if any name starts with any display_none prefix
458456 display_yes = True
459457 for n in all_names :
460- for dn in display_none_apis :
461- if n .startswith (dn ):
462- display_yes = False
463- break
464- if not display_yes :
458+ if any (n .startswith (dn ) for dn in display_none_apis ):
459+ display_yes = False
465460 break
466461 if not display_yes :
467462 api_info_dict [id_api ]["display" ] = False
@@ -570,17 +565,22 @@ def set_api_sketch():
570565 for api in apis :
571566 all_api_found [f"{ m } .{ api } " ] = False
572567
568+ # Create a reverse mapping from API name to api_info_dict keys for O(1) lookup
569+ name_to_id_map = {}
570+ for id_api , api_info in api_info_dict .items ():
571+ if "all_names" in api_info :
572+ for name in api_info ["all_names" ]:
573+ name_to_id_map [name ] = id_api
574+
575+ # Use the reverse mapping for efficient lookups
573576 for api in all_api_found .keys ():
574- for id_api in api_info_dict .keys ():
575- if ("all_names" in api_info_dict [id_api ]) and (
576- api in api_info_dict [id_api ]["all_names" ]
577- ):
578- all_api_found [api ] = True
579- api_info_dict [id_api ]["in_api_sketch" ] = True
580- if "api_sketch_names" not in api_info_dict [id_api ]:
581- api_info_dict [id_api ]["api_sketch_names" ] = []
582- api_info_dict [id_api ]["api_sketch_names" ].append (api )
583- break
577+ if api in name_to_id_map :
578+ id_api = name_to_id_map [api ]
579+ all_api_found [api ] = True
580+ api_info_dict [id_api ]["in_api_sketch" ] = True
581+ if "api_sketch_names" not in api_info_dict [id_api ]:
582+ api_info_dict [id_api ]["api_sketch_names" ] = []
583+ api_info_dict [id_api ]["api_sketch_names" ].append (api )
584584
585585 api_not_in_dict = [api for api in all_api_found if not all_api_found [api ]]
586586 if api_not_in_dict :
@@ -1114,6 +1114,7 @@ def parse_args():
11141114 check_cn_en_match ()
11151115
11161116 filter_out_object_of_api_info_dict ()
1117- json .dump (api_info_dict , open (jsonfn , "w" ), indent = 4 )
1117+ with open (jsonfn , "w" ) as f :
1118+ json .dump (api_info_dict , f , indent = 4 )
11181119
11191120 logger .info ("done" )
0 commit comments