o
    Ëý°j  ã                   @   sx   d dl mZ d dlm  mZ d dlZd dlZd dlZd dl	Z	ddl
mZ d dlZeZd
dd„ZG dd	„ d	eejƒZdS )é    )ÚlogNé   )Úsdist_add_defaultsÚ c                 c   s.   � t  d¡D ]}| ¡ | ƒD ]}|V  qqdS )z%Find all files under revision controlzsetuptools.file_findersN)Úpkg_resourcesÚiter_entry_pointsÚload)ÚdirnameÚepÚitem© r   ú‹/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/command/sdist.pyÚwalk_revctrl   s   €ÿÿr   c                       s¼   e Zd ZdZg d¢Zi Zg d¢Zedd„ eD ƒƒZdd„ Z	dd	„ Z
d
d„ Zdd„ Zeejdd„ ƒƒZ‡ fdd„Zdd„ Zdd„ Zdd„ Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd d!„ Z‡  ZS )"Ú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   z.rstz.txtz.mdc                 c   s   � | ]}d   |¡V  qdS )z	README{0}N)Úformat)Ú.0Úextr   r   r   Ú	<genexpr>+   s   € zsdist.<genexpr>c                 C   s–   |   d¡ |  d¡}|j| _| j tj |jd¡¡ |  ¡  |  	¡ D ]}|   |¡ q"|  
¡  t| jdg ƒ}| jD ]}dd|f}||vrH| |¡ q8d 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ÚgetattrÚdistributionÚ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Ú_default_to_gztar©r'   r   r   r   r/   @   s   zsdist.initialize_optionsc                 C   s   t jdkrd S dg| _d S )N)é   é   r   Úbetar   Úgztar)ÚsysÚversion_infoÚformatsr1   r   r   r   r0   E   s   
zsdist._default_to_gztarc                 C   s:   |   ¡ � tj | ¡ W d  ƒ dS 1 sw   Y  dS )z%
        Workaround for #516
        N)Ú_remove_os_linkr.   r   r#   r1   r   r   r   r#   K   s   
"ÿzsdist.make_distributionc               
   c   sv   � G dd„ dƒ} t td| ƒ}zt`W n	 ty   Y nw zdV  W || ur-ttd|ƒ dS dS || ur:ttd|ƒ w w )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   ÚNoValueY   s    r=   ÚlinkN)r$   r   r>   Ú	ExceptionÚsetattr)r=   Úorig_valr   r   r   r9   R   s   €ÿÿÿzsdist._remove_os_linkc                    s*   t ƒ  ¡  tj d¡r| j d¡ d S d S )Nzpyproject.toml)ÚsuperÚ_add_defaults_optionalr   r   Úisfiler   r   r1   ©Ú	__class__r   r   rC   g   s   
ÿzsdist._add_defaults_optionalc                 C   s<   | j  ¡ r|  d¡}| j | ¡ ¡ |  |  |¡¡ dS dS )zgetting python filesÚbuild_pyN)r%   Úhas_pure_modulesr   r   ÚextendÚget_source_filesÚ_add_data_filesÚ_safe_data_files©r'   rG   r   r   r   Ú_add_defaults_pythonl   s
   

ýzsdist._add_defaults_pythonc                 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_filesrM   r   r   r   rL   s   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   s0   � | ]\}}}}|D ]
}t j ||¡V  q
qd S r-   )r   r   r    )r   Ú_Úsrc_dirÚ	filenamesÚnamer   r   r   r   „   s   € 
ýþÿz(sdist._add_data_files.<locals>.<genexpr>N)r   rI   )r'   rO   r   r   r   rK   €   s   þzsdist._add_data_filesc                    s0   zt ƒ  ¡  W d S  ty   t d¡ Y d S w )Nz&data_files contains unexpected objects)rB   Ú_add_defaults_data_filesÚ	TypeErrorr   Úwarnr1   rE   r   r   rT   Š   s
   ÿzsdist._add_defaults_data_filesc                 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   ÚexistsrV   r    )r'   Úfr   r   r   r!   �   s   
ÿ
ÿÿzsdist.check_readmec                 C   s^   t j | ||¡ tj |d¡}ttdƒr%tj |¡r%t |¡ |  	d|¡ |  
d¡ |¡ d S )Nz	setup.cfgr>   r   )r.   r   Úmake_release_treer   r   r    ÚhasattrrX   ÚunlinkÚ	copy_filer   Úsave_version_info)r'   Úbase_dirÚfilesÚdestr   r   r   rZ   š   s   
zsdist.make_release_treec                 C   sT   t j | j¡s	dS t | jd¡�}| ¡ }W d   ƒ n1 sw   Y  |d ¡ kS )NFÚrbz+# file GENERATED by distutils, do NOT edit
)r   r   rD   ÚmanifestÚioÚopenÚreadlineÚencode)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y(   t  d| ¡ Y qw | ¡ }| d¡s4|s5q| 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'rb   zUTF-8z"%r not UTF-8 decodable -- skippingú#N)r   Úinforc   re   ÚdecodeÚUnicodeDecodeErrorrV   ÚstripÚ
startswithr   r   Úclose)r'   rc   Úliner   r   r   Úread_manifest±   s   þzsdist.read_manifest)r:   r;   r<   Ú__doc__Úuser_optionsÚnegative_optÚREADME_EXTENSIONSÚtuplerW   r,   r/   r0   r#   ÚstaticmethodÚ
contextlibÚcontextmanagerr9   rC   rN   rL   rK   rT   r!   rZ   rj   rs   Ú__classcell__r   r   rE   r   r      s,    


r   )r   )Ú	distutilsr   Údistutils.command.sdistÚcommandr   r.   r   r6   rd   rz   Ú
py36compatr   r   ÚlistÚ_default_revctrlr   r   r   r   r   Ú<module>   s    
