Skip to content

Commit a38aa37

Browse files
authored
get pulbic api list by __all__ of module (#4690)
* get pulbic api list by __all__ of module * get pulbic api list by __all__ of module
1 parent 0c8b6ec commit a38aa37

File tree

2 files changed

+72
-66
lines changed

2 files changed

+72
-66
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
.idea
66
build
77
.vscode
8+
venv/

docs/api/gen_doc.py

Lines changed: 71 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import multiprocessing
1818
import platform
1919
import extract_api_from_docs
20+
from queue import Queue
2021
"""
2122
generate api_info_dict.json to describe all info about the apis.
2223
"""
@@ -403,77 +404,81 @@ def set_display_attr_of_apis():
403404
logger.info("set {} display to False".format(id_api))
404405

405406

407+
def check_module_in_black_list(module_name):
408+
black_module_list = [
409+
'paddle.fluid',
410+
]
411+
for i in black_module_list:
412+
if i in module_name:
413+
return True
414+
return False
415+
416+
417+
def get_all_modules():
418+
"""
419+
get all modules from paddle
420+
:return: module list
421+
"""
422+
module_str_queue = Queue()
423+
module_str_queue.put('paddle')
424+
425+
MODULE_CLS = type(paddle)
426+
module_list = []
427+
while not module_str_queue.empty():
428+
module_name = module_str_queue.get()
429+
try:
430+
module = importlib.import_module(module_name)
431+
module_list.append(module)
432+
for sub_module_str in dir(module):
433+
if sub_module_str.startswith('_'):
434+
continue
435+
full_sub_module_path = '.'.join([module_name, sub_module_str])
436+
sub_module = eval(full_sub_module_path)
437+
if isinstance(sub_module, MODULE_CLS):
438+
module_str_queue.put(full_sub_module_path)
439+
except Exception as e:
440+
continue
441+
442+
return module_list
443+
444+
445+
def get_public_modules():
446+
"""
447+
get public modules from paddle
448+
:return: module list
449+
"""
450+
public_module_list = []
451+
all_modules = get_all_modules()
452+
for module in all_modules:
453+
if check_module_in_black_list(module.__name__):
454+
logger.info('module %s in black module list', module.__name__)
455+
continue
456+
if hasattr(module, '__all__'):
457+
api_in_module = module.__all__
458+
if len(api_in_module) == 0:
459+
logger.info('API in module %s is empty', module.__name__)
460+
continue
461+
public_module_list.append(module)
462+
return public_module_list
463+
464+
465+
def get_api_from_module(module):
466+
"""
467+
get api list from module
468+
:param module: module object
469+
:return: api list
470+
"""
471+
if not hasattr(module, '__all__'):
472+
return []
473+
return module.__all__
474+
475+
406476
def set_api_sketch():
407477
"""
408478
set the in_api_sktech attr. may replace the set_display_attr_of_apis.
409479
"""
410480
global api_info_dict
411-
modulelist = [ #noqa
412-
paddle,
413-
paddle.amp,
414-
paddle.nn,
415-
paddle.nn.functional,
416-
paddle.nn.initializer,
417-
paddle.nn.utils,
418-
paddle.nn.quant.quant_layers,
419-
paddle.static,
420-
paddle.static.nn,
421-
paddle.static.sparsity,
422-
paddle.signal,
423-
paddle.io,
424-
paddle.jit,
425-
paddle.metric,
426-
paddle.distribution,
427-
paddle.distribution.transform,
428-
paddle.distribution.kl,
429-
paddle.optimizer,
430-
paddle.optimizer.lr,
431-
paddle.regularizer,
432-
paddle.text,
433-
paddle.utils,
434-
paddle.utils.download,
435-
paddle.utils.profiler,
436-
paddle.utils.cpp_extension,
437-
paddle.utils.unique_name,
438-
paddle.utils.dlpack,
439-
paddle.sysconfig,
440-
paddle.vision,
441-
paddle.vision.datasets,
442-
paddle.vision.models,
443-
paddle.vision.transforms,
444-
paddle.vision.ops,
445-
paddle.distributed,
446-
paddle.distributed.fleet,
447-
paddle.distributed.fleet.utils,
448-
paddle.distributed.fleet.base.topology,
449-
paddle.distributed.parallel,
450-
paddle.distributed.utils,
451-
paddle.distributed.passes,
452-
paddle.distributed.ps.utils,
453-
paddle.distributed.ps.utils.ps_factory,
454-
paddle.distributed.ps.the_one_ps,
455-
paddle.distributed.sharding,
456-
paddle.callbacks,
457-
paddle.hub,
458-
paddle.autograd,
459-
paddle.incubate,
460-
paddle.incubate.autograd,
461-
paddle.incubate.nn,
462-
paddle.incubate.nn.functional,
463-
paddle.incubate.optimizer,
464-
paddle.incubate.optimizer.functional,
465-
paddle.incubate.operators,
466-
paddle.incubate.operators.resnet_unit,
467-
paddle.inference,
468-
paddle.onnx,
469-
paddle.device,
470-
paddle.device.cuda,
471-
paddle.linalg,
472-
paddle.fft,
473-
paddle.version,
474-
paddle.profiler,
475-
paddle.sparse,
476-
]
481+
modulelist = get_public_modules()
477482

478483
alldict = {}
479484
for module in modulelist:

0 commit comments

Comments
 (0)