U
    ªÃT_Ê.  ã                	   @   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 
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 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 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,   z
t | ƒW S  tk
r&   t| ƒ Y 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   úH/tmp/pip-unpacked-wheel-sr6cxcdi/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   |   |dd„ ¡S )Nc                 S   s   | |k S r   r   ©ÚsÚor   r   r   Ú<lambda>,   ó    z%_BaseVersion.__lt__.<locals>.<lambda>©Ú_compare©r   Úotherr   r   r   Ú__lt__+   s    z_BaseVersion.__lt__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r!   r   r   r   r$   /   r%   z%_BaseVersion.__le__.<locals>.<lambda>r&   r(   r   r   r   Ú__le__.   s    z_BaseVersion.__le__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r!   r   r   r   r$   2   r%   z%_BaseVersion.__eq__.<locals>.<lambda>r&   r(   r   r   r   Ú__eq__1   s    z_BaseVersion.__eq__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r!   r   r   r   r$   5   r%   z%_BaseVersion.__ge__.<locals>.<lambda>r&   r(   r   r   r   Ú__ge__4   s    z_BaseVersion.__ge__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r!   r   r   r   r$   8   r%   z%_BaseVersion.__gt__.<locals>.<lambda>r&   r(   r   r   r   Ú__gt__7   s    z_BaseVersion.__gt__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r!   r   r   r   r$   ;   r%   z%_BaseVersion.__ne__.<locals>.<lambda>r&   r(   r   r   r   Ú__ne__:   s    z_BaseVersion.__ne__c                 C   s   t |tƒstS || j|jƒS r   )Ú
isinstancer   ÚNotImplementedr   )r   r)   Úmethodr   r   r   r'   =   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 r   )ÚstrÚ_versionÚ_legacy_cmpkeyr   )r   r   r   r   r   Ú__init__E   s    
zLegacyVersion.__init__c                 C   s   | j S r   ©r4   r   r   r   r   Ú__str__I   s    zLegacyVersion.__str__c                 C   s   d  tt| ƒƒ¡S )Nz<LegacyVersion({0})>©ÚformatÚreprr3   r   r   r   r   Ú__repr__L   s    zLegacyVersion.__repr__c                 C   s   | j S r   r7   r   r   r   r   ÚpublicO   s    zLegacyVersion.publicc                 C   s   | j S r   r7   r   r   r   r   Úbase_versionS   s    zLegacyVersion.base_versionc                 C   s   dS )Néÿÿÿÿr   r   r   r   r   r   W   s    zLegacyVersion.epochc                 C   s   d S r   r   r   r   r   r   r   [   s    zLegacyVersion.releasec                 C   s   d S r   r   r   r   r   r   r   _   s    zLegacyVersion.prec                 C   s   d S r   r   r   r   r   r   r   c   s    zLegacyVersion.postc                 C   s   d S r   r   r   r   r   r   r   g   s    zLegacyVersion.devc                 C   s   d S r   r   r   r   r   r   r   k   s    zLegacyVersion.localc                 C   s   dS ©NFr   r   r   r   r   Úis_prereleaseo   s    zLegacyVersion.is_prereleasec                 C   s   dS r@   r   r   r   r   r   Úis_postreleases   s    zLegacyVersion.is_postreleasec                 C   s   dS r@   r   r   r   r   r   Úis_devreleasew   s    zLegacyVersion.is_devreleaseN)r   r   r   r6   r8   r<   Úpropertyr=   r>   r   r   r   r   r   r   rA   rB   rC   r   r   r   r   r	   D   s2   









z(\d+ | [a-z]+ | \.| -)Úczfinal-ú@)r   Úpreviewú-Úrcr   c                 c   s\   t  | ¡D ]F}t ||¡}|r
|dkr(q
|d d… dkrF| d¡V  q
d| V  q
dV  d S )NÚ.r   Ú
0123456789é   Ú*ú*final)Ú_legacy_version_component_reÚsplitÚ_legacy_version_replacement_mapÚgetÚzfill)r"   Úpartr   r   r   Ú_parse_version_parts‡   s    rU   c                 C   sz   d}g }t |  ¡ ƒD ]T}| d¡r^|dk rD|rD|d dkrD| ¡  q*|r^|d dkr^| ¡  qD| |¡ qt|ƒ}||fS )Nr?   rM   rN   z*final-Ú00000000)rU   ÚlowerÚ
startswithÚpopÚappendÚtuple)r   r   ÚpartsrT   r   r   r   r5   ˜   s    


