o
    5‘ðišd  ã                   @  sì  d Z ddlmZ ddl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
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mZ ddlmZ dd	lmZ d
dlmZmZ d
dlmZ d
dlm Z  ddlm!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j+j,› dej+j-› �Z.dd„ Z/G dd„ dƒZ0G dd„ de0eƒZ1G dd„ de(ƒZ'G dd„ deƒZ2d6d!d"„Z3d6d#d$„Z4d6d%d&„Z5e!j6Z6e!j7Z7d6d'd(„Z8d6d)d*„Z9d7d8d.d/„Z:d6d0d1„Z;d9d2d3„Z<G d4d5„ d5e ƒZ=dS ):zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contentsé    )ÚannotationsN)ÚCallable)ÚCommand)Ú	bdist_egg)ÚsdistÚwalk_revctrl)Úedit_config)Úglobé   )Ú_entry_pointsÚ_normalization)Úmetadata)ÚSetuptoolsDeprecationWarningé   )Ú_requirestxt)Úlog)ÚDistutilsInternalError)ÚFileList)Úconvert_pathÚ.c                 C  sê  d}|   tjj¡}t tj¡}d|› d�}t|ƒD ]Ì\}}|t|ƒd k}|dkr<|r0|d7 }n|d|› d|› d	�7 }qd
}t|ƒ}	||	k rß|| }
|
dkrU||d 7 }n‚|
dkr^||7 }ny|
dkrÐ|d }||	k rt|| dkrt|d }||	k r‚|| dkr‚|d }||	k rš|| dkrš|d }||	k rš|| dksŒ||	kr¦|t |
¡7 }n1||d |… }d}|d
 dkr¾d}|dd… }|t |¡7 }|d|› d�7 }|}n|t |
¡7 }|d7 }||	k sF|så||7 }q|d7 }tj|tj	tj
B d�S )zö
    Translate a file path glob like '*.txt' in to a regular expression.
    This differs from fnmatch.translate which allows wildcards to match
    directory separators. It also knows about '**/' which matches any number of
    directories.
    Ú z[^ú]r   ú**z.*z(?:ú+z)*r   Ú*ú?ú[ú!ú^Nz\Z)Úflags)ÚsplitÚosÚpathÚsepÚreÚescapeÚ	enumerateÚlenÚcompileÚ	MULTILINEÚDOTALL)r	   ÚpatÚchunksr#   Ú
valid_charÚcÚchunkÚ
last_chunkÚiÚ	chunk_lenÚcharÚinner_iÚinnerÚ
char_class© r7   úZ/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/command/egg_info.pyÚtranslate_pattern(   s\   

ÿÖ-€r9   c                   @  sV   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zddd„Z	ddd„Z
ddd„ZeeƒZdS )Ú
InfoCommonNc                 C  s   t  | j ¡ ¡S ©N)r   Ú	safe_nameÚdistributionÚget_name©Úselfr7   r7   r8   Úname   s   zInfoCommon.namec                 C  s   |   | j ¡ ¡}t |¡S r;   )Ú
_maybe_tagr=   Úget_versionr   Úsafe_version)r@   Útaggedr7   r7   r8   Útagged_versionƒ   s   
zInfoCommon.tagged_versionc                 C  s   | j r
|  |¡r
|S || j  S )z�
        egg_info may be called more than once for a distribution,
        in which case the version string already contains all tags.
        )ÚvtagsÚ_already_tagged©r@   Úversionr7   r7   r8   rB   ‡   s   ÿÿÿýzInfoCommon._maybe_tagrJ   ÚstrÚreturnÚboolc                 C  s   |  | j|  ¡ f¡S r;   )ÚendswithrG   Ú
_safe_tagsrI   r7   r7   r8   rH   ’   s   zInfoCommon._already_taggedc              	   C  sH   zt  d| j› �¡dd … W S  tjjy#   t  | j dd¡¡ Y S w )NÚ0r   ú r   )r   rD   rG   Ú	packagingrJ   ÚInvalidVersionr<   Úreplacer?   r7   r7   r8   rO   —   s
   ÿzInfoCommon._safe_tagsc                 C  s,   d}| j r
