Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/distutils/command/
Upload File :
Current File : //usr/lib/python2.7/distutils/command/build_py.pyc


|_c@sdZdZddlZddlZddlmZddlmZddlmZm	Z	ddl
mZddlm
Z
d	efd
YZdS(sHdistutils.command.build_py

Implements the Distutils 'build_py' command.s$Id$iN(tglob(tCommand(tDistutilsOptionErrortDistutilsFileError(tconvert_path(tlogtbuild_pycBseZdZd#d$d&d'd(gZddgZidd6ZdZdZdZ	dZ
dZdZdZ
dZdZdZdZdZdZdZddZdZd Zd!Zd"ZRS()s5"build" pure Python modules (copy to build directory)s
build-lib=tdsdirectory to "build" (copy) totcompiletcscompile .py to .pycs
no-compiles!don't compile .py files [default]s	optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS(Ni(	tNonet	build_libt
py_modulestpackagetpackage_datatpackage_dirRtoptimizeR(tself((s0/usr/lib/python2.7/distutils/command/build_py.pytinitialize_options!s							cCs|jddd|jj|_|jj|_|jj|_i|_|jjrx6|jjjD]\}}t||j|<qhWn|j|_	t
|jtsy;t|j|_d|jkodknst
Wqtt
fk
rtdqXndS(	NtbuildRRiisoptimize must be 0, 1, or 2(s	build_libs	build_lib(sforcesforce(tset_undefined_optionstdistributiontpackagesRRRtitemsRtget_data_filest
data_filest
isinstanceRtinttAssertionErrort
ValueErrorR(Rtnametpath((s0/usr/lib/python2.7/distutils/command/build_py.pytfinalize_options+s"		)cCsS|jr|jn|jr6|j|jn|j|jdddS(Ntinclude_bytecodei(Rt
build_modulesRtbuild_packagestbuild_package_datatbyte_compiletget_outputs(R((s0/usr/lib/python2.7/distutils/command/build_py.pytrunDs	
	

cCsg}|js|Sx|jD]}|j|}tjj|jg|jd}d}|rvt|d}ng|j||D]}||^q}|j	||||fqW|S(s?Generate list of '(package,src_dir,build_dir,filenames)' tuplest.ii(
Rtget_package_dirtosR"tjoinRtsplittlentfind_data_filestappend(RtdataRtsrc_dirt	build_dirtplentfilet	filenames((s0/usr/lib/python2.7/distutils/command/build_py.pyRbs	%)cCs|jjdg|jj|g}g}x[|D]S}ttjj|t|}|jg|D]}||kri|^qiq5W|S(s6Return filenames for package's data files in 'src_dir't(RtgetRR-R"R.Rtextend(RRR4tglobstfilestpatterntfilelisttfn((s0/usr/lib/python2.7/distutils/command/build_py.pyR1zs
!0cCsx|jD]v\}}}}xa|D]Y}tjj||}|jtjj||jtjj|||dtq#Wq
WdS(s$Copy data files into build directoryt
preserve_modeN(RR-R"R.tmkpathtdirnamet	copy_filetFalse(RRR4R5R8tfilenamettarget((s0/usr/lib/python2.7/distutils/command/build_py.pyR's
cCs|jd}|js5|r.tjj|SdSng}x|ry|jdj|}Wn,tk
r|jd|d|d=q>X|jd|tjj|Sq>W|jjd}|dk	r|jd|n|rtjj|SdSdS(sReturn the directory, relative to the top of the source
           distribution, where package 'package' should be found
           (at least according to the 'package_dir' option, if any).R+R9iiN(	R/RR-R"R.tKeyErrortinsertR:R
(RRR"ttailtpdir((s0/usr/lib/python2.7/distutils/command/build_py.pyR,s(		
	cCs|dkrYtjj|s1td|ntjj|sYtd|qYn|rtjj|d}tjj|r|Stjdd|ndS(NR9s%package directory '%s' does not exists>supposed package directory '%s' exists, but is not a directorys__init__.pys!package init file '%s' not found s(or not a regular file)(
R-R"texistsRtisdirR.tisfileRtwarnR
(RRRtinit_py((s0/usr/lib/python2.7/distutils/command/build_py.pyt
check_packages	cCs1tjj|s)tjd||tStSdS(Ns!file %s (for module %s) not found(R-R"RNRROREtTrue(Rtmoduletmodule_file((s0/usr/lib/python2.7/distutils/command/build_py.pytcheck_modulesc	Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj	|d}|j
|||fqP|jd|qPW|S(Ns*.pyisexcluding %s(RQRR-R"R.tabspathRtscript_nametsplitexttbasenameR2tdebug_print(	RRRtmodule_filestmodulestsetup_scriptRtabs_fRS((s0/usr/lib/python2.7/distutils/command/build_py.pytfind_package_moduless
"cCs!i}g}x|jD]}|jd}dj|dd!}|d}y||\}}Wn&tk
r|j|}d}nX|s|j||}	|df||<|	r|j|d|	fqntjj||d}
|j	||
sqn|j|||
fqW|S(sFinds individually-specified Python modules, ie. those listed by
        module name in 'self.py_modules'.  Returns a list of tuples (package,
        module_base, filename): 'package' is a tuple of the path through
        package-space to the module; 'module_base' is the bare (no
        packages, no dots) module name, and 'filename' is the path to the
        ".py" file (relative to the distribution root) that implements the
        module.
        R+iiit__init__s.py(
RR/R.RHR,RQR2R-R"RU(RRR\RSR"Rtmodule_baseRtcheckedRPRT((s0/usr/lib/python2.7/distutils/command/build_py.pytfind_moduless*


cCswg}|jr%|j|jn|jrsxB|jD]4}|j|}|j||}|j|q8Wn|S(s4Compute the list of all modules that will be built, whether
        they are specified one-module-at-a-time ('self.py_modules') or
        by whole packages ('self.packages').  Return a list of tuples
        (package, module, module_file), just like 'find_modules()' and
        'find_package_modules()' do.(RR;RcRR,R_(RR\RRtm((s0/usr/lib/python2.7/distutils/command/build_py.pytfind_all_moduless		cCs!g|jD]}|d^q
S(Ni(Re(RRS((s0/usr/lib/python2.7/distutils/command/build_py.pytget_source_files,scCs.|gt||dg}tjj|S(Ns.py(tlistR-R"R.(RR5RRStoutfile_path((s0/usr/lib/python2.7/distutils/command/build_py.pytget_module_outfile/sicCs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|j|dn|jdkr|j|dqqqW|g|jD]4\}}}	}
|
D]}tj	j
|	|^qq7}|S(NR+R	ito(ReR/RiRR2RRRR-R"R.(RR$R\toutputsRRSRTRFR4R5R8((s0/usr/lib/python2.7/distutils/command/build_py.pyR)3s 
	)cCst|tr!|jd}n$t|ttfsEtdn|j|j||}tj	j
|}|j||j||ddS(NR+s:'package' must be a string (dot-separated), list, or tupleRAi(
RtstrR/Rgttuplet	TypeErrorRiRR-R"RCRBRD(RRSRTRtoutfiletdir((s0/usr/lib/python2.7/distutils/command/build_py.pytbuild_moduleHs
cCs=|j}x*|D]"\}}}|j|||qWdS(N(RcRq(RR\RRSRT((s0/usr/lib/python2.7/distutils/command/build_py.pyR%WscCsxxq|jD]f}|j|}|j||}x<|D]4\}}}||ksYt|j|||q8Wq
WdS(N(RR,R_RRq(RRRR\tpackage_RSRT((s0/usr/lib/python2.7/distutils/command/build_py.pyR&asc
Cstjr|jddSddlm}|j}|dtjkrV|tj}n|jr||ddd|j	d|d|j
n|jdkr||d|jd|j	d|d|j
ndS(	Ns%byte-compiling is disabled, skipping.i(R(RiRtprefixtdry_run(tsystdont_write_bytecodeROtdistutils.utilR(RR-tsepRRRtR(RR=R(Rs((s0/usr/lib/python2.7/distutils/command/build_py.pyR(vs	
		(s
build-lib=Rsdirectory to "build" (copy) to(scompileR	scompile .py to .pycN(s
no-compileNs!don't compile .py files [default](s	optimize=R
slalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](sforceRs2forcibly build everything (ignore file timestamps)(t__name__t
__module__tdescriptionR
tuser_optionstboolean_optionstnegative_optRR#R*RR1R'R,RQRUR_RcReRfRiR)RqR%R&R((((s0/usr/lib/python2.7/distutils/command/build_py.pyRs8	
	
							(				4					
	(t__doc__t__revision__R-RuRtdistutils.coreRtdistutils.errorsRRRwRt	distutilsRR(((s0/usr/lib/python2.7/distutils/command/build_py.pyt<module>s