Ñò §ÚêLc @s’dZddklZddkZddkZddkZddkZddkZddkZddk Z e ei dƒo dZ ndZ e eiidƒƒZe eiidƒƒZe eiid ƒƒZe eiid ƒƒZeegZe eiƒZhZd „ZhZd „Zd fd„ƒYZdfd„ƒYZd„Zedjo,y eƒZWnej o dGHnXndS(s3Find modules used by a script, using introspection.iÿÿÿÿ(t generatorsNtnewlinestUtrt LOAD_CONSTt IMPORT_NAMEt STORE_NAMEt STORE_GLOBALcCs-ti|gƒ}|i|ƒ|t|tdirRtextR?R@((s$/usr/lib64/python2.6/modulefinder.pyt load_filets iÿÿÿÿc Cs‰|idd||||ƒ|i|d|ƒ}|i||ƒ\}}|i||ƒ}|p|S|io|i||ƒndS(Nit import_hookR.(R3tdetermine_parenttfind_head_packaget load_tailRtensure_fromlistR( RRtcallertfromlistR.tparenttqttailtm((s$/usr/lib64/python2.6/modulefinder.pyRG{s cCs“|idd||ƒ| p |djo|iddƒdS|i}|djo¯|io|d8}n|djo%|i|}|idd|ƒ|S|idƒ|jo td‚ndi|i dƒ| ƒ}|i|}|idd|ƒ|S|io%|i|}|idd|ƒ|Sd|jo>|i dƒ}|| }|i|}|idd|ƒ|S|iddƒdS( NiRHisdetermine_parent -> Noneisdetermine_parent ->t.srelative importpath too deep( R4R5RRRR%tcountt ImportErrortjoinRBtrfind(RRLR.tpnameRNR1((s$/usr/lib64/python2.6/modulefinder.pyRH†s<            cCs9|idd||ƒd|jo+|idƒ}|| }||d}n |}d}|od|i|f}n|}|i|||ƒ}|o$|idd||fƒ||fS|oP|}d}|i|||ƒ}|o$|idd||fƒ||fSn|idd|ƒtd |‚dS( NiRIRRiR7s%s.%ssfind_head_package ->s"raise ImportError: No module namedsNo module named (R4tfindRt import_moduleR5RRT(RRNRR1theadRPtqnameRO((s$/usr/lib64/python2.6/modulefinder.pyRI©s.   cCsÚ|idd||ƒ|}x¤|oœ|idƒ}|djot|ƒ}n|| ||d}}d|i|f}|i|||ƒ}|p$|idd|ƒtd|‚qqW|idd |ƒ|S( NiRJRRiis%s.%ss"raise ImportError: No module namedsNo module named s load_tail ->(R4RXtlenRRYR5RT(RRORPRQR1RZtmname((s$/usr/lib64/python2.6/modulefinder.pyRJÄs cCsË|idd|||ƒx«|D]£}|djo<|p1|i|ƒ}|o|i||dƒqkqÃq t||ƒpDd|i|f}|i|||ƒ}|ptd|‚qÃq q WdS(NiRKt*is%s.%ssNo module named (R3tfind_all_submodulesRKthasattrRRYRT(RRQRMt recursivetsubtalltsubnametsubmod((s$/usr/lib64/python2.6/modulefinder.pyRKÓs c Cs|ipdSh}g}x%tiƒD]}|i|dƒq(WxË|iD]À}yti|ƒ}Wn,tij o|idd|ƒqMnXxu|D]m}d}x<|D]4} t | ƒ} || | jo|| }Pq¯q¯W|o|djo|||simport_module -> None( R4R%tKeyErrorR5R&RRt find_moduleRTR=tclosetsetattr(RtpartnametfqnameRNRQR?R>R@((s$/usr/lib64/python2.6/modulefinder.pyRYüs6 #c Cs|\}}}|idd||od|ƒ|tijo*|i||ƒ}|idd|ƒ|S|tijo t|iƒd|dƒ} nw|tijo`|idƒti ƒjo$|idd|ƒt d |‚n|idƒt i |ƒ} nd} |i|ƒ}||_| o:|io|i| ƒ} n| |_|i| |ƒn|idd|ƒ|S( NiR=R?sload_module ->s texecis#raise ImportError: Bad magic numbersBad magic number in %s(R4R;t PKG_DIRECTORYt load_packageR5R<tcompiletreadt PY_COMPILEDt get_magicRTtmarshaltloadRt add_moduleRR*treplace_paths_in_codeRt scan_code( RRuR?R>t file_infotsuffixtmodettypeRQtco((s$/usr/lib64/python2.6/modulefinder.pyR=s0      cCsU||ijoh|i|tj o2}|iddt|ƒƒ|i||ƒn´X|o«x¨|D]œ}||ijo|i||ƒqŽny |i|||gd|ƒWqŽtj o@}|iddt|ƒƒ|d|}|i||ƒqŽXqŽWndS(NR.is ImportError:RR(R&RˆRGRTR3R/(RRRLRMR.R3Rbtfullname((s$/usr/lib64/python2.6/modulefinder.pyt_safe_import_hook=s( c cs|i}|i}|i}xå|oÝ|d}|tjo<|d|dd!ƒ\}d||ffV|d}qn|tjoT|dtjoC|d|d ƒ\}} d|||| ffV|d}qn|tjo|d}q|d}qWdS( Nis( R4RR RRRRRqR=R5(RRuR>RRQR?tbufR@((s$/usr/lib64/python2.6/modulefinder.pyRxÁs   cCs7||ijo |i|St|ƒ|i|<}|S(N(R%R(RRuRQ((s$/usr/lib64/python2.6/modulefinder.pyRÒs cCs¬|dj o|id|}n|}||ijo |idd|ƒt|‚n|djo7|tijoddddtiffS|i }nti ||ƒS(NRRisfind_module -> ExcludedR7( RRR)R5RTR$tbuiltin_module_namesR;t C_BUILTINR Rq(RRR RNR‰((s$/usr/lib64/python2.6/modulefinder.pyRqØs    cCsCHddGHddGH|iiƒ}|iƒxH|D]@}|i|}|iodGndGd|G|ipdGHq3W|iƒ\}}|oRHd GHxI|D]=}|i|iƒ}|iƒd G|Gd Gd i|ƒGHqWn|oVHd GdGHxI|D]=}|i|iƒ}|iƒd G|Gd Gd i|ƒGHqúWndS(s’Print a report to stdout, listing the found modules with their paths, as well as modules that are missing, or seem to be missing. s %-25s %stNametFiles----tPRQs%-25sR7sMissing modules:t?s imported froms, s7Submodules thay appear to be missing, but could also bes#global names in the parent package:N(R¬R­(s----s----(R%RitsortRRtany_missing_maybeR&RU(RRitkeyRQtmissingtmaybeRtmods((s$/usr/lib64/python2.6/modulefinder.pytreportés<      " cCs|iƒ\}}||S(s½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±(RR³R´((s$/usr/lib64/python2.6/modulefinder.pyt any_missingscCs.g}g}x|iD]ö}||ijoqn|idƒ}|djo|i|ƒqn||d}|| }|ii|ƒ}|dj oe||i|jo|i|ƒq ||ijoq |io|i|ƒq |i|ƒq|i|ƒqW|i ƒ|i ƒ||fS(s®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. RRiiN( R&R)RVR R%R RRRR°(RR³R´RR1Rdtpkgnametpkg((s$/usr/lib64/python2.6/modulefinder.pyR±s2         cCs‹tii|iƒ}}x@|iD]5\}}|i|ƒo||t|ƒ}Pq#q#W|iof||ijoV||jo|i dd||fƒn|i dd|fƒ|ii |ƒnt |i ƒ}xOt t|ƒƒD];}t||t|ƒƒo|i||ƒ||s>           ÿÿ ;