U
    aÊ¹j}d  ã                   @   sÂ  d Z ddlZddlZddl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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& dj'ej(Ž Z)dd„ Z*G dd„ dƒZ+G dd„ de+eƒZ,G dd„ de$ƒZ#G dd„ deƒZ-dd„ Z.dd „ Z/d!d"„ Z0ej1Z1ej2Z2d#d$„ Z3d%d&„ Z4d1e5d(œd)d*„Z6d+d,„ Z7d2d-d.„Z8G d/d0„ d0eƒZ9dS )3zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contentsé    N)ÚCommand)Ú	bdist_egg)ÚsdistÚwalk_revctrl)Úedit_config)Úglobé   )Ú_entry_pointsÚ_normalization)Úmetadata)ÚSetuptoolsDeprecationWarningé   )Ú_requirestxt)Úlog)ÚDistutilsInternalError)ÚFileList)Úconvert_pathz{}.{}c                 C   sÞ  d}|   tjj¡}t tj¡}d|f }t|ƒD �]Œ\}}|t|ƒd k}|dkrr|r`|d7 }q0|d||f 7 }q0d}t|ƒ}	||	k �r²|| }
|
dkr¨||d 7 }�n |
d	krº||7 }nî|
d
k�rš|d }||	k rè|| dkrè|d }||	k �r|| dk�r|d }||	k �r,|| dk�r,|d }�q||	k�rF|t |
¡7 }nR||d |… }d}|d dk�rxd}|dd… }|t |¡7 }|d|f 7 }|}n|t |
¡7 }|d7 }q~|s0||7 }q0|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[^%s]r   ú**z.*z
(?:%s+%s)*r   Ú*ú?ú[ú!ú]ú^Nz[%s]z\Z)Úflags)ÚsplitÚosÚpathÚsepÚreÚescapeÚ	enumerateÚlenÚcompileÚ	MULTILINEÚDOTALL)r   ÚpatÚchunksr   Z
valid_charÚcÚchunkÚ
last_chunkÚiZ	chunk_lenÚcharZinner_iÚinnerZ
char_class© r/   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/command/egg_info.pyÚtranslate_pattern%   sV    







r1   c                   @   sd   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Ze	e
dœd	d
„Ze	dœdd„Ze	dœdd„ZeeƒZdS )Ú
InfoCommonNc                 C   s   t  | j ¡ ¡S ©N)r
   Ú	safe_nameÚdistributionÚget_name©Úselfr/   r/   r0   Úname|   s    zInfoCommon.namec                 C   s   |   | j ¡ ¡}t |¡S r3   )Ú
_maybe_tagr5   Úget_versionr
   Úsafe_version)r8   Ztaggedr/   r/   r0   Ú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©r8   Úversionr/   r/   r0   r:   „   s    ÿÿýzInfoCommon._maybe_tag)rA   Úreturnc                 C   s   |  | j¡p|  |  ¡ ¡S r3   )Úendswithr>   Ú
_safe_tagsr@   r/   r/   r0   r?   �   s    zInfoCommon._already_tagged)rB   c              	   C   sN   zt  d| j› �¡dd … W S  tjjk
rH   t  | j dd¡¡ Y S X d S )NÚ0r   ú Ú.)r
   r<   r>   Ú	packagingrA   ÚInvalidVersionr4   Úreplacer7   r/   r/   r0   rD   ”   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Ústrftimer@   r/   r/   r0   Útagsœ   s    
