509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
Ävhà`  ã               @   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'j(Z(ddl)m*Z* ddlm+Z+ dd„ Z,G dd„ deƒZ-G dd„ deƒZG dd„ deƒZ.dd„ Z/dd„ Z0dd„ Z1dd „ Z2d!d"„ Z3d#d$„ Z4d%d&„ Z5d'd(„ Z6d0d*d+„Z7d,d-„ Z8d.d/„ Z9dS )1zUsetuptools.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)Ú	packagingc             C   sî  d}| j tjjƒ}tjtjƒ}d|f }�x¤t|ƒD �]–\}}|t|ƒd k}|dkrv|rd|d7 }q4|d||f 7 }q4d}t|ƒ}	�x:||	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 }x&||	k �r6|| dk�r6|d }�qW ||	k�rR|tj|
ƒ7 }nR||d |… }d}|d dk�r„d}|dd… }|tj|ƒ7 }|d|f 7 }|}n|tj|
ƒ7 }|d7 }q†W |s4||7 }q4W |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.*z
(?:%s+%s)*r   Ú*ú?ú[ú!ú]ú^Nz[%s]z\Z)Úflags)ÚsplitÚosÚpathÚsepÚreÚescapeÚ	enumerateÚlenÚcompileÚ	MULTILINEÚDOTALL)r   ZpatZchunksr#   Z
valid_charÚcÚchunkZ
last_chunkÚiZ	chunk_lenÚcharZinner_iÚinnerZ
char_class© r0   ú/usr/lib/python3.6/egg_info.pyÚtranslate_pattern$   sV    




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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(S ).Úegg_infoz+create a distribution's .egg-info directoryú	egg-base=ÚeúLdirectory containing .egg-info directories (default: top of the source tree)útag-dateÚdú0Add date stamp (e.g. 20050528) to version numberú
tag-build=Úbú-Specify explicit tag to add to version numberúno-dateÚDú"Don't include date stamp [default]c             C   s4   d | _ d | _d | _d | _d | _d| _d| _d | _d S )Nr   F)Úegg_nameÚegg_versionÚegg_baser3   Ú	tag_buildÚtag_dateÚbroken_egg_infoÚvtags)Úselfr0   r0   r1   Úinitialize_options‡   s    zegg_info.initialize_optionsc             C   s   d S )Nr0   )rG   r0   r0   r1   Útag_svn_revision”   s    zegg_info.tag_svn_revisionc             C   s   d S )Nr0   )rG   Úvaluer0   r0   r1   rI   ˜   s    c             C   s0   t jƒ }| jƒ |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.
        rC   r   rD   )r3   N)ÚcollectionsÚOrderedDictÚtagsr   Údict)rG   Úfilenamer3   r0   r0   r1   Úsave_version_info�   s    zegg_info.save_version_infoc             C   sV  t | jjƒ ƒ| _| jƒ | _| jƒ | _t| jƒ}y6t	|t
jjƒ}|rFdnd}tt|| j| jf ƒƒ W n, tk
r�   tjjd| j| jf ƒ‚Y nX | jd kr¸| jj}|pªi jdtjƒ| _| jdƒ t| jƒd | _| jtjkròtjj| j| jƒ| _d| jk�r| jƒ  | j| jj_| jj}|d k	�rR|j | jj!ƒ k�rR| j|_"t| jƒ|_#d | j_d S )Nz%s==%sz%s===%sz2Invalid distribution name or version syntax: %s-%sr   rB   z	.egg-infoú-)$r   ÚdistributionZget_namer@   rM   rF   Útagged_versionrA   r   Ú
isinstancer   ÚversionZVersionÚlistr   Ú
ValueErrorÚ	distutilsÚerrorsZDistutilsOptionErrorrB   Zpackage_dirÚgetr!   ÚcurdirZensure_dirnamer   r3   r"   ÚjoinÚcheck_broken_egg_infoÚmetadataZ_patched_distÚkeyÚlowerZ_versionZ_parsed_version)rG   Zparsed_versionZ
is_versionÚspecÚdirsZpdr0   r0   r1   Úfinalize_optionsª   s8    




zegg_info.finalize_optionsFc             C   sN   |r| j |||ƒ n6tjj|ƒrJ|dkr@| r@tjd||ƒ dS | j|ƒ 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)rG   ÚwhatrO   ÚdataÚforcer0   r0   r1   Úwrite_or_delete_fileÙ   s    	
zegg_info.write_or_delete_filec             C   sD   t jd||ƒ tjr|jdƒ}| js@t|dƒ}|j|ƒ |jƒ  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 %szutf-8ÚwbN)	r   Úinfor   ZPY3ÚencodeÚdry_runÚopenÚwriteÚclose)rG   rh   rO   ri   Úfr0   r0   r1   rd   í   s    


zegg_info.write_filec             C   s    t jd|ƒ | jstj|ƒ dS )z8Delete `filename` (if not a dry run) after announcing itzdeleting %sN)r   rm   ro   r!   Úunlink)rG   rO   r0   r0   r1   rg   û   s    zegg_info.delete_filec             C   s2   | j jƒ }| jr$|j| jƒr$t|ƒS t|| j ƒS )N)rR   Zget_versionrF   Úendswithr   )rG   rU   r0   r0   r1   rS     s    
zegg_info.tagged_versionc             C   sˆ   | j | jƒ | jj}x@tdƒD ]4}|j|d� |jƒ }|| |jtj	j
| j|jƒƒ qW tj	j
| jdƒ}tj	j|ƒr|| j|ƒ | jƒ  d S )Nzegg_info.writers)Ú	installerznative_libs.txt)Zmkpathr3   rR   Zfetch_build_eggr   ZrequireZresolveÚnamer!   r"   r\   re   rg   Úfind_sources)rG   rv   ÚepÚwriterÚnlr0   r0   r1   Úrun	  s     
zegg_info.runc             C   s,   d}| j r|| j 7 }| jr(|tjdƒ7 }|S )Nr   z-%Y%m%d)rC   rD   ÚtimeZstrftime)rG   rU   r0   r0   r1   rM     s    
zegg_info.tagsc             C   s4   t jj| jdƒ}t| jƒ}||_|jƒ  |j| _dS )z"Generate SOURCES.txt manifest filezSOURCES.txtN)	r!   r"   r\   r3   Úmanifest_makerrR   Úmanifestr|   Úfilelist)rG   Zmanifest_filenameZmmr0   r0   r1   rx      s
    
zegg_info.find_sourcesc             C   sd   | j d }| jtjkr&tjj| j|ƒ}tjj|ƒr`tjdd d dd  || j	ƒ | j	| _
|| _	d S )Nz	.egg-inforQ   éN   z¦
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@   rB   r!   r[   r"   r\   re   r   rf   r3   rE   )rG   Zbeir0   r0   r1   r]   (  s    

zegg_info.check_broken_egg_infoN)r4   r5   r6   )r7   r8   r9   )r:   r;   r<   )r=   r>   r?   )F)Ú__name__Ú
__module__Ú__qualname__ÚdescriptionZuser_optionsZboolean_optionsZnegative_optrH   ÚpropertyrI   ÚsetterrP   rc   rk   rd   rg   rS   r|   rM   rx   r]   r0   r0   r0   r1   r3   w   s(   /
r3   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 |ƒ\}}}}|dkrV| jddj|ƒ ƒ x"|D ]}| j|ƒs4tjd|ƒ q4W �nâ|dkrš| jddj|ƒ ƒ x"|D ]}| j|ƒsxtjd|ƒ qxW �nž|dkrÞ| jd	dj|ƒ ƒ x"|D ]}| j|ƒs¼tjd
|ƒ q¼W �nZ|dk�r(| jddj|ƒ ƒ x&|D ]}| j|ƒ�stjd|ƒ �qW �n|dk�rx| jd|dj|ƒf ƒ xì|D ]"}| j	||ƒ�sPtjd||ƒ �qPW nÀ|dk�rÈ| jd|dj|ƒf ƒ xœ|D ]"}| j
||ƒ�s tjd||ƒ �q W np|dk�rú| jd| ƒ | j|ƒ�s8tjd|ƒ n>|dk�r,| jd| ƒ | j|ƒ�s8tj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_printr\   rˆ   r   rf   rŠ   Úglobal_includeÚglobal_excludeÚrecursive_includeÚrecursive_excluder‹   rŒ   r   )rG   ÚlineÚactionZpatternsÚdirZdir_patternÚpatternr0   r0   r1   Úprocess_template_line;  sd    













