a
    eÖ0hîc  ã                   @   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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#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„ Z-G dd„ dƒZ.G dd„ de.eƒZ/G dd„ deƒZG dd„ deƒZ0dd„ Z1dd„ Z2d d!„ Z3d"d#„ Z4d$d%„ Z5d&d'„ Z6d(d)„ Z7d*d+„ Z8d5d-d.„Z9d/d0„ Z:d1d2„ Z;G d3d4„ d4e,ƒZ<dS )6zUsetuptools.command.egg_info

Create a distribution's .egg-info directory and contentsé    )ÚFileList)ÚDistutilsInternalError)Úconvert_path)ÚlogN)Úsix)Úmap)ÚCommand)Úsdist)Úwalk_revctrl)Úedit_config)Ú	bdist_egg)Úparse_requirementsÚ	safe_nameÚparse_versionÚsafe_versionÚyield_linesÚ
EntryPointÚiter_entry_pointsÚto_filename)Úglob)Ú	packaging)ÚSetuptoolsDeprecationWarningc                 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]é   ú**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© r6   úI/var/www/auris/lib/python3.9/site-packages/setuptools/command/egg_info.pyÚtranslate_pattern$   sV    







r8   c                   @   s8   e Zd ZdZdZedd„ ƒZdd„ Zdd„ ZeeƒZ	dS )Ú
InfoCommonNc                 C   s   t | j ¡ ƒS ©N)r   ÚdistributionÚget_name©Úselfr6   r6   r7   Úname{   s    zInfoCommon.namec                 C   s2   | j  ¡ }| jr$| | j¡r$t|ƒS t|| j ƒS r:   )r;   Úget_versionÚvtagsÚendswithr   ©r>   Úversionr6   r6   r7   Útagged_version   s    
zInfoCommon.tagged_versionc                 C   s,   d}| j r|| j 7 }| jr(|t d¡7 }|S )Nr   z-%Y%m%d)Ú	tag_buildÚtag_dateÚtimeÚstrftimerC   r6   r6   r7   Útags‡   s    
zInfoCommon.tags)
Ú__name__Ú
__module__Ú__qualname__rF   rG   Úpropertyr?   rE   rJ   rA   r6   r6   r6   r7   r9   w   s   
r9   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]rQ   rT   c                 C   s"   d | _ d | _d | _d | _d| _d S )NF)Úegg_baseÚegg_namerO   Úegg_versionÚbroken_egg_infor=   r6   r6   r7   Úinitialize_options¡   s
    zegg_info.initialize_optionsc                 C   s   d S r:   r6   r=   r6   r6   r7   Útag_svn_revision«   s    zegg_info.tag_svn_revisionc                 C   s   d S r:   r6   )r>   Úvaluer6   r6   r7   r[   ¯   s    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.
        rF   r   rG   )rO   N)ÚcollectionsÚOrderedDictrJ   r   Údict)r>   ÚfilenamerO   r6   r6   r7   Úsave_version_info´   s    zegg_info.save_version_infoc                 C   s@  | j | _|  ¡ | _t| jƒ}z6t|tjjƒ}|r4dnd}t	t
|| j| jf ƒƒ W n* ty|   tj d| j| jf ¡‚Y n0 | jd u r¤| jj}|p–i  dtj¡| _|  d¡ t| jƒd | _| jtjkrÞtj | j| j¡| _d| jv rð|  ¡  | j| jj_| jj}|d ur<|j| j ¡ kr<| j|_t| jƒ|_ d | j_d S )Nz%s==%sz%s===%sz2Invalid distribution name or version syntax: %s-%sr   rV   ú	.egg-infoú-)!r?   rW   rE   rX   r   Ú
isinstancer   rD   ÚVersionÚlistr   Ú
ValueErrorÚ	distutilsÚerrorsÚDistutilsOptionErrorrV   r;   Úpackage_dirÚgetr#   ÚcurdirÚensure_dirnamer   rO   r$   ÚjoinÚcheck_broken_egg_infoÚmetadataZ_patched_distÚkeyÚlowerÚ_versionÚ_parsed_version)r>   Úparsed_versionZ
is_versionÚspecÚdirsÚpdr6   r6   r7   Úfinalize_optionsÁ   s>    


ÿÿ
ÿÿ



