U
    X…7h¿  ã                   @  sl   d dl mZ d dlZd dlZd dlmZmZ ddlmZ ddl	m
Z
 d dlm  mZ G dd„ dejƒZdS )	é    )ÚannotationsN)ÚproductÚstarmapé   )ÚStrPath)ÚDistributionc                	   @  sv   e Zd ZU dZded< dd„ Zdd„ Zdd	„ Zed
d„ ƒZ	dd„ Z
edd„ ƒZdddddddddœdd„Zdd„ ZdS )Úinstall_libz9Don't add compiled flags to filenames of non-Python filesr   Údistributionc                 C  s&   |   ¡  |  ¡ }|d k	r"|  |¡ d S ©N)ÚbuildÚinstallÚbyte_compile)ÚselfÚoutfiles© r   úX/var/www/formularioweb/env/lib/python3.8/site-packages/setuptools/command/install_lib.pyÚ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)Ú.0Zns_pkgÚpkg©r   r   r   Ú	<genexpr>   s    þz-install_lib.get_exclusions.<locals>.<genexpr>)Ú_get_SVEM_NSPsr   Ú_gen_exclusion_pathsÚsetr   Ú_exclude_pkg_path)r   Zall_packagesZ
excl_specsr   r   r   Úget_exclusions   s
    
þzinstall_lib.get_exclusionsc                 C  s$   |  d¡|g }tjj| jf|žŽ 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   Zexclusion_pathÚpartsr   r   r   r   '   s    zinstall_lib._exclude_pkg_pathc                 c  s    | r| V  |   d¡\} }}q 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   /   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   )r	   Únamespace_packagesÚget_finalized_commandÚ!single_version_externally_managed)r   Zinstall_cmdZsvemr   r   r   r   9   s
    
zinstall_lib._get_SVEM_NSPsc                  c  sb   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)ÚhasattrÚsysr   r    r!   r+   Ú	cache_tag)Úbaser   r   r   r   I   s    



z install_lib._gen_exclusion_pathsTFé   r   ÚstrÚboolÚobjectz	list[str])ÚinfileÚoutfileÚpreserve_modeÚpreserve_timesÚpreserve_symlinksÚlevelÚreturnc           	        sp   |r|r|rt ‚|  ¡ ‰ ˆ s,tj | ||¡S ddlm} ddlm‰ g ‰dddœ‡ ‡‡fdd„}||||ƒ ˆS )Nr   )Úunpack_directory)Úlogr2   ©ÚsrcÚdstc                   s<   |ˆ krˆ  d|¡ dS ˆ d| tj |¡¡ ˆ |¡ |S )Nz/Skipping installation of %s (namespace package)Fzcopying %s -> %s)ÚwarnÚinfor   r    ÚdirnameÚappendr>   ©Úexcluder=   r   r   r   Úpfv   s    
z!install_lib.copy_tree.<locals>.pf)	ÚAssertionErrorr   Úorigr   Ú	copy_treeZsetuptools.archive_utilr<   Ú	distutilsr=   )	r   r5   r6   r7   r8   r9   r:   r<   rG   r   rE   r   rJ   ^   s    
	zinstall_lib.copy_treec                   s.   t j | ¡}|  ¡ ‰ ˆ r*‡ fdd„|D ƒS |S )Nc                   s   g | ]}|ˆ kr|‘qS r   r   )r   Úf©rF   r   r   Ú
<listcomp>†   s      z+install_lib.get_outputs.<locals>.<listcomp>)rI   r   Úget_outputsr   )r   Úoutputsr   rM   r   rO   ‚   s
    zinstall_lib.get_outputsN)TTFr1   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r   r   Ústaticmethodr   r   r   rJ   rO   r   r   r   r   r      s    

	
    ø$r   )Ú
__future__r   r   r.   Ú	itertoolsr   r   Ú_pathr   Údistr   Zdistutils.command.install_libÚcommandr   rI   r   r   r   r   Ú<module>   s   