zFileList.process_template_linec             C   sV   d}xLt t| jƒd ddƒD ]2}|| j| ƒr| jd| j|  ƒ | j|= d}qW |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éÿÿÿÿr—   )Úranger'   Úfilesr�   )rG   Z	predicateÚfoundr-   r0   r0   r1   Ú_remove_files„  s    zFileList._remove_filesc             C   s$   dd„ t |ƒD ƒ}| j|ƒ t|ƒS )z#Include files that match 'pattern'.c             S   s   g | ]}t jj|ƒs|‘qS r0   )r!   r"   Úisdir)Ú.0rs   r0   r0   r1   ú
<listcomp>“  s    z$FileList.include.<locals>.<listcomp>)r   ÚextendÚbool)rG   r•   rš   r0   r0   r1   rˆ   ‘  s    
zFileList.includec             C   s   t |ƒ}| j|jƒS )z#Exclude files that match 'pattern'.)r2   r›   Úmatch)rG   r•   r¡   r0   r0   r1   rŠ   —  s    zFileList.excludec             C   s8   t jj|d|ƒ}dd„ t|dd�D ƒ}| j|ƒ t|ƒS )zN
        Include all files anywhere in 'dir/' that match the pattern.
        z**c             S   s   g | ]}t jj|ƒs|‘qS r0   )r!   r"   rœ   )r�   rs   r0   r0   r1   rž   ¡  s    z.FileList.recursive_include.<locals>.<listcomp>T)Ú	recursive)r!   r"   r\   r   rŸ   r    )rG   r”   r•   Zfull_patternrš   r0   r0   r1   r�   œ  s    
