3
ûâdeI9  ã            	   @   s^  d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ ddlmZmZmZmZ ddddd	gZeeef Zeee
eef f Zeeeef Zeee
eee
eef e
eef f d
f f Ze
ee
ed
f eeeef Ze
ee
ed
f f Zeeeef eeef gef Ze jdddddddgƒZeed. dœdd„ZG dd„ deƒZ G dd„ dƒZ!G dd„ de!ƒZ"ej#dej$ƒZ%ddddddœZ&eee dœdd„Z'eedœd d!„Z(d"Z)G d#d„ de!ƒZ*eeee+e	f ee
eef  d$œd%d&„Z,ej#d'ƒZ-eee d(œd)d*„Z.ee
ed
f ee
eef  ee
eef  ee
eef  ee
e  ed+œd,d-„Z/dS )/é    N)ÚCallableÚIteratorÚListÚOptionalÚSupportsIntÚTupleÚUnioné   )ÚInfinityÚInfinityTypeÚNegativeInfinityÚNegativeInfinityTypeÚparseÚVersionÚLegacyVersionÚInvalidVersionÚVERSION_PATTERN.Ú_VersionÚepochÚreleaseÚdevÚpreÚpostÚlocal)ÚversionÚreturnc             C   s&   yt | ƒS  tk
r    t| ƒS X dS )zÑ
    Parse the given version string and return either a :class:`Version` object
    or a :class:`LegacyVersion` object depending on if the given version is
    a valid PEP 440 version or a legacy version.
    N)r   r   r   )r   © r   ú</tmp/pip-build-red6nood/pip/pip/_vendor/packaging/version.pyr   *   s    c               @   s   e Zd ZdZdS )r   zF
    An invalid version was found, users should refer to PEP 440.
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   6   s   c               @   sˆ   e Zd ZU eeef edœdd„Zd e	dœdd„Z
d e	dœdd„Zee	dœd	d
„Zd e	dœdd„Zd e	dœdd„Zee	dœdd„ZdS )Ú_BaseVersion)r   c             C   s
   t | jƒS )N)ÚhashÚ_key)Úselfr   r   r   Ú__hash__?   s    z_BaseVersion.__hash__)Úotherr   c             C   s   t |tƒstS | j|jk S )N)Ú
isinstancer"   ÚNotImplementedr$   )r%   r'   r   r   r   Ú__lt__E   s    
z_BaseVersion.__lt__c             C   s   t |tƒstS | j|jkS )N)r(   r"   r)   r$   )r%   r'   r   r   r   Ú__le__K   s    
z_BaseVersion.__le__c             C   s   t |tƒstS | j|jkS )N)r(   r"   r)   r$   )r%   r'   r   r   r   Ú__eq__Q   s    
z_BaseVersion.__eq__c             C   s   t |tƒstS | j|jkS )N)r(   r"   r)   r$   )r%   r'   r   r   r   Ú__ge__W   s    
z_BaseVersion.__ge__c             C   s   t |tƒstS | j|jkS )N)r(   r"   r)   r$   )r%   r'   r   r   r   Ú__gt__]   s    
z_BaseVersion.__gt__c             C   s   t |tƒstS | j|jkS )N)r(   r"   r)   r$   )r%   r'   r   r   r   Ú__ne__c   s    
z_BaseVersion.__ne__N)r   r   r    r   ÚCmpKeyÚLegacyCmpKeyr$   Úintr&   Úboolr*   r+   Úobjectr,   r-   r.   r/   r   r   r   r   r"   <   s   
r"   c               @   sþ   e Zd Zeddœdd„Zedœdd„Zedœdd	„Zeedœd
d„ƒZeedœdd„ƒZ	ee
dœdd„ƒZeddœdd„ƒZeddœdd„ƒZeddœdd„ƒZeddœdd„ƒZeddœdd„ƒZeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZdS ) r   N)r   r   c             C   s&   t |ƒ| _t| jƒ| _tjdtƒ d S )NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)ÚstrÚ_versionÚ_legacy_cmpkeyr$   ÚwarningsÚwarnÚDeprecationWarning)r%   r   r   r   r   Ú__init__k   s
    
