o
    *‘sihf  ã                   @   sæ  d Z ddl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
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 ddlmZ ddlmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#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-Z- dd„ Z.G dd„ dƒZ/G dd„ de/eƒZ0G dd„ deƒZG dd„ deƒZ1dd„ Z2d d!„ Z3d"d#„ Z4d$d%„ Z5d&d'„ Z6d(d)„ Z7d*d+„ Z8d,d-„ Z9d7d/d0„Z:d1d2„ Z;d3d4„ Z<G d5d6„ d6e-ƒZ=dS )8zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contentsé    )ÚFileList)ÚDistutilsInternalError)Úconvert_path)ÚlogNé   )Úmetadata)Ú_entry_points)ÚCommand)Úsdist)Úwalk_revctrl)Úedit_config)Ú	bdist_egg)ÚRequirementÚ	safe_nameÚparse_versionÚsafe_versionÚto_filename)Úglob)Ú	packaging)Úyield_lines)ÚSetuptoolsDeprecationWarningc                 C   sà  d}|   tjj¡}t tj¡}d|f }t|ƒD ]È\}}|t|ƒd k}|dkr8|r/|d7 }n|d||f 7 }qd}t|ƒ}	||	k rÚ|| }
|
dkrQ||d 7 }n�|
d	krZ||7 }nx|
d
krË|d }||	k rp|| dkrp|d }||	k r~|| dkr~|d }||	k r–|| dkr–|d }||	k r–|| dksˆ||	kr¢|t |
¡7 }n0||d |… }d}|d dkrºd}|dd… }|t |¡7 }|d|f 7 }|}n|t |
¡7 }|d7 }||	k sB|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[^%s]é   ú**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ÚinnerÚ
char_class© r5   ú€C:\Users\PC\students\dividedattentionclub\pushnotificationexperiment\lib\python3.10\site-packages\setuptools/command/egg_info.pyÚtranslate_pattern'   s\   


ÿÖ-€r7   c                   @   sf   e Zd ZdZdZedd„ ƒZdd„ Zdd„ Zde	d	e
fd
d„Zd	e	fdd„Zd	e	fdd„ZeeƒZdS )Ú
InfoCommonNc                 C   s   t | j ¡ ƒS ©N)r   ÚdistributionÚget_name©Úselfr5   r5   r6   Úname~   s   zInfoCommon.namec                 C   s   t |  | j ¡ ¡ƒS r9   )r   Ú
_maybe_tagr:   Úget_versionr<   r5   r5   r6   Ú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=   Úversionr5   r5   r6   r?   …   s   ÿþzInfoCommon._maybe_tagrE   Úreturnc                 C   s   |  | j¡p|  |  ¡ ¡S r9   )ÚendswithrB   Ú
_safe_tagsrD   r5   r5   r6   rC   �   s   zInfoCommon._already_taggedc                 C   s   t d| j› �ƒdd … S )NÚ0r   )r   rB   r<   r5   r5   r6   rH   ”   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ÚstrftimerD   r5   r5   r6   Útags™   s   
zInfoCommon.tags)Ú__name__Ú
__module__Ú__qualname__rJ   rK   Úpropertyr>   rA   r?   ÚstrÚboolrC   rH   rN   rB   r5   r5   r5   r6   r8   z   s    

r8   c                   @   sŠ   e Zd ZdZg d¢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ddd„Z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]rW   rZ   c                 C   s"   d | _ d | _d | _d | _d| _d S )NF)Úegg_baseÚegg_namerU   Úegg_versionÚbroken_egg_infor<   r5   r5   r6   Úinitialize_options³   s
   
zegg_info.initialize_optionsc                 C   ó   d S r9   r5   r<   r5   r5   r6   Útag_svn_revision½   ó   zegg_info.tag_svn_revisionc                 C   ra   r9   r5   )r=   Úvaluer5   r5   r6   rb   Á   rc   c                 C   s0   t  ¡ }|  ¡ |d< 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.
        rJ   r   rK   )rU   N)ÚcollectionsÚOrderedDictrN   r   Údict)r=   ÚfilenamerU   r5   r5   r6   Úsave_version_infoÆ   s   zegg_info.save_version_infoc              
   C   sH  | j | _|  ¡ | _t| jƒ}zt|tjjƒ}|rdnd}t	|| j| jf ƒ W n t
