U
    Ç½„bI9  ã                	   @   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  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 #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 #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)r   r   ©ÚversionÚreturnc                 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   )r   © r   ú5/tmp/pip-unpacked-wheel-sh3cvm4r/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< 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Ú_key©r   c                 C   s
   t | jƒS ©N)Úhashr$   ©Úselfr   r   r   Ú__hash__?   s    z_BaseVersion.__hash__)Úotherr   c                 C   s   t |tƒstS | j|jk S r&   ©Ú
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 r&   r,   r/   r   r   r   Ú__le__K   s    
z_BaseVersion.__le__c                 C   s   t |tƒstS | j|jkS r&   r,   r/   r   r   r   Ú__eq__Q   s    
z_BaseVersion.__eq__c                 C   s   t |tƒstS | j|jkS r&   r,   r/   r   r   r   Ú__ge__W   s    
z_BaseVersion.__ge__c                 C   s   t |tƒstS | j|jkS r&   r,   r/   r   r   r   Ú__gt__]   s    
z_BaseVersion.__gt__c                 C   s   t |tƒstS | j|jkS r&   r,   r/   r   r   r   Ú__ne__c   s    
z_BaseVersion.__ne__N)r   r    r!   r   ÚCmpKeyÚLegacyCmpKeyÚ__annotations__Úintr*   Úboolr0   r1   Úobjectr2   r3   r4   r5   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   Nr   c                 C   s&   t |ƒ| _t| jƒ| _t 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 r&   ©r=   r(   r   r   r   Ú__str__u   s    zLegacyVersion.__str__c                 C   s   d| › d�S )Nz<LegacyVersion('ú')>r   r(   r   r   r   Ú__repr__x   s    zLegacyVersion.__repr__c                 C   s   | j S r&   rC   r(   r   r   r   Úpublic{   s    zLegacyVersion.publicc                 C   s   | j S r&   rC   r(   r   r   r   Úbase_version   s    zLegacyVersion.base_versionc                 C   s   dS )Néÿÿÿÿr   r(   r   r   r   r   ƒ   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   �   s    zLegacyVersion.postc                 C   s   d S r&   r   r(   r   r   r   r   “   s    zLegacyVersion.devc                 C   s   d S r&   r   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 rJ   r   r(   r   r   r   Úis_postreleaseŸ   s    zLegacyVersion.is_postreleasec                 C   s   dS rJ   r   r(   r   r   r   Úis_devrelease£   s    zLegacyVersion.is_devrelease)r   r    r!   r<   rB   rD   rF   ÚpropertyrG   rH   r9   r   r   r   r   r   r   r:   rK   rL   rM   r   r   r   r   r   j   s2   
z(\d+ | [a-z]+ | \.| -)Úczfinal-ú@)r   Úpreviewú-Úrcr   )Úsr   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)rT   Úpartr   r   r   Ú_parse_version_parts³   s    r`   c                 C   sv   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 )NrI   rX   rY   z*final-Ú00000000)r`   ÚlowerÚ
startswithÚpopÚappendÚtuple)r   r   Úpartsr_   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                   @   sp  e Zd Ze 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*$Nr   c              
   C   sâ   | j  |¡}|s td|› d�ƒ‚t| d¡r:t| 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: 'ú'r   r   c                 s   s   | ]}t |ƒV  qd S r&   )r9   ©Ú.0Úir   r   r   Ú	<genexpr>  s     z#Version.__init__.<locals>.<genexpr>r   rU   Úpre_lÚpre_nÚpost_lÚpost_n1Úpost_n2Údev_lÚdev_nr   )r   r   r   r   r   r   )Ú_regexÚsearchr   r   Úgroupr9   rf   r[   Ú_parse_letter_versionÚ_parse_local_versionr=   Ú_cmpkeyr   r   r   r   r   r   r$   )r)   r   Úmatchr   r   r   rB     s,     ÿøúzVersion.__init__r%   c                 C   s   d| › d�S )Nz
