name : bdist_egg.cpython-39.pyc
a

��kh�@�@sdZddlmZmZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
mZmZmZddlmZddlmZdd	lmZmZd
d�Zdd
�Zdd�Zdd�ZGdd�de�Ze�d���Z dd�Z!dd�Z"dd�Z#ddd�Z$dd�Z%d d!�Z&d"d#�Z'gd$�Z(d)d'd(�Z)dS)*z6setuptools.command.bdist_egg

Build .egg distributions�)�remove_tree�mkpath)�log)�CodeTypeN)�get_build_platform�Distribution�ensure_directory)�Library)�Command)�get_path�get_python_versioncCstd�S)NZpurelib)r�r
r
�@/usr/lib/python3.9/site-packages/setuptools/command/bdist_egg.py�_get_purelibsrcCs2d|vrtj�|�d}|�d�r.|dd�}|S)N�.r�modulei����)�os�path�splitext�endswith)�filenamer
r
r�strip_modules

rccs6t�|�D]&\}}}|��|��|||fVq
dS)zbDo os.walk in a reproducible way,
    independent of indeterministic filesystem readdir order
    N)r�walk�sort)�dir�base�dirs�filesr
r
r�sorted_walk!srcCsJt�d���}t|d��}|�||�Wd�n1s<0YdS)Na�
        def __bootstrap__():
            global __bootstrap__, __loader__, __file__
            import sys, pkg_resources, importlib.util
            __file__ = pkg_resources.resource_filename(__name__, %r)
            __loader__ = None; del __bootstrap__, __loader__
            spec = importlib.util.spec_from_file_location(__name__,__file__)
            mod = importlib.util.module_from_spec(spec)
            spec.loader.exec_module(mod)
        __bootstrap__()
        �w)�textwrap�dedent�lstrip�open�write)�resource�pyfileZ_stub_template�fr
