U e5dn_ã@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ej dZ ej dZ ej dZ ej dZe efZejZdZdZdZdZd Zd Zd ZiZd d „ZiZdd„Zddd„ZGdd„dƒZGdd„dƒZdd„Ze dk�rz eƒZ!Wne"k �re#dƒYnXdS)éNÚ LOAD_CONSTÚ IMPORT_NAMEÚ STORE_NAMEÚ STORE_GLOBALéééééécCst |g¡ |¡dS©N)ÚpackagePathMapÚ setdefaultÚappend)Z packagenameÚpath©rú$/usr/lib64/python3.8/modulefinder.pyÚAddPackagePath(srcCs |t|<dSr )ÚreplacePackageMap)ZoldnameÚnewnamerrrÚReplacePackage3srcCstjj ¡tjj ||¡}|dkr8tdj|d�|d�‚|jtjjkrVddddt ffS|jtjj krtddddt ffS|j }|j  |¡rždtj |¡ddtffSt|jtjjƒr´t}n)rBÚsrrrÚ__repr__ss   zModule.__repr__)NN)r<Ú __module__Ú __qualname__rCrFrrrrr;ds r;c@sàeZdZd6dd„Zdd„Zdd„Zd d „Zd d „Zd d„Zd7dd„Z d8dd„Z dd„Z dd„Z d9dd„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)<Ú ModuleFinderNrcCsZ|dkrtj}||_i|_i|_||_d|_|dk r8|ng|_|dk rJ|ng|_g|_dS)Nr) ÚsysrÚmodulesÚ badmodulesÚdebugÚindentÚexcludesÚ replace_pathsÚprocessed_paths)rBrrMrOrPrrrrC~szModuleFinder.__init__cGsV||jkrRt|jƒD]}tddd�qt|dd�|D]}tt|ƒdd�q6tƒdS)Nú ú ©Úend)rMÚrangerNÚprintÚrepr)rBÚlevelÚstrÚargsÚiÚargrrrÚmsgŠs  zModuleFinder.msgcGs,|d}||jkr(|jd|_|j|ŽdS©Nrr©rMrNr^©rBr[rYrrrÚmsgin“s  zModuleFinder.msgincGs,|d}||jkr(|jd|_|j|ŽdSr_r`rarrrÚmsgout™s  zModuleFinder.msgoutc CsB| dd|¡t |¡� }ddtf}| d|||¡W5QRXdS)NrÚ run_scriptrrÚ__main__)r^r4r5r.Ú load_module)rBÚpathnameÚfpÚstuffrrrrdŸs  zModuleFinder.run_scriptc CsTtj |¡\}}tj |¡\}}t |¡� }|dtf}| ||||¡W5QRXdS)Nr)r)rÚsplitr6r4r5r.rf)rBrgÚdirrZextrhrirrrÚ load_file¥s   zModuleFinder.load_filerc Cs\| dd||||¡|j||d�}| ||¡\}}| ||¡}|sF|S|jrX| ||¡dS)NrÚ import_hook©rY)r^Údetermine_parentÚfind_head_packageÚ load_tailr>Úensure_fromlist) rBrÚcallerÚfromlistrYÚparentÚqÚtailÚmrrrrm¬s  zModuleFinder.import_hookcCs&| dd||¡|r|dkr,| dd¡dS|j}|dkr¸|jrH|d8}|dkrl|j|}| dd|¡|S| d¡|kr‚tdƒ‚d | d¡d| …¡}|j|}| dd|¡|S|jrÚ|j|}| dd|¡|Sd|k�r|  d¡}|d|…}|j|}| dd|¡|S| dd¡dS) Nérorzdetermine_parent -> Nonerzdetermine_parent ->Ú.zrelative importpath too deep) rbrcr<r>rKÚcountr ÚjoinrjÚrfind)rBrsrYZpnamerur\rrrro·s<          zModuleFinder.determine_parentcCsâ| dd||¡d|kr@| d¡}|d|…}||dd…}n|}d}|r\d|j|f}n|}| |||¡}|rŒ| dd||f¡||fS|rÄ|}d}| |||¡}|rÄ| dd||f¡||fS| dd|¡td |ƒ‚dS) Nryrprzrrú%s.%szfind_head_package ->ú"raise ImportError: No module namedúNo module named )rbÚfindr<Ú import_modulercr )rBrurr\ÚheadrwZqnamervrrrrpÚs.  zModuleFinder.find_head_packagecCsž| dd||¡|}|rŒ| d¡}|dkr2t|ƒ}|d|…||dd…}}d|j|f}| |||¡}|s| dd|¡td|ƒ‚q| dd |¡|S) Nryrqrzrrr~rr€z load_tail ->)rbr�Úlenr<r‚rcr )rBrvrwrxr\rƒZmnamerrrrqõs zModuleFinder.load_tailcCs€| dd|||¡|D]d}|dkrD|sz| |¡}|rz| ||d¡qt||ƒsd|j|f}| |||¡}|std|ƒ‚qdS)NryrrÚ*rr~r€)r^Úfind_all_submodulesrrÚhasattrr<r‚r )rBrxrtÚ recursiveÚsubÚallÚsubnameZsubmodrrrrrs  zModuleFinder.ensure_fromlistc Csð|js dSi}g}|tjjdd…7}|tjjdd…7}|tjjdd…7}|jD]’}zt |¡}Wn&tk rŒ|  dd|¡YqTYnX|D]R}d}|D]0}t |ƒ} || d…|krž|d| …}qÐqž|r’|dkr’|||<q’qT|  ¡S)Nrzcan't list directoryrC) r>rrÚEXTENSION_SUFFIXESÚSOURCE_SUFFIXESÚBYTECODE_SUFFIXESr)ÚlistdirÚOSErrorr^r„Úkeys) rBrxrKÚsuffixesrkÚnamesrÚmodZsuffÚnrrrr†s.    z ModuleFinder.find_all_submodulescCs | dd|||¡z|j|}Wntk r4YnX| dd|¡|S||jkrb| dd¡dS|r€|jdkr€| dd¡dSz| ||o�|j|¡\}}}Wn$tk rÂ| ddd¡YdSXz|  ||||¡}W5|ræ| ¡X|røt |||ƒ| dd|¡|S)Nrr‚zimport_module ->zimport_module -> None) rbrKÚKeyErrorrcrLr>Ú find_moduler ÚcloserfÚsetattr)rBZpartnameÚfqnamerurxrhrgrirrrr‚.s:   ÿ  zModuleFinder.import_modulec Cs(|\}}}| dd||od|¡|tkrF| ||¡}| dd|¡|S|tkr`t| ¡|dƒ} n||tkrØz| ¡} tj   | |i¡Wn:t k r¾} z| ddt | ƒ|¡‚W5d} ~ XYnXt  t| ƒdd…¡} nd} | |¡}||_| �r|j�r| | ¡} | |_| | |¡| dd|¡|S)Nrrfrhzload_module ->Úexeczraise ImportError: é)rbr+Ú load_packagercr.ÚcompileÚreadr2rÚ_bootstrap_externalÚ _classify_pycr rZÚmarshalÚloadsÚ memoryviewÚ add_moduler=rPÚreplace_paths_in_coder?Ú scan_code) rBršrhrgÚ file_infor9ÚmodeÚtyperxÚcoÚdataÚexcrrrrfNs4     zModuleFinder.load_modulecCs<||jkri|j|<|r*d|j||j<nd|j|d<dS)Nrú-)rLr<)rBrrsrrrÚ_add_badmoduleks   zModuleFinder._add_badmodulec CsB||jkr| ||¡dSz|j|||d�Wn~tk rn}z"| ddt|ƒ¡| ||¡W5d}~XYnÐtk r¬}z"| ddt|ƒ¡| ||¡W5d}~XYn’X|�r>|D]„}|d|}||jkrà| ||¡q¸z|j|||g|d�Wq¸tk �r:}z"| ddt|ƒ¡| ||¡W5d}~XYq¸Xq¸dS)Nrnrz ImportError:z SyntaxError:rz)rLr¯rmr r^rZÚ SyntaxError)rBrrsrtrYr^r‰ÚfullnamerrrÚ_safe_import_hookss,     zModuleFinder._safe_import_hookc csô|j}|j}|j}dd„t |¡Dƒ}t|ƒD]À\}\}}|tkrTd||ffVq.|tkr.|dkr.||dd||ddkr�tkr.nq.|||dd} |||dd} | dkrØd| ||ffVq.d| | ||ffVq.q.dS) NcSs"g|]\}}}|tkr||f‘qSr)Ú EXTENDED_ARG)Ú.0Ú_Úopr]rrrÚ ’sÿz-ModuleFinder.scan_opcodes..ÚstorerrrÚabsolute_importÚrelative_import) Úco_codeÚco_namesÚ co_constsÚdisZ_unpack_opargsÚ enumerateÚ STORE_OPSrr) rBr«Úcoder“ÚconstsZopargsr\r¶ZopargrYrtrrrÚ scan_opcodes�s(ÿÿ zModuleFinder.scan_opcodescCsŒ|j}|j}||ƒD�]F\}}|dkr8|\}d|j|<q|dk�r|\}}d} |dk rpd|krbd} dd„|Dƒ}|j|||dd�| �r\d} |jr¨|j |jd |¡} | dkr¼|j |¡} | dk rö|j | j¡|j  | j ¡| j dkrô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| | |¡�qddS) Nr¸rr¹rr…cSsg|]}|dkr|‘qS)r…r)r´Úfrrrr·¯sz*ModuleFinder.scan_code..rnrzrº)r»rÃr@r²r>rKÚgetr<ÚupdaterAr?roÚ RuntimeErrorr½r,rªr§)rBr«rxrÁÚscannerZwhatr[rrtZ have_starZmmrYruÚcrrrr§¢sH          zModuleFinder.scan_codecCsœ| dd||¡t |¡}|r"|}| |¡}||_|g|_|jt |g¡|_| d|j¡\}}}z&|  ||||¡|  dd|¡|W¢S|r–| ¡XdS)Nrr�rCzload_package ->) rbrrÅr¥r=r>r r—r˜rfrc)rBršrgrrxrhZbufrirrrr�Ós  zModuleFinder.load_packagecCs*||jkr|j|St|ƒ|j|<}|Sr )rKr;)rBršrxrrrr¥ès  zModuleFinder.add_modulecCsn|dk r|jd|}n|}||jkr<| dd|¡t|ƒ‚|dkrd|tjkr^ddddtffS|j}t||ƒS)Nrzrzfind_module -> Excludedr) r<rOrcr rJÚbuiltin_module_namesr$rr:)rBrrrur±rrrr—îs  zModuleFinder.find_modulecCstƒtddƒtddƒt|j ¡ƒ}|D]B}|j|}|jrRtddd�n tddd�td||jpnd ƒq0| ¡\}}|rÂtƒtd ƒ|D]*}t|j| ¡ƒ}td |d d  |¡ƒq–|�rtƒtddd�tdƒ|D]*}t|j| ¡ƒ}td |d d  |¡ƒqædS)Nz %-25s %s)ÚNameZFile)ú----rÌÚPrSrTrxz%-25srzMissing modules:ú?z imported fromz, z7Submodules that appear to be missing, but could also bez#global names in the parent package:) rWÚsortedrKr‘r>r=Úany_missing_mayberLr|)rBr‘ÚkeyrxÚmissingÚmayberZmodsrrrÚreports0      zModuleFinder.reportcCs| ¡\}}||Sr )rÐ)rBrÒrÓrrrÚ any_missing"s zModuleFinder.any_missingcCsÔg}g}|jD]¬}||jkrq| d¡}|dkr<| |¡q||dd…}|d|…}|j |¡}|dk r°||j|kr†| |¡qº||jkr’qº|jr¤| |¡qº| |¡q| |¡q| ¡| ¡||fS)Nrzrr) rLrOr}rrKrÅr@rAÚsort)rBrÒrÓrr\r‹ZpkgnameZpkgrrrrÐ*s0            zModuleFinder.any_missing_maybecCsâtj |j¡}}|jD]*\}}| |¡r||t|ƒd…}qDq|jr�||jkr�||krr|  dd||f¡n|  dd|f¡|j  |¡t |j ƒ}t t|ƒƒD](}t||t|ƒƒr¦| ||¡||<q¦|jt|ƒ|d�S)Nrzco_filename %r changed to %rz co_filename %r remains unchanged)r½Ú co_filename)r)rÚnormpathr×rPÚ startswithr„rMrQrcrÚlistr½rVr,rªr¦ÚreplaceÚtuple)rBr«Z new_filenameZoriginal_filenamerÄÚrrÂr\rrrr¦Xs& ÿÿ  z"ModuleFinder.replace_paths_in_code)NrNN)NNr)r)r)r)N)r<rGrHrCr^rbrcrdrlrmrorprqrrr†r‚rfr¯r²rÃr§r�r¥r—rÔrÕrÐr¦rrrrrI|s2   #   1 ".rIc Cs¾ddl}z| tjdd…d¡\}}Wn2|jk rX}zt|ƒWY¢dSd}~XYnXd}d}g}g}|D]Z\}} |dkr†|d}|dkr’d}|dkrª||  tj¡}|dkr¶d}|dkrn| | ¡qn|sÔd } n|d} tj dd…} tj   | ¡| d<|| } |dk�r.td ƒ| D]} td t | ƒƒ�qt | ||ƒ} |dd…D]`}|dk�r\d}�qF|�rš|d d…d k�rŽ|   |dd …ddg¡n |   |¡n |  |¡�qF|  | ¡|  ¡| S)Nrrzdmp:qx:z-dz-mz-pz-qz-xzhello.pyzpath:rRéþÿÿÿz.*r…)ÚgetoptrJÚargvÚerrorrWrjr)Úpathseprrr*rXrIrmrlrdrÔ)rßZoptsr[r^rMZdomodsZaddpathZexcludeÚoÚaZscriptrÚitemÚmfr]rrrÚtestpsX       rçrez [interrupted])N)$r¾Zimportlib._bootstrap_externalrÚimportlib.machineryr¢r)r4rJÚtypesÚwarningsZopmaprrrrrÀr³r3r.r2r0r+r$r&r rrrr:r;rIrçr<ræÚKeyboardInterruptrWrrrrÚsJ     -w;