y@ } ztj d| j| jf ¡|‚d }~ww | jd u rT| jj}|pMi  dtj¡| _|  d¡ t| jƒd | _| jtjkrqtj | j| j¡| _d| jv rz|  ¡  | j| jj_| jj}|d ur |j| j ¡ kr¢| j|_t| jƒ|_d | j_d S d S d S )Nz%s==%sz%s===%sz2Invalid distribution name or version syntax: %s-%sr   r\   ú	.egg-infoú-) r>   r]   rA   r^   r   Ú
isinstancer   rE   ÚVersionr   Ú
ValueErrorÚ	distutilsÚerrorsZDistutilsOptionErrorr\   r:   Zpackage_dirÚgetr"   ÚcurdirZensure_dirnamer   rU   r#   ÚjoinÚcheck_broken_egg_infor   Z_patched_distÚkeyÚlowerÚ_versionÚ_parsed_version)r=   Úparsed_versionZ
is_versionÚspecrV   ÚdirsÚpdr5   r5   r6   Úfinalize_optionsÓ   sB   


ÿÿý€ÿ


ýzegg_info.finalize_optionsFc                 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=   Úwhatrh   ÚdataÚforcer5   r5   r6   Úwrite_or_delete_file   s   	ÿùzegg_info.write_or_delete_filec                 C   sB   t  d||¡ | d¡}| jst|dƒ}| |¡ | ¡  dS 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)r=   r‚   rh   rƒ   Úfr5   r5   r6   r~     s   


ýzegg_info.write_filec                 C   s$   t  d|¡ | jst |¡ dS dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   rˆ   rŠ   r"   Úunlink)r=   rh   r5   r5   r6   r�   !  s   ÿzegg_info.delete_filec                 C   s‚   |   | j¡ t | jd ¡ tjdd�D ]}| ¡ }|| |jtj 	| j|j¡ƒ qtj 	| jd¡}tj 
|¡r;|  |¡ |  ¡  d S )Nzegg_info.writers)Úgroupznative_libs.txt)ZmkpathrU   r"   Úutimer   Úentry_pointsÚloadr>   r#   rs   r   r�   Úfind_sources)r=   ÚepÚwriterÚnlr5   r5   r6   Úrun'  s   
zegg_info.runc                 C   s4   t j | jd¡}t| jƒ}||_| ¡  |j| _dS )z"Generate SOURCES.txt manifest filezSOURCES.txtN)	r"   r#   rs   rU   Úmanifest_makerr:   Úmanifestr˜   Úfilelist)r=   Zmanifest_filenameÚmmr5   r5   r6   r”   5  s
   
zegg_info.find_sourcesc                 C   sX   | j d }| jtjkrtj | j|¡}tj |¡r*t d|| j	¡ | j	| _
|| _	d S d S )Nrj   aB  ------------------------------------------------------------------------------
Note: Your current .egg-info directory has a '-' in its name;
this will not work correctly with "setup.py develop".

