o
    `^h?                     @   sl  d Z ddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZ ddlmZmZmZmZ g dZeeef Zeeeeef f Zeeeef Zeeeeeeeef eeef f df f Zeeeedf eeeef Zeeeedf f Zeeeef eeef gef Zedg d	Zd
eded f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edee fddZ(d
edefddZ)dZ*G d d! d!e"Z+d"ed#eee,e
f de	eeef  fd$d%Z-e$d&Z.d'ede	e fd(d)Z/d*ed+eedf d,e	eeef  d-e	eeef  d.e	eeef  d'e	ee  defd/d0Z0dS )1zPVendoered from
https://github.com/pypa/packaging/blob/main/packaging/version.py
    N)CallableIteratorListOptionalSupportsIntTupleUnion   )InfinityInfinityTypeNegativeInfinityNegativeInfinityType)parseVersionLegacyVersionInvalidVersionVERSION_PATTERN._Version)epochreleasedevprepostlocalversionreturn)r   r   c                 C   s&   zt | W S  ty   t|  Y S w )a  Parse the given version from a string to an appropriate class.

    Parameters
    ----------
    version : str
        Version in a string format, eg. "0.9.1" or "1.2.dev0".

    Returns
    -------
    version : :class:`Version` object or a :class:`LegacyVersion` object
        Returned class depends on the given version: if is a valid
        PEP 440 version or a legacy version.
    )r   r   r   )r    r   b/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/sklearn/externals/_packaging/version.pyr   A   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)__name__
__module____qualname____doc__r   r   r   r   r   U   s    r   c                   @   s   e Zd ZU eeef ed< defddZdd de	fddZ
dd de	fdd	Zdede	fd
dZdd de	fddZdd de	fddZdede	fddZdS )_BaseVersion_keyr   c                 C   s
   t | jS N)hashr#   selfr   r   r   __hash__^   s   
z_BaseVersion.__hash__otherc                 C   s   t |tstS | j|jk S r$   
isinstancer"   NotImplementedr#   r'   r)   r   r   r   __lt__d      
z_BaseVersion.__lt__c                 C   s   t |tstS | j|jkS r$   r*   r-   r   r   r   __le__j   r/   z_BaseVersion.__le__c                 C   s   t |tstS | j|jkS r$   r*   r-   r   r   r   __eq__p   r/   z_BaseVersion.__eq__c                 C   s   t |tstS | j|jkS r$   r*   r-   r   r   r   __ge__v   r/   z_BaseVersion.__ge__c                 C   s   t |tstS | j|jkS r$   r*   r-   r   r   r   __gt__|   r/   z_BaseVersion.__gt__c                 C   s   t |tstS | j|jkS r$   r*   r-   r   r   r   __ne__   r/   z_BaseVersion.__ne__N)r   r   r    r   CmpKeyLegacyCmpKey__annotations__intr(   boolr.   r0   objectr1   r2   r3   r4   r   r   r   r   r"   [   s   
 r"   c                   @   s   e Zd ZdeddfddZdefddZdefdd	Zedefd
dZedefddZ	ede
fddZed ddZed ddZed ddZed ddZed ddZedefddZedefddZedefddZdS )!r   r   r   Nc                 C   s&   t || _t| j| _tdt d S )NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)str_version_legacy_cmpkeyr#   warningswarnDeprecationWarning)r'   r   r   r   r   __init__   s   
zLegacyVersion.__init__c                 C      | j S r$   r<   r&   r   r   r   __str__   s   zLegacyVersion.__str__c                 C      d|  dS )Nz<LegacyVersion('')>r   r&   r   r   r   __repr__      zLegacyVersion.__repr__c                 C   rB   r$   rC   r&   r   r   r   public      zLegacyVersion.publicc                 C   rB   r$   rC   r&   r   r   r   base_version   rJ   zLegacyVersion.base_versionc                 C      dS )Nr   r&   r   r   r   r         zLegacyVersion.epochc                 C      d S r$   r   r&   r   r   r   r      rN   zLegacyVersion.releasec                 C   rO   r$   r   r&   r   r   r   r      rN   zLegacyVersion.prec                 C   rO   r$   r   r&   r   r   r   r      rN   zLegacyVersion.postc                 C   rO   r$   r   r&   r   r   r   r      rN   zLegacyVersion.devc                 C   rO   r$   r   r&   r   r   r   r      rN   zLegacyVersion.localc                 C   rL   NFr   r&   r   r   r   is_prerelease   rN   zLegacyVersion.is_prereleasec                 C   rL   rP   r   r&   r   r   r   is_postrelease   rN   zLegacyVersion.is_postreleasec                 C   rL   rP   r   r&   r   r   r   is_devrelease   rN   zLegacyVersion.is_devrelease)r   N)r   r   r    r;   rA   rD   rG   propertyrI   rK   r8   r   r   r   r   r   r   r9   rQ   rR   rS   r   r   r   r   r      s4    
r   z(\d+ | [a-z]+ | \.| -)czfinal-@)r   preview-rcr   sc                 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.r	   
0123456789   **final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rZ   partr   r   r   _parse_version_parts   s   
rf   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 )NrM   r^   r_   z*final-00000000)rf   lower
startswithpopappendtuple)r   r   partsre   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                   @   sr  e Zd Zede d ejejB Zde	ddfddZ
de	fdd	Zde	fd
dZedefddZedeedf fddZedeee	ef  fddZedee fddZedee fddZedee	 fddZede	fddZede	fddZedefddZedefdd Zedefd!d"Zedefd#d$Zedefd%d&Zedefd'd(ZdS ))r   z^\s*z\s*$r   r   Nc              
   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pD|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       | ]}t |V  qd S r$   )r8   .0ir   r   r   	<genexpr>.      z#Version.__init__.<locals>.<genexpr>r   r[   pre_lpre_npost_lpost_n1post_n2dev_ldev_nr   )r   r   r   r   r   r   )_regexsearchr   r   groupr8   rl   ra   _parse_letter_version_parse_local_versionr<   _cmpkeyr   r   r   r   r   r   r#   )r'   r   matchr   r   r   rA   $  s*   
zVersion.__init__c                 C   rE   )Nz
<Version('rF   r   r&   r   r   r   rG   A  rH   zVersion.__repr__c                 C   s   g }| j dkr|| j  d |ddd | jD  | jd ur1|ddd | jD  | jd ur?|d| j  | jd urM|d	| j  | jd ur[|d
| j  d|S )Nr   !r[   c                 s   ro   r$   r;   rq   xr   r   r   rs   L  rt   z"Version.__str__.<locals>.<genexpr> c                 s   ro   r$   r   r   r   r   r   rs   P  rt   z.postz.dev+)r   rk   joinr   r   r   r   r   r'   rm   r   r   r   rD   D  s   





zVersion.__str__c                 C      | j j}|S r$   )r<   r   )r'   _epochr   r   r   r   `     zVersion.epoch.c                 C   r   r$   )r<   r   )r'   _releaser   r   r   r   e  r   zVersion.releasec                 C   r   r$   )r<   r   )r'   _prer   r   r   r   j  r   zVersion.prec                 C      | j jr
| j jd S d S Nr	   )r<   r   r&   r   r   r   r   o     zVersion.postc                 C   r   r   )r<   r   r&   r   r   r   r   s  r   zVersion.devc                 C   s$   | j jrddd | j jD S d S )Nr[   c                 s   ro   r$   r   r   r   r   r   rs   z  rt   z Version.local.<locals>.<genexpr>)r<   r   r   r&   r   r   r   r   w  s   zVersion.localc                 C   s   t | ddd S )Nr   r	   r   )r;   ra   r&   r   r   r   rI   ~     zVersion.publicc                 C   sF   g }| j dkr|| j  d |ddd | jD  d|S )Nr   r   r[   c                 s   ro   r$   r   r   r   r   r   rs     rt   z'Version.base_version.<locals>.<genexpr>r   )r   rk   r   r   r   r   r   r   rK     s
   

zVersion.base_versionc                 C   s   | j d up	| jd uS r$   )r   r   r&   r   r   r   rQ     r   zVersion.is_prereleasec                 C   
   | j d uS r$   )r   r&   r   r   r   rR        