zFileList.recursive_includec             C   s    t tjj|d|ƒƒ}| j|jƒS )zM
        Exclude any file anywhere in 'dir/' that match the pattern.
        z**)r2   r!   r"   r\   r›   r¡   )rG   r”   r•   r¡   r0   r0   r1   r‘   ¦  s    zFileList.recursive_excludec             C   s$   dd„ t |ƒD ƒ}| j|ƒ t|ƒS )zInclude all files from 'dir/'.c             S   s"   g | ]}t jj|ƒD ]}|‘qqS r0   )rX   r€   Úfindall)r�   Z	match_dirÚitemr0   r0   r1   rž   °  s   z"FileList.graft.<locals>.<listcomp>)r   rŸ   r    )rG   r”   rš   r0   r0   r1   r‹   ­  s    
zFileList.graftc             C   s   t tjj|dƒƒ}| j|jƒS )zFilter out files from 'dir/'.z**)r2   r!   r"   r\   r›   r¡   )rG   r”   r¡   r0   r0   r1   rŒ   ·  s    zFileList.prunec                sJ   | j dkr| jƒ  ttjjd|ƒƒ‰ ‡ fdd„| j D ƒ}| j|ƒ t|ƒS )z“
        Include all files anywhere in the current directory that match the
        pattern. This is very inefficient on large file trees.
        Nz**c                s   g | ]}ˆ j |ƒr|‘qS r0   )r¡   )r�   rs   )r¡   r0   r1   rž   Ä  s    z+FileList.global_include.<locals>.<listcomp>)Zallfilesr£   r2   r!   r"   r\   rŸ   r    )rG   r•   rš   r0   )r¡   r1   rŽ   ¼  s    

zFileList.global_includec             C   s   t tjjd|ƒƒ}| j|jƒS )zD
        Exclude all files anywhere that match the pattern.
        z**)r2   r!   r"   r\   r›   r¡   )rG   r•   r¡   r0   r0   r1   r�   È  s    zFileList.global_excludec             C   s8   |j dƒr|d d… }t|ƒ}| j|ƒr4| jj|ƒ d S )Núr   r—   )ru   r   Ú
_safe_pathr™   Úappend)rG   r¤   r"   r0   r0   r1   r§   Ï  s
    