zLegacyVersion.__init__)r   c             C   s   | j S )N)r6   )r%   r   r   r   Ú__str__u   s    zLegacyVersion.__str__c             C   s   d| › d�S )Nz<LegacyVersion('z')>r   )r%   r   r   r   Ú__repr__x   s    zLegacyVersion.__repr__c             C   s   | j S )N)r6   )r%   r   r   r   Úpublic{   s    zLegacyVersion.publicc             C   s   | j S )N)r6   )r%   r   r   r   Úbase_version   s    zLegacyVersion.base_versionc             C   s   dS )Nr	   éÿÿÿÿr   )r%   r   r   r   r   ƒ   s    zLegacyVersion.epochc             C   s   d S )Nr   )r%   r   r   r   r   ‡   s    zLegacyVersion.releasec             C   s   d S )Nr   )r%   r   r   r   r   ‹   s    zLegacyVersion.prec             C   s   d S )Nr   )r%   r   r   r   r   �   s    zLegacyVersion.postc             C   s   d S )Nr   )r%   r   r   r   r   “   s    zLegacyVersion.devc             C   s   d S )Nr   )r%   r   r   r   r   —   s    zLegacyVersion.localc             C   s   dS )NFr   )r%   r   r   r   Úis_prerelease›   s    zLegacyVersion.is_prereleasec             C   s   dS )NFr   )r%   r   r   r   Úis_postreleaseŸ   s    zLegacyVersion.is_postreleasec             C   s   dS )NFr   )r%   r   r   r   Úis_devrelease£   s    zLegacyVersion.is_devrelease)r   r   r    r5   r;   r<   r=   Úpropertyr>   r?   r2   r   r   r   r   r   r   r3   rA   rB   rC   r   r   r   r   r   j   s2   
z(\d+ | [a-z]+ | \.| -)Úczfinal-ú@)r   Úpreviewú-Úrcr   )Úsr   c             c   sb   xVt j| ƒD ]H}tj||ƒ}| s|dkr,q|d d… dkrJ|jdƒV  qd| V  qW dV  d S )NÚ.r	   Ú
0123456789é   Ú*z*final)Ú_legacy_version_component_reÚsplitÚ_legacy_version_replacement_mapÚgetÚzfill)rJ   Úpartr   r   r   Ú_parse_version_parts³   s    rU   c             C   s‚   d}g }xlt | jƒ ƒD ]\}|jdƒrh|dk rJx|rH|d dkrH|jƒ  q.W x|rf|d dkrf|jƒ  qLW |j|ƒ qW |t|ƒfS )	Nr	   rN   z*finalz*final-Ú00000000r@   r@   r@   )rU   ÚlowerÚ
startswithÚpopÚappendÚtuple)r   r   ÚpartsrT   r   r   r   r7   Ä   s    
r7   a—  
    v?
    (?:
        (?:(?P<epoch>[0-9]+)!)?                           # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
        (?P<pre>                                          # pre-release
            [-_\.]?
            (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?P<pre_n>[0-9]+)?
        )?
        (?P<post>                                         # post release
            (?:-(?P<post_n1>[0-9]+))
            |
            (?:
                [-_\.]?
                (?P<post_l>post|rev|r)
                [-_\.]?
                (?P<post_n2>[0-9]+)?
            )
        )?
        (?P<dev>                                          # dev release
            [-_\.]?
            (?P<dev_l>dev)
            [-_\.]?
            (?P<dev_n>[0-9]+)?
        )?
    )
    (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
c               @   sp  e Zd Zejde d ejejB ƒZe	ddœdd„Z
e	dœdd	„Ze	dœd
d„Zeedœdd„ƒZeeedf dœdd„ƒZeeee	ef  dœdd„ƒZeee dœdd„ƒZeee dœdd„ƒZeee	 dœdd„ƒZee	dœdd„ƒZee	dœdd„ƒZeedœdd„ƒZeedœdd „ƒZeedœd!d"„ƒZeedœd#d$„ƒZeedœd%d&„ƒZeedœd'd(„ƒZdS ))r   z^\s*z\s*$N)r   r   c          	   C   sâ   | j j|ƒ}|s td|› d�ƒ‚t|jdƒr:t|jdƒƒndtdd„ |jdƒjdƒD ƒƒt|jd	ƒ|jd
ƒƒt|jdƒ|jdƒpˆ|jdƒƒt|jdƒ|jdƒƒt	|jdƒƒd�| _
t| j
j| j
j| j
j| j
j| j
j| j
jƒ| _d S )NzInvalid version: 'ú'r   r   c             s   s   | ]}t |ƒV  qd S )N)r2   )Ú.0Úir   r   r   ú	<genexpr>  s    z#Version.__init__.<locals>.<genexpr>r   rK   Úpre_lÚpre_nÚpost_lÚpost_n1Úpost_n2Údev_lÚdev_nr   )r   r   r   r   r   r   )Ú_regexÚsearchr   r   Úgroupr2   r[   rP   Ú_parse_letter_versionÚ_parse_local_versionr6   Ú_cmpkeyr   r   r   r   r   r   r$   )r%   r   Úmatchr   r   r   r;     s$    zVersion.__init__)r   c             C   s   d| › d�S )Nz
<Version('z')>r   )r%   r   r   r   r=   "  s    zVersion.__repr__c             C   sÀ   g }| j dkr |j| j › d�ƒ |jdjdd„ | jD ƒƒƒ | jd k	rb|jdjdd„ | jD ƒƒƒ | jd k	r~|jd| j› �ƒ | jd k	rš|jd	| j› �ƒ | jd k	r¶|jd
| j› �ƒ dj|ƒS )Nr   ú!rK   c             s   s   | ]}t |ƒV  qd S )N)r5   )r^   Úxr   r   r   r`   -  s    z"Version.__str__.<locals>.<genexpr>Ú c             s   s   | ]}t |ƒV  qd S )N)r5   )r^   rp   r   r   r   r`   1  s    z.postz.devú+)r   rZ   Újoinr   r   r   r   r   )r%   r\   r   r   r   r<   %  s    




