3
yYði$-  ã               @   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   úJ/tmp/pip-build-ue6tjl93/setuptools/setuptools/_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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   \   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_postreleased   s    zLegacyVersion.is_postreleaseN)r   r   r   r0   r1   r4   Úpropertyr5   r6   r   r7   r8   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_partsr   s    rI   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   rB   z*finalz*final-Ú00000000éÿÿÿÿrK   rK   )rI   ÚlowerÚ
startswithÚpopÚappendÚtuple)r   r   ÚpartsrH   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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   r?   Úpre_lÚpre_nÚpost_lÚpost_n1Úpost_n2Údev_lÚdev_nr   )r   r   r   r   r   r   )Ú_regexÚsearchr
   r2   r   ÚgrouprR   rP   rD   Ú_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 jdkr$|jdj| j jƒƒ |jdjdd„ | j jD ƒƒƒ | j jd k	rl|jdjdd„ | j jD ƒƒƒ | j jd k	r�|jdj| j jd	 ƒƒ | j jd k	r´|jd
j| j jd	 ƒƒ | j j	d k	rä|jdjdjdd„ | j j	D ƒƒƒƒ dj|ƒS )Nr   z{0}!r?   c             s   s   | ]}t |ƒV  qd S )N)r-   )rS   Úxr   r   r   rU   ô   s    z"Version.__str__.<locals>.<genexpr>Ú c             s   s   | ]}t |ƒV  qd S )N)r-   )rS   rd   r   r   r   rU   ø   s    z.post{0}r   z.dev{0}z+{0}c             s   s   | ]}t |ƒV  qd S )N)r-   )rS   rd   r   r   r   rU     s    )
r.   r   rO   r2   Újoinr   r   r   r   r   )r   rQ   r   r   r   r1   ì   s     zVersion.__str__c             C   s   t | ƒjddƒd S )Nú+r   r   )r-   rD   )r   r   r   r   r5   
  s    zVersion.publicc             C   sL   g }| j jdkr$|jdj| j jƒƒ |jdjdd„ | j jD ƒƒƒ dj|ƒS )Nr   z{0}!r?   c             s   s   | ]}t |ƒV  qd S )N)r-   )rS   rd   r   r   r   rU     s    z'Version.base_version.<locals>.<genexpr>re   )r.   r   rO   r2   rf   r   )r   rQ   r   r   r   r6     s
    zVersion.base_versionc             C   s$   t | ƒ}d|kr |jddƒd S d S )Nrg   r   )r-   rD   )r   Úversion_stringr   r   r   r     s    zVersion.localc             C   s   t | jjp| jjƒS )N)Úboolr.   r   r   )r   r   r   r   r7   !  s    zVersion.is_prereleasec             C   s   t | jjƒS )N)ri   r.   r   )r   r   r   r   r8   %  s    zVersion.is_postreleaseN)r   r   r   ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASEr]   r0   r4   r1   r9   r5   r6   r   r7   r8   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<   )rr   rs   )rL   rR   )ÚletterÚnumberr   r   r   r`   *  s     
r`   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)ÚisdigitrL   rR   )rS   rH   r   r   r   rU   R  s   z'_parse_local_version.<locals>.<genexpr>)rP   Ú_local_version_seperatorsrD   )r   r   r   r   ra   L  s    ra   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   )rd   r   r   r   r!   `  s    z_cmpkey.<locals>.<lambda>c             s   s*   | ]"}t |tƒr|d fnt |fV  qdS )re   N)r*   rR   r   )rS   rT   r   r   r   rU   …  s   z_cmpkey.<locals>.<genexpr>)rP   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   )r   r   r   r   r   r   r   r   r   rb   W  s&    		
rb   )Ú
__future__r   r   r   Úcollectionsrz   rj   Ú_structuresr   Ú__all__Ú
namedtupler   r   Ú
ValueErrorr
   Úobjectr   r	   rk   rl   rC   rE   rI   r/   r   r   r`   rw   ra   rb   r   r   r   r   Ú<module>   s.   !
9k
