o
    g6                     @   s   d Z ddlZddlZddlZg dZG dd dZe ZG dd dZe Zedg d	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 )%zUtility 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                   @   T   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      dS )Nr    selfr
   r
   N/var/www/html/api-tag/env/lib/python3.10/site-packages/numpy/_utils/_pep440.py__repr__.      zInfinity.__repr__c                 C      t t| S Nhashreprr   r
   r
   r   __hash__1      zInfinity.__hash__c                 C   r	   NFr
   r   otherr
   r
   r   __lt__4   r   zInfinity.__lt__c                 C   r	   r   r
   r   r
   r
   r   __le__7   r   zInfinity.__le__c                 C      t || jS r   
isinstance	__class__r   r
   r
   r   __eq__:   r   zInfinity.__eq__c                 C      t || j S r   r   r   r
   r
   r   __ne__=      zInfinity.__ne__c                 C   r	   NTr
   r   r
   r
   r   __gt__@   r   zInfinity.__gt__c                 C   r	   r$   r
   r   r
   r
   r   __ge__C   r   zInfinity.__ge__c                 C      t S r   )NegativeInfinityr   r
   r
   r   __neg__F   r   zInfinity.__neg__N__name__
__module____qualname__r   r   r   r   r    r"   r%   r&   r)   r
   r
   r
   r   r   -       r   c                   @   r   )r(   c                 C   r	   )Nz	-Infinityr
   r   r
   r
   r   r   N   r   zNegativeInfinity.__repr__c                 C   r   r   r   r   r
   r
   r   r   Q   r   zNegativeInfinity.__hash__c                 C   r	   r$   r
   r   r
   r
   r   r   T   r   zNegativeInfinity.__lt__c                 C   r	   r$   r
   r   r
   r
   r   r   W   r   zNegativeInfinity.__le__c                 C   r   r   r   r   r
   r
   r   r    Z   r   zNegativeInfinity.__eq__c                 C   r!   r   r   r   r
   r
   r   r"   ]   r#   zNegativeInfinity.__ne__c                 C   r	   r   r
   r   r
   r
   r   r%   `   r   zNegativeInfinity.__gt__c                 C   r	   r   r
   r   r
   r
   r   r&   c   r   zNegativeInfinity.__ge__c                 C   r'   r   )r   r   r
   r
   r   r)   f   r   zNegativeInfinity.__neg__Nr*   r
   r
   r
   r   r(   M   r.   r(   _Version)epochreleasedevprepostlocalc                 C   s&   zt | W S  ty   t|  Y S w )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.
    )r   r   r   )versionr
   r
   r   r   u   s
   
r   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    r   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      |  |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         z_BaseVersion.__lt__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>      r?   z%_BaseVersion.__le__.<locals>.<lambda>r@   r   r
   r
   r   r      rB   z_BaseVersion.__le__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>      r?   z%_BaseVersion.__eq__.<locals>.<lambda>r@   r   r
   r
   r   r       rB   z_BaseVersion.__eq__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>      r?   z%_BaseVersion.__ge__.<locals>.<lambda>r@   r   r
   r
   r   r&      rB   z_BaseVersion.__ge__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>      r?   z%_BaseVersion.__gt__.<locals>.<lambda>r@   r   r
   r
   r   r%      rB   z_BaseVersion.__gt__c                 C   r:   )Nc                 S   s   | |kS r   r
   r;   r
   r
   r   r>      r?   z%_BaseVersion.__ne__.<locals>.<lambda>r@   r   r
   r
   r   r"      rB   z_BaseVersion.__ne__c                 C   s   t |tstS || j|jS r   )r   r8   NotImplementedr9   )r   r   methodr
   r
   r   rA      s   
z_BaseVersion._compareN)r+   r,   r-   r   r   r   r    r&   r%   r"   rA   r
   r
   r
   r   r8      s    r8   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_cmpkeyr9   )r   r6   r
   r
   r   __init__   s   
zLegacyVersion.__init__c                 C      | j S r   rF   r   r
   r
   r   __str__   s   zLegacyVersion.__str__c                 C      d tt| S )Nz<LegacyVersion({0})>formatr   rE   r   r
   r
   r   r         zLegacyVersion.__repr__c                 C   rI   r   rJ   r   r
   r
   r   public      zLegacyVersion.publicc                 C   rI   r   rJ   r   r
   r
   r   base_version   rQ   zLegacyVersion.base_versionc                 C   s   d S r   r
   r   r
   r
   r   r5         zLegacyVersion.localc                 C   r	   r   r
   r   r
   r
   r   is_prerelease   rS   zLegacyVersion.is_prereleasec                 C   r	   r   r
   r   r
   r
   r   is_postrelease   rS   zLegacyVersion.is_postreleaseN)r+   r,   r-   rH   rK   r   propertyrP   rR   r5   rT   rU   r
   r
   r
   r   r      s    



r   z(\d+ | [a-z]+ | \.| -)czfinal-@)r3   preview-rcr2   c                 c   s^    t | D ]#}t||}|r|dkrq|d d dv r$|dV  qd| V  qdV  d S )N.   
0123456789   **final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r<   partr
   r
   r   _parse_version_parts   s   
rh   c                 C   s   d}g }t |  D ]8}|dr=|dk r)|r)|d dkr)|  |r)|d dks|r=|d dkr=|  |r=|d dks1|| q
t|}||fS )Nr`   ra   z*final-00000000)rh   lower
startswithpopappendtuple)r6   r0   partsrg   r
   r
   r   rG      s   