zVersion.is_postreleasec                 C   r   r$   )r   r&   r   r   r   rS     r   zVersion.is_devreleasec                 C   s   t | jdkr| jd S dS )Nr	   r   lenr   r&   r   r   r   major     zVersion.majorc                 C      t | jdkr| jd S dS )N   r	   r   r   r&   r   r   r   minor  r   zVersion.minorc                 C   r   )N   r   r   r   r&   r   r   r   micro  r   zVersion.micro) r   r   r    recompiler   VERBOSE
IGNORECASEr|   r;   rA   rG   rD   rT   r8   r   r   r   r   r   r   r   r   rI   rK   r9   rQ   rR   rS   r   r   r   r   r   r   r   r      sB    r   letternumberc                 C   sv   | 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|r9d	} | t|fS d S )
Nr   alphaabetab)rU   r   rW   rY   )revrr   )rh   r8   )r   r   r   r   r   r     s"   r   z[\._-]r   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$   )isdigitrh   r8   )rq   re   r   r   r   rs     s
    
z'_parse_local_version.<locals>.<genexpr>)rl   _local_version_separatorsra   )r   r   r   r   r     s
   r   r   r   r   r   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}n|}|d u r/t}n|}|d u r8t}	n|}	|d u rAt}
n	t dd |D }
| ||||	|
fS )Nc                 S   s   | dkS )Nr   r   )r   r   r   r   <lambda>  s    z_cmpkey.<locals>.<lambda>c                 s   s*    | ]}t |tr|d fnt|fV  qdS )r   N)r+   r8   r   rp   r   r   r   rs     s    
z_cmpkey.<locals>.<genexpr>)rl   reversedlist	itertools	dropwhiler   r
   )r   r   r   r   r   r   r   r   _post_dev_localr   r   r   r     s(   	r   )1r!   collectionsr   r   r>   typingr   r   r   r   r   r   r   _structuresr
   r   r   r   __all__InfiniteTypesr;   r8   PrePostDevTypeSubLocalType	LocalTyper5   r6   r9   VersionComparisonMethod
namedtupler   r   
ValueErrorr   r"   r   r   r   r`   rb   rf   r=   r   r   bytesr   r   r   r   r   r   r   r   <module>   s    $

.>	  	

$

