a
    Sic6                     @   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                   @   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   P/var/www/html/django/DPS/env/lib/python3.9/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y$   t|  Y S 0 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    
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   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   



r   z(\d+ | [a-z]+ | \.| -)czfinal-@)r)   preview-rcr(   c                 c   s\   t | D ]F}t||}|r
|dkr(q
|d d dv 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 )NrO   rP   z*final-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>-  r4   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 url|ddd | j jD  | j jd ur|d| j jd	  | j jd ur|d
| j jd	  | j j	d ur|dddd | j j	D  d|S )Nr   {0}!rK   c                 s   s   | ]}t |V  qd S r   r9   rb   xr   r   r   rd   R  r4   z"Version.__str__.<locals>.<genexpr> c                 s   s   | ]}t |V  qd S r   ru   rv   r   r   r   rd   V  r4   z.post{0}rL   z.dev{0}z+{0}c                 s   s   | ]}t |V  qd S r   ru   rv   r   r   r   rd   c  r4   )
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   rt   rK   c                 s   s   | ]}t |V  qd S r   ru   rv   r   r   r   rd   u  r4   z'Version.base_version.<locals>.<genexpr>rx   )r:   r&   r]   r@   ry   r'   rz   r   r   r   rB   l  s
    zVersion.base_versionc                 C   s$   t | }d|v r |ddd S d S )Nr{   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
IGNORECASErm   r<   r   r>   rE   rA   rB   r+   rC   rD   r   r   r   r   r     s"   

#



r   c                 C   sv   | rZ|d u rd}|   } | dkr&d} n(| dkr4d} n| dv rBd} n| dv rNd	} | t|fS | sr|rrd	} | t|fS d S )
Nr   alphaabetab)rF   r)   rH   rJ   )revrr*   )rZ   r`   )letternumberr   r   r   rp     s     rp   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   )isdigitrZ   r`   )rb   rV   r   r   r   rd     s   z'_parse_local_version.<locals>.<genexpr>)r^   _local_version_seperatorsrR   )r+   r   r   r   rq     s    rq   c                 C   s   t tttdd t|}|d u r@|d u r@|d ur@t }n|d u rLt}|d u rZt }|d u rft}|d u rvt }nt dd |D }| |||||fS )Nc                 S   s   | dkS )Nr   r   )rw   r   r   r   r3     r4   z_cmpkey.<locals>.<lambda>c                 s   s*   | ]"}t |tr|d fnt |fV  qdS )rx   N)r   r`   r   ra   r   r   r   rd     s   z_cmpkey.<locals>.<genexpr>)r^   reversedlist	itertools	dropwhiler   rl   r   r   r   rr     s,    	rr   )r-   collectionsr   r   __all__r   r   
namedtupler%   r   
ValueErrorr   r.   r   r   r   rQ   rS   rW   r;   r   r   rp   r   rq   rr   r   r   r   r   <module>   s:    !
 k