zVersion.__str__c             C   s   | j j}|S )N)r6   r   )r%   Z_epochr   r   r   r   A  s    zVersion.epoch.c             C   s   | j j}|S )N)r6   r   )r%   Ú_releaser   r   r   r   F  s    zVersion.releasec             C   s   | j j}|S )N)r6   r   )r%   Ú_prer   r   r   r   K  s    zVersion.prec             C   s   | j jr| j jd S d S )Nr	   )r6   r   )r%   r   r   r   r   P  s    zVersion.postc             C   s   | j jr| j jd S d S )Nr	   )r6   r   )r%   r   r   r   r   T  s    zVersion.devc             C   s(   | j jr djdd„ | j jD ƒƒS d S d S )NrK   c             s   s   | ]}t |ƒV  qd S )N)r5   )r^   rp   r   r   r   r`   [  s    z Version.local.<locals>.<genexpr>)r6   r   rs   )r%   r   r   r   r   X  s    zVersion.localc             C   s   t | ƒjddƒd S )Nrr   r	   r   )r5   rP   )r%   r   r   r   r>   _  s    zVersion.publicc             C   sF   g }| j dkr |j| j › d�ƒ |jdjdd„ | jD ƒƒƒ dj|ƒS )Nr   ro   rK   c             s   s   | ]}t |ƒV  qd S )N)r5   )r^   rp   r   r   r   r`   l  s    z'Version.base_version.<locals>.<genexpr>rq   )r   rZ   rs   r   )r%   r\   r   r   r   r?   c  s
    
zVersion.base_versionc             C   s   | j d k	p| jd k	S )N)r   r   )r%   r   r   r   rA   p  s    zVersion.is_prereleasec             C   s
   | j d k	S )N)r   )r%   r   r   r   rB   t  s    zVersion.is_postreleasec             C   s
   | j d k	S )N)r   )r%   r   r   r   rC   x  s    zVersion.is_devreleasec             C   s   t | jƒdkr| jd S dS )Nr	   r   )Úlenr   )r%   r   r   r   Úmajor|  s    zVersion.majorc             C   s   t | jƒdkr| jd S dS )Né   r	   r   )rv   r   )r%   r   r   r   Úminor€  s    zVersion.minorc             C   s   t | jƒdkr| jd S dS )Né   rx   r   )rv   r   )r%   r   r   r   Úmicro„  s    zVersion.micro) r   r   r    ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASErh   r5   r;   r=   r<   rD   r2   r   r   r   r   r   r   r   r   r>   r?   r3   rA   rB   rC   rw   ry   r{   r   r   r   r   r     s@   )ÚletterÚnumberr   c             C   sx   | rZ|d krd}| j ƒ } | dkr&d} n(| dkr4d} n| dkrBd	} n| dkrNd} | t|ƒfS |  rt|rtd} | t|ƒfS d S )Nr   ÚalphaÚaÚbetaÚbrE   r   rG   rI   ÚrevÚrr   )rE   r   rG   )r†   r‡   )rW   r2   )r€   r�   r   r   r   rk   ‰  s"    
rk   z[\._-])r   r   c             C   s$   | dk	r t dd„ tj| ƒD ƒƒS dS )zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc             s   s&   | ]}|j ƒ s|jƒ nt|ƒV  qd S )N)ÚisdigitrW   r2   )r^   rT   r   r   r   r`   ¶  s   z'_parse_local_version.<locals>.<genexpr>)r[   Ú_local_version_separatorsrP   )r   r   r   r   rl   °  s
    rl   )r   r   r   r   r   r   r   c             C   s¤   t tttjdd„ t|ƒƒƒƒƒ}|d kr>|d kr>|d k	r>t}n|d krLt}n|}|d kr^t}n|}|d krpt}	n|}	|d kr‚t}
nt dd„ |D ƒƒ}
| ||||	|
fS )Nc             S   s   | dkS )Nr   r   )rp   r   r   r   Ú<lambda>Ë  s    z_cmpkey.<locals>.<lambda>c             s   s(   | ] }t |tƒr|d fnt|fV  qdS )rq   N)r(   r2   r   )r^   r_   r   r   r   r`   õ  s    z_cmpkey.<locals>.<genexpr>)r[   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   r
   )r   r   r   r   r   r   rt   ru   Z_postZ_devÚ_localr   r   r   rm   ¼  s$    	rm   )r   r   )0Úcollectionsr�   r|   r8   Útypingr   r   r   r   r   r   r   Ú_structuresr
   r   r   r   Ú__all__ZInfiniteTypesr5   r2   ZPrePostDevTypeZSubLocalTypeZ	LocalTyper0   r1   r3   ZVersionComparisonMethodÚ
namedtupler   r   Ú
ValueErrorr   r"   r   r}   r~   rO   rQ   rU   r7   r   r   Úbytesrk   r‰   rl   rm   r   r   r   r   Ú<module>   sd   $
.>: 
"


