HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/python38/lib/python3.8/site-packages/setuptools/command/__pycache__/build_py.cpython-38.pyc
U

�i�_	&�@s�ddlmZddlmZddlmmZddlZddlZddl	Z	ddl
Z
ddlZddl
Z
ddlZddlmZddlmZmZmZzddlmZWn"ek
r�Gdd�d�ZYnXd	d
�ZGdd�deje�Zdd
d�Zdd�ZdS)�)�glob)�convert_pathN)�six)�map�filter�filterfalse)�	Mixin2to3c@seZdZddd�ZdS)rTcCsdS)z
do nothingN�)�self�filesZdoctestsr	r	�?/tmp/pip-unpacked-wheel-tlqm5ymo/setuptools/command/build_py.py�run_2to3szMixin2to3.run_2to3N)T)�__name__�
__module__�__qualname__r
r	r	r	rrsrcCst�|t�|�jtjB�dS�N)�os�chmod�stat�st_mode�S_IWRITE)�targetr	r	r�
make_writablesrc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zedd��Zd S)!�build_pyaXEnhanced 'build_py' command that includes data files with packages

    The data files are specified via a 'package_data' argument to 'setup()'.
    See 'setuptools.dist.Distribution' for more details.

    Also, this version of the 'build_py' command allows you to specify both
    'py_modules' and 'packages' in the same setup operation.
    cCsFtj�|�|jj|_|jjp i|_d|jkr6|jd=g|_g|_dS)N�
data_files)	�origr�finalize_options�distribution�package_data�exclude_package_data�__dict__�_build_py__updated_files�_build_py__doctests_2to3�r
r	r	rr&s
�
zbuild_py.finalize_optionscCsx|js|jsdS|jr|��|jr4|��|��|�|jd�|�|jd�|�|jd�|�t	j
j|dd��dS)z?Build modules, packages, and copy data files to build directoryNFTr)Zinclude_bytecode)�
py_modules�packagesZ
build_modulesZbuild_packages�build_package_datar
r!r"�byte_compilerr�get_outputsr#r	r	r�run0szbuild_py.runcCs&|dkr|��|_|jStj�||�S)zlazily compute data filesr)�_get_data_filesrrr�__getattr__)r
�attrr	r	rr+Ds
zbuild_py.__getattr__cCsJtjrt|tj�r|�d�}tj�||||�\}}|rB|j�	|�||fS)N�.)
r�PY2�
isinstance�string_types�splitrr�build_moduler!�append)r
�moduleZmodule_file�package�outfile�copiedr	r	rr2Ks
�zbuild_py.build_modulecCs|��tt|j|jpd��S)z?Generate list of '(package,src_dir,build_dir,filenames)' tuplesr	)�analyze_manifest�listr�_get_pkg_data_filesr%r#r	r	rr*Uszbuild_py._get_data_filescsJ|�|��tjj|jg|�d��}�fdd�|�|��D�}|�||fS)Nr-csg|]}tj�|���qSr	)r�path�relpath)�.0�file��src_dirr	r�
<listcomp>bs�z0build_py._get_pkg_data_files.<locals>.<listcomp>)�get_package_dirrr;�join�	build_libr1�find_data_files)r
r5�	build_dir�	filenamesr	r?rr:Zs


