$ pydoc "module/class/function name"как результат будет получено описание по модулю, классу или функции (см. примечание к посту ниже).
Наибольший интерес представляет возможность анализа программы другой программой. В рамках проекта pyflowctrl это может быть очень полезной функциональностью, когда менеджер процессов ProcessFlow получает информации о процессах и осуществляет соединение на основании характеристик входных/выходных потоков.
Процесс PyMetaInfo позволяет провести анализ кода переданного имени модуля и вернуть метаданные в виде словаря. Пример использования процесса приведен в коде examples/pymetainfo1.py. На вход процесса передается пакет, содержащий имя модуля packet.module:
$ python examples/pymetainfo1.py pyflowctrl
{'__namespaces': {},
'meta': {'data': [('__author__', 'Andrey Usov ')],
'description': 'Python Flow Control Library ',
'module_packages': ['core4 (package)',
'examples (package)',
'libs (package)',
'processes (package)',
'streams (package)'],
'name': 'pyflowctrl',
'submodules': [('core4',
)],
'type': },
'module': 'pyflowctrl'}
На выходе получаем пакет с метаданными о библиотете. Пример вывода информации о процессе: $ python examples/pymetainfo1.py pyflowctrl.core4.processes.pymetainfo1.PyMetaInfo
{'__namespaces': {},
'meta': {'based_on': (,),
'classes': [('__class__', , )],
'data': [('__dict__',
dict_proxy({'__module__': 'pyflowctrl.core4.processes.pymetainfo1', 'get_elements': , 'get_classes': , 'get_modpkgs': , 'get_metadata': , 'main': , '__doc__': ' Extact metadata information about module/class ', '__init__': })),
('__weakref__',
)],
'description': 'Extact metadata information about module/class ',
'funcs': [('__delattr__',
),
. . .
('get_classes', ),
('get_elements',
),
('get_metadata',
),
('get_modpkgs', ),
('main', ),
('run_once', )],
'name': 'PyMetaInfo',
'type': },
'module': 'pyflowctrl.core4.processes.pymetainfo1.PyMetaInfo'}
Информация в выводе достаточно избыточна для работы pyflowctrl, отсутствует информация о потоках. Так как потоки создаются в __init__(), провести анализ содержимого объекта без его создания не получится. Необходимо пересмотреть принципы создания процессов для того, что бы существовала возможность получения информации о потоках без создания самого процесса.Примечание: документация в python формируется автоматически на основании анализа кода объекта. При вызове pydoc выполняет импорт кода и проводит анализ его структуры, извлекает документацию.




0 комментариев:
Отправить комментарий