
    RiZ              
         d Z ddlm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mZ ddlmZmZmZmZ ej        rddlmZmZ ej        dk    rdd	lmZ nej        rdd	lmZ nddlZddlZdMdZddddddddZg dZeeeef         df         Z eeeeeef         f         Z!eeeeeeef         eeeeef         f         f         df         f         Z"eeeedf         e!e!e!e"f         Z#ee#e#ge$f         Z% G d ded          Z&dNdZ' G d de(          Z) G d d           Z*d!Z+e+,                    d"d#          ,                    d$d%          Z-ej.        j/        d&k    rej        d'k     s&ej.        j/        d(k    rej        d)k     sej        d*k     re-ne+Z0	  ej1        d+ej2                  Z3dOd.Z4dPd0Z5dQd2Z6dRd4Z7dSd6Z8dTd8Z9 G d9 d:e	          Z: G d; de*          Z; G d< d=e;          Z<dUdCZ= ej1        dD          Z>dVdFZ?dWdLZ@dS )XzB
.. testsetup::

    from packaging.version import parse, Version
    )annotationsN)AnyCallableLiteral
NamedTupleSupportsIntTuple	TypedDictUnion   )InfinityInfinityTypeNegativeInfinityNegativeInfinityType)SelfUnpack)      )
deprecatedmessagestrreturnobjectc                     d fd}|S )Nfuncr   r   c                L     t          j                   d fd            }|S )Nargsr   kwargsr   c                 L    t          j        t          d            | i |S )N   )category
stacklevel)warningswarnDeprecationWarning)r   r   r   r   s     d/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/version.pywrapperz/_deprecated.<locals>.decorator.<locals>.wrapper)   s<    /    
 tT,V,,,    )r   r   r   r   r   r   )	functoolswraps)r   r'   r   s   ` r&   	decoratorz_deprecated.<locals>.decorator(   sC    _T""- - - - - - #"- Nr(   )r   r   r   r    )r   r+   s   ` r&   _deprecatedr-   '   s)    
	 
	 
	 
	 
	 
	 r(   abrcpost)alphabetacprepreviewrevr)VERSION_PATTERNInvalidVersionVersionparse.c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   dS )_VersionReplace
