U
    X…7h“  ã                   @  s¢   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ ddl	m
Z
 ddlmZ dd	lmZ d dlm  mZ d d
lmZ eZddd„ZG dd„ dejƒZdS )é    )ÚannotationsN)Úchain)ÚClassVaré   )Úmetadata)ÚDistributioné   )Ú_ORIGINAL_SUBCOMMANDS)ÚlogÚ c                 c  s(   t jddD ]}| ¡ | ƒE dH  qdS )z%Find all files under revision controlzsetuptools.file_finders)ÚgroupN)r   Úentry_pointsÚload)ÚdirnameÚep© r   úR/var/www/formularioweb/env/lib/python3.8/site-packages/setuptools/command/sdist.pyÚwalk_revctrl   s    r   c                      sð   e Zd ZU dZdddddgZded< i Zd	ed
< ddddgZedd„ eD ƒƒZ	dd„ Z
dd„ Zdd„ Zeejdd„ ƒƒZ‡ fdd„Z‡ fdd„Zdd„ Zdd „ Zd!d"„ Zd#d$„ Z‡ fd%d&„Z‡ fd'd(„Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Z‡  ZS )1Úsdistz=Smart sdist that finds anything supported by revision control)zformats=Nz6formats for source distribution (comma-separated list))z	keep-tempÚkz@keep the distribution tree around after creating archive file(s))z	dist-dir=ÚdzFdirectory to put the source distribution archive(s) in [default: dist])zowner=Úuz@Owner name used when creating a tar file [default: current user])zgroup=ÚgzAGroup name used when creating a tar file [default: current group]r   ÚdistributionzClassVar[dict[str, str]]Únegative_optr   z.rstz.txtz.mdc                 c  s   | ]}d   |¡V  qdS )z	README{0}N)Úformat)Ú.0Úextr   r   r   Ú	<genexpr>8   s     zsdist.<genexpr>c                 C  s–   |   d¡ |  d¡}|j| _| j tj |jd¡¡ |  ¡  |  	¡ D ]}|   |¡ qD|  
¡  t| jdg ƒ}| jD ] }dd|f}||krp| |¡ qpd S )NÚegg_infozSOURCES.txtÚ
dist_filesr   r   )Úrun_commandÚget_finalized_commandÚfilelistÚappendÚosÚpathÚjoinr   Úcheck_readmeÚget_sub_commandsÚmake_distributionÚgetattrr   Zarchive_files)ÚselfÚei_cmdÚcmd_namer    ÚfileÚdatar   r   r   Úrun:   s    



z	sdist.runc                 C  s   t j | ¡ d S ©N)Úorigr   Úinitialize_options©r,   r   r   r   r4   M   s    zsdist.initialize_optionsc              	   C  s$   |   ¡  tj | ¡ W 5 Q R X dS )z%
        Workaround for #516
        N)Ú_remove_os_linkr3   r   r*   r5   r   r   r   r*   P   s    
