3

gx<              	   @   s  d dl mZmZmZ d dlZd dlZd dlZddlmZm	Z	 ddl
mZ er.d dlmZmZmZmZmZmZmZ ddlmZm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d	d
dddgZ ej!dddddddgZ"dd	 Z#G dd de$Z%G dd de&Z'G dd de'Z(ej)dej*Z+ddddddZ,dd  Z-d!d" Z.d#Z/G d$d
 d
e'Z0d%d& Z1ej)d'Z2d(d) Z3d*d+ Z4dS ),    )absolute_importdivisionprint_functionN   )InfinityNegativeInfinity)MYPY_CHECK_RUNNING)CallableIteratorListOptionalSupportsIntTupleUnion)InfinityTypeNegativeInfinityType.parseVersionLegacyVersionInvalidVersionVERSION_PATTERN_Versionepochreleasedevprepostlocalc             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   )version r   A/tmp/pip-unpacked-wheel-v59g9nu1/pip/_vendor/packaging/version.pyr   0   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   =   s   c               @   sP   e Zd 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S )_BaseVersionNc             C   s
   t | jS )N)hash_key)selfr   r   r    __hash__F   s    z_BaseVersion.__hash__c             C   s   | j |dd S )Nc             S   s   | |k S )Nr   )sor   r   r    <lambda>L   s    z%_BaseVersion.__lt__.<locals>.<lambda>)_compare)r(   otherr   r   r    __lt__J   s    z_BaseVersion.__lt__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r*   r+   r   r   r    r,   P   s    z%_BaseVersion.__le__.<locals>.<lambda>)r-   )r(   r.   r   r   r    __le__N   s    z_BaseVersion.__le__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r*   r+   r   r   r    r,   T   s    z%_BaseVersion.__eq__.<locals>.<lambda>)r-   )r(   r.   r   r   r    __eq__R   s    z_BaseVersion.__eq__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r*   r+   r   r   r    r,   X   s    z%_BaseVersion.__ge__.<locals>.<lambda>)r-   )r(   r.   r   r   r    __ge__V   s    z_BaseVersion.__ge__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r*   r+   r   r   r    r,   \   s    z%_BaseVersion.__gt__.<locals>.<lambda>)r-   )r(   r.   r   r   r    __gt__Z   s    z_BaseVersion.__gt__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r*   r+   r   r   r    r,   `   s    z%_BaseVersion.__ne__.<locals>.<lambda>)r-   )r(   r.   r   r   r    __ne__^   s    z_BaseVersion.__ne__c             C   s   t |tstS || j|jS )N)
isinstancer%   NotImplementedr'   )r(   r.   methodr   r   r    r-   b   s    
z_BaseVersion._compare)r!   r"   r#   r'   r)   r/   r0   r1   r2   r3   r4   r-   r   r   r   r    r%   C   s   r%   c               @   s   e Zd Zdd Zdd Zdd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd Zedd Zedd ZdS )r   c             C   s   t || _t| j| _d S )N)str_version_legacy_cmpkeyr'   )r(   r   r   r   r    __init__k   s    
zLegacyVersion.__init__c             C   s   | j S )N)r9   )r(   r   r   r    __str__p   s    zLegacyVersion.__str__c             C   s   dj tt| S )Nz<LegacyVersion({0})>)formatreprr8   )r(   r   r   r    __repr__t   s    zLegacyVersion.__repr__c             C   s   | j S )N)r9   )r(   r   r   r    publicx   s    zLegacyVersion.publicc             C   s   | j S )N)r9   )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_devreleaseN)r!   r"   r#   r;   r<   r?   propertyr@   rA   r   r   r   r   r   r   rC   rD   rE   r   r   r   r    r   j   s   z(\d+ | [a-z]+ | \.| -)czfinal-@)r   preview-rcr   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)r*   partr   r   r    _parse_version_parts   s    rV   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   rO   z*finalz*final-00000000rB   rB   rB   )rV   lower
startswithpopappendtuple)r   r   partsrU   r   r   r    r:      s    
r:   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               @   s   e Zd Zejde d ejejB Zdd Z	dd Z
dd Zed	d
 Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd  Zed!d" Zed#d$ Zd%S )&r   z^\s*z\s*$c          	   C   s   | j j|}|stdj|t|jdr8t|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: '{0}'r   r   c             s   s   | ]}t |V  qd S )N)int).0ir   r   r    	<genexpr>  s    z#Version.__init__.<locals>.<genexpr>r   rL   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   )r   r   r   r   r   r   )_regexsearchr   r=   r   groupr^   r\   rQ   _parse_letter_version_parse_local_versionr9   _cmpkeyr   r   r   r   r   r   r'   )r(   r   matchr   r   r    r;     s$    zVersion.__init__c             C   s   dj tt| S )Nz<Version({0})>)r=   r>   r8   )r(   r   r   r    r?   -  s    zVersion.__repr__c             C   s   g }| j dkr |jdj| j  |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 | jd k	r|jd	j| j | jd k	r|jd
j| j dj|S )Nr   z{0}!rL   c             s   s   | ]}t |V  qd S )N)r8   )r_   xr   r   r    ra   :  s    z"Version.__str__.<locals>.<genexpr> c             s   s   | ]}t |V  qd S )N)r8   )r_   rp   r   r   r    ra   >  s    z.post{0}z.dev{0}z+{0})	r   r[   r=   joinr   r   r   r   r   )r(   r]   r   r   r    r<   1  s    




zVersion.__str__c             C   s   | j j}|S )N)r9   r   )r(   _epochr   r   r    r   N  s    zVersion.epochc             C   s   | j j}|S )N)r9   r   )r(   _releaser   r   r    r   T  s    zVersion.releasec             C   s   | j j}|S )N)r9   r   )r(   _prer   r   r    r   Z  s    zVersion.prec             C   s   | j jr| j jd S d S )Nr   )r9   r   )r(   r   r   r    r   `  s    zVersion.postc             C   s   | j jr| j jd S d S )Nr   )r9   r   )r(   r   r   r    r   e  s    zVersion.devc             C   s(   | j jr djdd | j jD S d S d S )NrL   c             s   s   | ]}t |V  qd S )N)r8   )r_   rp   r   r   r    ra   n  s    z Version.local.<locals>.<genexpr>)r9   r   rr   )r(   r   r   r    r   j  s    zVersion.localc             C   s   t | jddd S )N+r   r   )r8   rQ   )r(   r   r   r    r@   r  s    zVersion.publicc             C   sF   g }| j dkr |jdj| j  |jdjdd | jD  dj|S )Nr   z{0}!rL   c             s   s   | ]}t |V  qd S )N)r8   )r_   rp   r   r   r    ra     s    z'Version.base_version.<locals>.<genexpr>rq   )r   r[   r=   rr   r   )r(   r]   r   r   r    rA   w  s
    