int | Noneepochztuple[int, ...] | Nonerelease*tuple[Literal['a', 'b', 'rc'], int] | Noner5   r1   dev
str | NonelocalN__name__
__module____qualname____annotations__r,   r(   r&   r>   r>   U   sW         ####3333OOOr(   r>   F)totalversionr;   c                     t          |           S )zParse the given version string.

    >>> parse('1.0.dev1')
    <Version('1.0.dev1')>

    :param version: The version string to parse.
    :raises InvalidVersion: When the version string is not a valid version.
    )r;   )rL   s    r&   r<   r<   ^   s     7r(   c                      e Zd ZdZdS )r:   zRaised when a version string is not a valid version.

    >>> Version("invalid")
    Traceback (most recent call last):
        ...
    packaging.version.InvalidVersion: Invalid version: 'invalid'
    N)rG   rH   rI   __doc__r,   r(   r&   r:   r:   j   s           r(   r:   c                  p    e Zd ZdZej        re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 )_BaseVersionr,   r   tuple[Any, ...]c                    d S Nr,   selfs    r&   _keyz_BaseVersion._key|   s    +.3r(   intc                *    t          | j                  S rT   )hashrW   rU   s    r&   __hash__z_BaseVersion.__hash__   s    DIr(   otherboolc                Z    t          |t                    st          S | j        |j        k     S rT   
isinstancerQ   NotImplementedrW   rV   r\   s     r&   __lt__z_BaseVersion.__lt__   )    %.. 	"!!y5:%%r(   c                Z    t          |t                    st          S | j        |j        k    S rT   r_   rb   s     r&   __le__z_BaseVersion.__le__   )    %.. 	"!!yEJ&&r(   r   c                Z    t          |t                    st          S | j        |j        k    S rT   r_   rb   s     r&   __eq__z_BaseVersion.__eq__   rg   r(   c                Z    t          |t                    st          S | j        |j        k    S rT   r_   rb   s     r&   __ge__z_BaseVersion.__ge__   rg   r(   c                Z    t          |t                    st          S | j        |j        k    S rT   r_   rb   s     r&   __gt__z_BaseVersion.__gt__   rd   r(   c                Z    t          |t                    st          S | j        |j        k    S rT   r_   rb   s     r&   __ne__z_BaseVersion.__ne__   rg   r(   N)r   rR   r   rX   )r\   rQ   r   r]   )r\   r   r   r]   )rG   rH   rI   	__slots__typingTYPE_CHECKINGpropertyrW   r[   rc   rf   ri   rk   rm   ro   r,   r(   r&   rQ   rQ   t   s        I
  /	... 
.   & & & &' ' ' '' ' ' '' ' ' '& & & &' ' ' ' ' 'r(   rQ   a1  
    v?+                                                   # optional leading v
    (?:
        (?:(?P<epoch>[0-9]+)!)?+                          # epoch
        (?P<release>[0-9]+(?:\.[0-9]+)*+)                 # release segment
        (?P<pre>                                          # pre-release
            [._-]?+
            (?P<pre_l>alpha|a|beta|b|preview|pre|c|rc)
            [._-]?+
            (?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>                                        # local version
            [a-z0-9]+
            (?:[._-][a-z0-9]+)*+
        )
    )?+
z*+*z?+?cpython)r         pypy)r   rx   r   )r   rx   z[a-z0-9]+(?:[._-][a-z0-9]+)*valuerX   c               l    | pd}t          |t                    r|dk    r|S d| }t          |          )Nr   z(epoch must be non-negative integer, got r`   rX   r:   )r{   r@   msgs      r&   _validate_epochr      sE    JQE% %1**
<U
<
<C


r(   tuple[int, ...]c                   | dn| }t          |t                    r.t          |          dk    rt          d |D                       r|S d| }t	          |          )N)r   r   c              3  L   K   | ]}t          |t                    o|d k    V   dS )r   N)r`   rX   .0is     r&   	<genexpr>z$_validate_release.<locals>.<genexpr>   s5      ??!
1c""-qAv??????r(   z@release must be a non-empty tuple of non-negative integers, got )r`   tuplelenallr:   )r{   rA   r~   s      r&   _validate_releaser      ss    mddG7E""LL1??w?????  
VW
V
VC


r(   rB   c                   | | S t          | t                    rFt          |           dk    r3| d         dv r)t          | d         t                    r| d         dk    r| S d|  }t	          |          )Nr    r   )r.   r/   r0   r   z=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got )r`   r   r   rX   r:   r{   r~   s     r&   _validate_prer     s    }5%  JJ!OO!H(((uQx%% )!HMM
Q%
Q
QC


r(   "tuple[Literal['post'], int] | Nonec               p    | | S t          | t                    r
| dk    rd| fS d|  }t          |          )Nr   r1   z'post must be non-negative integer, got r}   r   s     r&   _validate_postr     sK    }% %1**
;E
;
;C


r(   !tuple[Literal['dev'], int] | Nonec               p    | | S t          | t                    r
| dk    rd| fS d|  }t          |          )Nr   rC   z&dev must be non-negative integer, got r}   r   s     r&   _validate_devr     sK    }% %1**u~
:5
:
:C