zegg_info.finalize_optionsFc                 C   sL   |r|   |||¡ n4tj |¡rH|du 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)r>   Úwhatr`   ÚdataÚforcer6   r6   r7   Úwrite_or_delete_fileò   s    	ÿzegg_info.write_or_delete_filec                 C   sD   t  d||¡ tjs| 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   Úinfor   ÚPY2ÚencodeÚdry_runÚopenÚwriteÚclose)r>   r   r`   r€   Úfr6   r6   r7   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)r>   r`   r6   r6   r7   r~     s    zegg_info.delete_filec                 C   s’   |   | j¡ t | jd ¡ | jj}tdƒD ]4}|j|d | ¡ }|| |j	tj
 | j|j	¡ƒ q*tj
 | jd¡}tj
 |¡r†|  |¡ |  ¡  d S )Nzegg_info.writers)Ú	installerznative_libs.txt)ÚmkpathrO   r#   Úutimer;   Zfetch_build_eggr   ÚrequireÚresolver?   r$   ro   r|   r~   Úfind_sources)r>   rŽ   ÚepÚwriterÚnlr6   r6   r7   Ú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$   ro   rO   Úmanifest_makerr;   Úmanifestr—   Úfilelist)r>   Zmanifest_filenameÚmmr6   r6   r7   r“   *  s
    
zegg_info.find_sourcesc                 C   sT   | j d }| jtjkr&tj | j|¡}tj |¡rPt d|| j	¡ | j	| _
|| _	d S )Nrb   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.
------------------------------------------------------------------------------)rW   rV   r#   rm   r$   ro   r|   r   r}   rO   rY   )r>   Zbeir6   r6   r7   rp   2  s    
ûzegg_info.check_broken_egg_infoN)F)rK   rL   rM   ÚdescriptionÚuser_optionsÚboolean_optionsÚnegative_optrZ   rN   r[   Úsetterra   rz   r‚   r{   r~   r—   r“   rp   r6   r6   r6   r7   rO   ‘   s$   ÿ


1
rO   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   |   |¡\}}}}|dkrR|  dd |¡ ¡ |D ]}|  |¡s2t d|¡ q2nÊ|dkr’|  dd |¡ ¡ |D ]}|  |¡srt d|¡ qrnŠ|dkrÒ|  d	d |¡ ¡ |D ]}|  |¡s²t d
|¡ q²nJ|dkr|  dd |¡ ¡ |D ]}|  |¡sôt d|¡ qôn|dkr`|  d|d |¡f ¡ |D ]"}|  	||¡s:t d||¡ q:n¼|dkr¬|  d|d |¡f ¡ |D ]"}|  
||¡s†t d||¡ q†np|dkrÞ|  d| ¡ |  |¡st d|¡ n>|dkr|  d| ¡ |  |¡st d|¡ ntd| ƒ‚d S )NÚincludezinclude ú z%warning: no files found matching '%s'Úexcludezexclude z9warning: no previously-included files found matching '%s'zglobal-includezglobal-include z>warning: no files found matching '%s' anywhere in distributionzglobal-excludezglobal-exclude zRwarning: no previously-included files matching '%s' found anywhere in distributionzrecursive-includezrecursive-include %s %sz:warning: no files found matching '%s' under directory '%s'zrecursive-excludezrecursive-exclude %s %szNwarning: no previously-included files matching '%s' found under directory '%s'Úgraftzgraft z+warning: no directories found matching '%s'Úprunezprune z6no previously-included directories found matching '%s'z'this cannot happen: invalid action '%s')Z_parse_template_lineÚdebug_printro   r¡   r   r}   r£   Úglobal_includeÚglobal_excludeÚrecursive_includeÚrecursive_excluder¤   r¥   r   )r>   ÚlineÚactionÚpatternsÚdirZdir_patternÚpatternr6   r6   r7   Úprocess_template_lineE  sx    

ÿ

ÿ


þ

ÿþ

ÿþ

ÿ
ÿÿ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¦   )r>   Ú	predicateÚfoundr2   r6   r6   r7   Ú_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 r6   ©r#   r$   Úisdir©Ú.0rŒ   r6   r6   r7   Ú
<listcomp>  ó    z$FileList.include.<locals>.<listcomp>©r   ÚextendÚbool©r>   r¯   rµ   r6   r6   r7   r¡   ›  s    
zFileList.includec                 C   s   t |ƒ}|  |j¡S )z#Exclude files that match 'pattern'.)r8   r¶   Úmatch©r>   r¯   rÁ   r6   r6   r7   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 r6   r·   r¹   r6   r6   r7   r»   «  s   ÿz.FileList.recursive_include.<locals>.<listcomp>T)Ú	recursive)r#   r$   ro   r   r¾   r¿   )r>   r®   r¯   Zfull_patternrµ   r6   r6   r7   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   ©r8   r#   r$   ro   r¶   rÁ   )r>   r®   r¯   rÁ   r6   r6   r7   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 r6   )rh   rš   Úfindall)rº   Z	match_dirÚitemr6   r6   r7   r»   ¹  s   þz"FileList.graft.<locals>.<listcomp>r½   )r>   r®   rµ   r6   r6   r7   r¤   ·  s
    þ