zFileList.appendc             C   s   | j jt| j|ƒƒ d S )N)r™   rŸ   Úfilterr¦   )rG   Úpathsr0   r0   r1   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)rV   r¨   r¦   r™   )rG   r0   r0   r1   Ú_repairÚ  s    zFileList._repairc             C   sš   d}t j|ƒ}|d kr(tjd| ƒ dS t j|dƒ}|d krNtj||dƒ dS y tjj|ƒshtjj|ƒrldS W n& tk
r”   tj||t	j
ƒ ƒ Y nX d S )Nz!'%s' not %s encodable -- skippingz''%s' in unexpected encoding -- skippingFzutf-8T)Úunicode_utilsÚfilesys_decoder   rf   Z
try_encoder!   r"   re   ÚUnicodeEncodeErrorÚsysÚgetfilesystemencoding)rG   r"   Zenc_warnZu_pathZ	utf8_pathr0   r0   r1   r¦   ä  s    
zFileList._safe_pathN)r‚   rƒ   r„   r–   r›   rˆ   rŠ   r�   r‘   r‹   rŒ   rŽ   r�   r§   rŸ   rª   r¦   r0   r0   r0   r1   r   8  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_manifest)rG   r0   r0   r1   rH   ÿ  s    z!manifest_maker.initialize_optionsc             C   s   d S )Nr0   )rG   r0   r0   r1   rc     s    zmanifest_maker.finalize_optionsc             C   sd   t ƒ | _tjj| jƒs| jƒ  | jƒ  tjj| jƒr<| j	ƒ  | j
ƒ  | jjƒ  | jjƒ  | jƒ  d S )N)r   r€   r!   r"   re   r   Úwrite_manifestÚadd_defaultsÚtemplateZread_templateÚprune_file_listÚsortZremove_duplicates)rG   r0   r0   r1   r|     s    

zmanifest_maker.runc             C   s   t j|ƒ}|jtjdƒS )Nú/)r«   r¬   Úreplacer!   r#   )rG   r"   r0   r0   r1   Ú_manifest_normalize  s    
z"manifest_maker._manifest_normalizec                sB   ˆ j jƒ  ‡ fdd„ˆ j jD ƒ}dˆ j }ˆ 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 | ]}ˆ j |ƒ‘qS r0   )r·   )r�   rs   )rG   r0   r1   rž      s    z1manifest_maker.write_manifest.<locals>.<listcomp>zwriting manifest file '%s'N)r€   rª   r™   r   Zexecuterd   )rG   r™   Úmsgr0   )rG   r1   r°     s    

zmanifest_maker.write_manifestc             C   s   | j |ƒstj| |ƒ d S )N)Ú_should_suppress_warningr	   rf   )rG   r¸   r0   r0   r1   rf   $  s    
zmanifest_maker.warnc             C   s   t jd| ƒS )z;
        suppress missing-file warnings from sdist
        zstandard file .*not found)r$   r¡   )r¸   r0   r0   r1   r¹   (  s    z'manifest_maker._should_suppress_warningc             C   st   t j| ƒ | jj| jƒ | jj| jƒ ttƒ ƒ}|rB| jj|ƒ nt	j
j| jƒrX| jƒ  | jdƒ}| jj|jƒ d S )Nr3   )r	   r±   r€   r§   r²   r   rV   r
   rŸ   r!   r"   re   Zread_manifestÚget_finalized_commandr‹   r3   )rG   ZrcfilesZei_cmdr0   r0   r1   r±   /  s    


zmanifest_maker.add_defaultsc             C   sZ   | j dƒ}| jjƒ }| jj|jƒ | jj|ƒ tjtj	ƒ}| jj
d| d | dd� d S )NÚbuildz(^|z)(RCS|CVS|\.svn)r   )Zis_regex)rº   rR   Zget_fullnamer€   rŒ   Z
build_baser$   r%   r!   r#   Zexclude_pattern)rG   r»   Zbase_dirr#   r0   r0   r1   r³   ;  s    

zmanifest_maker.prune_file_listN)r‚   rƒ   r„   r²   rH   rc   r|   r·   r°   rf   Ústaticmethodr¹   r±   r³   r0   r0   r0   r1   r~   ü  s   r~   c          	   C   s8   dj |ƒ}|jdƒ}t| dƒ�}|j|ƒ W d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.
    Ú
zutf-8rl   N)r\   rn   rp   rq   )rO   Úcontentsrs   r0   r0   r1   rd   E  s    