Please rename %s to %s to correct this problem.
------------------------------------------------------------------------------)r]   r\   r"   rr   r#   rs   r   r   r€   rU   r_   )r=   Zbeir5   r5   r6   rt   =  s   
û
÷zegg_info.check_broken_egg_infoN©F)rO   rP   rQ   ÚdescriptionZuser_optionsZboolean_optionsZnegative_optr`   rR   rb   Úsetterri   r}   r…   r~   r�   r˜   r”   rt   r5   r5   r5   r6   rU   £   s&    ÿ



-rU   c                   @   s|   e Z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dS )r   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yD   td
j|d�ƒ‚w | d¡}	|dv rQ|g}|	rV|fnd}
|| }|  d |g|	rg|gng  | ¡¡ |D ]}||ƒs€tj||g|
¢R Ž  qpd 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/this cannot happen: invalid action '{action!s}')Úactionz
recursive->   r¢   r£   r5   ú )Z_parse_template_liner    r¡   Úglobal_includeÚglobal_excludeÚ	functoolsÚpartialÚrecursive_includeÚrecursive_excluder¢   r£   ÚKeyErrorr   ÚformatÚ
startswithÚdebug_printrs   r   r€   )r=   Úliner¤   ÚpatternsÚdirZdir_patternZ
action_mapZlog_mapZprocess_actionZaction_is_recursiveZextra_log_argsZlog_tmplÚpatternr5   r5   r6   Úprocess_template_lineP  sf   ÿÿôéÿÿÿ

ÿþÿÿ€þ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   r5   r5   r6   Ú_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 r5   ©r"   r#   Úisdir©Ú.0rŽ   r5   r5   r6   Ú
<listcomp>¬  s    z$FileList.include.<locals>.<listcomp>©r   ÚextendrT   ©r=   r³   r¹   r5   r5   r6   r    ª  s   
zFileList.includec                 C   s   t |ƒ}|  |j¡S )z#Exclude files that match 'pattern'.)r7   rº   Úmatch©r=   r³   rÅ   r5   r5   r6   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¼   r5   r½   r¿   r5   r5   r6   rÁ   º  s    

ÿz.FileList.recursive_include.<locals>.<listcomp>T)Ú	recursive)r"   r#   rs   r   rÃ   rT   )r=   r²   r³   Zfull_patternr¹   r5   r5   r6   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   ©r7   r"   r#   rs   rº   rÅ   )r=   r²   r³   rÅ   r5   r5   r6   r«   ¿  s   zFileList.recursive_excludec                 C   r»   )zInclude all files from 'dir/'.c                 S   s"   g | ]}t j |¡D ]}|‘q
qS r5   )ro   r›   Úfindall)rÀ   Z	match_dirÚitemr5   r5   r6   rÁ   È  s    
ýþÿz"FileList.graft.<locals>.<listcomp>rÂ   )r=   r²   r¹   r5   r5   r6   r¢   Æ  s
   þ
zFileList.graftc                 C   s   t tj |d¡ƒ}|  |j¡S )zFilter out files from 'dir/'.r   rÈ   )r=   r²   rÅ   r5   r5   r6   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 r5   ©rÅ   r¿   rË   r5   r6   rÁ   Ý  s    z+FileList.global_include.<locals>.<listcomp>)ZallfilesrÉ   r7   r"   r#   rs   rÃ   rT   rÄ   r5   rË   r6   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Æ   r5   r5   r6   r§   á  s   zFileList.global_excludec                 C   s<   |  d¡r|d d… }t|ƒ}|  |¡r| j |¡ d S d S )Núrµ   )rG   r   Ú
_safe_pathr·   Úappend)r=   rÊ   r#   r5   r5   r6   rÎ   è  s   

ÿzFileList.appendc                 C   s   | j  t| j|ƒ¡ d S r9   )r·   rÃ   ÚfilterrÍ   )r=   Úpathsr5   r5   r6   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)ÚlistrÏ   rÍ   r·   r<   r5   r5   r6   Ú_repairó  s   zFileList._repairc              	   C   sš   d}t  |¡}|d u rt d| ¡ dS t  |d¡}|d u r't ||d¡ dS ztj |¡s4tj |¡r7W dS W d S  tyL   t ||t	 
¡ ¡ Y d S w )Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFr†   T)Úunicode_utilsÚfilesys_decoder   r€   Z
try_encoder"   r#   r   ÚUnicodeEncodeErrorÚsysÚgetfilesystemencoding)r=   r#   Zenc_warnZu_pathZ	utf8_pathr5   r5   r6   rÍ   ý  s    
ÿÿzFileList._safe_pathN)rO   rP   rQ   r´   rº   r    r¡   rª   r«   r¢   r£   r¦   r§   rÎ   rÃ   rÒ   rÍ   r5   r5   r5   r6   r   M  s    M


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 S )Nr   )Zuse_defaultsr£   Zmanifest_onlyZforce_manifestr<   r5   r5   r6   r`     s   
z!manifest_maker.initialize_optionsc                 C   ra   r9   r5   r<   r5   r5   r6   r}     s   zmanifest_maker.finalize_optionsc                 C   sl   t ƒ | _tj | j¡s|  ¡  |  ¡  tj | j¡r|  	¡  |  
¡  |  ¡  | j ¡  | j ¡  |  ¡  d S r9   )r   r›   r"   r#   r   rš   Úwrite_manifestÚadd_defaultsÚtemplateZread_templateÚadd_license_filesÚprune_file_listÚsortÚremove_duplicatesr<   r5   r5   r6   r˜   !  s   

