U e5d @sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@seZdZdZdddddddgZd d d gZd d iZd dZddZddZ ddZ ddZ ddZ ddZ ddZddZdd Zd!S)" install_libz7install all Python modules (extensions and pure Python))z install-dir=dzdirectory to install to)z build-dir=bz'build directory (where to install from))forcefz-force installation (overwrite existing files))compileczcompile .py to .pyc [default]) no-compileNzdon't compile .py files)z optimize=Ozlalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]) skip-buildNzskip the build stepsrr r r cCs(d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_buildselfr5/usr/lib64/python3.8/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|ddddddd|jdkr&d|_|jdkr6d |_t|jtszt|j|_|jd kr^tWn ttfk rtd YnXdS) Ninstall) build_libr)rr)rr)r r )rr)rrTF)rzoptimize must be 0, 1, or 2)Zset_undefined_optionsr r isinstanceintAssertionError ValueErrorrrrrrfinalize_options<s&     zinstall_lib.finalize_optionscCs0||}|dk r,|jr,||dSN)buildr distributionhas_pure_modules byte_compilerZoutfilesrrrrunVszinstall_lib.runcCs2|js.|jr|d|jr.|ddS)Nbuild_py build_ext)rr"r#Z run_commandhas_ext_modulesrrrrr!fs    zinstall_lib.buildcCs8tj|jr ||j|j}n|d|jdS|S)Nz3'%s' does not exist -- no Python modules to install)ospathisdirrZ copy_treerwarnr%rrrrmszinstall_lib.installcCsrtjr|ddSddlm}|dj}|jrH||d|j||j d|j dkrn|||j |j||j |j ddS)Nz%byte-compiling is disabled, skipping.r)r$r)rrprefixdry_run)rrr.verboser/) sysdont_write_bytecoder-Zdistutils.utilr$get_finalized_commandrootr rr/rr0)rfilesr$Z install_rootrrrr$vs$    zinstall_lib.byte_compilec Csd|sgS||}|}t||}t|ttj}g}|D] } |tj|| |dq>|Sr ) r3 get_outputsgetattrlenr*sepappendr+join) rZhas_anyZ build_cmdZ cmd_optionZ output_dirZ build_filesr prefix_lenZoutputsfilerrr_mutate_outputss  zinstall_lib._mutate_outputscCsrg}|D]d}tjtj|d}|tkr.q|jrJ|tjj |dd|j dkr|tjj ||j dq|S)Nr) optimizationr) r*r+splitextnormcasePYTHON_SOURCE_EXTENSIONr r: importlibutilcache_from_sourcer)rZ py_filenamesZbytecode_filesZpy_fileZextrrr_bytecode_filenamess     zinstall_lib._bytecode_filenamescCsR||jdd|j}|jr*||}ng}||jdd|j}|||S)zReturn the list of files that would be installed if this command were actually run. Not affected by the "dry-run" flag or whether modules have actually been built yet. r'rr()r>r"r#rr rGr))rZ pure_outputsZbytecode_outputsZ ext_outputsrrrr6s    zinstall_lib.get_outputscCsLg}|jr&|d}|||jrH|d}|||S)zGet the list of files that are input to this command, ie. the files that get installed as they are named in the build tree. The files in this list correspond one-to-one to the output filenames returned by 'get_outputs()'. r'r()r"r#r3extendr6r))rZinputsr'r(rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__Z descriptionZ user_optionsZboolean_optionsZ negative_optrrr&r!rr$r>rGr6rIrrrrrs*   r) __doc__r*importlib.utilrDr1Zdistutils.corerZdistutils.errorsrrCrrrrrs