rG   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rt|dndtdd |ddD t	|d|d	t	|d
|dpC|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}'r0   r   c                 s       | ]}t |V  qd S r   )int.0ir
   r
   r   	<genexpr>-      z#Version.__init__.<locals>.<genexpr>r1   r\   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr5   r0   r1   r3   r4   r2   r5   )_regexsearchr   rN   r/   grouprr   ro   rc   _parse_letter_version_parse_local_versionrF   _cmpkeyr0   r1   r3   r4   r2   r5   r9   )r   r6   matchr
   r
   r   rH   $  s8   
zVersion.__init__c                 C   rL   )Nz<Version({0})>rM   r   r
   r
   r   r   G  rO   zVersion.__repr__c                 C   s   g }| j jdkr|d| j j |ddd | j jD  | j jd ur6|ddd | j jD  | j jd urH|d| j jd	  | j jd urZ|d
| j jd	  | j j	d urr|dddd | j j	D  d|S )Nr   {0}!r\   c                 s   rq   r   rE   rt   xr
   r
   r   rv   R  rw   z"Version.__str__.<locals>.<genexpr> c                 s   rq   r   r   r   r
   r
   r   rv   V  rw   z.post{0}r]   z.dev{0}z+{0}c                 s   rq   r   r   r   r
   r
   r   rv   c  rw   )
rF   r0   rn   rN   joinr1   r3   r4   r2   r5   r   rp   r
   r
   r   rK   J  s   
zVersion.__str__c                 C   s   t | ddd S )N+r]   r   rE   rc   r   r
   r
   r   rP   h     zVersion.publicc                 C   sL   g }| j jdkr|d| j j |ddd | j jD  d|S )Nr   r   r\   c                 s   rq   r   r   r   r
   r
   r   rv   u  rw   z'Version.base_version.<locals>.<genexpr>r   )rF   r0   rn   rN   r   r1   r   r
   r
   r   rR   l  s
   
zVersion.base_versionc                 C   s$   t | }d|v r|ddd S d S )Nr   r]   r   )r   version_stringr
   r
   r   r5   y  s   zVersion.localc                 C   s   t | jjp| jjS r   )boolrF   r2   r3   r   r
   r
   r   rT     r   zVersion.is_prereleasec                 C   s   t | jjS r   )r   rF   r4   r   r
   r
   r   rU     s   zVersion.is_postreleaseN)r+   r,   r-   recompiler   VERBOSE
IGNORECASEr   rH   r   rK   rV   rP   rR   r5   rT   rU   r
   r
   r
   r   r     s$    

#



r   c                 C   sz   | r-|d u rd}|   } | dkrd} n| dkrd} n| dv r!d} n| dv r'd	} | t|fS | s9|r;d	} | t|fS d S d S )
Nr   alphaabetab)rW   r3   rY   r[   )revrr4   )rk   rr   )letternumberr
   r
   r   r     s"   r   z[\._-]c                 C   s$   | du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   )isdigitrk   rr   )rt   rg   r
   r
   r   rv     s
    
z'_parse_local_version.<locals>.<genexpr>)ro   _local_version_seperatorsrc   )r5   r
   r
   r   r     s
   r   c                 C   s   t tttdd t|}|d u r |d u r |d ur t }n|d u r&t}|d u r-t }|d u r3t}|d u r;t }n	t dd |D }| |||||fS )Nc                 S   s   | dkS )Nr   r
   )r   r
   r
   r   r>     r?   z_cmpkey.<locals>.<lambda>c                 s   s,    | ]}t |tr|d fnt |fV  qdS )r   N)r   rr   r   rs   r
   r
   r   rv     s
    
z_cmpkey.<locals>.<genexpr>)ro   reversedlist	itertools	dropwhiler   r   r
   r
   r   r     s,   	r   )r7   collectionsr   r   __all__r   r(   
namedtupler/   r   
ValueErrorr   r8   r   r   r   rb   rd   rh   rG   r   r   r   r   r   r   r
   r
   r
   r   <module>   s<     !
 k