zmanifest_maker.runc                 C   s   t  |¡}| tjd¡S )Nú/)rÓ   rÔ   Úreplacer"   r$   )r=   r#   r5   r5   r6   Ú_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 r5   )rá   r¿   r<   r5   r6   rÁ   :  s    z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file '%s'N)r›   rÒ   r·   rš   Úexecuter~   )r=   r·   Úmsgr5   r<   r6   rØ   2  s   

zmanifest_maker.write_manifestc                 C   s   |   |¡st | |¡ d S d S r9   )Ú_should_suppress_warningr
   r€   )r=   rã   r5   r5   r6   r€   >  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ã   r5   r5   r6   rä   B  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.pyrU   )r
   rÙ   r›   rÎ   rÚ   rš   rÑ   r   rÃ   r"   r#   r   Zread_manifestÚget_finalized_commandr¢   rU   )r=   ZrcfilesZei_cmdr5   r5   r6   rÙ   I  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æ   Úlfr5   r5   r6   rÛ   [  s
   z manifest_maker.add_license_filesc                 C   sZ   |   d¡}| j ¡ }| j |j¡ | j |¡ t tj	¡}| jj
d| d | dd� d S )NÚbuildz(^|z)(RCS|CVS|\.svn)r   )Zis_regex)rå   r:   Zget_fullnamer›   r£   Z
build_baser%   r&   r"   r$   Zexclude_pattern)r=   rè   Úbase_dirr$   r5   r5   r6   rÜ   b  s   


ÿzmanifest_maker.prune_file_listc                 C   s&   t |dƒr	| ¡ S t dt¡ | ¡ 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‹Custom 'build_py' does not implement 'get_data_files_without_manifest'.
Please extend command classes from setuptools instead of distutils.)Úhasattrrê   Úwarningsr€   r   Zget_data_files)r=   Zbuild_pyr5   r5   r6   Ú_safe_data_filesk  s   

