Ñò §Úê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|djo9|i|}||jpt‚|idd|ƒ|S|idƒ|jo td‚ndi |i dƒ| ƒ}|i|}|idd|ƒ|S|io9|i|}||jpt‚|idd|ƒ|Sd|joU|i dƒ}|| }|i|}|i|jpt‚|idd|ƒ|S|iddƒdS( NiRHisdetermine_parent -> Noneisdetermine_parent ->t.srelative importpath too deep( R4R5RRRR%tAssertionErrortcountt ImportErrortjoinRBtrfind(RRLR.tpnameRNR1((s$/usr/lib64/python2.6/modulefinder.pyRH†sB            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_moduleR5RRU(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 ->(R4RYtlenRRZR5RU(RRORPRQR1R[tmname((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_submodulesRKthasattrRRZRU(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_moduleRUR=tclosetsetattr(RtpartnametfqnameRNRQR?R>R@((s$/usr/lib64/python2.6/modulefinder.pyRZü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_magicRUtmarshaltloadRt add_moduleRR*treplace_paths_in_codeRt scan_code( RRvR?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‰RGRUR3R/(RRRLRMR.R3Rctfullname((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 R€RRRRrR=R5(RRvR>RRQR?tbufR@((s$/usr/lib64/python2.6/modulefinder.pyRyÁs   cCs7||ijo |i|St|ƒ|i|<}|S(N(R%R(RRvRQ((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)R5RUR$tbuiltin_module_namesR;t C_BUILTINR Rr(RRR RNRŠ((s$/usr/lib64/python2.6/modulefinder.pyRrØ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%RjtsortRRtany_missing_maybeR&RV(RRjtkeyRQtmissingtmaybeRtmods((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)RWR R%R RRRR±(RR´RµRR1Retpkgnametpkg((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>           ÿÿ ;