zVersion.base_versionc             C   s   | j d k	p| jd k	S )N)r   r   )r(   r   r   r    rC     s    zVersion.is_prereleasec             C   s
   | j d k	S )N)r   )r(   r   r   r    rD     s    zVersion.is_postreleasec             C   s
   | j d k	S )N)r   )r(   r   r   r    rE     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   )rw   r   )r(   r   r   r    minor  s    zVersion.minorc             C   s   t | jdkr| jd S dS )N   ry   r   )rw   r   )r(   r   r   r    micro  s    zVersion.microN)r!   r"   r#   recompiler   VERBOSE
IGNORECASEri   r;   r?   r<   rF   r   r   r   r   r   r   r@   rA   rC   rD   rE   rx   rz   r|   r   r   r   r    r     s$   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brG   r   rI   rK   revrr   )rG   r   rI   )r   r   )rX   r^   )letternumberr   r   r    rl     s"    
rl   z[\._-]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)isdigitrX   r^   )r_   rU   r   r   r    ra     s   z'_parse_local_version.<locals>.<genexpr>)r\   _local_version_separatorsrQ   )r   r   r   r    rm     s
    rm   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rt}
nt dd |D }
| ||||	|
fS )Nc             S   s   | dkS )Nr   r   )rp   r   r   r    r,     s    z_cmpkey.<locals>.<lambda>c             s   s(   | ] }t |tr|d fnt|fV  qdS )rq   N)r5   r^   r   )r_   r`   r   r   r    ra     s    z_cmpkey.<locals>.<genexpr>)r\   reversedlist	itertools	dropwhiler   r   )r   r   r   r   r   r   rt   ru   _post_dev_localr   r   r    rn     s$    	rn   )5
__future__r   r   r   collectionsr   r}   _structuresr   r   _typingr   typingr	   r
   r   r   r   r   r   r   r   ZInfiniteTypesr8   r^   ZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtupler   r   
ValueErrorr   objectr%   r   r~   r   rP   rR   rV   r:   r   r   rl   r   rm   rn   r   r   r   r    <module>   s\   $
'F; &