üzmanifest_maker._safe_data_filesN)rO   rP   rQ   rÚ   r`   r}   r˜   rá   rØ   r€   Ústaticmethodrä   rÙ   rÛ   rÜ   rí   r5   r5   r5   r6   r™     s    
	r™   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)rs   r‰   r‹   rŒ   )rh   ÚcontentsrŽ   r5   r5   r6   r~   �  s
   

"ÿr~   c              	   C   sŽ   t  d|¡ | jsE| jj}| j|j|_}| j|j|_}z| 	| j
¡ W |||_|_n|||_|_w t| jdd ƒ}t | j
|¡ d S d S )Nz
writing %sZzip_safe)r   rˆ   rŠ   r:   r   r^   rE   r]   r>   Úwrite_pkg_inforU   Úgetattrr   Zwrite_safety_flag)ÚcmdÚbasenamerh   r   ZoldverZoldnameÚsafer5   r5   r6   rñ   Ž  s    òrñ   c                 C   s   t j |¡rt d¡ d S d S )NzsWARNING: 'depends.txt' is not used by setuptools 0.6!
Use the install_requires/extras_require setup() args instead.)r"   r#   r   r   r€   ©ró   rô   rh   r5   r5   r6   Úwarn_depends_obsolete¡  s
   ÿÿr÷   c                 C   s,   t |pdƒ}dd„ }t||ƒ}|  |¡ d S )Nr5   c                 S   s   | d S )Nrï   r5   )r°   r5   r5   r6   Ú	append_cr¬  s   z&_write_requirements.<locals>.append_cr)r   ÚmapÚ
writelines)ÚstreamÚreqsÚlinesrø   r5   r5   r6   Ú_write_requirements©  s   
rþ   c                 C   sn   | j }t ¡ }t||jƒ |jpi }t|ƒD ]}| djdi t	ƒ ¤Ž¡ t||| ƒ q|  
d|| ¡ ¡ d S )Nz
[{extra}]
Úrequirementsr5   )r:   ÚioÚStringIOrþ   Zinstall_requiresÚextras_requireÚsortedrŒ   r­   Úvarsr…   Úgetvalue)ró   rô   rh   Údistrƒ   r  Úextrar5   r5   r6   Úwrite_requirements²  s   
r  c                 C   s,   t  ¡ }t|| jjƒ |  d|| ¡ ¡ d S )Nzsetup-requirements)r   r  rþ   r:   Zsetup_requiresr…   r  )ró   rô   rh   rƒ   r5   r5   r6   Úwrite_setup_requirements½  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 )Ú.r   r   )r!   )rÀ   Úkr5   r5   r6   rÁ   Å  s    ÿÿz(write_toplevel_names.<locals>.<listcomp>ztop-level namesrï   )rg   Úfromkeysr:   Ziter_distribution_namesr~   rs   r  )ró   rô   rh   Zpkgsr5   r5   r6   Úwrite_toplevel_namesÃ  s   þÿ r  c                 C   s   t | ||dƒ d S )NT)Ú	write_argrö   r5   r5   r6   Úoverwrite_argÍ  s   r  Fc                 C   sH   t j |¡d }t| j|d ƒ}|d urd |¡d }|  ||||¡ d S )Nr   rï   )r"   r#   Úsplitextrò   r:   rs   r…   )ró   rô   rh   r„   Úargnamerd   r5   r5   r6   r  Ñ  s
   r  c                 C   s,   t  | jj¡}t  |¡}|  d||d¡ d S )Nzentry pointsT)r   r“   r:   r’   Úrenderr…   )ró   rô   rh   ZepsZdefnr5   r5   r6   Úwrite_entriesÙ  s   
r  c                  C   s‚   t  dt¡ tj d¡r?t d¡�&} | D ]}t 	d|¡}|r.t
| d¡ƒ  W  d  ƒ S qW d  ƒ dS 1 s:w   Y  dS )zd
    Get a -r### off of PKG-INFO Version in case this is an sdist of
    a subversion revision.
    z$get_pkg_info_revision is deprecated.zPKG-INFOzVersion:.*-r(\d+)\s*$r   Nr   )rì   r€   ÚEggInfoDeprecationWarningr"   r#   r   r   r‹   r%   rÅ   Úintr�   )rŽ   r°   rÅ   r5   r5   r6   Úget_pkg_info_revisionß  s    ÿüþ
ÿûr  c                   @   s   e Zd ZdZdS )r  z?Deprecated behavior warning for EggInfo, bypassing suppression.N)rO   rP   rQ   Ú__doc__r5   r5   r5   r6   r  ï  s    r  r�   )>r  Zdistutils.filelistr   Z	_FileListZdistutils.errorsr   Zdistutils.utilr   ro   r   r¨   r"   r%   rÖ   r   rì   rL   re   Z
_importlibr   r   r   Ú
setuptoolsr	   Zsetuptools.command.sdistr
   r   Zsetuptools.command.setoptr   Zsetuptools.commandr   Úpkg_resourcesr   r   r   r   r   Zsetuptools.unicode_utilsrÓ   Zsetuptools.globr   Zsetuptools.externr   Zsetuptools.extern.jaraco.textr   r   r7   r8   rU   r™   r~   rñ   r÷   rþ   r  r	  r  r  r  r  r  r  r5   r5   r5   r6   Ú<module>   s^    S) + Il	