r(   LocalType | Nonec                   | | S t          | t                    r)t                              |           rt	          |           S d| }t          |          )Nz*local must be a valid version string, got )r`   r   _LOCAL_PATTERN	fullmatch_parse_local_versionr:   r   s     r&   _validate_localr   #  s\    }% +.":":5"A"A +#E***
@u
@
@C


r(   c                  L    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   dS )_VersionrX   r@   r   rA   tuple[str, int] | NonerC   r5   r1   r   rE   NrF   r,   r(   r&   r   r   -  sW         JJJ    r(   r   c                     e Zd ZU dZdZdZ ej        dez   dz   ej	        ej
        z            Zded<   ded<   d	ed
<   d	ed<   d	ed<   ded<   ded<   d6dZd7dZed8d            Ze ed          d9d                        Zej         ed          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ed?d)            Zed@d+            Zed;d,            Zed;d-            ZedAd/            ZedAd0            Z edAd1            Z!ed<d2            Z"ed<d3            Z#ed<d4            Z$d5S )Br;   a  This class abstracts handling of a project's versions.

    A :class:`Version` instance is comparison aware and can be compared and
    sorted using the standard Python interfaces.

    >>> v1 = Version("1.0a5")
    >>> v2 = Version("1.0")
    >>> v1
    <Version('1.0a5')>
    >>> v2
    <Version('1.0')>
    >>> v1 < v2
    True
    >>> v1 == v2
    False
    >>> v1 > v2
    False
    >>> v1 >= v2
    False
    >>> v1 <= v2
    True
    )_dev_epoch
_key_cache_local_post_pre_release)_strz\s*rX   r   r   r   r   r   r   r   r   r   zCmpKey | Noner   rL   r   r   Nonec                `   | j                             |          }|st          d|          |                    d          r"t	          |                    d                    nd| _        t          t          t          |                    d                              d                              | _	        t          |                    d          |                    d                    | _        t          |                    d          |                    d	          p|                    d
                    | _        t          |                    d          |                    d                    | _        t          |                    d                    | _        d| _        dS )aC  Initialize a Version object.

        :param version:
            The string representation of a version which will be parsed and normalized
            before use.
        :raises InvalidVersion:
            If the ``version`` does not conform to PEP 440 in any way then this
            exception will be raised.
        zInvalid version: r@   r   rA   .pre_lpre_npost_lpost_n1post_n2dev_ldev_nrE   N)_regexr   r:   grouprX   r   r   mapsplitr   _parse_letter_versionr   r   r   r   r   r   )rV   rL   matchs      r&   __init__zVersion.__init__\  sX    %%g.. 	B !@W!@!@AAA38;;w3G3GNc%++g..///Qc#u{{9'='='C'CC'H'HIIJJ)%++g*>*>G@T@TUU	*KK!!5;;y#9#9#SU[[=S=S
 

 *%++g*>*>G@T@TUU	*5;;w+?+?@@ r(   r   Unpack[_VersionReplace]r   c                   d|v rt          |d                   n| j        }d|v rt          |d                   n| j        }d|v rt	          |d                   n| j        }d|v rt          |d                   n| j        }d|v rt          |d                   n| j	        }d|v rt          |d                   n| j        }|| j        k    r9|| j        k    r.|| j        k    r#|| j        k    r|| j	        k    r|| j        k    r| S | j                            | j                  }d |_        ||_        ||_        ||_        ||_        ||_	        ||_        |S )Nr@   rA   r5   r1   rC   rE   )r   r   r   r   r   r   r   r   r   r   r   r   	__class____new__r   )	rV   r   r@   rA   r5   r1   rC   rE   new_versions	            r&   __replace__zVersion.__replace__v  s   4;v4E4Ew0004; F"" fY/000 	
 /4voomF5M***491761A1A~fVn---tz.3voomF5M***494;v4E4Ew0004; T[  4=((ty  
""ty  $$Kn,,T^<<!%"& "r(   CmpKeyc                    | j         7t          | j        | j        | j        | j        | j        | j                  | _         | j         S rT   )r   _cmpkeyr   r   r   r   r   r   rU   s    r&   rW   zVersion._key  sC    ?"%	
	 DO r(   z4Version._version is private and will be removed soonr   c                f    t          | j        | j        | j        | j        | j        | j                  S rT   )r   r   r   r   r   r   r   rU   s    r&   _versionzVersion._version  s/     K	49dj$+
 
 	
r(   r{   c                    |j         | _        |j        | _        |j        | _        |j        | _        |j        | _	        |j
        | _        d | _        d S rT   )r@   r   rA   r   rC   r   r5   r   r1   r   rE   r   r   )rV   r{   s     r&   r   zVersion._version  sE     kI	I	Z
kr(   c                    d|  dS )zA representation of the Version that shows all internal state.

        >>> Version('1.0.0')
        <Version('1.0.0')>
        z
<Version('z')>r,   rU   s    r&   __repr__zVersion.__repr__  s     &D%%%%r(   c                l   d                     t          t          | j                            }| j        r| j         d| }| j        0|d                     t          t          | j                            z  }| j        |d| j         z  }| j        |d| j         z  }| j        |d| j         z  }|S )z}A string representation of the version that can be round-tripped.

        >>> str(Version("1.0a5"))
        '1.0a5'
        r   !N z.postz.dev+)	joinr   r   rA   r@   r5   r1   rC   rE   )rV   rL   s     r&   __str__zVersion.__str__  s     ((3sDL1122 : 	0//g//G 8rwws311222G 9 *ty***G 8(dh(((G :!'4:'''Gr(   c                     t          |           S )z Internal property for match_argsr   rU   s    r&   r   zVersion._str  s     4yyr(   c                    | j         S )zThe epoch of the version.

        >>> Version("2.0.0").epoch
        0
        >>> Version("1!2.0.0").epoch
        1
        )r   rU   s    r&   r@   zVersion.epoch  s     {r(   c                    | j         S )ad  The components of the "release" segment of the version.

        >>> Version("1.2.3").release
        (1, 2, 3)
        >>> Version("2.0.0").release
        (2, 0, 0)
        >>> Version("1!2.0.0.post0").release
        (2, 0, 0)

        Includes trailing zeroes but not the epoch or any pre-release / development /
        post-release suffixes.
        )r   rU   s    r&   rA   zVersion.release  s     }r(   c                    | j         S )a  The pre-release segment of the version.

        >>> print(Version("1.2.3").pre)
        None
        >>> Version("1.2.3a1").pre
        ('a', 1)
        >>> Version("1.2.3b1").pre
        ('b', 1)
        >>> Version("1.2.3rc1").pre
        ('rc', 1)
        )r   rU   s    r&   r5   zVersion.pre  s     yr(   r?   c                .    | j         r| j         d         ndS )zThe post-release number of the version.

        >>> print(Version("1.2.3").post)
        None
        >>> Version("1.2.3.post1").post
        1
        r   N)r   rU   s    r&   r1   zVersion.post  s     !%
