U
    ÉZjõ6  ã                	   @   s  d Z ddlZddlZddlZdddddgZG dd	„ d	ƒZeƒ ZG d
d„ dƒZeƒ Ze dddddddg¡Z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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 )*zÅUtility to compare pep440 compatible version strings.

The LooseVersion and StrictVersion classes that distutils provides don't
work; they don't recognize anything like alpha/beta/rc/dev versions.
é    NÚparseÚVersionÚLegacyVersionÚInvalidVersionÚVERSION_PATTERNc                   @   sT   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d„ ZdS )ÚInfinityc                 C   s   dS )Nr   © ©Úselfr   r   úW/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/numpy/compat/_pep440.pyÚ__repr__.   s    zInfinity.__repr__c                 C   s   t t| ƒƒS ©N©ÚhashÚreprr	   r   r   r   Ú__hash__1   s    zInfinity.__hash__c                 C   s   dS ©NFr   ©r
   Úotherr   r   r   Ú__lt__4   s    zInfinity.__lt__c                 C   s   dS r   r   r   r   r   r   Ú__le__7   s    zInfinity.__le__c                 C   s   t || jƒS r   ©Ú
isinstanceÚ	__class__r   r   r   r   Ú__eq__:   s    zInfinity.__eq__c                 C   s   t || jƒ S r   r   r   r   r   r   Ú__ne__=   s    zInfinity.__ne__c                 C   s   dS ©NTr   r   r   r   r   Ú__gt__@   s    zInfinity.__gt__c                 C   s   dS r   r   r   r   r   r   Ú__ge__C   s    zInfinity.__ge__c                 C   s   t S r   )ÚNegativeInfinityr	   r   r   r   Ú__neg__F   s    zInfinity.__neg__N©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r    r   r   r   r   r   -   s   r   c                   @   sT   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d„ ZdS )r   c                 C   s   dS )Nz	-Infinityr   r	   r   r   r   r   N   s    zNegativeInfinity.__repr__c                 C   s   t t| ƒƒS r   r   r	   r   r   r   r   Q   s    zNegativeInfinity.__hash__c                 C   s   dS r   r   r   r   r   r   r   T   s    zNegativeInfinity.__lt__c                 C   s   dS r   r   r   r   r   r   r   W   s    zNegativeInfinity.__le__c                 C   s   t || jƒS r   r   r   r   r   r   r   Z   s    zNegativeInfinity.__eq__c                 C   s   t || jƒ S r   r   r   r   r   r   r   ]   s    zNegativeInfinity.__ne__c                 C   s   dS r   r   r   r   r   r   r   `   s    zNegativeInfinity.__gt__c                 C   s   dS r   r   r   r   r   r   r   c   s    zNegativeInfinity.__ge__c                 C   s   t S r   )r   r	   r   r   r   r    f   s    zNegativeInfinity.__neg__Nr!   r   r   r   r   r   M   s   r   Ú_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   )Úversionr   r   r   r   u   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)r"   r#   r$   Ú__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 r   )r   Ú_keyr	   r   r   r   r   ‰   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>©Ú_comparer   r   r   r   r   Œ   s    z_BaseVersion.__lt__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r0   r   r   r   r3   �   r4   z%_BaseVersion.__le__.<locals>.<lambda>r5   r   r   r   r   r   �   s    z_BaseVersion.__le__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r0   r   r   r   r3   “   r4   z%_BaseVersion.__eq__.<locals>.<lambda>r5   r   r   r   r   r   ’   s    z_BaseVersion.__eq__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r0   r   r   r   r3   –   r4   z%_BaseVersion.__ge__.<locals>.<lambda>r5   r   r   r   r   r   •   s    z_BaseVersion.__ge__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r0   r   r   r   r3   ™   r4   z%_BaseVersion.__gt__.<locals>.<lambda>r5   r   r   r   r   r   ˜   s    z_BaseVersion.__gt__c                 C   s   |   |dd„ ¡S )Nc                 S   s   | |kS r   r   r0   r   r   r   r3   œ   r4   z%_BaseVersion.__ne__.<locals>.<lambda>r5   r   r   r   r   r   ›   s    z_BaseVersion.__ne__c                 C   s   t |tƒstS || j|jƒS r   )r   r.   ÚNotImplementedr/   )r
   r   Úmethodr   r   r   r6   ž   s    
z_BaseVersion._compareN)r"   r#   r$   r   r   r   r   r   r   r   r6   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 r   )ÚstrÚ_versionÚ_legacy_cmpkeyr/   )r
   r,   r   r   r   Ú__init__§   s    
zLegacyVersion.__init__c                 C   s   | j S r   ©r:   r	   r   r   r   Ú__str__«   s    zLegacyVersion.__str__c                 C   s   d  tt| ƒƒ¡S )Nz<LegacyVersion({0})>©Úformatr   r9   r	   r   r   r   r   ®   s    zLegacyVersion.__repr__c                 C   s   | j S r   r=   r	   r   r   r   Úpublic±   s    zLegacyVersion.publicc                 C   s   | j S r   r=   r	   r   r   r   Úbase_versionµ   s    zLegacyVersion.base_versionc                 C   s   d S r   r   r	   r   r   r   r+   ¹   s    zLegacyVersion.localc                 C   s   dS r   r   r	   r   r   r   Úis_prerelease½   s    zLegacyVersion.is_prereleasec                 C   s   dS r   r   r	   r   r   r   Úis_postreleaseÁ   s    zLegacyVersion.is_postreleaseN)r"   r#   r$   r<   r>   r   ÚpropertyrA   rB   r+   rC   rD   r   r   r   r   r   ¥   s   



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Ú.é   Ú
0123456789é   Ú*ú*final)Ú_legacy_version_component_reÚsplitÚ_legacy_version_replacement_mapÚgetÚzfill)r1   Úpartr   r   r   Ú_parse_version_partsÏ   s    rW   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 )NéÿÿÿÿrO   rP   z*final-Z00000000)rW   ÚlowerÚ
startswithÚpopÚappendÚtuple)r,   r&   ÚpartsrV   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 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  |¡}|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'   rK   Ú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]   rR   Ú_parse_letter_versionÚ_parse_local_versionr:   Ú_cmpkeyr&   r'   r)   r*   r(   r+   r/   )r
   r,   Úmatchr   r   r   r<   $  s8    þþþñúzVersion.__init__c                 C   s   d  tt| ƒƒ¡S )Nz<Version({0})>r?   r	   r   r   r   r   G  s    zVersion.__repr__c                 C   sî   g }| j jdkr$| d | j j¡¡ | d dd„ | j jD ƒ¡¡ | j jd k	rl| d dd„ | j jD ƒ¡¡ | j jd k	r�| d | j jd	 ¡¡ | j jd k	r´| d
 | j jd	 ¡¡ | j j	d k	rä| d d dd„ | j j	D ƒ¡¡¡ d |¡S )Nr   ú{0}!rK   c                 s   s   | ]}t |ƒV  qd S r   ©r9   ©ra   Úxr   r   r   rc   R  s     z"Version.__str__.<locals>.<genexpr>Ú c                 s   s   | ]}t |ƒV  qd S r   rt   ru   r   r   r   rc   V  s     z.post{0}rL   z.dev{0}z+{0}c                 s   s   | ]}t |ƒV  qd S r   rt   ru   r   r   r   rc   c  s     )
r:   r&   r\   r@   Újoinr'   r)   r*   r(   r+   ©r
   r^   r   r   r   r>   J  s    ÿzVersion.__str__c                 C   s   t | ƒ dd¡d S )Nú+rL   r   ©r9   rR   r	   r   r   r   rA   h  s    zVersion.publicc                 C   sL   g }| j jdkr$| d | j j¡¡ | d dd„ | j jD ƒ¡¡ d |¡S )Nr   rs   rK   c                 s   s   | ]}t |ƒV  qd S r   rt   ru   r   r   r   rc   u  s     z'Version.base_version.<locals>.<genexpr>rw   )r:   r&   r\   r@   rx   r'   ry   r   r   r   rB   l  s
    zVersion.base_versionc                 C   s$   t | ƒ}d|kr | dd¡d S d S )Nrz   rL   r{   )r
   Úversion_stringr   r   r   r+   y  s    zVersion.localc                 C   s   t | jjp| jjƒS r   )Úboolr:   r(   r)   r	   r   r   r   rC     s    zVersion.is_prereleasec                 C   s   t | jjƒS r   )r}   r:   r*   r	   r   r   r   rD   ƒ  s    zVersion.is_postreleaseN)r"   r#   r$   ÚreÚcompiler   ÚVERBOSEÚ
IGNORECASErl   r<   r   r>   rE   rA   rB   r+   rC   rD   r   r   r   r   r     s"   

þ#



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)rF   r)   rH   rJ   )ÚrevÚrr*   )rY   r_   )ÚletterÚnumberr   r   r   ro   ˆ  s     ro   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   )ÚisdigitrY   r_   )ra   rV   r   r   r   rc   ¯  s   ÿz'_parse_local_version.<locals>.<genexpr>)r]   Ú_local_version_seperatorsrR   )r+   r   r   r   rp   ª  s    þrp   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   )rv   r   r   r   r3   ¾  r4   z_cmpkey.<locals>.<lambda>c                 s   s*   | ]"}t |tƒr|d fnt |fV  qdS )rw   N)r   r_   r   r`   r   r   r   rc   â  s   ÿz_cmpkey.<locals>.<genexpr>)r]   ÚreversedÚlistÚ	itertoolsÚ	dropwhiler   rk   r   r   r   rq   µ  s,    þÿÿ	þrq   )r-   ÚcollectionsrŽ   r~   Ú__all__r   r   Ú
namedtupler%   r   Ú
ValueErrorr   r.   r   r   r€   rQ   rS   rW   r;   r   r   ro   r‹   rp   rq   r   r   r   r   Ú<module>   sN       ÿ þ! ÿ    ÿ k