rd   c             C   s|   t jd|ƒ | jsx| jj}| j|j |_}| j|j |_}z|j	| j
ƒ W d || |_|_X t| jdd ƒ}tj| j
|ƒ d S )Nz
writing %sZzip_safe)r   rm   ro   rR   r^   rA   rU   r@   rw   Úwrite_pkg_infor3   Úgetattrr   Zwrite_safety_flag)ÚcmdÚbasenamerO   r^   ZoldverZoldnameZsafer0   r0   r1   r¿   R  s    r¿   c             C   s   t jj|ƒrtjdƒ d S )NzsWARNING: 'depends.txt' is not used by setuptools 0.6!
Use the install_requires/extras_require setup() args instead.)r!   r"   re   r   rf   )rÁ   rÂ   rO   r0   r0   r1   Úwarn_depends_obsoletee  s    rÃ   c             C   s,   t |pf ƒ}dd„ }t||ƒ}| j|ƒ d S )Nc             S   s   | d S )Nr½   r0   )r’   r0   r0   r1   Ú<lambda>o  s    z%_write_requirements.<locals>.<lambda>)r   r   Ú
writelines)ÚstreamZreqsÚlinesZ	append_crr0   r0   r1   Ú_write_requirementsm  s    
rÈ   c             C   sn   | j }tjƒ }t||jƒ |jp"i }x2t|ƒD ]&}|jdjf t	ƒ Žƒ t||| ƒ q.W | j
d||jƒ ƒ d S )Nz
[{extra}]
Zrequirements)rR   r   ÚStringIOrÈ   Zinstall_requiresÚextras_requireÚsortedrq   ÚformatÚvarsrk   Úgetvalue)rÁ   rÂ   rO   Zdistri   rÊ   Zextrar0   r0   r1   Úwrite_requirementst  s    
rÏ   c             C   s,   t jƒ }t|| jjƒ | jd||jƒ ƒ d S )Nzsetup-requirements)ÚiorÉ   rÈ   rR   Zsetup_requiresrk   rÎ   )rÁ   rÂ   rO   ri   r0   r0   r1   Úwrite_setup_requirements  s    rÑ   c             C   s:   t jdd„ | jjƒ D ƒƒ}| jd|djt|ƒƒd ƒ d S )Nc             S   s   g | ]}|j d dƒd ‘qS )Ú.r   r   )r    )r�   Úkr0   r0   r1   rž   ˆ  s   z(write_toplevel_names.<locals>.<listcomp>ztop-level namesr½   )rN   ÚfromkeysrR   Ziter_distribution_namesrd   r\   rË   )rÁ   rÂ   rO   Zpkgsr0   r0   r1   Úwrite_toplevel_names…  s    rÕ   c             C   s   t | ||dƒ d S )NT)Ú	write_arg)rÁ   rÂ   rO   r0   r0   r1   Úoverwrite_arg�  s    r×   Fc             C   sH   t jj|ƒd }t| j|d ƒ}|d k	r4dj|ƒd }| j||||ƒ d S )Nr   r½   )r!   r"   ÚsplitextrÀ   rR   r\   rk   )rÁ   rÂ   rO   rj   ZargnamerJ   r0   r0   r1   rÖ   “  s
    rÖ   c             C   s¨   | j j}t|tjƒs|d kr"|}nr|d k	r”g }xZt|jƒ ƒD ]J\}}t|tjƒsttj||ƒ}dj	tt
t|jƒ ƒƒƒ}|jd||f ƒ q<W dj	|ƒ}| jd||dƒ d S )Nr½   z	[%s]
%s

r   zentry pointsT)rR   Zentry_pointsrT   r   Zstring_typesrË   Úitemsr   Zparse_groupr\   r   ÚstrÚvaluesr§   rk   )rÁ   rÂ   rO   ry   ri   Zsectionr¾   r0   r0   r1   Úwrite_entries›  s    
rÜ   c              C   s^   t jdtƒ tjjdƒrZtjdƒ�2} x*| D ]"}tj	d|ƒ}|r*t
|jdƒƒS q*W W dQ R X 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   )Úwarningsrf   ÚDeprecationWarningr!   r"   re   rÐ   rp   r$   r¡   ÚintÚgroup)rs   r’   r¡   r0   r0   r1   Úget_pkg_info_revision¬  s    
rá   )F):Ú__doc__Zdistutils.filelistr   Z	_FileListZdistutils.errorsr   Zdistutils.utilr   rX   r   r!   r$   r®   rÐ   rÝ   r}   rK   Zsetuptools.externr   Zsetuptools.extern.six.movesr   Z
setuptoolsr   Zsetuptools.command.sdistr	   r
   Zsetuptools.command.setoptr   Zsetuptools.commandr   Zpkg_resourcesr   r   r   r   r   r   r   r   Zsetuptools.unicode_utilsr«   Zsetuptools.globr   r   r2   r3   r~   rd   r¿   rÃ   rÈ   rÏ   rÑ   rÕ   r×   rÖ   rÜ   rá   r0   r0   r0   r1   Ú<module>   sR   (
S B EI