zFileList.graftc                 C   s   t tj |d¡ƒ}|  |j¡S )zFilter out files from 'dir/'.r   rÄ   )r>   r®   rÁ   r6   r6   r7   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 r6   ©rÁ   r¹   rÇ   r6   r7   r»   Î  r¼   z+FileList.global_include.<locals>.<listcomp>)ÚallfilesrÅ   r8   r#   r$   ro   r¾   r¿   rÀ   r6   rÇ   r7   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Â   r6   r6   r7   r¨   Ò  s    zFileList.global_excludec                 C   s8   |  d¡r|d d… }t|ƒ}|  |¡r4| j |¡ d S )Núr±   )rB   r   Ú
_safe_pathr³   Úappend)r>   rÆ   r$   r6   r6   r7   rË   Ù  s
    

zFileList.appendc                 C   s   | j  t| j|ƒ¡ d S r:   )r³   r¾   ÚfilterrÊ   )r>   Úpathsr6   r6   r7   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)rf   rÌ   rÊ   r³   r=   r6   r6   r7   Ú_repairä  s    zFileList._repairc              	   C   sš   d}t  |¡}|d u r(t d| ¡ dS t  |d¡}|d u rNt ||d¡ dS z"tj |¡shtj |¡rnW dS W n$ ty”   t ||t	 
¡ ¡ Y n0 d S )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_pathr6   r6   r7   rÊ   î  s    

zFileList._safe_pathN)rK   rL   rM   r°   r¶   r¡   r£   r©   rª   r¤   r¥   r§   r¨   rË   r¾   rÎ   rÊ   r6   r6   r6   r7   r   B  s   I


r   c                   @   s\   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S )r˜   zMANIFEST.inc                 C   s   d| _ d| _d| _d| _d S )Nr   )Zuse_defaultsr¥   Zmanifest_onlyZforce_manifestr=   r6   r6   r7   rZ   	  s    z!manifest_maker.initialize_optionsc                 C   s   d S r:   r6   r=   r6   r6   r7   rz     s    zmanifest_maker.finalize_optionsc                 C   sd   t ƒ | _tj | j¡s|  ¡  |  ¡  tj | j¡r<|  	¡  |  
¡  | j ¡  | j ¡  |  ¡  d S r:   )r   rš   r#   r$   r|   r™   Úwrite_manifestÚadd_defaultsÚtemplateZread_templateÚprune_file_listÚsortZremove_duplicatesr=   r6   r6   r7   r—     s    

zmanifest_maker.runc                 C   s   t  |¡}| tjd¡S )Nú/)rÏ   rÐ   Úreplacer#   r%   )r>   r$   r6   r6   r7   Ú_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 r6   )rÛ   r¹   r=   r6   r7   r»   *  r¼   z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file '%s'N)rš   rÎ   r³   r™   Úexecuter{   )r>   r³   Úmsgr6   r=   r7   rÔ   "  s    