zsdist.make_distributionc                  c  sX   G dd„ dƒ} t td| ƒ}zt`W n tk
r6   Y nX z
dV  W 5 || k	rR|t_X dS )zG
        In a context, remove and restore os.link if it exists
        c                   @  s   e Zd ZdS )z&sdist._remove_os_link.<locals>.NoValueN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚNoValue^   s   r:   ÚlinkN)r+   r%   r;   Ú	Exception)r:   Zorig_valr   r   r   r6   W   s    
zsdist._remove_os_linkc                   s   t ƒ  ¡  |  ¡  d S r2   )ÚsuperÚadd_defaultsÚ _add_defaults_build_sub_commandsr5   ©Ú	__class__r   r   r>   l   s    
zsdist.add_defaultsc                   s&   t ƒ  ¡  tj d¡r"| j d¡ d S )Nzpyproject.toml)r=   Ú_add_defaults_optionalr%   r&   Úisfiler#   r$   r5   r@   r   r   rB   p   s    
zsdist._add_defaults_optionalc                 C  s8   | j  ¡ r4|  d¡}| j | ¡ ¡ |  |  |¡¡ dS )zgetting python filesÚbuild_pyN)r   Úhas_pure_modulesr"   r#   ÚextendÚget_source_filesÚ_add_data_filesÚ_safe_data_files©r,   rD   r   r   r   Ú_add_defaults_pythonu   s    

zsdist._add_defaults_pythonc                   sP   ˆ   d¡}t| ¡ ƒt }‡ fdd„|D ƒ}dd„ |D ƒ}ˆ j t |¡¡ d S )NÚbuildc                 3  s   | ]}ˆ   |¡V  qd S r2   )r"   ©r   Úcr5   r   r   r   €   s     z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>c                 s  s    | ]}t |d ƒr| ¡ V  qdS )rG   N)ÚhasattrrG   rM   r   r   r   r      s     
 )r"   Úsetr)   r	   r#   rF   r   Úfrom_iterable)r,   rL   Zmissing_cmdsZcmdsÚfilesr   r5   r   r?   |   s
    
z&sdist._add_defaults_build_sub_commandsc                 C  s   |j S )að  
        Since the ``sdist`` class is also used to compute the MANIFEST
        (via :obj:`setuptools.command.egg_info.manifest_maker`),
        there might be recursion problems when trying to obtain the list of
        data_files and ``include_package_data=True`` (which in turn depends on
        the files included in the MANIFEST).

        To avoid that, ``manifest_maker`` should be able to overwrite this
        method and avoid recursive attempts to build/analyze the MANIFEST.
        )Ú
data_filesrJ   r   r   r   rI   „   s    zsdist._safe_data_filesc                 C  s   | j  dd„ |D ƒ¡ dS )zA
        Add data files as found in build_py.data_files.
        c                 s  s.   | ]&\}}}}|D ]}t j ||¡V  qqd S r2   )r%   r&   r'   )r   Ú_Úsrc_dirÚ	filenamesÚnamer   r   r   r   •   s   
 þz(sdist._add_data_files.<locals>.<genexpr>N)r#   rF   )r,   rS   r   r   r   rH   ‘   s    þzsdist._add_data_filesc                   s2   zt ƒ  ¡  W n tk
r,   t d¡ Y nX d S )Nz&data_files contains unexpected objects)r=   Ú_add_defaults_data_filesÚ	TypeErrorr
   Úwarnr5   r@   r   r   rX   ›   s    zsdist._add_defaults_data_filesc                   s.   t ƒ  ¡  t tj¡}| jjd| dd d S )Nz^(\.tox|\.nox|\.venv)T)Úis_regex)r=   Úprune_file_listÚreÚescaper%   Úsepr#   Úexclude_pattern)r,   r_   r@   r   r   r\   ¡   s    
zsdist.prune_file_listc                 C  s8   | j D ]}tj |¡r d S q|  dd | j ¡ ¡ d S )Nz,standard file not found: should have one of z, )ÚREADMESr%   r&   ÚexistsrZ   r'   )r,   Úfr   r   r   r(   §   s    
ÿzsdist.check_readmec                 C  s^   t j | ||¡ tj |d¡}ttdƒrJtj |¡rJt |¡ |  	d|¡ |  
d¡ |¡ d S )Nz	setup.cfgr;   r   )r3   r   Úmake_release_treer%   r&   r'   rO   rb   ÚunlinkÚ	copy_filer"   Úsave_version_info)r,   Úbase_dirrR   Údestr   r   r   rd   °   s    
zsdist.make_release_treec              	   C  s:   t j | j¡sdS t| jdƒ}| ¡ }W 5 Q R X |dkS )NFÚrbs+   # file GENERATED by distutils, do NOT edit
)r%   r&   rC   ÚmanifestÚopenÚreadline)r,   ÚfpÚ
first_liner   r   r   Ú_manifest_is_not_generated½   s
    z sdist._manifest_is_not_generatedc              	   C  sŠ   t  d| j¡ t| jdƒ}|D ]^}z| d¡}W n& tk
rV   t  d| ¡ Y qY nX | ¡ }| d¡s|spq| j	 
|¡ q| ¡  dS )zªRead the manifest file (named by 'self.manifest') and use it to
        fill in 'self.filelist', the list of files to include in the source
        distribution.
        zreading manifest file '%s'rj   zUTF-8z"%r not UTF-8 decodable -- skippingú#N)r
   Úinfork   rl   ÚdecodeÚUnicodeDecodeErrorrZ   ÚstripÚ
startswithr#   r$   Úclose)r,   rk   Úliner   r   r   Úread_manifestÆ   s    
zsdist.read_manifest)r7   r8   r9   Ú__doc__Úuser_optionsÚ__annotations__r   ZREADME_EXTENSIONSÚtuplera   r1   r4   r*   ÚstaticmethodÚ
contextlibÚcontextmanagerr6   r>   rB   rK   r?   rI   rH   rX   r\   r(   rd   rp   ry   Ú__classcell__r   r   r@   r   r      s:   
ï
		r   )r   )Ú
__future__r   r   r%   r]   Ú	itertoolsr   Útypingr   Ú
_importlibr   Údistr   rL   r	   Zdistutils.command.sdistÚcommandr   r3   Ú	distutilsr
   ÚlistZ_default_revctrlr   r   r   r   r   Ú<module>   s   