�zbuild_py._get_pkg_data_filescCsX|�|j||�}tt|�}tj�|�}ttj	j
|�}t�|j�|g�|�}|�
|||�S)z6Return filenames for package's data files in 'src_dir')�_get_platform_patternsrrr�	itertools�chain�
from_iterablerrr;�isfile�manifest_files�get�exclude_data_files)r
r5r@�patternsZglobs_expandedZ
globs_matchesZ
glob_filesrr	r	rrEhs�
�zbuild_py.find_data_filesc
Cs�|jD]�\}}}}|D]r}tj�||�}|�tj�|��tj�||�}|�||�\}}	t|�tj�|�}|	r||j	j
kr|j�|�qqdS)z$Copy data files into build directoryN)
rrr;rC�mkpath�dirname�	copy_filer�abspathrZconvert_2to3_doctestsr"r3)
r
r5r@rFrG�filenamer�srcfile�outfr7r	r	rr&ys
�zbuild_py.build_package_datacCs�i|_}|jjsdSi}|jp"dD]}||t|�|��<q$|�d�|�d�}|jj	D]�}t
j�t|��\}}d}|}	|r�||kr�||kr�|}t
j�|�\}}
t
j�
|
|�}qx||krX|�d�r�||	kr�qX|�||g��|�qXdS)Nr	�egg_infoz.py)rMrZinclude_package_datar%�assert_relativerB�run_command�get_finalized_command�filelistrrr;r1rC�endswith�
setdefaultr3)r
ZmfZsrc_dirsr5Zei_cmdr;�d�f�prevZoldfZdfr	r	rr8�s(


zbuild_py.analyze_manifestcCsdSrr	r#r	r	r�get_data_files�szbuild_py.get_data_filesc	Cs�z|j|WStk
r YnXtj�|||�}||j|<|rH|jjsL|S|jjD]}||ksn|�|d�rTqxqT|St�	|d��}|�
�}W5QRXd|kr�tj�
d|f��|S)z8Check namespace packages' __init__ for declare_namespacer-�rbsdeclare_namespacez�Namespace package problem: %s is a namespace package, but its
__init__.py does not call declare_namespace()! Please fix it.
(See the setuptools manual under "Namespace Packages" for details.)
")�packages_checked�KeyErrorrr�
check_packagerZnamespace_packages�
startswith�io�open�read�	distutils�errors�DistutilsError)r
r5�package_dirZinit_py�pkgr`�contentsr	r	rrf�s*
��zbuild_py.check_packagecCsi|_tj�|�dSr)rdrr�initialize_optionsr#r	r	rrq�szbuild_py.initialize_optionscCs0tj�||�}|jjdk	r,tj�|jj|�S|Sr)rrrBrZsrc_rootrr;rC)r
r5�resr	r	rrB�szbuild_py.get_package_dircs\t���|�|j||�}�fdd�|D�}tj�|�}t|���fdd��D�}tt|��S)z6Filter filenames for package's data files in 'src_dir'c3s|]}t��|�VqdSr)�fnmatchr�r=�pattern)rr	r�	<genexpr>�s�z.build_py.exclude_data_files.<locals>.<genexpr>c3s|]}|�kr|VqdSrr	)r=�fn)�badr	rrv�s�)r9rHrrIrJrK�set�_unique_everseen)r
r5r@rrPZmatch_groups�matchesZkeepersr	)rxrrrO�s�
�
�zbuild_py.exclude_data_filescs.t�|�dg�|�|g��}�fdd�|D�S)z�
        yield platform-specific path patterns (suitable for glob
        or fn_match) from a glob-based spec (such as
        self.package_data or self.exclude_package_data)
        matching package in src_dir.
        �c3s |]}tj��t|��VqdSr)rr;rCrrtr?r	rrv�s�z2build_py._get_platform_patterns.<locals>.<genexpr>)rIrJrN)�specr5r@Zraw_patternsr	r?rrH�s

�
�zbuild_py._get_platform_patternsN)rrr�__doc__rr)r+r2r*r:rEr&r8rbrfrqrBrO�staticmethodrHr	r	r	rrs"	

rccsbt�}|j}|dkr6t|j|�D]}||�|Vq n(|D]"}||�}||kr:||�|Vq:dS)zHList unique elements, preserving order. Remember all elements ever seen.N)ry�addr�__contains__)�iterable�key�seenZseen_add�element�kr	r	rrz�s
rzcCs:tj�|�s|Sddlm}t�d���|}||��dS)Nr)�DistutilsSetupErrorz�
        Error: setup script specifies an absolute path:

            %s

        setup() arguments must *always* be /-separated paths relative to the
        setup.py directory, *never* absolute paths.
        )rr;�isabs�distutils.errorsr��textwrap�dedent�lstrip)r;r��msgr	r	rrYs�rY)N)r�distutils.utilrZdistutils.command.build_py�commandrrrrsr�rhr�rkrIrZsetuptools.externrZsetuptools.extern.six.movesrrrZsetuptools.lib2to3_exr�ImportErrorrrzrYr	r	r	r�<module>s(Z