a
    SicŸ  ã                   @   s”   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mZ ddlmZ ddlmZ eZdd
d„ZG dd„ deejƒZdS )é    )ÚlogN)Úchainé   )Úsdist_add_defaultsé   )Úmetadata)Ú_ORIGINAL_SUBCOMMANDSÚ c                 c   s.   t jddD ]}| ¡ | ƒD ]
}|V  qqdS )z%Find all files under revision controlzsetuptools.file_finders)ÚgroupN)r   Úentry_pointsÚload)ÚdirnameÚepÚitem© r   úT/var/www/html/django/DPS/env/lib/python3.9/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‡ fdd„Z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>-   ó    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}||v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ÚgetattrÚdistributionZ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   r3   B   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Úformatsr5   r   r   r   r4   G   s    
zsdist._default_to_gztarc                 C   s8   |   ¡  tj | ¡ W d  ƒ n1 s*0    Y  dS )z%
        Workaround for #516
        N)Ú_remove_os_linkr2   r   r(   r5   r   r   r   r(   M   s    
zsdist.make_distributionc               
   c   sp   G dd„ dƒ} t td| ƒ}zt`W n ty4   Y n0 zdV  W || urlttd|ƒ n|| urjttd|ƒ 0 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   rA   ÚlinkN)r)   r#   rB   Ú	ExceptionÚsetattr)rA   Zorig_valr   r   r   r=   T   s    ÿzsdist._remove_os_linkc                    s   t ƒ  ¡  |  ¡  d S r1   )ÚsuperÚadd_defaultsÚ _add_defaults_build_sub_commandsr5   ©Ú	__class__r   r   rF   i   s    
zsdist.add_defaultsc                    s&   t ƒ  ¡  tj d¡r"| j d¡ d S )Nzpyproject.toml)rE   Ú_add_defaults_optionalr#   r$   Úisfiler!   r"   r5   rH   r   r   rJ   m   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+   rL   r   r   r   Ú_add_defaults_pythonr   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 r1   )r    ©r   Úcr5   r   r   r   }   r   z9sdist._add_defaults_build_sub_commands.<locals>.<genexpr>c                 s   s    | ]}t |d ƒr| ¡ V  qdS )rO   N)ÚhasattrrO   rU   r   r   r   r   ~   r   )r    Úsetr'   r   r!   rN   r   Úfrom_iterable)r+   rT   Zmissing_cmdsZcmdsÚfilesr   r5   r   rG   y   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_filesrR   r   r   r   rQ      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 r1   )r#   r$   r%   )r   Ú_Úsrc_dirÚ	filenamesÚnamer   r   r   r   ’   s   
þz(sdist._add_data_files.<locals>.<genexpr>N)r!   rN   )r+   r[   r   r   r   rP   Ž   s    þzsdist._add_data_filesc                    s0   zt ƒ  ¡  W n ty*   t d¡ Y n0 d S )Nz&data_files contains unexpected objects)rE   Ú_add_defaults_data_filesÚ	TypeErrorr   Úwarnr5   rH   r   r   r`   ˜   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$   Úexistsrb   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.cfgrB   r   )r2   r   Úmake_release_treer#   r$   r%   rW   rd   ÚunlinkÚ	copy_filer    Úsave_version_info)r+   Úbase_dirrZ   Údestr   r   r   rf   ¨   s    
zsdist.make_release_treec                 C   sT   t j | j¡sdS t | jd¡}| ¡ }W d   ƒ n1 s>0    Y  |d ¡ kS )NFÚrbz+# file GENERATED by distutils, do NOT edit
)r#   r$   rK   Ú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yT   t  d| ¡ Y qY n0 | ¡ }| d¡s|snq| 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'rl   zUTF-8z"%r not UTF-8 decodable -- skippingú#N)r   Úinform   ro   ÚdecodeÚUnicodeDecodeErrorrb   ÚstripÚ
startswithr!   r"   Úclose)r+   rm   Úliner   r   r   Úread_manifest¿   s    
zsdist.read_manifest)r>   r?   r@   Ú__doc__Úuser_optionsÚnegative_optZREADME_EXTENSIONSÚtuplerc   r0   r3   r4   r(   ÚstaticmethodÚ
contextlibÚcontextmanagerr=   rF   rJ   rS   rG   rQ   rP   r`   r&   rf   rt   r}   Ú__classcell__r   r   rH   r   r      s.   


r   )r	   )Ú	distutilsr   Zdistutils.command.sdistÚcommandr   r2   r#   r:   rn   rƒ   Ú	itertoolsr   Z
py36compatr   Ú
_importlibr   rT   r   ÚlistZ_default_revctrlr   r   r   r   r   Ú<module>   s   
