o bc!@sLdZddlZddlZddlZddlmZddlmZdZ GdddeZ dS)zkdistutils.command.install_lib Implements the Distutils 'install_lib' command (install all Python modules).N)Command)DistutilsOptionErrorz.pyc@sxeZdZdZgdZgdZddiZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZdS) 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 steps)rr r r r cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) install_dir build_dirrr optimize skip_build multiarchselfr4/usr/lib/python3.10/distutils/command/install_lib.pyinitialize_options3s zinstall_lib.initialize_optionsc Cs|dddddddd|jdurd |_|jdurd |_t|jts@zt|j|_|jd vr0tWdSttfy?td wdS) Ninstall) build_libr)rr)rr)r r )rr)rr)rrTF)rzoptimize must be 0, 1, or 2)set_undefined_optionsr r isinstanceintAssertionError ValueErrorrrrrrfinalize_options=s.     zinstall_lib.finalize_optionscCs8||}|dur|jr||dSdSdSN)buildr distributionhas_pure_modules byte_compile)routfilesrrrrunXs zinstall_lib.runcCs:|js|jr |d|jr|ddSdSdS)Nbuild_py build_ext)rr$r% run_commandhas_ext_modulesrrrrr#hs   zinstall_lib.buildcCsHtj|jrddl}|j|j_||j|j }|S| d|jdS)Nrz3'%s' does not exist -- no Python modules to install) ospathisdirrdistutils.dir_utilrdir_util _multiarch copy_treerwarn)r distutilsr'rrrros zinstall_lib.installcCsvtjr |ddSddlm}|dj}|jr$||d|j||j d|j dkr9|||j |j||j |j ddSdS)Nz%byte-compiling is disabled, skipping.r)r&r)rrprefixdry_run)rrr6verboser7) sysdont_write_bytecoder4distutils.utilr&get_finalized_commandrootr rr7rr8)rfilesr& install_rootrrrr&zs      zinstall_lib.byte_compilec Csd|sgS||}|}t||}t|ttj}g}|D]} |tj|| |dq|Sr") r< get_outputsgetattrlenr-sepappendr.join) rhas_any build_cmd cmd_option output_dir build_filesr prefix_lenoutputsfilerrr_mutate_outputss  zinstall_lib._mutate_outputscCsrg}|D]2}tjtj|d}|tkrq|jr%|tjj |dd|j dkr6|tjj ||j dq|S)Nr) optimizationr) r-r.splitextnormcasePYTHON_SOURCE_EXTENSIONr rD importlibutilcache_from_sourcer)r py_filenamesbytecode_filespy_fileextrrr_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*)rNr$r%rr r[r,)r pure_outputsbytecode_outputs ext_outputsrrrr@s    zinstall_lib.get_outputscCsLg}|jr|d}|||jr$|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%r<extendr@r,)rinputsr)r*rrr get_inputss    zinstall_lib.get_inputsN)__name__ __module__ __qualname__ description user_optionsboolean_options negative_optrr!r(r#rr&rNr[r@rarrrrrs    r) __doc__r-importlib.utilrTr9distutils.corerdistutils.errorsrrSrrrrrs