|| j 7 }| jr|t d¡7 }|S )Nr   z%Y%m%d)Ú	tag_buildÚtag_dateÚtimeÚstrftimerI   r7   r7   r8   ÚtagsŸ   s   
zInfoCommon.tags)rJ   rK   rL   rM   )rL   rK   )Ú__name__Ú
__module__Ú__qualname__rU   rV   ÚpropertyrA   rF   rB   rH   rO   rY   rG   r7   r7   r7   r8   r:   {   s    



r:   c                   @  s¢   e Zd ZdZg d¢ZdgZddiZdd„ Zed!d	d
„ƒZ	e	j
d"dd
„ƒZ	d"dd„Zd"dd„Zedfdd„Zd#d$dd„Zd"dd„Zd"dd„Zd"dd„Zd"dd „ZdS )%Úegg_infoz+create a distribution's .egg-info directory))z	egg-base=ÚezLdirectory containing .egg-info directories [default: top of the source tree])útag-dateÚdz0Add date stamp (e.g. 20050528) to version number)z
tag-build=Úbz-Specify explicit tag to add to version number)úno-dateÚDz"Don't include date stamp [default]r`   rc   c                 C  s"   d | _ d | _d | _d | _d| _d S )NF)Úegg_baseÚegg_namer^   Úegg_versionÚignore_egg_info_in_manifestr?   r7   r7   r8   Úinitialize_options¾   ó
   
zegg_info.initialize_optionsrL   ú
int | Nonec                 C  ó   d S r;   r7   r?   r7   r7   r8   Útag_svn_revisionÈ   ó   zegg_info.tag_svn_revisionÚNonec                 C  rl   r;   r7   )r@   Úvaluer7   r7   r8   rm   Ì   rn   c                 C  s$   t |  ¡ dd�}t|t |d�ƒ dS )z³
        Materialize the value of date into the
        build tag. Install build keys in a deterministic order
        to avoid arbitrary reordering on subsequent builds.
        r   )rU   rV   )r^   N)ÚdictrY   r   )r@   Úfilenamer^   r7   r7   r8   Úsave_version_infoÒ   s   zegg_info.save_version_infoc              
   C  s   | j | _|  ¡ | _tj | j¡}zt|tjjƒ}|rdnd}tj 	|| j| jf ¡ W n t
yF } ztj d| j› d| j› �¡|‚d }~ww | jd u rZ| jj}|pSi  dtj¡| _|  d¡ t | j¡d | _| jtjkrxtj | j| j¡| _| j| jj_d S )Nz%s==%sz%s===%sz-Invalid distribution name or version syntax: ú-r   re   ú	.egg-info)rA   rf   rF   rg   rR   rJ   ÚVersionÚ
isinstanceÚrequirementsÚRequirementÚ
ValueErrorÚ	distutilsÚerrorsÚDistutilsOptionErrorre   r=   Úpackage_dirÚgetr!   ÚcurdirÚensure_dirnamer   Úfilename_componentr^   r"   Újoinr   )r@   Úparsed_versionÚ
is_versionÚspecr_   Údirsr7   r7   r8   Úfinalize_optionsÝ   s.   
ÿþ€ÿ