zInfoCommon.tags)Ú__name__Ú
__module__Ú__qualname__rK   rL   Úpropertyr9   r=   r:   ÚstrÚboolr?   rD   rO   r>   r/   r/   r/   r0   r2   x   s   
r2   c                   @   sš   e Zd ZdZddddgZdgZddiZdd	„ Zed
d„ ƒZ	e	j
dd„ ƒZ	dd„ Zdd„ Zedfdd„Zd edœdd„Zdd„ Zdd„ Zdd„ Z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]rX   r[   c                 C   s"   d | _ d | _d | _d | _d| _d S )NF)Úegg_baseÚegg_namerV   Úegg_versionÚignore_egg_info_in_manifestr7   r/   r/   r0   Úinitialize_options»   s
    zegg_info.initialize_optionsc                 C   s   d S r3   r/   r7   r/   r/   r0   Útag_svn_revisionÅ   s    zegg_info.tag_svn_revisionc                 C   s   d S r3   r/   )r8   Úvaluer/   r/   r0   rb   É   s    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   )rK   rL   )rV   N)ÚdictrO   r   )r8   ÚfilenamerV   r/   r/   r0   Úsave_version_infoÏ   s    zegg_info.save_version_infoc              
   C   s  | j | _|  ¡ | _tj | j¡}z6t|tjjƒ}|r8dnd}tj 	|| j| jf ¡ W n< t
k
r’ } ztj d| j| jf ¡|‚W 5 d }~X Y nX | jd krº| jj}|p¬i  dtj¡| _|  d¡ t | j¡d | _| jtjkrötj | j| j¡| _| j| jj_d S )Nz%s==%sz%s===%sz2Invalid distribution name or version syntax: %s-%sr   r]   ú	.egg-info)r9   r^   r=   r_   rH   rA   ÚVersionÚ
isinstanceÚrequirementsÚRequirementÚ
ValueErrorÚ	distutilsÚerrorsÚDistutilsOptionErrorr]   r5   Úpackage_dirÚgetr   ÚcurdirÚensure_dirnamer
   Úfilename_componentrV   r   Újoinr   )r8   Úparsed_versionZ
is_versionÚspecrW   Údirsr/   r/   r0   Úfinalize_optionsÚ   s.    

ÿÿý

zegg_info.finalize_optionsNc                 C   s   t | j| j||ƒS )ú0Compute filename of the output egg. Private API.)Ú_egg_basenamer^   r_   )r8   Ú
py_versionÚplatformr/   r/   r0   Ú_get_egg_basenameû   s    zegg_info._get_egg_basenameF©Úforcec                 C   sL   |r|   |||¡ n4tj |¡rH|dkr>|s>t d||¡ 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)r8   Úwhatre   Údatar€   r/   r/   r0   Úwrite_or_delete_fileÿ   s    	zegg_info.write_or_delete_filec                 C   s>   t  d||¡ | d¡}| js: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Údry_runÚopenÚwriteÚclose)r8   r…   re   r†   Úfr/   r/   r0   r�     s    


zegg_info.write_filec                 C   s    t  d|¡ | jst |¡ dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   rŠ   rŒ   r   Úunlink)r8   re   r/   r/   r0   r„     s    zegg_info.delete_filec              
   C   sÎ   t tjdd�ƒ}|  | j¡ zt | jd ¡ W n> tk
