
    ^Mh6                        d Z ddlZddlZddlZg dZ G d d          Z e            Z G d d          Z e            Z ej        dg d	          Zd
 Z	 G d de
          Z G d d          Z G d de          Z ej        dej                  ZddddddZd Zd ZdZ G d de          Zd Z ej        d          Zd Z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                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )Infinityc                     dS )Nr	    selfs    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/_lib/_pep440.py__repr__zInfinity.__repr__.   s    z    c                 :    t          t          |                     S Nhashreprr   s    r   __hash__zInfinity.__hash__1       DJJr   c                     dS NFr   r   others     r   __lt__zInfinity.__lt__4       ur   c                     dS r   r   r   s     r   __le__zInfinity.__le__7   r   r   c                 ,    t          || j                  S r   
isinstance	__class__r   s     r   __eq__zInfinity.__eq__:       %000r   c                 .    t          || j                   S r   r!   r   s     r   __ne__zInfinity.__ne__=       eT^4444r   c                     dS NTr   r   s     r   __gt__zInfinity.__gt__@       tr   c                     dS r*   r   r   s     r   __ge__zInfinity.__ge__C   r,   r   c                     t           S r   )NegativeInfinityr   s    r   __neg__zInfinity.__neg__F   s    r   N__name__
__module____qualname__r   r   r   r   r$   r'   r+   r.   r1   r   r   r   r	   r	   -   s                   1 1 15 5 5             r   r	   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )r0   c                     dS )Nz	-Infinityr   r   s    r   r   zNegativeInfinity.__repr__N   s    {r   c                 :    t          t          |                     S r   r   r   s    r   r   zNegativeInfinity.__hash__Q   r   r   c                     dS r*   r   r   s     r   r   zNegativeInfinity.__lt__T   r,   r   c                     dS r*   r   r   s     r   r   zNegativeInfinity.__le__W   r,   r   c                 ,    t          || j                  S r   r!   r   s     r   r$   zNegativeInfinity.__eq__Z   r%   r   c                 .    t          || j                   S r   r!   r   s     r   r'   zNegativeInfinity.__ne__]   r(   r   c                     dS r   r   r   s     r   r+   zNegativeInfinity.__gt__`   r   r   c                     dS r   r   r   s     r   r.   zNegativeInfinity.__ge__c   r   r   c                     t           S r   )r	   r   s    r   r1   zNegativeInfinity.__neg__f   s    r   Nr2   r   r   r   r0   r0   M   s                   1 1 15 5 5        r   r0   _Version)epochreleasedevprepostlocalc                 `    	 t          |           S # t          $ r t          |           cY S w xY 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   )versions    r   r   r   u   sD    &w & & &W%%%%%&s    --c                       e Zd ZdZdS )r   zF
    An invalid version was found, users should refer to PEP 440.
    N)r3   r4   r5   __doc__r   r   r   r   r      s           r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
