a
    BCCf6                     @   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   N/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/_lib/_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|  dS )Nz<LegacyVersion()>r   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| 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   )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%   groupra   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|  dS )Nz	<Version(r?   r@   r	   r   r   r   r   G  s    zVersion.__repr__c                 C   s   g }| j jdkr$|| j j d |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   !rK   c                 s   s   | ]}t |V  qd S r   r9   rc   xr   r   r   re   R  r4   z"Version.__str__.<locals>.<genexpr> c                 s   s   | ]}t |V  qd S r   rv   rw   r   r   r   re   V  r4   z.postrL   z.devz+{}c                 s   s   | ]}t |V  qd S r   rv   rw   r   r   r   re   c  r4   )
r:   r&   r]   joinr'   r)   r*   r(   r+   format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$|| j j d |ddd | j jD  d|S )Nr   ru   rK   c                 s   s   | ]}t |V  qd S r   rv   rw   r   r   r   re   u  r4   z'Version.base_version.<locals>.<genexpr>ry   )r:   r&   r]   rz   r'   r|   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
IGNORECASErn   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   ra   )letternumberr   r   r   rq     s     rq   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   ra   )rc   rV   r   r   r   re     s   z'_parse_local_version.<locals>.<genexpr>)r^   _local_version_seperatorsrR   )r+   r   r   r   rr     s    rr   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   )rx   r   r   r   r3     r4   z_cmpkey.<locals>.<lambda>c                 s   s*   | ]"}t |tr|d fnt |fV  qdS )ry   N)r   ra   r   rb   r   r   r   re     s   z_cmpkey.<locals>.<genexpr>)r^   reversedlist	itertools	dropwhiler   rm   r   r   r   rs     s,    	rs   )r-   collectionsr   r   __all__r   r   
namedtupler%   r   
ValueErrorr   r.   r   r   r   rQ   rS   rW   r;   r   r   rq   r   rr   rs   r   r   r   r   <module>   s:    !
 k