zmanifest_maker.write_manifestc                 C   s   |   |¡st | |¡ d S r:   )Ú_should_suppress_warningr	   r}   )r>   rÝ   r6   r6   r7   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Ý   r6   r6   r7   rÞ   2  s    z'manifest_maker._should_suppress_warningc                 C   s”   t  | ¡ |  ¡  | j | j¡ | j | j¡ ttƒ ƒ}|rJ| j 	|¡ nt
j | j¡r`|  ¡  t
j d¡rx| j d¡ |  d¡}| j |j¡ d S )Nzsetup.pyrO   )r	   rÕ   Zcheck_licenserš   rË   rÖ   r™   rf   r
   r¾   r#   r$   r|   Zread_manifestÚget_finalized_commandr¤   rO   )r>   ZrcfilesZei_cmdr6   r6   r7   rÕ   9  s    


zmanifest_maker.add_defaultsc                 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;   Úget_fullnamerš   r¥   Ú
build_baser&   r'   r#   r%   Zexclude_pattern)r>   rà   Úbase_dirr%   r6   r6   r7   r×   L  s    

ÿzmanifest_maker.prune_file_listN)rK   rL   rM   rÖ   rZ   rz   r—   rÛ   rÔ   r}   ÚstaticmethodrÞ   rÕ   r×   r6   r6   r6   r7   r˜     s   
r˜   c                 C   sL   d  |¡}| d¡}t| dƒ}| |¡ W d  ƒ n1 s>0    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)ro   r‡   r‰   rŠ   )r`   ÚcontentsrŒ   r6   r6   r7   r{   V  s    

r{   c              	   C   sŠ   t  d|¡ | js†| jj}| j|j |_}| j|j |_}z| 	| j
¡ W || |_|_n|| |_|_0 t| jdd ƒ}t | j
|¡ d S )Nz
writing %sZzip_safe)r   r…   rˆ   r;   rq   rX   rD   rW   r?   Úwrite_pkg_inforO   Úgetattrr   Zwrite_safety_flag)ÚcmdÚbasenamer`   rq   ZoldverZoldnameÚsafer6   r6   r7   rç   c  s     rç   c                 C   s   t j |¡rt d¡ 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ê   r`   r6   r6   r7   Úwarn_depends_obsoletev  s    ÿrí   c                 C   s0   t |pdƒ}dd„ }t|t|ƒƒ}|  |¡ d S )Nr6   c                 S   s   | d S )Nrå   r6   )r«   r6   r6   r7   Ú<lambda>€  r¼   z%_write_requirements.<locals>.<lambda>)r   r   ÚsortedÚ
writelines)ÚstreamÚreqsÚlinesZ	append_crr6   r6   r7   Ú_write_requirements~  s    rô   c                 C   sn   | j }t ¡ }t||jƒ |jp"i }t|ƒD ]*}| djf i t	ƒ ¤Ž¡ t||| ƒ q,|  
d|| ¡ ¡ d S )Nz
[{extra}]
Úrequirements)r;   r   ÚStringIOrô   Zinstall_requiresÚextras_requirerï   rŠ   ÚformatÚvarsr‚   Úgetvalue)ré   rê   r`   Údistr€   r÷   Úextrar6   r6   r7   Úwrite_requirements…  s    
rý   c                 C   s,   t  ¡ }t|| jjƒ |  d|| ¡ ¡ d S )Nzsetup-requirements)Úiorö   rô   r;   Zsetup_requiresr‚   rú   )ré   rê   r`   r€   r6   r6   r7   Ú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º   Úkr6   r6   r7   r»   ˜  s   ÿz(write_toplevel_names.<locals>.<listcomp>ztop-level namesrå   )r_   Úfromkeysr;   Ziter_distribution_namesr{   ro   rï   )ré   rê   r`   Úpkgsr6   r6   r7   Úwrite_toplevel_names–  s    þÿr  c                 C   s   t | ||dƒ d S )NT)Ú	write_argrì   r6   r6   r7   Úoverwrite_arg   s    r  Fc                 C   sH   t j |¡d }t| j|d ƒ}|d ur4d |¡d }|  ||||¡ d S )Nr   rå   )r#   r$   Úsplitextrè   r;   ro   r‚   )ré   rê   r`   r   Úargnamer\   r6   r6   r7   r  ¤  s
    r  c                 C   s¤   | j j}t|tjƒs|d u r"|}nn|d urg }t| ¡ ƒD ]J\}}t|tjƒsrt ||¡}d 	tt
t| ¡ ƒƒ¡}| d||f ¡ q:d 	|¡}|  d||d¡ d S )Nrå   z	[%s]
%s

r   zentry pointsT)r;   Zentry_pointsrd   r   Ústring_typesrï   Úitemsr   Úparse_groupro   r   ÚstrÚvaluesrË   r‚   )ré   rê   r`   r”   r€   Úsectionræ   r6   r6   r7   Úwrite_entries¬  s    
r  c                  C   s€   t  dt¡ tj d¡r|t d¡J} | D ]4}t 	d|¡}|r(t
| d¡ƒ  W  d  ƒ S q(W d  ƒ n1 sr0    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   )Úwarningsr}   ÚEggInfoDeprecationWarningr#   r$   r|   rþ   r‰   r&   rÁ   ÚintÚgroup)rŒ   r«   rÁ   r6   r6   r7   Úget_pkg_info_revision½  s    @r  c                   @   s   e Zd ZdZdS )r  zqClass for warning about deprecations in eggInfo in setupTools. Not ignored by default, unlike DeprecationWarning.N)rK   rL   rM   Ú__doc__r6   r6   r6   r7   r  Ì  s   r  )F)=r  Údistutils.filelistr   Z	_FileListÚdistutils.errorsr   Údistutils.utilr   rh   r   r#   r&   rÒ   rþ   r  rH   r]   Zsetuptools.externr   Zsetuptools.extern.six.movesr   Ú
setuptoolsr   Zsetuptools.command.sdistr	   r
   Zsetuptools.command.setoptr   Zsetuptools.commandr   Úpkg_resourcesr   r   r   r   r   r   r   r   Zsetuptools.unicode_utilsrÏ   Zsetuptools.globr   r   r   r8   r9   rO   r˜   r{   rç   rí   rô   rý   rÿ   r  r  r  r  r  r  r6   r6   r6   r7   Ú<module>   sX   (S 2 EP

