o
    Ëý°j¬  ã                   @   sH   d dl Z d dlZd dlmZmZ d dlm  mZ G dd„ dejƒZdS )é    N)ÚproductÚstarmapc                   @   sl   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Ze	dd„ ƒZ
dd„ Ze	dd„ ƒZ	ddd„Zdd„ ZdS )Úinstall_libz9Don't add compiled flags to filenames of non-Python filesc                 C   s   t j | ¡ d | _d | _d S ©N)Úorigr   Úinitialize_optionsÚ	multiarchÚinstall_layout©Úself© r   ú‘/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/command/install_lib.pyr   
   s   
zinstall_lib.initialize_optionsc                 C   sT   t j | ¡ |  dd¡ | jdkr&tjd d… dkr(dd l}| d¡| _	d S d S d S )NÚinstall)r	   r	   Údebé   )é   r   r   Ú	MULTIARCH)
r   r   Úfinalize_optionsÚset_undefined_optionsr	   ÚsysÚversion_infoÚ	sysconfigÚget_config_varr   )r   r   r   r   r   r      s   þzinstall_lib.finalize_optionsc                 C   s*   |   ¡  |  ¡ }|d ur|  |¡ d S d S r   )Úbuildr   Úbyte_compile)r   Úoutfilesr   r   r   Úrun   s
   þzinstall_lib.runc                    s4   ‡ fdd„ˆ   ¡ D ƒ}t|ˆ  ¡ ƒ}ttˆ j|ƒƒS )z—
        Return a collections.Sized collections.Container of paths to be
        excluded for single_version_externally_managed installations.
        c                 3   s$   � | ]}ˆ   |¡D ]}|V  q	qd S r   )Ú_all_packages)Ú.0Úns_pkgÚpkgr
   r   r   Ú	<genexpr>"   s   € ýþÿz-install_lib.get_exclusions.<locals>.<genexpr>)Ú_get_SVEM_NSPsr   Ú_gen_exclusion_pathsÚsetr   Ú_exclude_pkg_path)r   Úall_packagesÚ
excl_specsr   r
   r   Úget_exclusions   s
   
þzinstall_lib.get_exclusionsc                 C   s&   |  d¡|g }tjj| jg|¢R Ž S )zw
        Given a package name and exclusion path within that package,
        compute the full exclusion path.
        Ú.)ÚsplitÚosÚpathÚjoinÚinstall_dir)r   r    Úexclusion_pathÚpartsr   r   r   r%   +   s   zinstall_lib._exclude_pkg_pathc                 c   s(   � | r| V  |   d¡\} }}| sdS dS )zn
        >>> list(install_lib._all_packages('foo.bar.baz'))
        ['foo.bar.baz', 'foo.bar', 'foo']
        r)   N)Ú
rpartition)Úpkg_nameÚsepÚchildr   r   r   r   3   s
   €þzinstall_lib._all_packagesc                 C   s,   | j jsg S |  d¡}|j}|r| j jS g S )z‰
        Get namespace packages (list) but only for
        single_version_externally_managed installations and empty otherwise.
        r   )ÚdistributionÚnamespace_packagesÚget_finalized_commandÚ!single_version_externally_managed)r   Úinstall_cmdÚsvemr   r   r   r"   =   s
   
zinstall_lib._get_SVEM_NSPsc                  c   sd   � dV  dV  dV  t tdƒsdS tj ddtjj ¡} | d V  | d	 V  | d
 V  | d V  dS )zk
        Generate file paths to be excluded for namespace packages (bytecode
        cache files).
        z__init__.pyz__init__.pycz__init__.pyoÚimplementationNÚ__pycache__z	__init__.z.pycz.pyoz
.opt-1.pycz
.opt-2.pyc)Úhasattrr   r+   r,   r-   r;   Ú	cache_tag)Úbaser   r   r   r#   M   s   €
ÿ


z install_lib._gen_exclusion_pathsé   r   c                    sÖ   |r|r|rJ ‚ˆ  ¡ ‰ ˆ sdd l}ˆj|j_tj ˆ||¡S ddlm	} ddl
m‰ g ‰ˆjrXdd l}	|	 d¡‰ˆ ˆjˆdd …  ¡rHd ‰ndˆd d… ˆjˆdd … f ‰‡ ‡‡‡‡‡fdd„}
||||
ƒ ˆS )	Nr   )Úunpack_directory)ÚlogÚ
EXT_SUFFIXéýÿÿÿz%s-%s%sc                    sz   |ˆ v rˆ  d|¡ dS ˆjr+ˆr+| ˆ¡r+| ˆ¡s+| ˆˆ¡}ˆ dtj |¡¡ ˆ d| tj |¡¡ ˆ 	|¡ |S )Nz/Skipping installation of %s (namespace package)Fzrenaming extension to %szcopying %s -> %s)
Úwarnr   ÚendswithÚreplaceÚinfor+   r,   ÚbasenameÚdirnameÚappend)ÚsrcÚdst©ÚexcludeÚ
ext_suffixrB   Ú
new_suffixr   r   r   r   Úpf~   s   ÿ
z!install_lib.copy_tree.<locals>.pf)r(   Údistutils.dir_utilr   Údir_utilÚ
_multiarchr   r   Ú	copy_treeÚsetuptools.archive_utilrA   Ú	distutilsrB   r   r   rF   )r   ÚinfileÚoutfileÚpreserve_modeÚpreserve_timesÚpreserve_symlinksÚlevelrX   rA   r   rR   r   rN   r   rV   c   s$   

 zinstall_lib.copy_treec                    s.   t j | ¡}|  ¡ ‰ ˆ r‡ fdd„|D ƒS |S )Nc                    s   g | ]}|ˆ vr|‘qS r   r   )r   Úf©rO   r   r   Ú
<listcomp>“   s    z+install_lib.get_outputs.<locals>.<listcomp>)r   r   Úget_outputsr(   )r   Úoutputsr   r`   r   rb   �   s
   zinstall_lib.get_outputsN)r@   r@   r   r@   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r(   r%   Ústaticmethodr   r"   r#   rV   rb   r   r   r   r   r      s    
	

þ,r   )	r+   r   Ú	itertoolsr   r   Údistutils.command.install_libÚcommandr   r   r   r   r   r   Ú<module>   s
    