r
r�
write_stub+sr(c@s�eZdZdZdddde�fdddd	gZgd
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!S)"�	bdist_eggzcreate an "egg" distribution)z
bdist-dir=�bz1temporary directory for creating the distributionz
plat-name=�pz;platform name to embed in generated filenames (default: %s))�exclude-source-filesNz+remove all .py files from the generated egg)�	keep-temp�kzPkeep the pseudo-installation tree around after creating the distribution archive)z	dist-dir=�dz-directory to put final built distributions in)�
skip-buildNz2skip rebuilding everything (for testing/debugging))r-r0r,cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr)�	bdist_dir�	plat_name�	keep_temp�dist_dir�
skip_build�
egg_output�exclude_source_files��selfr
r
r�initialize_optionsRszbdist_egg.initialize_optionscCs�|�d�}|_|j|_|jdur>|�d�j}tj�|d�|_|jdurPt	�|_|�
dd�|jdur�tdd|j
|jt�|j��o�|j��
�}tj�|j|d�|_dS)N�egg_infoZbdistZegg)r4r4z.egg)�get_finalized_command�ei_cmdr;r1�
bdist_baserr�joinr2rZset_undefined_optionsr6rZegg_nameZegg_versionr�distribution�has_ext_modulesr4)r9r=r>�basenamer
r
r�finalize_options[s


�zbdist_egg.finalize_optionscCs�|j|�d�_tj�tj�t���}|jj	g}|j_	|D]�}t
|t�r�t|�dkr�tj�
|d�r�tj�|d�}tj�|�}||ks�|�|tj�r�|t|�dd�|df}|jj	�|�q:z*t�d|j�|jdddd�W||j_	n
||j_	0dS)N�install�r�zinstalling package data to %s�install_data)�force�root)r1r<�install_librr�normcase�realpathrr@�
data_files�
isinstance�tuple�len�isabs�
startswith�sep�appendr�info�call_command)r9Z
site_packages�old�itemrLZ
normalizedr
r
r�do_install_datass"�zbdist_egg.do_install_datacCs|jgS)N)r6r8r
r
r�get_outputs�szbdist_egg.get_outputscKsTtD]}|�||j�q|�d|j�|�d|j�|j|fi|��}|�|�|S)z8Invoke reinitialized command `cmdname` with keyword argsr5�dry_run)�INSTALL_DIRECTORY_ATTRS�
setdefaultr1r5r[Zreinitialize_command�run_command)r9Zcmdname�kw�dirname�cmdr
r
rrV�s
zbdist_egg.call_commandcCs�|�d�t�d|j�|�d�}|j}d|_|j��rH|jsH|�d�|j	ddd�}||_|�
�\}}g|_g}t|�D]|\}}t
j�|�\}	}
t
j�|jt|	�d�}|j�|�t�d	|�|js�tt
j�|�|�|�|�|�t
jd
�||<qz|�r|�|�|jj�r|��|j}t
j�|d�}
|�|
�|jj�rlt
j�|
d�}t�d
|�|j	d|dd�|�|
�t
j�|
d�}|�r�t�d|�|j�st|�t|d�}|� d�|��|� d�|�!�n,t
j�"|��rt�d|�|j�st
�#|�t$t
j�|d�|�%��t
j�&t
j�|j'd���r<t�(d�|j)�rL|�*�t+|j,||j-|j|�.�d�|j/�s�t0|j|jd�t1|jdg��dt2�|j,f�dS)Nr;zinstalling library code to %srDZ
build_clibrJr)Zwarn_dir�.pyzcreating stub loader for %s�/�EGG-INFO�scriptszinstalling scripts to %sZinstall_scriptsrF)�install_dirZno_epznative_libs.txtz
writing %s�wt�
zremoving %szdepends.txtzxWARNING: 'depends.txt' will not be used by setuptools 0.6!
Use the install_requires/extras_require setup() args instead.)�verboser[�mode�r[Z
dist_filesr))3r^rrUr1r<rIr@Zhas_c_librariesr5rV�get_ext_outputs�stubs�	enumeraterrrr?rrTr[r(rB�replacerSZbyte_compilerMrYrre�copy_metadata_torr#r$�close�isfile�unlink�write_safety_flag�zip_safe�existsr;�warnr7�zap_pyfiles�make_zipfiler6ri�
gen_headerr3r�getattrr)r9ZinstcmdZold_rootra�all_outputs�ext_outputsZ
to_compiler+Zext_namer�extr&Zarchive_rootr;Z
script_dirZnative_libsZ	libs_filer
r
r�run�s�


�




�




��
��z
bdist_egg.runc

Cs�t�d�t|j�D]�\}}}|D]�}tj�||�}|�d�rTt�d|�t�	|�|�d�r"|}d}t
�||�}tj�|tj|�
d�d�}	t�d||	f�zt�|	�Wnty�Yn0t�||	�q"qdS)	Nz+Removing .py files from temporary directoryrbzDeleting %s�__pycache__z#(?P<name>.+)\.(?P<magic>[^.]+)\.pyc�name�.pyczRenaming file from [%s] to [%s])rrU�walk_eggr1rrr?r�debugrs�re�match�pardir�group�remove�OSError�rename)
r9rrrr�rZpath_old�pattern�mZpath_newr
r
rrx�s0



���zbdist_egg.zap_pyfilescCs2t|jdd�}|dur|St�d�t|j|j�S)Nruz4zip_safe flag not set; analyzing archive contents...)r{r@rrw�analyze_eggr1rm)r9�safer
r
rrus

zbdist_egg.zip_safecCsdS)Nrr
r8r
r
rrzszbdist_egg.gen_headercCshtj�|j�}tj�|d�}|jjjD]<}|�|�r&tj�||t	|�d��}t
|�|�||�q&dS)z*Copy metadata (egg info) to the target_dir�N)rr�normpathr;r?r=ZfilelistrrRrPrZ	copy_file)r9Z
target_dirZ
norm_egg_info�prefixr�targetr
r
rrps
zbdist_egg.copy_metadata_tocCsg}g}|jdi}t|j�D]f\}}}|D].}tj�|�d��tvr*|�|||�q*|D]"}|||d|tj�||�<q^q|j	�
�r�|�d�}|jD]Z}	t
|	t�r�q�|�|	j�}
|�|
�}tj�|��d�s�tj�tj�|j|��r�|�|�q�||fS)zAGet a list of relative paths to C extensions in the output distror�rFrcZ	build_extzdl-)r1rrrr�lower�NATIVE_EXTENSIONSrTr?r@rAr<�
extensionsrNr	Zget_ext_fullnamer�Zget_ext_filenamerBrRrv)r9r|r}�pathsrrrrZ	build_cmdr~�fullnamer
r
rrls0
��




zbdist_egg.get_ext_outputsN)�__name__�
__module__�__qualname__�descriptionrZuser_optionsZboolean_optionsr:rCrYrZrVrrxrurzrprlr
r
r
rr);s,��	
Qr)z.dll .so .dylib .pydccsHt|�}t|�\}}}d|vr(|�d�|||fV|D]
}|Vq8dS)z@Walk an unpacked egg's contents, skipping the metadata directoryrdN)r�nextr�)�egg_dirZwalkerrrrZbdfr
r
rr�:s
r�c	Cs�t��D](\}}tj�tj�|d|��r|Sqt�s<dSd}t|�D]R\}}}|D]B}|�d�sV|�d�rrqVqV|�d�s�|�d�rVt	||||�o�|}qVqH|S)NrdFTrbz.pywr�z.pyo)
�safety_flags�itemsrrrvr?�can_scanr�r�scan_module)	r�rm�flag�fnr�rrrr�r
r
rr�Es
r�cCs�t��D]r\}}tj�||�}tj�|�rJ|dus>t|�|krzt�|�q|durt|�|krt|d�}|�	d�|�
�qdS)Nrgrh)r�r�rrr?rv�boolrsr#r$rq)r�r�r�r�r'r
r
rrtWs

rtzzip-safeznot-zip-safe)TFc
Cstj�||�}|dd�|vr"dS|t|�dd��tjd�}||rJdpLdtj�|�d}tjdkrpd	}nd
}t	|d�}|�
|�t�|�}	|�
�d}
t�t|	��}dD]}||vr�t�d
||�d}
q�d|vr�dD]}||vr�t�d||�d}
q�|
S)z;Check whether module possibly uses unsafe-for-zipfile stuffN���TrFrr�r)�����rb)�__file__�__path__z%s: module references %sF�inspect)Z	getsourceZ
getabsfileZ
getsourcefileZgetfilegetsourcelinesZ
findsourceZgetcommentsZgetframeinfoZgetinnerframesZgetouterframes�stackZtracez"%s: module MAY be using inspect.%s)rrr?rProrSr�sys�version_infor#�read�marshal�loadrq�dict�fromkeys�iter_symbolsrrw)
r�rr�rmr�pkgr�skipr'�coder�ZsymbolsZbadr
r
rr�js0 



r�ccsR|jD]
}|Vq|jD]4}t|t�r.|Vqt|t�rt|�D]
}|Vq@qdS)zBYield names and strings used by `code` and its nested code objectsN)�co_names�	co_constsrN�strrr�)r�r��constr
r
rr��s



r�cCs2tj�d�stjdkrdSt�d�t�d�dS)N�javaZcliTz1Unable to analyze compiled code on this platform.zfPlease ask the author to include a 'zip_safe' setting (either True or False) in the package's setup.py)r��platformrRrrwr
r
r
rr��s
r�)rJrfrGZinstall_baseTrc
s�ddl}ttj�|��d�t�d|����fdd�}|rB|jn|j}�s�|j	|||d�}	t
��D]\}
}}||	|
|�qd|	��n t
��D]\}
}}|d|
|�q�|S)aqCreate a zip file from all the files under 'base_dir'.  The output
    zip file will be named 'base_dir' + ".zip".  Uses either the "zipfile"
    Python module (if available) or the InfoZIP "zip" utility (if installed
    and found on the default search path).  If neither tool is available,
    raises DistutilsExecError.  Returns the name of the output zip file.
    rNrkz#creating '%s' and adding '%s' to itcs`|D]V}tj�tj�||��}tj�|�r|t��dd�}�sN|�||�t�d|�qdS)NrFzadding '%s')	rrr�r?rrrPr$rr�)�zr`�namesr�rr+��base_dirr[r
r�visit�szmake_zipfile.<locals>.visit)�compression)�zipfilerrrr`rrU�ZIP_DEFLATEDZ
ZIP_STORED�ZipFilerrq)
�zip_filenamer�rir[�compressrjr�r�r�r�r`rrr
r�rry�s	
ry)rrTr)*�__doc__Zdistutils.dir_utilrrZ	distutilsr�typesrr�rr�r r�Z
pkg_resourcesrrrZsetuptools.extensionr	Z
setuptoolsr
Z	sysconfigrrrrrr(r)r�r��splitr�r�r�rtr�r�r�r�r\ryr
r
r
r�<module>s@
}�"�

© 2025 Cubjrnet7