4tz!}}4r(   c                .    | j         r| j         d         ndS )zThe development number of the version.

        >>> print(Version("1.2.3").dev)
        None
        >>> Version("1.2.3.dev1").dev
        1
        r   N)r   rU   s    r&   rC   zVersion.dev  s      $y2ty||d2r(   rD   c                \    | j         r$d                    d | j         D                       S dS )zThe local version segment of the version.

        >>> print(Version("1.2.3").local)
        None
        >>> Version("1.2.3+abc").local
        'abc'
        r   c              3  4   K   | ]}t          |          V  d S rT   r   )r   xs     r&   r   z Version.local.<locals>.<genexpr>,  s(      88qCFF888888r(   N)r   r   rU   s    r&   rE   zVersion.local"  s6     ; 	8888DK8888884r(   c                T    t          |                               dd          d         S )zThe public portion of the version.

        >>> Version("1.2.3").public
        '1.2.3'
        >>> Version("1.2.3+abc").public
        '1.2.3'
        >>> Version("1!1.2.3dev1+abc").public
        '1!1.2.3.dev1'
        r   r   r   )r   r   rU   s    r&   publiczVersion.public0  s#     4yysA&&q))r(   c                    d                     t          t          | j                            }| j        r| j         d| n|S )a\  The "base version" of the version.

        >>> Version("1.2.3").base_version
        '1.2.3'
        >>> Version("1.2.3+abc").base_version
        '1.2.3'
        >>> Version("1!1.2.3dev1+abc").base_version
        '1!1.2.3'

        The "base version" is the public version of the project without any pre or post
        release markers.
        r   r   )r   r   r   rA   r@   )rV   release_segments     r&   base_versionzVersion.base_version=  sC     ((3sDL#9#9::48JS$*00000OSr(   r]   c                &    | j         dup| j        duS )aT  Whether this version is a pre-release.

        >>> Version("1.2.3").is_prerelease
        False
        >>> Version("1.2.3a1").is_prerelease
        True
        >>> Version("1.2.3b1").is_prerelease
        True
        >>> Version("1.2.3rc1").is_prerelease
        True
        >>> Version("1.2.3dev1").is_prerelease
        True
        N)rC   r5   rU   s    r&   is_prereleasezVersion.is_prereleaseN  s     xt#;txt';;r(   c                    | j         duS )zWhether this version is a post-release.

        >>> Version("1.2.3").is_postrelease
        False
        >>> Version("1.2.3.post1").is_postrelease
        True
        N)r1   rU   s    r&   is_postreleasezVersion.is_postrelease_  s     y$$r(   c                    | j         duS )zWhether this version is a development release.

        >>> Version("1.2.3").is_devrelease
        False
        >>> Version("1.2.3.dev1").is_devrelease
        True
        N)rC   rU   s    r&   is_devreleasezVersion.is_devreleasej  s     xt##r(   c                P    t          | j                  dk    r| j        d         ndS )zqThe first item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").major
        1
        r   r   r   rA   rU   s    r&   majorzVersion.majoru  s(     #&dl"3"3q"8"8t|Aa?r(   c                P    t          | j                  dk    r| j        d         ndS )zThe second item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").minor
        2
        >>> Version("1").minor
        0
        r    r   r   r   rU   s    r&   minorzVersion.minor~  (     #&dl"3"3q"8"8t|Aa?r(   c                P    t          | j                  dk    r| j        d         ndS )zThe third item of :attr:`release` or ``0`` if unavailable.

        >>> Version("1.2.3").micro
        3
        >>> Version("1").micro
        0
        r   r    r   r   rU   s    r&   microzVersion.micro  r   r(   N)rL   r   r   r   )r   r   r   r   )r   r   )r   r   )r{   r   r   r   )r   r   rp   r   r   )r   r   )r   r?   )r   rD   )r   r]   )%rG   rH   rI   rO   rq   __match_args__recompiler9   VERBOSE