rl } z d| j› d�}tj	 
|¡|‚W 5 d }~X Y nX |D ](}| ¡ }|| |jtj | j|j¡ƒ qrt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ÚmkpathrV   r   ÚutimeÚOSErrorrm   rn   ÚDistutilsFileErrorÚloadr9   r   ru   r‚   r„   Úfind_sources)r8   ZwritersrW   ÚmsgÚepÚwriterÚnlr/   r/   r0   Ú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   ru   rV   Úmanifest_makerr5   r`   Úignore_egg_info_dirÚmanifestr    Úfilelist)r8   Zmanifest_filenameÚmmr/   r/   r0   r›   :  s    
zegg_info.find_sources)F)rP   rQ   rR   ÚdescriptionÚuser_optionsÚboolean_optionsÚnegative_optra   rS   rb   Úsetterrf   ry   ÚPY_MAJORr~   rU   r‡   r�   r„   r    r›   r/   r/   r/   r0   rV   §   s.   ÷ ÿ


!rV   c                       s”   e Zd Zd"edœ‡ f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„ Zdd„ Zdd„ Zdd„ Zd d!„ Z‡  ZS )#r   NF©r¢   c                    s   t ƒ  ||¡ || _d S r3   )ÚsuperÚ__init__r¢   )r8   rƒ   Údebug_printr¢   ©Ú	__class__r/   r0   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k
r˜   d
|›d|›�}	t|	ƒd ‚Y nX | d¡}
|dkr²|g}|
r¼|fnd}|| }|  d |g|
rÞ|gng  | ¡¡ |D ]}||ƒsðtj||f|žŽ  qðd 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µ   r/   rF   )Z_parse_template_liner²   r³   Úglobal_includeÚglobal_excludeÚ	functoolsÚpartialÚrecursive_includeÚrecursive_excluder´   rµ   ÚKeyErrorr   Ú
startswithr¯   ru   r   rƒ   )r8   ÚlineÚactionÚpatternsÚdirZdir_patternZ
action_mapZlog_mapZprocess_actionrœ   Zaction_is_recursiveZextra_log_argsZlog_tmplÚpatternr/   r/   r0   Úprocess_template_lineK  sV    þþòî
ÿÿzFileList.process_template_linec                 C   sR   d}t t| jƒd ddƒD ]2}|| 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¯   )r8   Ú	predicateÚfoundr,   r/   r/   r0   Ú_remove_files‘  s    zFileList._remove_filesc                 C   s$   dd„ t |ƒD ƒ}|  |¡ t|ƒS )z#Include files that match 'pattern'.c                 S   s   g | ]}t j |¡s|‘qS r/   ©r   r   Úisdir©Ú.0r�   r/   r/   r0   Ú
<listcomp>   s      z$FileList.include.<locals>.<listcomp>©r   ÚextendrU   ©r8   rÂ   rÈ   r/   r/   r0   r²   ž  s    
zFileList.includec                 C   s   t |ƒ}|  |j¡S )z#Exclude files that match 'pattern'.)r1   rÉ   Úmatch©r8   rÂ   rÒ   r/   r/   r0   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   s   g | ]}t j |¡s|‘qS r/   rÊ   rÌ   r/   r/   r0   rÎ   ®  s      z.FileList.recursive_include.<locals>.<listcomp>T)Ú	recursive)r   r   ru   r   rÐ   rU   )r8   rÁ   rÂ   Zfull_patternrÈ   r/   r/   r0   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   ©r1   r   r   ru   rÉ   rÒ   )r8   rÁ   rÂ   rÒ   r/   r/   r0   r»   ²  s    zFileList.recursive_excludec                 C   s$   dd„ t |ƒD ƒ}|  |¡ t|ƒS )zInclude all files from 'dir/'.c                 S   s"   g | ]}t j |¡D ]}|‘qqS r/   )rm   r¤   Úfindall)rÍ   Z	match_dirÚitemr/   r/   r0   rÎ   »  s    þz"FileList.graft.<locals>.<listcomp>rÏ   )r8   rÁ   rÈ   r/   r/   r0   r´   ¹  s
    þ
zFileList.graftc                 C   s   t tj |d¡ƒ}|  |j¡S )zFilter out files from 'dir/'.r   rÕ   )r8   rÁ   rÒ   r/   r/   r0   rµ   Ã  s    zFileList.prunec                    sJ   | j dk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 r/   ©rÒ   rÌ   rØ   r/   r0   rÎ   Ð  s     
 z+FileList.global_include.<locals>.<listcomp>)ÚallfilesrÖ   r1   r   r   ru   rÐ   rU   rÑ   r/   rØ   r0   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Ó   r/   r/   r0   r·   Ô  s    zFileList.global_excludec                 C   s8   |  d¡r|d d… }t|ƒ}|  |¡r4| j |¡ d S )NúrÄ   )rC   r   Ú
_safe_pathrÆ   Úappend)r8   r×   r   r/   r/   r0   rÜ   Û  s
    

zFileList.appendc                 C   s   | j  t| j|ƒ¡ d S r3   )rÆ   rÐ   ÚfilterrÛ   )r8   Úpathsr/   r/   r0   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Æ   r7   r/   r/   r0   Ú_repairæ  s    zFileList._repairc              	   C   s¼   d}t  |¡}|d kr(t d| ¡ dS t  |d¡}|d krNt ||d¡ dS zBd|kp^d|k}| jrp|rpW dS tj |¡sˆtj |¡rŽW dS W n& t	k
r¶   t ||t
 ¡ ¡ Y nX d S )Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFrˆ   rg   s	   .egg-infoT)Úunicode_utilsÚfilesys_decoder   rƒ   Z
try_encoder¢   r   r   r‚   ÚUnicodeEncodeErrorÚsysÚgetfilesystemencoding)r8   r   Zenc_warnZu_pathZ	utf8_pathÚis_egg_infor/   r/   r0   rÛ   ð  s"    


zFileList._safe_path)NNF)rP   rQ   rR   rU   r®   rÃ   rÉ   r²   r³   rº   r»   r´   rµ   r¶   r·   rÜ   rÐ   rß   rÛ   Ú__classcell__r/   r/   r°   r0   r   D  s   F	

r   c                   @   sl   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )r¡   zMANIFEST.inc                 C   s"   d| _ d| _d| _d| _d| _d S )NTF)Zuse_defaultsrµ   Zmanifest_onlyZforce_manifestr¢   r7   r/   r/   r0   ra     s
    z!manifest_maker.initialize_optionsc                 C   s   d S r3   r/   r7   r/   r/   r0   ry     s    zmanifest_maker.finalize_optionsc                 C   sz   t | jd�| _tj | j¡s$|  ¡  |  ¡  tj | j	¡rB|  
¡  |  ¡  |  ¡  |  ¡  | j ¡  | j ¡  |  ¡  d S )Nr¬   )r   r¢   r¤   r   r   r‚   r£   Úwrite_manifestÚadd_defaultsÚtemplateZread_templateÚadd_license_filesÚ_add_referenced_filesZprune_file_listÚsortZremove_duplicatesr7   r/   r/   r0   r      s    

zmanifest_maker.runc                 C   s   t  |¡}| tjd¡S )Nú/)rà   rá   rJ   r   r   )r8   r   r/   r/   r0   Ú_manifest_normalize'  s    
z"manifest_maker._manifest_normalizec                    sB   ˆ j  ¡  ‡ fdd„ˆ j jD ƒ}dˆ j }ˆ  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 r/   )rî   rÌ   r7   r/   r0   rÎ   3  s     z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file '%s'N)r¤   rß   rÆ   r£   Úexecuter�   )r8   rÆ   rœ   r/   r7   r0   rç   +  s    

zmanifest_maker.write_manifestc                 C   s   |   |¡st | |¡ d S r3   )Ú_should_suppress_warningr   rƒ   )r8   rœ   r/   r/   r0   rƒ   7  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œ   r/   r/   r0   rð   ;  s    z'manifest_maker._should_suppress_warningc                 C   sŒ   t  | ¡ | j | j¡ | j | j¡ ttƒ ƒ}|rB| j |¡ nt	j
 | j¡rX|  ¡  t	j
 d¡rp| j d¡ |  d¡}| j |j¡ d S )Nzsetup.pyrV   )r   rè   r¤   rÜ   ré   r£   r”   r   rÐ   r   r   r‚   Zread_manifestÚget_finalized_commandr´   rV   )r8   ZrcfilesZei_cmdr/   r/   r0   rè   B  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')r5   r   Úlicense_filesr   rŠ   r¤   rÐ   )r8   rò   Úlfr/   r/   r0   rê   T  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 filelistZ_referenced_filesz%adding file referenced by config '%s'N)Úgetattrr5   r   Údebugr¤   rÐ   )r8   Z
referencedÚrfr/   r/   r0   rë   Z  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/)Zsee_url)Úhasattrr÷   r   ÚemitZget_data_files)r8   Úbuild_pyr/   r/   r0   Ú_safe_data_filesb  s    

ú	zmanifest_maker._safe_data_filesN)rP   rQ   rR   ré   ra   ry   r    rî   rç   rƒ   Ústaticmethodrð   rè   rê   rë   rû   r/   r/   r/   r0   r¡     s   
r¡   c              	   C   s8   d  |¡}| d¡}t| dƒ�}| |¡ W 5 Q R X 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)ru   r‹   r�   rŽ   )re   Úcontentsr�   r/   r/   r0   r�   {  s    

r�   c              	   C   s|   t  d|¡ | jsx| jj}| j|j |_}| j|j |_}z| 	| j
¡ W 5 || |_|_X t| jdd ƒ}t | j
|¡ d S )Nz
writing %sZzip_safe)r   rŠ   rŒ   r5   r   r_   rA   r^   r9   Úwrite_pkg_inforV   rô   r   Zwrite_safety_flag)ÚcmdÚbasenamere   r   ZoldverZoldnameÚsafer/   r/   r0   rÿ   ˆ  s    rÿ   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.
    Nr/   ©r   r  re   r/   r/   r0   Úwarn_depends_obsolete›  s    r  c                 C   s:   t  dd„ | j ¡ D ƒ¡}|  d|d t|ƒ¡d ¡ d S )Nc                 S   s   g | ]}|  d d¡d ‘qS )rG   r   r   )r   )rÍ   Úkr/   r/   r0   rÎ   «  s    z(write_toplevel_names.<locals>.<listcomp>ztop-level namesrý   )rd   Úfromkeysr5   Ziter_distribution_namesr�   ru   Úsorted)r   r  re   Úpkgsr/   r/   r0   Úwrite_toplevel_namesª  s    
ÿr	  c                 C   s   t | ||dƒ d S )NT)Ú	write_argr  r/   r/   r0   Úoverwrite_arg±  s    r  Fr   c                 C   sH   t j |¡d }t| j|d ƒ}|d k	r4d |¡d }|  ||||¡ d S )Nr   rý   )r   r   Úsplitextrô   r5   ru   r‡   )r   r  re   r€   Úargnamerc   r/   r/   r0   r
  µ  s
    r
  c                 C   s,   t  | jj¡}t  |¡}|  d||d¡ d S )Nzentry pointsT)r	   rš   r5   r•   Úrenderr‡   )r   r  re   ÚepsZdefnr/   r/   r0   Úwrite_entries½  s    
r  c                 C   sB   t  | ¡}t  |¡}|› d|› d|p&t› �}|r>|d|› �7 }|S )rz   ú-z-py)r
   rt   r«   )r^   r_   r|   r}   r9   rA   Úeggr/   r/   r0   r{   Ã  s    

r{   c                   @   s   e Zd ZdZdS )ÚEggInfoDeprecationWarningz?Deprecated behavior warning for EggInfo, bypassing suppression.N)rP   rQ   rR   Ú__doc__r/   r/   r/   r0   r  Í  s   r  )F)NN):r  r¸   r   r    rã   rM   rH   Zpackaging.requirementsZpackaging.versionZsetuptools.unicode_utilsrà   Ú
setuptoolsr   Zsetuptools.commandr   Zsetuptools.command.sdistr   r   Zsetuptools.command.setoptr   Zsetuptools.globr   r   r	   r
   Z
_importlibr   Úwarningsr   r   Údistutils.errorsrm   Údistutils.filelistr   r   r   Z	_FileListÚdistutils.utilr   ÚformatÚversion_infor«   r1   r2   rV   r¡   r�   rÿ   r  Zwrite_requirementsZwrite_setup_requirementsr	  r  rU   r
  r  r{   r  r/   r/   r/   r0   Ú<module>   sV   S/  Io

