Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/
Upload File :
Current File : //usr/lib/python2.7/modulefinder.pyc


|_c@sdZddlmZddlZddlZddlZddlZddlZddlZddl	Z	e
ejdrdZndZe
ejjdZe
ejjdZe
ejjd	Ze
ejjd
ZeegZe
ejZiZdZiZdZd
fdYZdfdYZdZedkry
eZWnek
rdGHnXndS(s3Find modules used by a script, using introspection.i(t
generatorsNtnewlinestUtrt
LOAD_CONSTtIMPORT_NAMEt
STORE_NAMEtSTORE_GLOBALcCs-tj|g}|j||t|<dS(N(tpackagePathMaptgettappend(tpackagenametpathtpaths((s"/usr/lib/python2.7/modulefinder.pytAddPackagePath#s
cCs|t|<dS(N(treplacePackageMap(toldnametnewname((s"/usr/lib/python2.7/modulefinder.pytReplacePackage/stModulecBs eZdddZdZRS(cCs:||_||_||_d|_i|_i|_dS(N(t__name__t__file__t__path__tNonet__code__tglobalnameststarimports(tselftnametfileR((s"/usr/lib/python2.7/modulefinder.pyt__init__5s					cCsjd|jf}|jdk	r6|d|jf}n|jdk	r\|d|jf}n|d}|S(Ns	Module(%rs, %rt)(RRRR(Rts((s"/usr/lib/python2.7/modulefinder.pyt__repr__Bs
N(Rt
__module__RRR!(((s"/usr/lib/python2.7/modulefinder.pyR3s
tModuleFindercBseZddggdZdZdZdZdZdZddddZ	dd	Z
d
ZdZddZ
d
ZdZdZdZddZejdZejdZdZdZdZddZdZdZdZdZRS(icCsd|dkrtj}n||_i|_i|_||_d|_||_||_g|_	dS(Ni(
RtsysRtmodulest
badmodulestdebugtindenttexcludest
replace_pathstprocessed_paths(RRR'R)R*((s"/usr/lib/python2.7/modulefinder.pyRMs							cGsT||jkrPxt|jD]
}dGqW|Gx|D]}t|Gq8WHndS(Ns   (R'trangeR(trepr(Rtleveltstrtargstitarg((s"/usr/lib/python2.7/modulefinder.pytmsgYs
cGs=|d}||jkr9|jd|_|j|ndS(Nii(R'R(R3(RR0R.((s"/usr/lib/python2.7/modulefinder.pytmsginbs
cGs=|d}||jkr9|jd|_|j|ndS(Nii(R'R(R3(RR0R.((s"/usr/lib/python2.7/modulefinder.pytmsgouths
cCsN|jdd|t|t}ddtjf}|jd|||dS(Nit
run_scripttRt__main__(R3topent	READ_MODEtimpt	PY_SOURCEtload_module(Rtpathnametfptstuff((s"/usr/lib/python2.7/modulefinder.pyR6nscCsktjj|\}}tjj|\}}t|t}|dtjf}|j||||dS(NR(	tosRtsplittsplitextR9R:R;R<R=(RR>tdirRtextR?R@((s"/usr/lib/python2.7/modulefinder.pyt	load_filets
ic	Cs|jdd|||||j|d|}|j||\}}|j||}|se|S|jr|j||ndS(Nitimport_hookR.(R3tdetermine_parenttfind_head_packaget	load_tailRtensure_fromlistR(	RRtcallertfromlistR.tparenttqttailtm((s"/usr/lib/python2.7/modulefinder.pyRG{s	cCs|jdd|||s)|dkr=|jdddS|j}|dkr|jrh|d8}n|dkr|j|}||kst|jdd||S|jd|krtdndj	|j
d| }|j|}|jdd||S|jrK|j|}||ks4t|jdd||Sd|kr|jd}|| }|j|}|j|kst|jdd||S|jdddS(	NiRHisdetermine_parent -> Noneisdetermine_parent ->t.srelative importpath too deep(R4R5RRRR%tAssertionErrortcounttImportErrortjoinRBtrfind(RRLR.tpnameRNR1((s"/usr/lib/python2.7/modulefinder.pyRHsB		


	


cCs/|jdd||d|krL|jd}|| }||d}n|}d}|rtd|j|f}n|}|j|||}|r|jdd||f||fS|r|}d}|j|||}|r|jdd||f||fSn|jdd|td	|dS(
NiRIRRiR7s%s.%ssfind_head_package ->s"raise ImportError: No module namedsNo module named (R4tfindRt
import_moduleR5RRU(RRNRR1theadRPtqnameRO((s"/usr/lib/python2.7/modulefinder.pyRIs.


cCs|jdd|||}x|r|jd}|dkrOt|}n|| ||d}}d|j|f}|j|||}|s|jdd|td|qqW|jdd	||S(
NiRJRRiis%s.%ss"raise ImportError: No module namedsNo module named sload_tail ->(R4RYtlenRRZR5RU(RRORPRQR1R[tmname((s"/usr/lib/python2.7/modulefinder.pyRJs	cCs|jdd|||x|D]}|dkri|s|j|}|rf|j||dqfqq t||s d|j|f}|j|||}|std|qq q WdS(NiRKt*is%s.%ssNo module named (R3tfind_all_submodulesRKthasattrRRZRU(RRQRMt	recursivetsubtalltsubnametsubmod((s"/usr/lib/python2.7/modulefinder.pyRKs
cCs|js
dSi}g}x%tjD]}|j|dq&Wx|jD]}ytj|}Wn*tjk
r|jdd|qKnXxp|D]h}d}x:|D]2}	t	|	}
||
|	kr||
 }PqqW|r|dkr|||<qqWqKW|j