zegg_info.finalize_optionsNc                 C  s   t | j| j||ƒS )ú0Compute filename of the output egg. Private API.)Ú_egg_basenamerf   rg   )r@   Ú
py_versionÚplatformr7   r7   r8   Ú_get_egg_basenameý   s   zegg_info._get_egg_basenameFÚforcerM   c                 C  sR   |r|   |||¡ dS tj |¡r'|du r |s t d||¡ dS |  |¡ dS dS )a¹  Write `data` to `filename` or delete if empty

        If `data` is non-empty, this routine is the same as ``write_file()``.
        If `data` is empty but not ``None``, this is the same as calling
        ``delete_file(filename)`.  If `data` is ``None``, then this is a no-op
        unless `filename` exists, in which case a warning is issued about the
        orphaned file (if `force` is false), or deleted (if `force` is true).
        Nz$%s not set in setup(), but %s exists)Ú
write_filer!   r"   Úexistsr   ÚwarnÚdelete_file)r@   Úwhatrr   ÚdatarŽ   r7   r7   r8   Úwrite_or_delete_file  s   	ûzegg_info.write_or_delete_filec                 C  s8   t  d||¡ | d¡}t|dƒ}| |¡ | ¡  dS )zªWrite `data` to `filename` (if not a dry run) after announcing it

        `what` is used in a log message to identify what is being written
        to the file.
        zwriting %s to %súutf-8ÚwbN)r   ÚinfoÚencodeÚopenÚwriteÚclose)r@   r“   rr   r”   Úfr7   r7   r8   r�     s
   


zegg_info.write_filec                 C  s   t  d|¡ t |¡ dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   r˜   r!   Úunlink)r@   rr   r7   r7   r8   r’     s   zegg_info.delete_filec              
   C  sÄ   t tjdd�ƒ}|  | j¡ z	t | jd ¡ W n ty1 } zd| j› d�}tj	 
|¡|‚d }~ww |D ]}| ¡ }|| |jtj | j|j¡ƒ q4tj | jd¡}tj |¡r\|  |¡ |  ¡  d S )Nzegg_info.writers)Úgroupz'Cannot update time stamp of directory 'ú'znative_libs.txt)Úlistr   Úentry_pointsÚmkpathr^   r!   ÚutimeÚOSErrorr{   r|   ÚDistutilsFileErrorÚloadrA   r"   rƒ   r�   r’   Úfind_sources)r@   Úwritersr_   ÚmsgÚepÚwriterÚnlr7   r7   r8   Úrun$  s    €þ
zegg_info.runc                 C  s<   t j | jd¡}t| jƒ}| j|_||_| 	¡  |j
| _
dS )z"Generate SOURCES.txt manifest filezSOURCES.txtN)r!   r"   rƒ   r^   Úmanifest_makerr=   rh   Úignore_egg_info_dirÚmanifestr®   Úfilelist)r@   Úmanifest_filenameÚmmr7   r7   r8   r¨   :  s   
zegg_info.find_sources)rL   rk   ©rL   ro   ©F©rŽ   rM   rL   ro   )rZ   r[   r\   ÚdescriptionÚuser_optionsÚboolean_optionsÚnegative_optri   r]   rm   Úsetterrs   rˆ   ÚPY_MAJORr�   r•   r�   r’   r®   r¨   r7   r7   r7   r8   r^   ª   s&    ÿ


 


r^   c                      s˜   e Zd Z	d%d&‡ fdd„Zd'd	d
„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zd'dd„Zd'dd „Zd!d"„ Zd#d$„ Z‡  ZS )(r   NFr°   rM   rL   ro   c                   s   t ƒ  ||¡ || _d S r;   )ÚsuperÚ__init__r°   )r@   r‘   Údebug_printr°   ©Ú	__class__r7   r8   r¿   G  s   
zFileList.__init__c              	   C  s  |   |¡\}}}}| j| j| j| jt | j|¡t | j|¡| j	| j
dœ}dddddddd	dœ}z|| }W n tyI   d
|›d|›�}	t|	ƒd ‚w | d¡}
|dv rV|g}|
r[|fnd}|| }|  d |g|
rl|gng  | ¡¡ |D ]}||ƒs…tj||g|¢R Ž  qud S )N)ÚincludeÚexcludezglobal-includezglobal-excludezrecursive-includezrecursive-excludeÚgraftÚprunez%warning: no files found matching '%s'z9warning: no previously-included files found matching '%s'z>warning: no files found matching '%s' anywhere in distributionzRwarning: no previously-included files matching '%s' found anywhere in distributionz:warning: no files found matching '%s' under directory '%s'zNwarning: no previously-included files matching '%s' found under directory '%s'z+warning: no directories found matching '%s'z6no previously-included directories found matching '%s'z$Invalid MANIFEST.in: unknown action z in z
recursive->   rÅ   rÆ   r7   rQ   )Ú_parse_template_linerÃ   rÄ   Úglobal_includeÚglobal_excludeÚ	functoolsÚpartialÚrecursive_includeÚrecursive_excluderÅ   rÆ   ÚKeyErrorr   Ú
startswithrÀ   rƒ   r   r‘   )r@   ÚlineÚactionÚpatternsÚdirÚdir_patternÚ
action_mapÚlog_mapÚprocess_actionrª   Úaction_is_recursiveÚextra_log_argsÚlog_tmplÚpatternr7   r7   r8   Úprocess_template_lineM  s\   þþòî
þ
ÿÿ€þzFileList.process_template_linec                 C  sR   d}t t| jƒd ddƒD ]}|| j| ƒr&|  d| j|  ¡ | j|= d}q|S )z†
        Remove all files from the file list that match the predicate.
        Return True if any matching files were removed
        Fr   éÿÿÿÿz
 removing T)Úranger'   ÚfilesrÀ   )r@   Ú	predicateÚfoundr1   r7   r7   r8   Ú_remove_files“  s   €zFileList._remove_filesc                 C  ó$   dd„ t |ƒD ƒ}|  |¡ t|ƒS )z#Include files that match 'pattern'.c                 S  ó   g | ]
}t j |¡s|‘qS r7   ©r!   r"   Úisdir©Ú.0r�   r7   r7   r8   Ú
<listcomp>¢  ó    z$FileList.include.<locals>.<listcomp>©r	   ÚextendrM   ©r@   rÛ   rá   r7   r7   r8   rÃ      s   
zFileList.includec                 C  s   t |ƒ}|  |j¡S )z#Exclude files that match 'pattern'.)r9   râ   Úmatch©r@   rÛ   rî   r7   r7   r8   rÄ   ¦  s   zFileList.excludec                 C  s8   t j |d|¡}dd„ t|dd�D ƒ}|  |¡ t|ƒS )zN
        Include all files anywhere in 'dir/' that match the pattern.
        r   c                 S  rä   r7   rå   rç   r7   r7   r8   ré   °  rê   z.FileList.recursive_include.<locals>.<listcomp>T)Ú	recursive)r!   r"   rƒ   r	   rì   rM   )r@   rÓ   rÛ   Úfull_patternrá   r7   r7   r8   rÌ   «  s   
zFileList.recursive_includec                 C  s    t tj |d|¡ƒ}|  |j¡S )zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        r   ©r9   r!   r"   rƒ   râ   rî   )r@   rÓ   rÛ   rî   r7   r7   r8   rÍ   ´  s   zFileList.recursive_excludec                 C  rã   )zInclude all files from 'dir/'.c                 S  s"   g | ]}t j |¡D ]}|‘q
qS r7   )r{   r²   Úfindall)rè   Ú	match_dirÚitemr7   r7   r8   ré   ½  s    
ýþÿz"FileList.graft.<locals>.<listcomp>rë   )r@   rÓ   rá   r7   r7   r8   rÅ   »  s
   þ
zFileList.graftc                 C  s   t tj |d¡ƒ}|  |j¡S )zFilter out files from 'dir/'.r   rò   )r@   rÓ   rî   r7   r7   r8   rÆ   Å  s   zFileList.prunec                   sJ   | j du r	|  ¡  ttj d|¡ƒ‰ ‡ fdd„| j D ƒ}|  |¡ t|ƒS )z“
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        Nr   c                   s   g | ]	}ˆ   |¡r|‘qS r7   ©rî   rç   rö   r7   r8   ré   Ò  s    z+FileList.global_include.<locals>.<listcomp>)Úallfilesró   r9   r!   r"   rƒ   rì   rM   rí   r7   rö   r8   rÈ   Ê  s   

zFileList.global_includec                 C  s   t tj d|¡ƒ}|  |j¡S )zD
        Exclude all files anywhere that match the pattern.
        r   rò   rï   r7   r7   r8   rÉ   Ö  s   zFileList.global_excludec                 C  s0   |  d¡}t|ƒ}|  |¡r| j |¡ d S d S )Nú)Úremovesuffixr   Ú
_safe_pathrß   Úappend)r@   rõ   r"   r7   r7   r8   rû   Ý  s
   

ÿzFileList.appendc                 C  s   | j  t| j|ƒ¡ d S r;   )rß   rì   Úfilterrú   )r@   Úpathsr7   r7   r8   rì   ä  s   zFileList.extendc                 C  s   t t| j| jƒƒ| _dS )zÜ
        Replace self.files with only safe paths

        Because some owners of FileList manipulate the underlying
        ``files`` attribute directly, this method must be called to
        repair those paths.
        N)r¡   rü   rú   rß   r?   r7   r7   r8   Ú_repairç  s   zFileList._repairc              	   C  s¾   d}t  |¡}|d u rt d|› d�¡ dS t  |d¡}|d u r)t ||d¡ dS z"d|v p1d|v }| jr:|r:W dS tj |¡sFtj |¡rIW dS W d S  t	y^   t ||t
 ¡ ¡ Y d S w )	Nz!'%s' not %s encodable -- skippingr    z$' in unexpected encoding -- skippingFr–   ru   s	   .egg-infoT)Úunicode_utilsÚfilesys_decoder   r‘   Ú
try_encoder°   r!   r"   r�   ÚUnicodeEncodeErrorÚsysÚgetfilesystemencoding)r@   r"   Úenc_warnÚu_pathÚ	utf8_pathÚis_egg_infor7   r7   r8   rú   ñ  s&   

ÿÿzFileList._safe_path)NNF)r°   rM   rL   ro   rµ   )rZ   r[   r\   r¿   rÜ   râ   rÃ   rÄ   rÌ   rÍ   rÅ   rÆ   rÈ   rÉ   rû   rì   rþ   rú   Ú__classcell__r7   r7   rÁ   r8   r   D  s"    ÿ
F	



r   c                   @  sz   e Zd ZdZddd„Zddd„Zddd	„Zd
d„ Zddd„Zddd„Z	e
dd„ ƒZddd„Zddd„Zdd„ Zdd„ ZdS )r¯   zMANIFEST.inrL   ro   c                 C  s"   d| _ d| _d| _d| _d| _d S )NTF)Úuse_defaultsrÆ   Úmanifest_onlyÚforce_manifestr°   r?   r7   r7   r8   ri     rj   z!manifest_maker.initialize_optionsc                 C  rl   r;   r7   r?   r7   r7   r8   rˆ     s   zmanifest_maker.finalize_optionsc                 C  sz   t | jd�| _tj | j¡s|  ¡  |  ¡  tj | j	¡r!|  
¡  |  ¡  |  ¡  |  ¡  | j ¡  | j ¡  |  ¡  d S )N)r°   )r   r°   r²   r!   r"   r�   r±   Úwrite_manifestÚadd_defaultsÚtemplateÚread_templateÚadd_license_filesÚ_add_referenced_filesÚprune_file_listÚsortÚremove_duplicatesr?   r7   r7   r8   r®     s   

zmanifest_maker.runc                 C  s   t  |¡}| tjd¡S )Nú/)rÿ   r   rT   r!   r#   )r@   r"   r7   r7   r8   Ú_manifest_normalize(  s   
z"manifest_maker._manifest_normalizec                   sF   ˆ j  ¡  ‡ fdd„ˆ j jD ƒ}dˆ j› d�}ˆ  tˆ j|f|¡ dS )zo
        Write the file list in 'self.filelist' to the manifest file
        named by 'self.manifest'.
        c                   s   g | ]}ˆ   |¡‘qS r7   )r  rç   r?   r7   r8   ré   4  s    z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file 'r    N)r²   rþ   rß   r±   Úexecuter�   )r@   rß   rª   r7   r?   r8   r  ,  s   
zmanifest_maker.write_manifestc                 C  s   |   |¡st | |¡ d S d S r;   )Ú_should_suppress_warningr   r‘   )r@   rª   r7   r7   r8   r‘   8  s   
ÿzmanifest_maker.warnc                 C  s   t  d| ¡S )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r$   rî   )rª   r7   r7   r8   r  <  s   z'manifest_maker._should_suppress_warningc                 C  sŒ   t  | ¡ | j | j¡ | j | j¡ ttƒ ƒ}|r!| j |¡ nt	j
 | j¡r,|  ¡  t	j
 d¡r8| j d¡ |  d¡}| j |j¡ d S )Nzsetup.pyr^   )r   r  r²   rû   r  r±   r¡   r   rì   r!   r"   r�   Úread_manifestÚget_finalized_commandrÅ   r^   )r@   ÚrcfilesÚei_cmdr7   r7   r8   r  C  s   


zmanifest_maker.add_defaultsc                 C  s4   | j jjpg }|D ]}t d|¡ q	| j |¡ d S )Nzadding license file '%s')r=   r   Úlicense_filesr   r˜   r²   rì   )r@   r  Úlfr7   r7   r8   r  U  s   z manifest_maker.add_license_filesc                 C  s4   t | jdg ƒ}|D ]}t d|¡ q	| j |¡ dS )zGAdd files referenced by the config (e.g. `file:` directive) to filelistÚ_referenced_filesz%adding file referenced by config '%s'N)Úgetattrr=   r   Údebugr²   rì   )r@   Ú
referencedÚrfr7   r7   r8   r  [  s   z$manifest_maker._add_referenced_filesc                 C  s*   t |dƒr	| ¡ S tjdddd� | ¡ S )a0  
        The parent class implementation of this method
        (``sdist``) will try to include data files, which
        might cause recursion problems when
        ``include_package_data=True``.

        Therefore, avoid triggering any attempt of
        analyzing/building the manifest again.
        Úget_data_files_without_manifestz@`build_py` command does not inherit from setuptools' `build_py`.z±
            Custom 'build_py' does not implement 'get_data_files_without_manifest'.
            Please extend command classes from setuptools instead of distutils.
            z!https://peps.python.org/pep-0632/)Úsee_url)Úhasattrr%  r   ÚemitÚget_data_files)r@   Úbuild_pyr7   r7   r8   Ú_safe_data_filesc  s   

ú	zmanifest_maker._safe_data_filesNrµ   )rZ   r[   r\   r  ri   rˆ   r®   r  r  r‘   Ústaticmethodr  r  r  r  r+  r7   r7   r7   r8   r¯     s    







r¯   rL   ro   c                 C  sN   d  |¡}| d¡}t| dƒ�}| |¡ W d  ƒ dS 1 s w   Y  dS )z{Create a file with the specified name and write 'contents' (a
    sequence of strings without line terminators) to it.
    Ú
r–   r—   N)rƒ   r™   rš   r›   )rr   Úcontentsr�   r7   r7   r8   r�   |  s
   

"ÿr�   c              	   C  s„   t  d|¡ | jj}| j|j|_}| j|j|_}z| | j	¡ W |||_|_n|||_|_w t
| jdd ƒ}t | j	|¡ d S )Nz
writing %sÚzip_safe)r   r˜   r=   r   rg   rJ   rf   rA   Úwrite_pkg_infor^   r!  r   Úwrite_safety_flag)ÚcmdÚbasenamerr   r   ÚoldverÚoldnameÚsafer7   r7   r8   r0  ‰  s    r0  c                 C  s   dS )aj  
    Unused: left to avoid errors when updating (from source) from <= 67.8.
    Old installations have a .dist-info directory with the entry-point
    ``depends.txt = setuptools.command.egg_info:warn_depends_obsolete``.
    This may trigger errors when running the first egg_info in build_meta.
    TODO: Remove this function in a version sufficiently > 68.
    Nr7   ©r2  r3  rr   r7   r7   r8   Úwarn_depends_obsolete™  s    r8  c                 C  s:   t  dd„ | j ¡ D ƒ¡}|  d|d t|ƒ¡d ¡ d S )Nc                 S  s   g | ]
}|  d d¡d ‘qS )r   r   r   )r    )rè   Úkr7   r7   r8   ré   ©  s    ÿz(write_toplevel_names.<locals>.<listcomp>ztop-level namesr-  )rq   Úfromkeysr=   Úiter_distribution_namesr�   rƒ   Úsorted)r2  r3  rr   Úpkgsr7   r7   r8   Úwrite_toplevel_names¨  s   
ÿ r>  c                 C  s   t | ||dƒ d S )NT)Ú	write_argr7  r7   r7   r8   Úoverwrite_arg¯  s   r@  FrŽ   rM   c                 C  sH   t j |¡d }t| j|d ƒ}|d urd |¡d }|  ||||¡ d S )Nr   r-  )r!   r"   Úsplitextr!  r=   rƒ   r•   )r2  r3  rr   rŽ   Úargnamerp   r7   r7   r8   r?  ³  s
   r?  c                 C  s,   t  | jj¡}t  |¡}|  d||d¡ d S )Nzentry pointsT)r   r§   r=   r¢   Úrenderr•   )r2  r3  rr   ÚepsÚdefnr7   r7   r8   Úwrite_entries»  s   
rF  c                 C  sB   t  | ¡}t  |¡}|› d|› d|pt› �}|r|d|› �7 }|S )r‰   rt   z-py)r   r‚   r½   )rf   rg   r‹   rŒ   rA   rJ   Úeggr7   r7   r8   rŠ   Á  s   

rŠ   c                   @  s   e Zd ZdZdS )ÚEggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)rZ   r[   r\   Ú__doc__r7   r7   r7   r8   rH  Ë  s    rH  rµ   r¶   r·   )NN)>rI  Ú
__future__r   rÊ   r!   r$   r  rW   Úcollections.abcr   rR   Úpackaging.requirementsÚpackaging.versionÚsetuptools.unicode_utilsrÿ   Ú
setuptoolsr   Úsetuptools.commandr   Úsetuptools.command.sdistr   r   Úsetuptools.command.setoptr   Úsetuptools.globr	   r   r   r   Ú
_importlibr   Úwarningsr   r   Údistutils.errorsr{   Údistutils.filelistr   r   r   Ú	_FileListÚdistutils.utilr   Úversion_infoÚmajorÚminorr½   r9   r:   r^   r¯   r�   r0  r8  Úwrite_requirementsÚwrite_setup_requirementsr>  r@  r?  rF  rŠ   rH  r7   r7   r7   r8   Ú<module>   s\    S/  J
o