IGNORECASEr   rJ   r   r   rt   rW   r-   r   setterr   r   r   r@   rA   r5   r1   rC   rE   r   r   r   r   r   r   r   r   r,   r(   r&   r;   r;   6  sw         . XINRZ0692:;UVVFKKK        !!!!   4   B 
 
 
 X
 [GHH
 
 
 IH X

 _[GHH   IH _& & & &   >    X    X    X    X 5 5 5 X5 3 3 3 X3    X 
* 
* 
* X
* T T T XT  < < < X<  % % % X% $ $ $ X$ @ @ @ X@ @ @ @ X@ @ @ @ X@ @ @r(   c                  @     e Zd ZdZd	 fdZed
 fd            Z xZS )_TrimmedReleaser,   rL   str | Versionr   r   c                    t          |t                    rV|j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d S t                      
                    |           d S rT   )r`   r;   r   r   r   r   r   r   r   superr   )rV   rL   r   s     r&   r   z_TrimmedRelease.__init__  sy    gw'' 	!.DK#,DMDIDI DJ!.DK%0DOF!!!!!r(   r   c                    t                      j        }t          |          }|}|dk    r)||dz
           dk    r|dz  }|dk    r||dz
           dk    ||k    r|n	|d|         S )z
        Release segment without any trailing zeros.

        >>> _TrimmedRelease('1.0.0').release
        (1,)
        >>> _TrimmedRelease('0.0').release
        (0,)
        r   r   N)r   rA   r   )rV   rellen_releaser   r   s       r&   rA   z_TrimmedRelease.release  sy     ggo#hh!eeAE
aFA !eeAE
a;&&ssCG3r(   )rL   r   r   r   r   )rG   rH   rI   rq   r   rt   rA   __classcell__)r   s   @r&   r   r     sl        I
" 
" 
" 
" 
" 
" 4 4 4 4 4 X4 4 4 4 4r(   r   letterrD   number str | bytes | SupportsInt | Noner   c                    | rB|                                  } t                              | |           } | t          |pd          fS |rdt          |          fS d S )Nr   r1   )lower_LETTER_NORMALIZATIONgetrX   )r   r   s     r&   r   r     si      (
 '**66:: s6;Q'''' # s6{{""4r(   z[\._-]rE   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 rT   )isdigitr   rX   )r   parts     r&   r   z'_parse_local_version.<locals>.<genexpr>  sU       
 
 !%=DJJLLLCII
 
 
 
 
 
r(   )r   _local_version_separatorsr   )rE   s    r&   r   r     sM      
 
177>>
 
 
 
 
 	
 4r(   r@   rA   r5   rC   r   c                P   t          |          }|}|r%||dz
           dk    r|dz  }|r||dz
           dk    ||k    r|n	|d |         }||
|t          }	n|t          }	n|}	|t          }
n|}
|t          }n|}|t          }nt          d |D                       }| ||	|
||fS )Nr   r   c              3  Z   K   | ]&}t          |t                    r|d fnt          |fV  'dS )r   N)r`   rX   r   r   s     r&   r   z_cmpkey.<locals>.<genexpr>  sP       
 
IJz!S))DQGG0@!/D
 
 
 
 
 
