관리-도구
편집 파일: modulefinder.cpython-39.pyc
a �����DOgQ_����������������������@���s ��d�Z�ddlZddlZddlZddlZddlZddlZddlZej d�Z ej d�Zej d�Zej d�Z ee fZejZdZdZdZd Zd ZdZdZi�Zd d��Zi�Zdd��Zddd�ZG�dd��d�ZG�dd��d�Zdd��Zedk�rz e��Z W�n�e!�y���e"d��Y�n0�dS�)z3Find modules used by a script, using introspection.�����N� LOAD_CONST�IMPORT_NAME� STORE_NAME�STORE_GLOBAL������������������������c�����������������C���s���t��|�g���|��d�S��N)�packagePathMap� setdefault�append)Zpackagename�path��r����$/usr/lib64/python3.9/modulefinder.py�AddPackagePath&���s����r���c�����������������C���s���|t�|�<�d�S�r���)�replacePackageMap)Zoldname�newnamer���r���r����ReplacePackage1���s����r���c�����������������C���s��t�jj����t�jj�|�|�}|du�r8tdj|�d�|�d��|jt�jju�rVddddt ffS�|jt�jj u�rtddddtffS�|j}|j� |��r�dtj�|�ddtffS�t|jt�jj�r�t}n<t|jt�jj�r�t}n&t|jt�jj�r�t}nddddtffS�t�|�}tj�|�d�}|||d|ffS�)zDAn importlib reimplementation of imp.find_module (for our purposes).NzNo module named {name!r})�name������rb)� importlib� machinery� PathFinder�invalidate_caches� find_spec�ImportError�format�loader�BuiltinImporter� _C_BUILTIN�FrozenImporter� _PY_FROZEN�origin� is_package�osr����dirname�_PKG_DIRECTORY� isinstance�SourceFileLoader� _PY_SOURCE�ExtensionFileLoader�_C_EXTENSION�SourcelessFileLoader�_PY_COMPILED� _SEARCH_ERROR�io� open_code�splitext)r���r����specZ file_path�kind�file�suffixr���r���r����_find_module5���s*���� r;���c�������������������@���s���e�Zd�Zddd�Zdd��ZdS�)�ModuleNc�����������������C���s(���||�_�||�_||�_d�|�_i�|�_i�|�_d�S�r���)�__name__�__file__�__path__�__code__�globalnames�starimports)�selfr���r9���r���r���r���r����__init__d���s����zModule.__init__c�����������������C���sL���d|�j�f�}|�jd�ur&|d|�jf��}|�jd�ur@|d|�jf��}|d�}|S�)Nz Module(%rz, %r�))r=���r>���r?���)rC����sr���r���r����__repr__q���s���� zModule.__repr__)NN)r=���� __module__�__qualname__rD���rG���r���r���r���r���r<���b���s��� r<���c�������������������@���s����e�Zd�Zd6dd�Zdd��Zdd��Zd d ��Zdd��Zd d��Zd7dd�Z d8dd�Z dd��Zdd��Zd9dd�Z dd��Zdd��Zdd��Zd d!��Zd:d"d#�Zd$d%��Zd&d'��Zd(d)��Zd*d+��Zd;d,d-�Zd.d/��Zd0d1��Zd2d3��Zd4d5��ZdS�)<�ModuleFinderNr���c�����������������C���sZ���|d�u�rt�j}||�_i�|�_i�|�_||�_d|�_|d�ur8|ng�|�_|d�urJ|ng�|�_g�|�_d�S�)Nr���) �sysr����modules� badmodules�debug�indent�excludes� replace_paths�processed_paths)rC���r���rN���rP���rQ���r���r���r���rD���|���s����zModuleFinder.__init__c�����������������G���sV���||�j�krRt|�j�D�]}tddd��qt|dd��|D�]}tt|�dd��q6t���d�S�)N� � ��end)rN����rangerO����print�repr)rC����level�str�args�i�argr���r���r����msg����s���� zModuleFinder.msgc�����������������G���s,���|d�}||�j�kr(|�jd�|�_|�j|���d�S��Nr���r����rN���rO���r_����rC���r\���rZ���r���r���r����msgin����s���� zModuleFinder.msginc�����������������G���s,���|d�}||�j�kr(|�jd�|�_|�j|���d�S�r`���ra���rb���r���r���r����msgout����s���� zModuleFinder.msgoutc�����������������C���sV���|���dd|��t�|��*}ddtf}|��d|||��W�d�����n1�sH0����Y��d�S�)Nr���� run_scriptr���r����__main__)r_���r4���r5���r.����load_module)rC����pathname�fp�stuffr���r���r���re�������s���� zModuleFinder.run_scriptc�����������������C���sh���t�j�|�\}}t�j�|�\}}t�|��*}|dtf}|��||||��W�d�����n1�sZ0����Y��d�S�)Nr���)r)���r����splitr6���r4���r5���r.���rg���)rC���rh����dirr����extri���rj���r���r���r���� load_file����s ���� zModuleFinder.load_filer���c����������� ������C���s\���|���dd||||��|�j||d�}|��||�\}}|��||�}|sF|S�|jrX|��||��d�S�)Nr����import_hook�rZ���)r_����determine_parent�find_head_package� load_tailr?����ensure_fromlist) rC���r����caller�fromlistrZ����parent�q�tail�mr���r���r���ro�������s����zModuleFinder.import_hookc�����������������C���sN��|���dd||��|r|dkr,|��dd��d�S�|j}|dkr�|jrH|d8�}|dkrx|�j|�}||u�sfJ��|��dd|��|S�|�d�|k�r�td��d�|�d�d�|����}|�j|�}|��dd|��|S�|jr�|�j|�}||u�s�J��|��dd|��|S�d|v��r>|� d�}|d�|��}|�j|�}|j|k�s,J��|��dd|��|S�|��dd��d�S�) N����rq���r���zdetermine_parent -> Noner���zdetermine_parent ->�.zrelative importpath too deep) rc���rd���r=���r?���rL����countr ����joinrk����rfind)rC���ru���rZ���Zpnamerw���r]���r���r���r���rq�������sB���� zModuleFinder.determine_parentc�����������������C���s����|���dd||��d|v�r@|�d�}|d�|��}||d�d���}n|}d}|r\d|j|f�}n|}|��|||�}|r�|��dd||f��||fS�|r�|}d�}|��|||�}|r�|��dd||f��||fS�|��dd|��td |���d�S�) Nr{���rr���r|���r���r����%s.%szfind_head_package ->�"raise ImportError: No module named�No module named )rc����findr=���� import_modulerd���r ���)rC���rw���r���r]����headry���Zqnamerx���r���r���r���rr�������s.���� zModuleFinder.find_head_packagec�����������������C���s����|���dd||��|}|r�|�d�}|dk�r2t|�}|d�|��||d�d����}}d|j|f�}|��|||�}|s|��dd|��td|���q|��dd |��|S�) Nr{���rs���r|���r���r���r����r����r����zload_tail ->)rc���r�����lenr=���r����rd���r ���)rC���rx���ry���rz���r]���r����Zmnamer���r���r���rs�������s���� zModuleFinder.load_tailc�����������������C���s����|���dd|||��|D�]d}|dkrD|sz|��|�}|rz|��||d��qt||�sd|j|f�}|��|||�}|std|���qd�S�)Nr{���rt����*r���r����r����)r_����find_all_submodulesrt����hasattrr=���r����r ���)rC���rz���rv���� recursive�sub�all�subnameZsubmodr���r���r���rt�����s���� zModuleFinder.ensure_fromlistc����������� ��� ���C���s����|j�s d�S�i�}g�}|tjjd�d���7�}|tjjd�d���7�}|tjjd�d���7�}|j�D�]�}zt�|�}W�n$�ty����|�� dd|��Y�qTY�n0�|D�]R}d�}|D�]0}t |�} || �d���|kr�|d�| ���}�q�q�|r�|dkr�|||<�q�qT|���S�)Nr���zcan't list directoryrD���)r?���r���r����EXTENSION_SUFFIXES�SOURCE_SUFFIXES�BYTECODE_SUFFIXESr)����listdir�OSErrorr_���r�����keys) rC���rz���rL����suffixesrl����namesr����modZsuff�nr���r���r���r������s.���� z ModuleFinder.find_all_submodulesc�����������������C���s��|���dd|||��z|�j|�}W�n�ty2���Y�n0�|��dd|��|S�||�jv�r`|��dd��d�S�|r~|jd�u�r~|��dd��d�S�z|��||o�|j|�\}}}W�n"�ty����|��ddd���Y�d�S�0�z |��||||�}W�|r�|� ���n|r�|� ���0�|�rt |||��|��dd|��|S�)Nr���r����zimport_module ->zimport_module -> None)rc���rL����KeyErrorrd���rM���r?����find_moduler ���rg����close�setattr)rC���Zpartname�fqnamerw���rz���ri���rh���rj���r���r���r���r����,��s<���� � � zModuleFinder.import_modulec�������������� ���C���s*��|\}}}|���dd||od|��|tkrF|��||�}|��dd|��|S�|tkr`t|���|d�} n~|tkr�z|���} tj � | |i���W�n<�ty��}�z$|��ddt|��|����W�Y�d�}~n d�}~0�0�t �t| �dd����} nd�} |��|�}||_| �r|�j�r|��| �} | |_|��| |��|��dd|��|S�)Nr���rg���ri���zload_module ->�execzraise ImportError: ����)rc���r+����load_packagerd���r.����compile�readr2���r����_bootstrap_external� _classify_pycr ���r[����marshal�loads� memoryview� add_moduler>���rQ����replace_paths_in_coder@���� scan_code)rC���r����ri���rh���� file_infor:����mode�typerz����co�data�excr���r���r���rg���L��s4���� zModuleFinder.load_modulec�����������������C���s<���||�j�vri�|�j�|<�|r*d|�j�|�|j<�nd|�j�|�d<�d�S�)Nr����-)rM���r=���)rC���r���ru���r���r���r����_add_badmodulei��s ���� zModuleFinder._add_badmodulec�����������������C���sH��||�j�v�r|��||��d�S�z|�j|||d��W�n��typ�}�z*|��ddt|���|��||��W�Y�d�}~n�d�}~0��ty��}�z*|��ddt|���|��||��W�Y�d�}~n�d�}~0�0�|�rD|D�]�}|d�|�}||�j�v�r�|��||��q�z|�j|||g|d��W�q��t�y@�}�z*|��ddt|���|��||��W�Y�d�}~q�d�}~0�0�q�d�S�)Nrp���r���zImportError:zSyntaxError:r|���)rM���r����ro���r ���r_���r[����SyntaxError)rC���r���ru���rv���rZ���r_���r�����fullnamer���r���r����_safe_import_hookq��s,���� " zModuleFinder._safe_import_hookc�����������������c���s����|j�}|j}|j}dd��t�|�D��}t|�D�]�\}\}}|tv�rTd||�ffV��q.|tkr.|dkr.||d��d�||d��d���kr�tkr.n�q.|||d��d��} |||d��d��} | dkr�d| ||�ffV��q.d| | ||�ffV��q.q.d�S�) Nc�����������������S���s"���g�|�]\}}}|t�kr||f�qS�r���)�EXTENDED_ARG)�.0�_�opr^���r���r���r���� <listcomp>���s����z-ModuleFinder.scan_opcodes.<locals>.<listcomp>�storer���r���r����absolute_import�relative_import) �co_code�co_names� co_consts�disZ_unpack_opargs� enumerate� STORE_OPSr���r���)rC���r�����coder�����constsZopargsr]���r����ZopargrZ���rv���r���r���r����scan_opcodes���s&������ zModuleFinder.scan_opcodesc�����������������C���s���|j�}|�j}||�D��]F\}}|dkr8|\}d|j|<�q|dk�r|\}}d} |d�urpd|v�rbd} dd��|D��}|�j|||dd��| �r\d�} |jr�|�j�|jd �|��} | d�u�r�|�j�|�} | d�ur�|j�| j��|j �| j ��| j d�u�r�d|j |<�n d|j |<�q|d k�rT|\}}}|�r0|�j||||d��n"|�j||d�}|�j|jd�|dd��qt|��q|j D�]"} t| t|���rd|��| |���qdd�S�)Nr����r���r����r���r����c�����������������S���s���g�|�]}|d�kr|�qS�)r����r���)r�����fr���r���r���r������������z*ModuleFinder.scan_code.<locals>.<listcomp>rp���r|���r����)r����r����rA���r����r?���rL����getr=����updaterB���r@���rq����RuntimeErrorr����r,���r����r����)rC���r����rz���r�����scannerZwhatr\���r���rv���Z have_starZmmrZ���rw����cr���r���r���r�������sH���� zModuleFinder.scan_codec�����������������C���s����|���dd||��t�|�}|r"|}|��|�}||_|g|_|jt�|g���|_|��d|j�\}}}z2|��||||��|�� dd|��|W�|r�|� ���S�n|r�|� ���0�d�S�)Nr���r����rD���zload_package ->)rc���r���r����r����r>���r?���r ���r����rg���rd���r����)rC���r����rh���r���rz���ri����bufrj���r���r���r���r�������s(���� ���zModuleFinder.load_packagec�����������������C���s*���||�j�v�r|�j�|�S�t|��|�j�|<�}|S�r���)rL���r<���)rC���r����rz���r���r���r���r�������s���� zModuleFinder.add_modulec�����������������C���sn���|d�ur|j�d�|�}n|}||�jv�r<|��dd|��t|��|d�u�rd|tjv�r^d�d�ddtffS�|�j}t||�S�)Nr|���r���zfind_module -> Excludedr���) r=���rP���rd���r ���rK����builtin_module_namesr$���r���r;���)rC���r���r���rw���r����r���r���r���r�������s���� zModuleFinder.find_modulec�����������������C���s��t����t�dd���t�dd���t|�j����}|D�]B}|�j|�}|jrRt�ddd��nt�ddd��t�d|�|jpnd ��q0|����\}}|r�t����t�d ��|D�]*}t|�j|�����}t�d|dd �|���q�|�rt����t�ddd��t�d��|D�]*}t|�j|�����}t�d|dd �|���q�dS�)z�Print a report to stdout, listing the found modules with their paths, as well as modules that are missing, or seem to be missing. z %-25s %s)�NameZFile)�----r�����PrT���rU���rz���z%-25sr���zMissing modules:�?z imported fromz, z7Submodules that appear to be missing, but could also bez#global names in the parent package:N) rX����sortedrL���r����r?���r>����any_missing_mayberM���r~���)rC���r�����keyrz����missing�mayber���Zmodsr���r���r����report���s0���� zModuleFinder.reportc�����������������C���s���|�����\}}||�S�)z�Return a list of modules that appear to be missing. Use any_missing_maybe() if you want to know which modules are certain to be missing, and which *may* be missing. )r����)rC���r����r����r���r���r����any_missing ��s����zModuleFinder.any_missingc�����������������C���s����g�}g�}|�j�D�]�}||�jv�rq|�d�}|dk�r<|�|��q||d�d��}|d|��}|�j�|�}|dur�||�j�|�v�r�|�|��q�||jv�r�q�|jr�|�|��q�|�|��q|�|��q|����|����||fS�)a���Return two lists, one with modules that are certainly missing and one with modules that *may* be missing. The latter names could either be submodules *or* just global names in the package. The reason it can't always be determined is that it's impossible to tell which names are imported when "from module import *" is done with an extension module, short of actually importing it. r|���r���r���N) rM���rP���r���r���rL���r����rA���rB����sort)rC���r����r����r���r]���r����Zpkgname�pkgr���r���r���r����(��s0���� zModuleFinder.any_missing_maybec�����������������C���s����t�j�|j��}}|�jD�]*\}}|�|�r||t|�d����}�qDq|�jr�||�jvr�||krr|�� dd||f���n|�� dd|f���|�j� |��t|j�}t t|��D�](}t||�t|��r�|��||��||<�q�|jt|�|d�S�)Nr���zco_filename %r changed to %rz co_filename %r remains unchanged)r�����co_filename)r)���r����normpathr����rQ���� startswithr����rN���rR���rd���r����listr����rW���r,���r����r�����replace�tuple)rC���r����Znew_filenameZoriginal_filenamer�����rr����r]���r���r���r���r����V��s&���� �� z"ModuleFinder.replace_paths_in_code)Nr���NN)NNr���)r���)r���)r���)N)r=���rH���rI���rD���r_���rc���rd���re���rn���ro���rq���rr���rs���rt���r����r����rg���r����r����r����r����r����r����r����r����r����r����r����r���r���r���r���rJ���z���s2��� # 1 ".rJ���c��������������� ���C���s���dd�l�}�z|���tjdd���d�\}}W�n0�|�jyV�}�zt|��W�Y�d�}~d�S�d�}~0�0�d}d}g�}g�}|D�]Z\}} |dkr�|d�}|dkr�d}|dkr�|| �tj��}|dkr�d}|dkrl|�| ��ql|s�d } n|d�} tj d�d���}tj � | �|d<�||�}|dk�r,td ��|D�]}tdt|����qt|||�} |dd���D�]`}|dk�rZd}�qD|�r�|dd���d k�r�| � |d�d��d�dg��n | � |��n | �|���qD| �| ��| ����| S�)Nr���r���zdmp:qx:z-dz-mz-pz-qz-xzhello.pyzpath:rS������z.*r����)�getoptrK����argv�errorrX���rk���r)����pathsepr���r���r*���rY���rJ���ro���rn���re���r����)r����Zoptsr\���r_���rN���ZdomodsZaddpathZexclude�o�aZscriptr����item�mfr^���r���r���r����testn��sX���� r����rf���z [interrupted])N)#�__doc__r����Zimportlib._bootstrap_externalr����importlib.machineryr����r)���r4���rK���Zopmapr���r���r���r���r����r����r3���r.���r2���r0���r+���r$���r&���r ���r���r���r���r;���r<���rJ���r����r=���r�����KeyboardInterruptrX���r���r���r���r����<module>���sH��� -���w;