<Version('rE   r   r(   r   r   r   rF   "  s    zVersion.__repr__c                 C   sÀ   g }| j dkr | | j › d�¡ | 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   ú!rU   c                 s   s   | ]}t |ƒV  qd S r&   ©r<   ©rj   Úxr   r   r   rl   -  s     z"Version.__str__.<locals>.<genexpr>Ú c                 s   s   | ]}t |ƒV  qd S r&   r|   r}   r   r   r   rl   1  s     z.postz.devú+)r   re   Újoinr   r   r   r   r   ©r)   rg   r   r   r   rD   %  s    




zVersion.__str__c                 C   s   | j j}|S r&   )r=   r   )r)   Ú_epochr   r   r   r   A  s    zVersion.epoch.c                 C   s   | j j}|S r&   )r=   r   )r)   Ú_releaser   r   r   r   F  s    zVersion.releasec                 C   s   | j j}|S r&   )r=   r   )r)   Ú_prer   r   r   r   K  s    zVersion.prec                 C   s   | j jr| j jd S d S ©Nr	   )r=   r   r(   r   r   r   r   P  s    zVersion.postc                 C   s   | j jr| j jd S d S r†   )r=   r   r(   r   r   r   r   T  s    zVersion.devc                 C   s(   | j jr d dd„ | j jD ƒ¡S d S d S )NrU   c                 s   s   | ]}t |ƒV  qd S r&   r|   r}   r   r   r   rl   [  s     z Version.local.<locals>.<genexpr>)r=   r   r�   r(   r   r   r   r   X  s    zVersion.localc                 C   s   t | ƒ dd¡d S )Nr€   r	   r   )r<   r[   r(   r   r   r   rG   _  s    zVersion.publicc                 C   sF   g }| j dkr | | j › d�¡ | d dd„ | jD ƒ¡¡ d |¡S )Nr   r{   rU   c                 s   s   | ]}t |ƒV  qd S r&   r|   r}   r   r   r   rl   l  s     z'Version.base_version.<locals>.<genexpr>r   )r   re   r�   r   r‚   r   r   r   rH   c  s
    
zVersion.base_versionc                 C   s   | j d k	p| jd k	S r&   )r   r   r(   r   r   r   rK   p  s    zVersion.is_prereleasec                 C   s
   | j d k	S r&   )r   r(   r   r   r   rL   t  s    zVersion.is_postreleasec                 C   s
   | j d k	S r&   )r   r(   r   r   r   rM   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   r‡   r(   r   r   r   Úminor€  s    zVersion.minorc                 C   s   t | jƒdkr| jd S dS )Né   rŠ   r   r‡   r(   r   r   r   Úmicro„  s    zVersion.micro) r   r    r!   ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASErt   r<   rB   rF   rD   rN   r9   r   r   r   r   r   r   r   r   rG   rH   r:   rK   rL   rM   r‰   r‹   r�   r   r   r   r   r     s@   )ÚletterÚnumberr   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)rO   r   rQ   rS   )ÚrevÚrr   )rb   r9   )r’   r“   r   r   r   rw   ‰  s"    rw   z[\._-])r   r   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&   )Úisdigitrb   r9   )rj   r_   r   r   r   rl   µ  s   ÿz'_parse_local_version.<locals>.<genexpr>)rf   Ú_local_version_separatorsr[   )r   r   r   r   rx   °  s
    þrx   )r   r   r   r   r   r   r   c                 C   s¤   t ttt 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   )r~   r   r   r   Ú<lambda>Ë  ó    z_cmpkey.<locals>.<lambda>c                 s   s(   | ] }t |tƒr|d fnt|fV  qdS )r   N)r-   r9   r   ri   r   r   r   rl   ô  s    z_cmpkey.<locals>.<genexpr>)rf   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   r
   )r   r   r   r   r   r   r„   r…   Ú_postÚ_devÚ_localr   r   r   ry   ¼  s(    ÿ	ÿry   )0Úcollectionsr    rŽ   r?   Útypingr   r   r   r   r   r   r   Ú_structuresr
   r   r   r   Ú__all__ZInfiniteTypesr<   r9   ZPrePostDevTypeZSubLocalTypeZ	LocalTyper6   r7   r:   ZVersionComparisonMethodÚ
namedtupler   r   Ú
ValueErrorr   r#   r   r�   r�   rZ   r\   r`   r>   r   r   Úbytesrw   r›   rx   ry   r   r   r   r   Ú<module>   s€   $

þÿûÿÿÿÿÿ ÿ.>û	  
 þ$


ù