_BaseVersionc                 *    t          | j                  S r   )r   _keyr   s    r   r   z_BaseVersion.__hash__   s    DIr   c                 0    |                      |d           S )Nc                     | |k     S r   r   sos     r   <lambda>z%_BaseVersion.__lt__.<locals>.<lambda>   
    Q r   _comparer   s     r   r   z_BaseVersion.__lt__       }}U$6$6777r   c                 0    |                      |d           S )Nc                     | |k    S r   r   rQ   s     r   rT   z%_BaseVersion.__le__.<locals>.<lambda>   
    a r   rV   r   s     r   r   z_BaseVersion.__le__       }}U$7$7888r   c                 0    |                      |d           S )Nc                     | |k    S r   r   rQ   s     r   rT   z%_BaseVersion.__eq__.<locals>.<lambda>   r[   r   rV   r   s     r   r$   z_BaseVersion.__eq__   r\   r   c                 0    |                      |d           S )Nc                     | |k    S r   r   rQ   s     r   rT   z%_BaseVersion.__ge__.<locals>.<lambda>   r[   r   rV   r   s     r   r.   z_BaseVersion.__ge__   r\   r   c                 0    |                      |d           S )Nc                     | |k    S r   r   rQ   s     r   rT   z%_BaseVersion.__gt__.<locals>.<lambda>   rU   r   rV   r   s     r   r+   z_BaseVersion.__gt__   rX   r   c                 0    |                      |d           S )Nc                     | |k    S r   r   rQ   s     r   rT   z%_BaseVersion.__ne__.<locals>.<lambda>   r[   r   rV   r   s     r   r'   z_BaseVersion.__ne__   r\   r   c                 f    t          |t                    st          S  || j        |j                  S r   )r"   rL   NotImplementedrN   )r   r   methods      r   rW   z_BaseVersion._compare   s0    %.. 	"!!vdi,,,r   N)r3   r4   r5   r   r   r   r$   r.   r+   r'   rW   r   r   r   rL   rL      s          8 8 89 9 99 9 99 9 98 8 89 9 9- - - - -r   rL   c                       e Zd Zd Zd Zd Zed             Zed             Zed             Z	ed             Z
ed             Zd	S )
r   c                 `    t          |          | _        t          | j                  | _        d S r   )str_version_legacy_cmpkeyrN   )r   rH   s     r   __init__zLegacyVersion.__init__   s$    G"4=11			r   c                     | j         S r   rk   r   s    r   __str__zLegacyVersion.__str__   s
    }r   c                 B    dt          t          |                      dS )Nz<LegacyVersion()>r   rj   r   s    r   r   zLegacyVersion.__repr__   s    4c$ii4444r   c                     | j         S r   ro   r   s    r   publiczLegacyVersion.public   
    }r   c                     | j         S r   ro   r   s    r   base_versionzLegacyVersion.base_version   rv   r   c                     d S r   r   r   s    r   rF   zLegacyVersion.local   s    tr   c                     dS r   r   r   s    r   is_prereleasezLegacyVersion.is_prerelease       ur   c                     dS r   r   r   s    r   is_postreleasezLegacyVersion.is_postrelease   r|   r   N)r3   r4   r5   rm   rp   r   propertyru   rx   rF   r{   r~   r   r   r   r   r      s        2 2 2  5 5 5   X   X   X   X   X  r   r   z(\d+ | [a-z]+ | \.| -)czfinal-@)rD   preview-rcrC   c              #      K   t                               |           D ]Q}t                              ||          }|r|dk    r&|d d         dv r|                    d          V  Jd|z   V  RdV  d S )N.   
0123456789   **final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rR   parts     r   _parse_version_partsr      s      ,22155 
 
.224>> 	ts{{8|##**Q--* NNNNNr   c                    d}g }t          |                                           D ]}|                    d          rf|dk     r0|r.|d         dk    r"|                                 |r|d         dk    "|r.|d         dk    r"|                                 |r|d         dk    "|                    |           t          |          }||fS )Nr   r   z*final-00000000)r   lower
startswithpopappendtuple)rH   rA   partsr   s       r   rl   rl      s    
 E E$W]]__55  ??3 	h  b	Y 6 6IIKKK   b	Y 6 6  E"I33		  E"I33 	T%LLE%<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                       e Zd Z ej        dez   dz   ej        ej        z            Zd Z	d Z
d Zed             Zed             Zed             Zed	             Zed
             ZdS )r   z^\s*z\s*$c                    | j                             |          }|st          d| d          t          |                    d          r"t          |                    d                    ndt          d |                    d                              d          D                       t          |                    d          |                    d	                    t          |                    d
          |                    d          p|                    d                    t          |                    d          |                    d                    t          |                    d                              | _
        t          | j
        j        | j
        j        | j
        j        | j
        j        | j
        j        | j
        j                  | _        d S )NzInvalid version: ''rA   r   c              3   4   K   | ]}t          |          V  d S r   )int.0is     r   	<genexpr>z#Version.__init__.<locals>.<genexpr>-  s(      LLQ#a&&LLLLLLr   rB   r   pre_lpre_npost_lpost_n1post_n2dev_ldev_nrF   rA   rB   rD   rE   rC   rF   )_regexsearchr   r@   groupr   r   r   _parse_letter_version_parse_local_versionrk   _cmpkeyrA   rB   rD   rE   rC   rF   rN   )r   rH   matchs      r   rm   zVersion.__init__$  s   ""7++ 	B !@g!@!@!@AAA !/4{{7/C/CJ#ekk'**+++LL%++i*@*@*F*Fs*K*KLLLLL%G$$G$$  'H%%I&&@%++i*@*@  &G$$G$$  'u{{7';';<<
 
 
& MM!MMMM
 
			r   c                 B    dt          t          |                      dS )Nz	<Version(rr   rs   r   s    r   r   zVersion.__repr__G  s    .4D		??....r   c                 "   g }| j         j        dk    r"|                    | j         j         d           |                    d                    d | j         j        D                                  | j         j        <|                    d                    d | j         j        D                                  | j         j        (|                    d| j         j        d                     | j         j        (|                    d	| j         j        d                     | j         j        O|                    d
	                    d                    d | j         j        D                                            d                    |          S )Nr   !r   c              3   4   K   | ]}t          |          V  d S r   rj   r   xs     r   r   z"Version.__str__.<locals>.<genexpr>R  (      DDc!ffDDDDDDr    c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r   z"Version.__str__.<locals>.<genexpr>V  s(       C CAQ C C C C C Cr   z.postr   z.devz+{}c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r   z"Version.__str__.<locals>.<genexpr>c  s(      %J%Jc!ff%J%J%J%J%J%Jr   )
rk   rA   r   joinrB   rD   rE   rC   rF   formatr   r   s     r   rp   zVersion.__str__J  st    =!##LLDM/222333 	SXXDDdm.CDDDDDEEE =(LL C C1B C C CCCDDD =)LL8!3A!688999 =(LL6 1! 466777 =*LLSXX%J%Jdm6I%J%J%JJJKK   wwu~~r   c                 T    t          |                               dd          d         S )N+r   r   rj   r   r   s    r   ru   zVersion.publich  s!    4yysA&&q))r   c                    g }| j         j        dk    r"|                    | j         j         d           |                    d                    d | j         j        D                                  d                    |          S )Nr   r   r   c              3   4   K   | ]}t          |          V  d S r   r   r   s     r   r   z'Version.base_version.<locals>.<genexpr>u  r   r   r   )rk   rA   r   r   rB   r   s     r   rx   zVersion.base_versionl  s}     =!##LLDM/222333 	SXXDDdm.CDDDDDEEEwwu~~r   c                 d    t          |           }d|v r|                    dd          d         S d S )Nr   r   r   )r   version_strings     r   rF   zVersion.localy  s;    T.  !''Q//22 ! r   c                 L    t          | j        j        p| j        j                  S r   )boolrk   rC   rD   r   s    r   r{   zVersion.is_prerelease  s    DM%:):;;;r   c                 4    t          | j        j                  S r   )r   rk   rE   r   s    r   r~   zVersion.is_postrelease  s    DM&'''r   N)r3   r4   r5   recompiler   VERBOSE
IGNORECASEr   rm   r   rp   r   ru   rx   rF   r{   r~   r   r   r   r   r     s        RZ/!G+

R]" F
!
 !
 !
F/ / /  < * * X* 
 
 X
 3 3 X3
 < < X< ( ( X( ( (r   r   c                     | rH|d}|                                  } | dk    rd} n| dk    rd} n| dv rd} n| dv rd	} | t          |          fS | s|rd	} | t          |          fS d S d S )
Nr   alphaabetab)r   rD   r   r   )revrrE   )r   r   )letternumbers     r   r   r     s     # >F 
 WFFvFF...FF|##Fs6{{"" #f # s6{{""# # # #r   z[\._-]c                 l    | 1t          d t                              |           D                       S dS )zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Nc              3      K   | ];}|                                 s|                                nt          |          V  <d S r   )isdigitr   r   )r   r   s     r   r   z'_parse_local_version.<locals>.<genexpr>  sU       
 
 !%=DJJLLLCII
 
 
 
 
 
r   )r   _local_version_seperatorsr   )rF   s    r   r   r     sN      
 
177>>
 
 
 
 
 	
 r   c                 D   t          t          t          t          j        d t          |                                                  }|||	t
           }n	|t
          }|t
           }|t
          }|	t
           }nt          d |D                       }| |||||fS )Nc                     | dk    S )Nr   r   )r   s    r   rT   z_cmpkey.<locals>.<lambda>  s
    !q& r   c              3   \   K   | ]'}t          |t                    r|d fn	t           |fV  (dS )r   N)r"   r   r	   r   s     r   r   z_cmpkey.<locals>.<genexpr>  sS       
 
 "!S))=QGG	1~
 
 
 
 
 
r   )r   reversedlist	itertools	dropwhiler	   r   s         r   r   r     s       !! 
 
 	 	 G {t|i 
 |y {}	  
 

 
 
 
 

 '3c500r   )rJ   collectionsr   r   __all__r	   r0   
namedtupler@   r   
ValueErrorr   rL   r   r   r   r   r   r   rl   r   r   r   r   r   r   r   r   r   <module>r      s9   >         				                 : 8::       @ $#%% !;!777 	& 	& 	&    Z   - - - - - - - -<    L   B  *rzrz    
 3XS# # 
  "  :@h( h( h( h( h(l h( h( h(V# # #> 'BJy11 
 
 
21 21 21 21 21r   