|
17 | 17 | import multiprocessing |
18 | 18 | import platform |
19 | 19 | import extract_api_from_docs |
| 20 | +from queue import Queue |
20 | 21 | """ |
21 | 22 | generate api_info_dict.json to describe all info about the apis. |
22 | 23 | """ |
@@ -403,77 +404,81 @@ def set_display_attr_of_apis(): |
403 | 404 | logger.info("set {} display to False".format(id_api)) |
404 | 405 |
|
405 | 406 |
|
| 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 | + |
406 | 476 | def set_api_sketch(): |
407 | 477 | """ |
408 | 478 | set the in_api_sktech attr. may replace the set_display_attr_of_apis. |
409 | 479 | """ |
410 | 480 | 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() |
477 | 482 |
|
478 | 483 | alldict = {} |
479 | 484 | for module in modulelist: |
|
0 commit comments