r(   )r   r   r   r   )r@   rA   r5   r1   rC   rE   r   r   r   r   r   r   r   s                r&   r   r     s    g,,KA
 A!##	Q  A!##{**wwH {t|"2 
 |#3  {"* }/  
 
NS
 
 
 
 
 (D%v55r(   )r   r   r   r   )rL   r   r   r;   )r{   r   r   rX   )r{   r   r   r   )r{   r   r   rB   )r{   r   r   r   )r{   r   r   r   )r{   r   r   r   )r   rD   r   r   r   r   )rE   rD   r   r   )r@   rX   rA   r   r5   r   r1   r   rC   r   rE   r   r   r   )ArO   
__future__r   r   sysrr   r   r   r   r   r   r	   r
   r   _structuresr   r   r   r   rs   typing_extensionsr   r   version_infor#   r   r-   r)   r   __all__rX   r   	LocalTypeCmpPrePostDevTypeCmpLocalTyper   r]   VersionComparisonMethodr>   r<   
ValueErrorr:   rQ   _VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer9   r   r   r   r   r   r   r   r   r   r   r;   r   r   r  r   r   r,   r(   r&   <module>r     s    # " " " " " 				 



 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 X W W W W W W W W W W W	 /........w2222222 ;;;;;;;OOO   " 		   D
C
C%S/3&'	,(<eCHoMN 	%c3h';U38_'L!MM
NPS
STV 
	#s(O
 #FF#3T#9:     iu    	 	 	 	    Z   3' 3' 3' 3' 3' 3' 3' 3't" H (//c::BB4MM  	9,,1AJ1N1N6))c.>.L.L
'!!  
 	 ;R]KK   	 	 	 	                z   \@ \@ \@ \@ \@l \@ \@ \@~
4 4 4 4 4g 4 4 4D   0 'BJy11 	 	 	 	:6 :6 :6 :6 :6 :6r(   