S(Niiscan't list directoryR(RR;tget_suffixesR
RAtlistdirterrorR3RR]tkeys(RRQR%tsuffixesttripleRDtnamesRtmodtsufftn((s"/usr/lib/python2.7/modulefinder.pyR`s,	

cCsW|jdd|||y|j|}Wntk
r=nX|jdd||S||jkrx|jdddS|r|jdkr|jdddSy+|j||o|j|\}}}Wn%tk
r|jddddSXz|j	||||}Wd|r&|j
nX|r@t|||n|jdd||S(NiRZsimport_module ->simport_module -> None(R4R%tKeyErrorR5R&RRtfind_moduleRUR=tclosetsetattr(RtpartnametfqnameRNRQR?R>R@((s"/usr/lib/python2.7/modulefinder.pyRZs6
	"
c
Csr|\}}}|jdd||o'd||tjkrf|j||}|jdd||S|tjkrt|jd|d}	nr|tjkr|jdtj	kr|jdd|t
d	|n|jdtj|}	nd}	|j|}||_|	r[|jr?|j|	}	n|	|_|j|	|n|jdd||S(
NiR=R?sload_module ->s
texecis#raise ImportError: Bad magic numbersBad magic number in %s(R4R;t
PKG_DIRECTORYtload_packageR5R<tcompiletreadtPY_COMPILEDt	get_magicRUtmarshaltloadRt
add_moduleRR*treplace_paths_in_codeRt	scan_code(
RRvR?R>t	file_infotsuffixtmodettypeRQtco((s"/usr/lib/python2.7/modulefinder.pyR=s0
			cCsQ||jkri|j|<n|r<d|j||j<nd|j|d<dS(Nit-(R&R(RRRL((s"/usr/lib/python2.7/modulefinder.pyt_add_badmodule5s
cCs,||jkr#|j||dSy|j||d|Wn<tk
r{}|jddt||j||nX|r(x|D]}||jkr|j||qny |j|||gd|Wqtk
r }|jddt||d|}|j||qXqWndS(NR.isImportError:RR(R&RRGRUR3R/(RRRLRMR.R3Rctfullname((s"/usr/lib/python2.7/modulefinder.pyt_safe_import_hook=s&
 c
cs|j}|j}|j}x|r|d}|tkru|d|dd!\}d||ffV|d}qn|tkr|dtkr|d|d \}}	d||||	ffV|d}qn|tkr|d}q|d}qWdS(	Nis<Hiitstores<xHxHitimport(tco_codetco_namest	co_constst	STORE_OPSRRt
HAVE_ARGUMENT(
RRtunpacktcodeRmtconststctopargtoparg_1toparg_2((s"/usr/lib/python2.7/modulefinder.pytscan_opcodesTs$				



c
csi|j}|j}|j}ttt}x9|rd|d}|tkr|d|dd!\}d||ffV|d}q,n|ddd|kr>|d|d \}	}
}||	}|dkrd	||
||ffVnD|dkrd
||
||ffVnd|||
||ffV|d}q,n|tkrW|d}q,|d}q,WdS(Nis<HiiRi	s<xHxHxHiRtabsolute_importtrelative_import(RRRRRRR(
RRRRRmRtLOAD_LOAD_AND_IMPORTRRRRtoparg_3R.((s"/usr/lib/python2.7/modulefinder.pytscan_opcodes_25ls0				




cCs|j}tjd
kr$|j}n	|j}x||D]\}}|dkrk|\}d|j|<q:|dkr|\}}d}	|dk	rd|krd}	ng|D]}
|
dkr|
^q}n|dkrd}nd	}|j|||d
||	r@d}|jr;|j	j
|jd|}n|dkr\|j	j
|}n|dk	r|jj|j|j
j|j
|jdkrd|j
|<qqd|j
|<q@q:|dkr4|\}}}|r|j|||d
|q@|j|d
|}
|j|
jd|d
dq:t|q:Wx9|jD].}t|t|rN|j||qNqNWdS(NiiRiRRiR_iR.RRR(ii(simportsabsolute_import(RR$tversion_infoRRRRRRR%R	RtupdateRRRHtRuntimeErrorRt
isinstanceRR(RRRQRtscannertwhatR0RRMt	have_startfR.tmmRNR((s"/usr/lib/python2.7/modulefinder.pyRsR				(		 cCs|jdd||tj|}|r4|}n|j|}||_|g|_|jtj|g|_|jd|j\}}}|j|||||j	dd||S(NiRyRsload_package ->(
R4RR	RRRRRrR=R5(RRvR>RRQR?tbufR@((s"/usr/lib/python2.7/modulefinder.pyRys		cCs5||jkr|j|St||j|<}|S(N(R%R(RRvRQ((s"/usr/lib/python2.7/modulefinder.pyRscCs|dk	r |jd|}n|}||jkrT|jdd|t|n|dkr|tjkrddddtjffS|j	}ntj
||S(NRRisfind_module -> ExcludedR7(RRR)R5RUR$tbuiltin_module_namesR;t	C_BUILTINRRr(RRRRNR((s"/usr/lib/python2.7/modulefinder.pyRrscCs<HddGHddGH|jj}|jxE|D]=}|j|}|jrVdGndGd|G|jpndGHq3W|j\}}|rHd	GHxH|D]=}|j|j}|jd
G|GdGdj|GHqWn|r8Hd
GdGHxH|D]=}|j|j}|jd
G|GdGdj|GHqWndS(sPrint 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(RR(s----s----(R%RjtsortRRtany_missing_maybeR&RV(RRjtkeyRQtmissingtmaybeRtmods((s"/usr/lib/python2.7/modulefinder.pytreports6		


	

!

cCs|j\}}||S(sReturn 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(RRR((s"/usr/lib/python2.7/modulefinder.pytany_missingscCs"g}g}x|jD]}||jkr1qn|jd}|dkr_|j|qn||d}|| }|jj|}|dk	r||j|kr|j|q||jkrq|jr|j|q|j|q|j|qW|j	|j	||fS(sReturn 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(RRRRR1Retpkgnametpkg((s"/usr/lib/python2.7/modulefinder.pyRs0	

	

cCstjj|j}}x>|jD]3\}}|j|r#||t|}Pq#q#W|jr||jkr||kr|j	dd||fn|j	dd|f|jj
|nt|j}xMt
t|D]9}t||t|r|j||||<qqWtj|j|j|j|j|jt||j|j||j|j|j|j|jS(Nisco_filename %r changed to %rs co_filename %r remains unchanged( RARtnormpathtco_filenameR*t
startswithR]R'R+R5R
tlistRR,RRRttypestCodeTypetco_argcountt
co_nlocalstco_stacksizetco_flagsRttupleRtco_varnamestco_nametco_firstlinenot	co_lnotabtco_freevarstco_cellvars(RRtnew_filenametoriginal_filenameRRRR1((s"/usr/lib/python2.7/modulefinder.pyRDs*N(RR"RRR3R4R5R6RFRGRHRIRJRKR`RZR=RRtstructRRRRRyRRrRRRR(((s"/usr/lib/python2.7/modulefinder.pyR#Ks4						#							6			%		.cCs"ddl}y#|jtjdd\}}Wn|jk
rM}|GHdSXd}d}g}g}x|D]\}}	|dkr|d}n|dkrd}n|dkr||	jtj}n|dkrd}n|d	krm|j|	qmqmW|sd
}
n
|d}
tj}tjj	|
|d<||}|dkrxdGHx |D]}dGt
|GHq\Wnt|||}
xz|dD]n}|dkrd}qn|r|d
dkr|
j|d
 ddgq|
j|q|
j|qW|
j|
|
j|
S(Niisdmp:qx:is-ds-ms-ps-qs-xshello.pyspath:s   is.*R_(tgetoptR$targvRiRBRAtpathsepR
RtdirnameR-R#RGRRFR6R(RtoptsR0R3R'tdomodstaddpathtexcludetotatscriptRtitemtmfR2((s"/usr/lib/python2.7/modulefinder.pyttest`sX#
			





R8s
[interrupt]( t__doc__t
__future__RtdisR;R~RAR$RRRat
__stdout__R:tchrtopnametindexRRRRRRRRRRRR#RRRtKeyboardInterrupt(((s"/usr/lib/python2.7/modulefinder.pyt<module>s>				;