3
[/                 @   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 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Zd!d" Zejd#Zd$d% Zd&d' ZdS )(    )absolute_importdivisionprint_functionN   )Infinity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   >/tmp/pip-install-65viz3iy/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
   $   s   c               @   sL   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S )_BaseVersionc             C   s
   t | jS )N)hash_key)selfr   r   r   __hash__,   s    z_BaseVersion.__hash__c             C   s   | j |dd S )Nc             S   s   | |k S )Nr   )sor   r   r   <lambda>0   s    z%_BaseVersion.__lt__.<locals>.<lambda>)_compare)r   otherr   r   r   __lt__/   s    z_BaseVersion.__lt__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r   r    r   r   r   r!   3   s    z%_BaseVersion.__le__.<locals>.<lambda>)r"   )r   r#   r   r   r   __le__2   s    z_BaseVersion.__le__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r   r    r   r   r   r!   6   s    z%_BaseVersion.__eq__.<locals>.<lambda>)r"   )r   r#   r   r   r   __eq__5   s    z_BaseVersion.__eq__c             C   s   | j |dd S )Nc             S   s   | |kS )Nr   )r   r    r   r   r   r!   9   s    z%_BaseVersion.__ge__.<locals>.<lambda>)r"   )r   r#   r   r   r   __ge__8   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__;   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"   A   s    
z_BaseVersion._compareN)r   r   r   r   r$   r%   r&   r'   r(   r)   r"   r   r   r   r   r   *   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__J   s    
zLegacyVersion.__init__c             C   s   | j S )N)r.   )r   r   r   r   __str__N   s    zLegacyVersion.__str__c             C   s   dj tt| S )Nz<LegacyVersion({0})>)formatreprr-   )r   r   r   r   __repr__Q   s    zLegacyVersion.__repr__c             C   s   | j S )N)r.   )r   r   r   r   publicT   s    zLegacyVersion.publicc             C   s   | j S )N)r.   )r   r   r   r   base_versionX   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   d   s    zLegacyVersion.prec             C   s   d S )Nr   )r   r   r   r   r   h   s    zLegacyVersion.postc             C   s   d S )Nr   )r   r   r   r   r   l   s    zLegacyVersion.devc             C   s   d S )Nr   )r   r   r   r   r   p   s    zLegacyVersion.localc             C   s   dS )NFr   )r   r   r   r   is_prereleaset   s    zLegacyVersion.is_prereleasec             C   s   dS )NFr   )r   r   r   r   is_postreleasex   s    zLegacyVersion.is_postreleasec             C   s   dS )NFr   )r   r   r   r   is_devrelease|   s    zLegacyVersion.is_devreleaseN)r   r   r   r0   r1   r4   propertyr5   r6   r   r   r   r   r   r   r8   r9   r:   r   r   r   r   r	   H   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    rK   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   rD   z*finalz*final-00000000r7   r7   r7   )rK   lower
startswithpopappendtuple)r   r   partsrJ   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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   rA   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   )r   r   r   r   r   r   )_regexsearchr
   r2   r   grouprS   rQ   rF   _parse_letter_version_parse_local_versionr.   _cmpkeyr   r   r   r   r   r   r   )r   r   matchr   r   r   r0      s.    

zVersion.__init__c             C   s   dj tt| S )Nz<Version({0})>)r2   r3   r-   )r   r   r   r   r4     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}!rA   c             s   s   | ]}t |V  qd S )N)r-   )rT   xr   r   r   rV     s    z"Version.__str__.<locals>.<genexpr> c             s   s   | ]}t |V  qd S )N)r-   )rT   re   r   r   r   rV     s    z.post{0}z.dev{0}z+{0})	r   rP   r2   joinr   r   r   r   r   )r   rR   r   r   r   r1     s    




zVersion.__str__c             C   s   | j jS )N)r.   r   )r   r   r   r   r   !  s    zVersion.epochc             C   s   | j jS )N)r.   r   )r   r   r   r   r   %  s    zVersion.releasec             C   s   | j jS )N)r.   r   )r   r   r   r   r   )  s    zVersion.prec             C   s   | j jr| j jd S d S )Nr   )r.   r   )r   r   r   r   r   -  s    zVersion.postc             C   s   | j jr| j jd S d S )Nr   )r.   r   )r   r   r   r   r   1  s    zVersion.devc             C   s(   | j jr djdd | j jD S d S d S )NrA   c             s   s   | ]}t |V  qd S )N)r-   )rT   re   r   r   r   rV   8  s    z Version.local.<locals>.<genexpr>)r.   r   rg   )r   r   r   r   r   5  s    zVersion.localc             C   s   t | jddd S )N+r   r   )r-   rF   )r   r   r   r   r5   <  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}!rA   c             s   s   | ]}t |V  qd S )N)r-   )rT   re   r   r   r   rV   I  s    z'Version.base_version.<locals>.<genexpr>rf   )r   rP   r2   rg   r   )r   rR   r   r   r   r6   @  s
    
zVersion.base_versionc             C   s   | j d k	p| jd k	S )N)r   r   )r   r   r   r   r8   M  s    zVersion.is_prereleasec             C   s
   | j d k	S )N)r   )r   r   r   r   r9   Q  s    zVersion.is_postreleasec             C   s
   | j d k	S )N)r   )r   r   r   r   r:   U  s    zVersion.is_devreleaseN)r   r   r   recompiler   VERBOSE
IGNORECASEr^   r0   r4   r1   r;   r   r   r   r   r   r   r5   r6   r8   r9   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br<   r   r>   r@   revrr   )r<   r   r>   )rq   rr   )rM   rS   )letternumberr   r   r   ra   Z  s     
ra   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)isdigitrM   rS   )rT   rJ   r   r   r   rV     s   z'_parse_local_version.<locals>.<genexpr>)rQ   _local_version_separatorsrF   )r   r   r   r   rb   |  s    rb   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}|d krZt }|d krft}|d krvt }nt dd |D }| |||||fS )Nc             S   s   | dkS )Nr   r   )re   r   r   r   r!     s    z_cmpkey.<locals>.<lambda>c             s   s*   | ]"}t |tr|d fnt |fV  qdS )rf   N)r*   rS   r   )rT   rU   r   r   r   rV     s   z_cmpkey.<locals>.<genexpr>)rQ   reversedlist	itertools	dropwhiler   )r   r   r   r   r   r   r   r   r   rc     s&    		
rc   )
__future__r   r   r   collectionsry   ri   _structuresr   __all__
namedtupler   r   
ValueErrorr
   objectr   r	   rj   rk   rE   rG   rK   r/   r   r   ra   rv   rb   rc   r   r   r   r   <module>   s0   9
: 