r5   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 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  |¡}|std |¡ƒ‚t| d¡r8t| d¡ƒndtdd„ | d¡ d¡D ƒƒt	| d¡| d	¡ƒt	| d
¡| d¡p†| d¡ƒt	| d¡| d¡ƒt
| 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 r   )Úint©Ú.0Úir   r   r   Ú	<genexpr>â   s     z#Version.__init__.<locals>.<genexpr>r   rJ   Ú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[   rP   Ú_parse_letter_versionÚ_parse_local_versionr4   Ú_cmpkeyr   r   r   r   r   r   r   )r   r   Úmatchr   r   r   r6   Ù   s,     ÿøúzVersion.__init__c                 C   s   d  tt| ƒƒ¡S )Nz<Version({0})>r9   r   r   r   r   r<   õ   s    zVersion.__repr__c                 C   sÀ   g }| j dkr | d | j ¡¡ | d dd„ | jD ƒ¡¡ | jd k	rb| d dd„ | jD ƒ¡¡ | jd k	r~| d | j¡¡ | jd k	rš| d	 | j¡¡ | jd k	r¶| d
 | j¡¡ d |¡S )Nr   ú{0}!rJ   c                 s   s   | ]}t |ƒV  qd S r   ©r3   ©r_   Úxr   r   r   ra      s     z"Version.__str__.<locals>.<genexpr>Ú c                 s   s   | ]}t |ƒV  qd S r   rr   rs   r   r   r   ra     s     z.post{0}z.dev{0}z+{0})	r   rZ   r:   Újoinr   r   r   r   r   ©r   r\   r   r   r   r8   ø   s    




zVersion.__str__c                 C   s   | j jS r   )r4   r   r   r   r   r   r     s    zVersion.epochc                 C   s   | j jS r   )r4   r   r   r   r   r   r     s    zVersion.releasec                 C   s   | j jS r   )r4   r   r   r   r   r   r     s    zVersion.prec                 C   s   | j jr| j jd S d S ©Nr   )r4   r   r   r   r   r   r      s    zVersion.postc                 C   s   | j jr| j jd S d S rx   )r4   r   r   r   r   r   r   $  s    zVersion.devc                 C   s(   | j jr d dd„ | j jD ƒ¡S d S d S )NrJ   c                 s   s   | ]}t |ƒV  qd S r   rr   rs   r   r   r   ra   +  s     z Version.local.<locals>.<genexpr>)r4   r   rv   r   r   r   r   r   (  s    zVersion.localc                 C   s   t | ƒ dd¡d S )Nú+r   r   )r3   rP   r   r   r   r   r=   /  s    zVersion.publicc                 C   sF   g }| j dkr | d | j ¡¡ | d dd„ | jD ƒ¡¡ d |¡S )Nr   rq   rJ   c                 s   s   | ]}t |ƒV  qd S r   rr   rs   r   r   r   ra   <  s     z'Version.base_version.<locals>.<genexpr>ru   )r   rZ   r:   rv   r   rw   r   r   r   r>   3  s
    
zVersion.base_versionc                 C   s   | j d k	p| jd k	S r   )r   r   r   r   r   r   rA   @  s    zVersion.is_prereleasec                 C   s
   | j d k	S r   )r   r   r   r   r   rB   D  s    zVersion.is_postreleasec                 C   s
   | j d k	S r   )r   r   r   r   r   rC   H  s    zVersion.is_devreleaseN)r   r   r   ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASErj   r6   r<   r8   rD   r   r   r   r   r   r   r=   r>   rA   rB   rC   r   r   r   r   r   Õ   s4   









c                 C   sv   | rZ|d krd}|   ¡ } | dkr&d} n(| dkr4d} n| dkrBd} n| dkrNd	} | t|ƒfS | sr|rrd	} | t|ƒfS d S )
Nr   ÚalphaÚaÚbetaÚb)rE   r   rG   rI   )ÚrevÚrr   )rW   r]   )ÚletterÚnumberr   r   r   rm   M  s     rm   z[\._-]c                 C   s$   | dk	r t dd„ t | ¡D ƒƒS dS )zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc                 s   s&   | ]}|  ¡ s| ¡ nt|ƒV  qd S r   )ÚisdigitrW   r]   )r_   rT   r   r   r   ra   t  s   ÿz'_parse_local_version.<locals>.<genexpr>)r[   Ú_local_version_separatorsrP   )r   r   r   r   rn   o  s    þrn   c                 C   s˜   t ttt 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   )rt   r   r   r   r$   �  r%   z_cmpkey.<locals>.<lambda>c                 s   s*   | ]"}t |tƒr|d fnt |fV  qdS )ru   N)r0   r]   r   r^   r   r   r   ra   ¢  s     z_cmpkey.<locals>.<genexpr>)r[   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   ri   r   r   r   ro   z  s    ÿ	ro   )Ú
__future__r   r   r   ÚcollectionsrŠ   rz   Ú_structuresr   Ú__all__Ú
namedtupler   r   Ú
ValueErrorr
   Úobjectr   r	   r{   r|   rO   rQ   rU   r5   r   r   rm   r‡   rn   ro   r   r   r   r   Ú<module>   s8    ÿ8û	 x
