a ´i&Cã@svddlZddlZddlZddlZddlmZddlTddlm Z m Z ddl m Z Gdd„deƒZ Gdd „d e e ƒZdS) éN)ÚCommand)Ú*)Ú convert_pathÚ Mixin2to3)Úlogc@sÂeZdZdZgd¢ZddgZddiZdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd.d#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-S)/Úbuild_pyz5"build" pure Python modules (copy to build directory)))z build-lib=Údzdirectory to "build" (copy) to)ÚcompileÚczcompile .py to .pyc)ú no-compileNz!don't compile .py files [default])z optimize=ÚOzlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0])ÚforceÚfz2forcibly build everything (ignore file timestamps)r r r cCs4d|_d|_d|_d|_d|_d|_d|_d|_dS)Nr)Ú build_libÚ py_modulesÚpackageÚ package_dataÚ package_dirr Úoptimizer ©Úself©rú2/usr/lib64/python3.9/distutils/command/build_py.pyÚinitialize_options szbuild_py.initialize_optionsc Cs¨| ddd¡|jj|_|jj|_|jj|_i|_|jjr^|jj ¡D]\}}t|ƒ|j|<qF| ¡|_ t |j t ƒs¤zt |j ƒ|_ Wnt tfy¢tdƒ‚Yn0dS)NZbuild)rr)r r zoptimize must be 0, 1, or 2)Zset_undefined_optionsÚ distributionÚpackagesrrrÚitemsrÚget_data_filesÚ data_filesÚ isinstancerÚintÚ ValueErrorÚAssertionErrorZDistutilsOptionError)rÚnameÚpathrrrÚfinalize_options*s$þ      zbuild_py.finalize_optionscCs:|jr| ¡|jr$| ¡| ¡| |jdd¡dS©Nr)Úinclude_bytecode)rÚ build_modulesrÚbuild_packagesÚbuild_package_dataÚ byte_compileÚ get_outputsrrrrÚrunCs z build_py.runcs‚g}|js|S|jD]h}| |¡}tjj|jg| d¡Ž}d‰|rPt|ƒd‰‡fdd„| ||¡Dƒ}|  ||||f¡q|S)NÚ.récsg|]}|ˆd…‘qS©Nr)Ú.0Úfile©ÚplenrrÚ ssz+build_py.get_data_files..) rÚget_package_dirÚosr$ÚjoinrÚsplitÚlenÚfind_data_filesÚappend)rÚdatarÚsrc_dirÚ build_dirÚ filenamesrr3rras     ÿzbuild_py.get_data_filescsd|j dg¡|j |g¡}g‰|D]:}t tj t |¡t|ƒ¡¡}ˆ ‡fdd„|Dƒ¡q$ˆS)NÚcs$g|]}|ˆvrtj |¡r|‘qSr)r7r$Úisfile)r1Úfn©Úfilesrrr5‚s ÿz,build_py.find_data_files..) rÚgetÚglobr7r$r8ÚescaperÚextend)rrr>ZglobsÚpatternZfilelistrrDrr;ys  ÿzbuild_py.find_data_filescCs`d}|jD]P\}}}}|D]>}tj ||¡}| tj |¡¡|jtj ||¡|ddqq dS)NF©Z preserve_mode)rr7r$r8ÚmkpathÚdirnameÚ copy_file)rZlastdirrr>r?r@ÚfilenameÚtargetrrrr*†sÿzbuild_py.build_package_datacCs¾| d¡}|js&|r tjj|ŽSdSn”g}|r†z|jd |¡}Wn(tyj| d|d¡|d=Yq*0| d|¡tjj|ŽSq*|j d¡}|dur¦| d|¡|r¶tjj|ŽSdSdS)Nr.rAréÿÿÿÿ)r9rr7r$r8ÚKeyErrorÚinsertrF)rrr$ÚtailZpdirrrrr6s(        zbuild_py.get_package_dircCsj|dkr8tj |¡s td|ƒ‚tj |¡s8td|ƒ‚|rftj |d¡}tj |¡rZ|St d|¡dS)NrAz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz8package init file '%s' not found (or not a regular file)) r7r$ÚexistsZDistutilsFileErrorÚisdirr8rBrÚwarn)rrrÚinit_pyrrrÚ check_package·s& ÿ ÿÿ ÿzbuild_py.check_packagecCs&tj |¡st d||¡dSdSdS)Nz!file %s (for module %s) not foundFT)r7r$rBrrW)rÚmoduleÚ module_filerrrÚ check_moduleÒs zbuild_py.check_modulec Cs”| ||¡t tj t |¡d¡¡}g}tj |jj¡}|D]P}tj |¡}||kr€tj  tj  |¡¡d}|  |||f¡q>|  d|¡q>|S)Nz*.pyrz excluding %s) rYrGr7r$r8rHÚabspathrÚ script_nameÚsplitextÚbasenamer<Z debug_print) rrrZ module_filesÚmodulesZ setup_scriptrZabs_frZrrrÚfind_package_modulesÙs  zbuild_py.find_package_modulesc CsÎi}g}|jD]º}| d¡}d |dd…¡}|d}z||\}}Wn tyf| |¡}d}Yn0|s˜| ||¡} |df||<| r˜| |d| f¡tj ||d¡} |  || ¡s¸q| ||| f¡q|S)Nr.rrQr/Ú__init__ú.py) rr9r8rRr6rYr<r7r$r\) rrrarZr$rZ module_baserÚcheckedrXr[rrrÚ find_modulesès*        zbuild_py.find_modulescCsNg}|jr| | ¡¡|jrJ|jD]$}| |¡}| ||¡}| |¡q$|Sr0)rrIrfrr6rb)rrarrÚmrrrÚfind_all_moduless    zbuild_py.find_all_modulescCsdd„| ¡DƒS)NcSsg|] }|d‘qS)rQr)r1rZrrrr5-óz-build_py.get_source_files..)rhrrrrÚget_source_files,szbuild_py.get_source_filescCs$|gt|ƒ|dg}tjj|ŽS)Nrd)Úlistr7r$r8)rr?rrZZ outfile_pathrrrÚget_module_outfile/szbuild_py.get_module_outfiler/cCsš| ¡}g}|D]p\}}}| d¡}| |j||¡}| |¡|r|jr^| tjj|dd¡|j dkr| tjj||j d¡q|dd„|j Dƒ7}|S)Nr.rA)Ú optimizationrcSs,g|]$\}}}}|D]}tj ||¡‘qqSr)r7r$r8)r1rr>r?r@rOrrrr5Bs þz(build_py.get_outputs..) rhr9rlrr<r Ú importlibÚutilÚcache_from_sourcerr)rr'raZoutputsrrZr[rOrrrr,3s&   ÿ  ÿ þzbuild_py.get_outputscCsbt|tƒr| d¡}nt|ttfƒs,tdƒ‚| |j||¡}tj   |¡}|  |¡|j ||ddS)Nr.z:'package' must be a string (dot-separated), list, or tuplerrK) rÚstrr9rkÚtupleÚ TypeErrorrlrr7r$rMrLrN)rrZr[rZoutfileÚdirrrrÚ build_moduleJs  ÿ  zbuild_py.build_modulecCs*| ¡}|D]\}}}| |||¡q dSr0)rfru)rrarrZr[rrrr(Yszbuild_py.build_modulescCsD|jD]8}| |¡}| ||¡}|D]\}}}| |||¡q$qdSr0)rr6rbru)rrrraZpackage_rZr[rrrr)bs   zbuild_py.build_packagescCs€tjr| d¡dSddlm}|j}|dtjkr>|tj}|jrZ||d|j ||j d|j dkr||||j |j ||j ddS)Nz%byte-compiling is disabled, skipping.r)r+rQ)rr ÚprefixÚdry_run) ÚsysÚdont_write_bytecoderWÚdistutils.utilr+rr7Úsepr r rwr)rrEr+rvrrrr+vs    ÿ  ÿzbuild_py.byte_compileN)r/)Ú__name__Ú __module__Ú __qualname__Ú descriptionZ user_optionsZboolean_optionsZ negative_optrr%r-rr;r*r6rYr\rbrfrhrjrlr,rur(r)r+rrrrrs.    '4  rc@seZdZdd„Zdd„ZdS)Ú build_py_2to3cCsLg|_|jr| ¡|jr*| ¡| ¡| |j¡| |jdd¡dSr&) Ú updated_filesrr(rr)r*Zrun_2to3r+r,rrrrr-‹s zbuild_py_2to3.runcCs,t ||||¡}|dr(|j |d¡|S)Nr/r)rrurr<)rrZr[rÚresrrrru›szbuild_py_2to3.build_moduleN)r|r}r~r-rurrrrr€Šsr€)r7Úimportlib.utilrnrxrGZdistutils.corerZdistutils.errorsrzrrZ distutilsrrr€rrrrÚs  }