Current File : //proc/3/cwd/opt/alt/python35/lib64/python3.5/distutils/command/__pycache__/build_py.cpython-35.pyc
�q�\C�@s�dZddlZddlZddlZddlmZddlmZddlTddl m
Z
mZddlm
Z
Gdd �d e�ZGd
d�dee�ZdS)zHdistutils.command.build_py
Implements the Distutils 'build_py' command.�N)�glob)�Command)�*)�convert_path� Mixin2to3)�logc@s*eZdZdZd8d9d:d;d<gZddgZddiZdd�Zdd�Zdd�Z dd�Z
dd�Zdd�Zdd�Z
dd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd S)=�build_pyz5"build" pure Python modules (copy to build directory)�
build-lib=�d�directory to "build" (copy) to�compile�c�compile .py to .pyc�
no-compileN�!don't compile .py files [default]� optimize=�O�lalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]�force�f�2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS)Nr)� build_lib�
py_modules�package�package_data�package_dirr�optimizer)�self�r�?/opt/alt/python35/lib64/python3.5/distutils/command/build_py.py�initialize_options s zbuild_py.initialize_optionscCs|jddd�|jj|_|jj|_|jj|_i|_|jjr�x3|jjj�D]\}}t|�|j|<qhW|j�|_ t
|jt�sy;t|j�|_d|jko�dkns�t
�Wn$tt
fk
r
td��YnXdS) NZbuildrrr�zoptimize must be 0, 1, or 2)rr)rr)Zset_undefined_options�distribution�packagesrrr�itemsr�get_data_files�
data_files�
isinstancer�int�AssertionError�
ValueErrorZDistutilsOptionError)r�name�pathrrr�finalize_options*s" )zbuild_py.finalize_optionscCsM|jr|j�|jr0|j�|j�|j|jdd��dS)N�include_bytecoder)r�
build_modulesr#�build_packages�build_package_data�byte_compile�get_outputs)rrrr�runCs
zbuild_py.runcs�g}|js|Sx�|jD]�}|j|�}tjj|jg|jd��}d�|rst|�d��fdd�|j||�D�}|j ||||f�qW|S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuples�.r�cs g|]}|�d��qS)Nr)�.0�file)�plenrr�
<listcomp>ts z+build_py.get_data_files.<locals>.<listcomp>)
r#�get_package_dir�osr,�joinr�split�len�find_data_files�append)r�datar�src_dir� build_dir� filenamesr)r9rr%as %%zbuild_py.get_data_filescs�|jjdg�|jj|g�}g�xO|D]G}ttjj|t|���}�j�fdd�|D��q5W�S)z6Return filenames for package's data files in 'src_dir'�cs4g|]*}|�krtjj|�r|�qSr)r<r,�isfile)r7�fn)�filesrrr:�s z,build_py.find_data_files.<locals>.<listcomp>)r�getrr<r,r=r�extend)rrrCZglobs�patternZfilelistr)rIrr@ys
!$zbuild_py.find_data_filescCs�d}x�|jD]v\}}}}xa|D]Y}tjj||�}|jtjj|��|jtjj||�|dd�q)WqWdS)z$Copy data files into build directoryN�
preserve_modeF)r&r<r,r=�mkpath�dirname� copy_file)rZlastdirrrCrDrE�filename�targetrrrr1�s
zbuild_py.build_package_datacCs�|jd�}|js5|r.tjj|�SdSn�g}x�|r�y|jdj|�}Wn-tk
r�|jd|d�|d=Yq>X|jd|�tjj|�Sq>W|jjd�}|dk r�|jd|�|r�tjj|�SdSdS)z�Return 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).r5rFrr6N���rS)r>rr<r,r=�KeyError�insertrJ)rrr,�tailZpdirrrrr;�s(
zbuild_py.get_package_dircCs�|dkrPtjj|�s.td|��tjj|�sPtd|��|r�tjj|d�}tjj|�r�|Stjdd|�dS)NrFz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz__init__.pyz!package init file '%s' not found z(or not a regular file)) r<r,�existsZDistutilsFileError�isdirr=rGr�warn)rrr�init_pyrrr�
check_package�s
zbuild_py.check_packagecCs1tjj|�s)tjd||�dSdSdS)Nz!file %s (for module %s) not foundFT)r<r,rGrrY)r�module�module_filerrr�check_module�szbuild_py.check_modulec Cs�|j||�ttjj|d��}g}tjj|jj�}xx|D]p}tjj|�}||kr�tjjtjj |��d}|j
|||f�qP|jd|�qPW|S)Nz*.pyrzexcluding %s)r[rr<r,r=�abspathr"Zscript_name�splitext�basenamerAZdebug_print) rrrZmodule_files�modulesZsetup_scriptrZabs_fr\rrr�find_package_modules�s
"zbuild_py.find_package_modulesc
Csi}g}x |jD]�}|jd�}dj|dd��}|d}y||\}}Wn'tk
r�|j|�}d}YnX|s�|j||�} |df||<| r�|j|d| f�tjj||d�}
|j ||
�s�q|j|||
f�qW|S)a�Finds 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.
r5rr6�__init__z.pyrSrS)
rr>r=rTr;r[rAr<r,r^)rr#rbr\r,rZmodule_baserZcheckedrZr]rrr�find_modules�s*
zbuild_py.find_modulescCsqg}|jr"|j|j��|jrmx?|jD]4}|j|�}|j||�}|j|�q5W|S)a4Compute 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.)rrKrer#r;rc)rrbrr�mrrr�find_all_moduless zbuild_py.find_all_modulescCsdd�|j�D�S)NcSsg|]}|d�qS)r6rSr)r7r\rrrr:-s z-build_py.get_source_files.<locals>.<listcomp>)rg)rrrr�get_source_files,szbuild_py.get_source_filescCs.|gt|�|dg}tjj|�S)Nz.py)�listr<r,r=)rrDrr\Zoutfile_pathrrr�get_module_outfile/szbuild_py.get_module_outfiler6cCs�|j�}g}x�|D]�\}}}|jd�}|j|j||�}|j|�|r|jr�|jtjj|dd��|j dkr|jtjj|d|j ��qW|dd�|j
D�7}|S)Nr5�optimizationrFrcSs>g|]4\}}}}|D]}tjj||��qqSr)r<r,r=)r7rrCrDrErQrrrr:Cs z(build_py.get_outputs.<locals>.<listcomp>)rgr>rjrrAr� importlib�util�cache_from_sourcerr&)rr.rbZoutputsrr\r]rQrrrr33s"
zbuild_py.get_outputscCs�t|t�r!|jd�}n!t|ttf�sBtd��|j|j||�}tj j
|�}|j|�|j||dd�S)Nr5z:'package' must be a string (dot-separated), list, or tuplerMr)
r'�strr>ri�tuple� TypeErrorrjrr<r,rOrNrP)rr\r]rZoutfile�dirrrr�build_moduleJs
zbuild_py.build_modulecCs=|j�}x*|D]"\}}}|j|||�qWdS)N)rers)rrbrr\r]rrrr/Yszbuild_py.build_modulescCsxxq|jD]f}|j|�}|j||�}x<|D]4\}}}||ksYt�|j|||�q8Wq
WdS)N)r#r;rcr)rs)rrrrbZpackage_r\r]rrrr0bs
zbuild_py.build_packagesc
Cs�tjr|jd�dSddlm}|j}|d tjkrS|tj}|jr�||ddd|j d|d|j
�|jdkr�||d|jd|j d|d|j
�dS)
Nz%byte-compiling is disabled, skipping.r)r2r6rr�prefix�dry_runrS)�sys�dont_write_bytecoderY�distutils.utilr2rr<�seprrrur)rrIr2rtrrrr2vs
zbuild_py.byte_compile)r r
r)rr
r)rNr)rrr)rrr)�__name__�
__module__�__qualname__ZdescriptionZuser_optionsZboolean_optionsZnegative_optr r-r4r%r@r1r;r[r^rcrergrhrjr3rsr/r0r2rrrrrs8
'4 rc@s(eZdZdd�Zdd�ZdS)�
build_py_2to3cCsfg|_|jr|j�|jr9|j�|j�|j|j�|j|jdd��dS)Nr.r) �
updated_filesrr/r#r0r1Zrun_2to3r2r3)rrrrr4�s
zbuild_py_2to3.runcCs:tj||||�}|dr6|jj|d�|S)Nr6r)rrsr~rA)rr\r]r�resrrrrs�s
zbuild_py_2to3.build_moduleN)rzr{r|r4rsrrrrr}�sr})�__doc__r<�importlib.utilrlrvrZdistutils.corerZdistutils.errorsrxrrZ distutilsrrr}rrrr�<module>s
�|