
    uviZ              
      Z   S r SSKJr  SSKrSSKrSSKrSSKJrJrJrJ	r	J
r
JrJrJr  SSKJrJrJrJr  \R&                  (       a  SSKJrJr  \R.                  S:  a  SS	KJr  O%\R&                  (       a  SS	KJr  OSSKrSSKrS6S
 jrSSSSSSSS.r/ SQr\\\\4   S4   r \\\\\\4   4   r!\\\\\\\4   \\\\\4   4   4   S4   4   r"\\\\S4   \!\!\!\"4   r#\\#\#/\$4   r% " S S\SS9r&S7S jr' " S S\(5      r) " S S5      r*Sr+\+RY                  SS5      RY                  SS 5      r-\R\                  R^                  S!:X  a  \R.                  S":  d:  \R\                  R^                  S#:X  a  \R.                  S$:  d  \R.                  S%:  a  \-O\+r0 \Rb                  " S&\Rd                  5      r3S8S' jr4S9S( jr5S:S) jr6S;S* jr7S<S+ jr8S=S, jr9 " S- S.\	5      r: " S/ S\*5      r; " S0 S1\;5      r<      S>S2 jr=\Rb                  " S35      r>S?S4 jr?              S@S5 jr@g)AzB
.. testsetup::

    from packaging.version import parse, Version
    )annotationsN)AnyCallableLiteral
NamedTupleSupportsIntTuple	TypedDictUnion   )InfinityInfinityTypeNegativeInfinityNegativeInfinityType)SelfUnpack)      )
deprecatedc                   ^  SU 4S jjnU$ )Nc                N   >^  [         R                  " T 5      SU U4S jj5       nU$ )Nc                 H   > [         R                  " T[        SS9  T" U 0 UD6$ )N   )category
stacklevel)warningswarnDeprecationWarning)argskwargsfuncmessages     ?/root/pdf_env/lib/python3.13/site-packages/packaging/version.pywrapper/_deprecated.<locals>.decorator.<locals>.wrapper)   s*    / 
 T,V,,    )r   objectr    r'   returnr'   )	functoolswraps)r!   r$   r"   s   ` r#   	decorator_deprecated.<locals>.decorator(   s%    __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                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)_VersionReplaceU   
int | Noneepochztuple[int, ...] | Nonerelease*tuple[Literal['a', 'b', 'rc'], int] | Noner6   r2   dev
str | Nonelocalr-   N__name__
__module____qualname____firstlineno____annotations____static_attributes__r-   r&   r#   r?   r?   U   s%    ##	33
	Or&   r?   F)totalr<   c                    [        U 5      $ )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<   )versions    r#   r=   r=   ^   s     7r&   c                      \ rS rSrSrSrg)r;   j   zRaised when a version string is not a valid version.

>>> Version("invalid")
Traceback (most recent call last):
    ...
packaging.version.InvalidVersion: Invalid version: 'invalid'
r-   N)rI   rJ   rK   rL   __doc__rN   r-   r&   r#   r;   r;   j   s    r&   r;   c                      \ rS rSrSr\R                  (       a
  \SS j5       rSS jr	SS jr
SS jrSS jrSS jrSS	 jrSS
 jrSrg)_BaseVersiont   r-   c                    g Nr-   selfs    r#   _key_BaseVersion._key|   s    +.r&   c                ,    [        U R                  5      $ rY   )hashr\   rZ   s    r#   __hash___BaseVersion.__hash__   s    DIIr&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ rY   
isinstancerV   NotImplementedr\   r[   others     r#   __lt___BaseVersion.__lt__   (    %..!!yy5::%%r&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :*  $ rY   rc   rf   s     r#   __le___BaseVersion.__le__   (    %..!!yyEJJ&&r&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ rY   rc   rf   s     r#   __eq___BaseVersion.__eq__   rn   r&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ rY   rc   rf   s     r#   __ge___BaseVersion.__ge__   rn   r&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :  $ rY   rc   rf   s     r#   __gt___BaseVersion.__gt__   rj   r&   c                j    [        U[        5      (       d  [        $ U R                  UR                  :g  $ rY   rc   rf   s     r#   __ne___BaseVersion.__ne__   rn   r&   N)r(   ztuple[Any, ...]r(   int)rg   rV   r(   bool)rg   r'   r(   r}   )rI   rJ   rK   rL   	__slots__typingTYPE_CHECKINGpropertyr\   r`   rh   rl   rp   rs   rv   ry   rN   r-   r&   r#   rV   rV   t   sC    I
 	. 
.&'''&'r&   rV   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   r   r   )r   r   z[a-z0-9]+(?:[._-][a-z0-9]+)*c               r    U =(       d    Sn[        U[        5      (       a  US:  a  U$ SU 3n[        U5      e)Nr   z(epoch must be non-negative integer, got rd   r|   r;   )valuerB   msgs      r#   _validate_epochr      s:    JQE%%1*4UG
<C

r&   c                   U c  SOU n[        U[        5      (       a(  [        U5      S:  a  [        S U 5       5      (       a  U$ SU 3n[	        U5      e)N)r   r   c              3  Z   #    U  H!  n[        U[        5      =(       a    US :  v   M#     g7f)r   N)rd   r|   .0is     r#   	<genexpr>$_validate_release.<locals>.<genexpr>   s#     ?w!
1c"-qAv-ws   )+z@release must be a non-empty tuple of non-negative integers, got )rd   tuplelenallr;   )r   rC   r   s      r#   _validate_releaser      sS    mdG7E""L1?w???LWI
VC

r&   c                   U c  U $ [        U [        5      (       a;  [        U 5      S:X  a,  U S   S;   a#  [        U S   [        5      (       a  U S   S:  a  U $ SU  3n[	        U5      e)Nr   r   )r/   r0   r1   r   z=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got )rd   r   r   r|   r;   r   r   s     r#   _validate_prer     si    }5%  J!O!H((uQx%%!HMI%
QC

r&   c               j    U c  U $ [        U [        5      (       a
  U S:  a  SU 4$ SU  3n[        U5      e)Nr   r2   z'post must be non-negative integer, got r   r   s     r#   _validate_postr     s@    }%%1*3E7
;C

r&   c               j    U c  U $ [        U [        5      (       a
  U S:  a  SU 4$ SU  3n[        U5      e)Nr   rE   z&dev must be non-negative integer, got r   r   s     r#   _validate_devr     s@    }%%1*u~25'
:C

r&   c                   U c  U $ [        U [        5      (       a%  [        R                  U 5      (       a  [	        U 5      $ SU < 3n[        U5      e)Nz*local must be a valid version string, got )rd   str_LOCAL_PATTERN	fullmatch_parse_local_versionr;   r   s     r#   _validate_localr   #  sK    }%.":":5"A"A#E**6ui
@C

r&   c                  R    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S
\S'   Srg)_Versioni-  r|   rB   tuple[int, ...]rC   tuple[str, int] | NonerE   r6   r2   LocalType | NonerG   r-   NrH   r-   r&   r#   r   r   -  s%    J		
  r&   r   c                     \ rS rSr% SrSrSr\R                  " S\	-   S-   \R                  \R                  -  5      rS\S'   S\S	'   S
\S'   S
\S'   S
\S'   S\S'   S\S'   S*S jrS+S jr\S,S j5       r\\" S5      S-S j5       5       r\R(                  \" S5      S.S j5       5       rS/S jrS/S jr\S/S j5       r\S0S j5       r\S1S j5       r\S2S j5       r\S3S j5       r\S3S j5       r\S4S  j5       r\S/S! j5       r\S/S" j5       r\S5S# j5       r \S5S$ j5       r!\S5S% j5       r"\S0S& j5       r#\S0S' j5       r$\S0S( j5       r%Sr&g))6r<   i6  am  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*r|   r   r   r   r   r   r   r   r   r   zCmpKey | Noner   c                   U R                   R                  U5      nU(       d  [        SU< 35      eUR                  S5      (       a  [	        UR                  S5      5      OSU l        [        [        [        UR                  S5      R                  S5      5      5      U l	        [        UR                  S5      UR                  S5      5      U l        [        UR                  S5      UR                  S	5      =(       d    UR                  S
5      5      U l        [        UR                  S5      UR                  S5      5      U l        [        UR                  S5      5      U l        SU l        g)a  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: rB   r   rC   .pre_lpre_npost_lpost_n1post_n2dev_ldev_nrG   N)_regexr   r;   groupr|   r   r   mapsplitr   _parse_letter_versionr   r   r   r   r   r   )r[   rQ   matchs      r#   __init__Version.__init__\  s    %%g. #4WK!@AA38;;w3G3Gc%++g./Qc#u{{9'='C'CC'HIJ)%++g*>G@TU	*KK!5;;y#9#SU[[=S

 *%++g*>G@TU	*5;;w+?@ r&   c                   SU;   a  [        US   5      OU R                  nSU;   a  [        US   5      OU R                  nSU;   a  [	        US   5      OU R
                  nSU;   a  [        US   5      OU R                  nSU;   a  [        US   5      OU R                  nSU;   a  [        US   5      OU R                  nX R                  :X  aM  X0R                  :X  a>  X@R
                  :X  a/  XPR                  :X  a   X`R                  :X  a  XpR                  :X  a  U $ U R                  R                  U R                  5      nS Ul        X(l        X8l        XHl        XXl        Xhl	        Xxl        U$ )NrB   rC   r6   r2   rE   rG   )r   r   r   r   r   r   r   r   r   r   r   r   	__class____new__r   )	r[   r    rB   rC   r6   r2   rE   rG   new_versions	            r#   __replace__Version.__replace__v  s;   4;v4Ew04;; F" fY/0 	
 /4vomF5M*4991761A~fVn-tzz.3vomF5M*4994;v4Ew04;; [[ ==(yy 

"yy $Knn,,T^^<!%"& "r&   c                    U R                   cQ  [        U R                  U R                  U R                  U R
                  U R                  U R                  5      U l         U R                   $ rY   )r   _cmpkeyr   r   r   r   r   r   rZ   s    r#   r\   Version._key  sN    ??"%		

		DO r&   z4Version._version is private and will be removed soonc                    [        U R                  U R                  U R                  U R                  U R
                  U R                  5      $ rY   )r   r   r   r   r   r   r   rZ   s    r#   _versionVersion._version  s6     KK		499djj$++
 	
r&   c                    UR                   U l        UR                  U l        UR                  U l        UR                  U l        UR                  U l	        UR                  U l        S U l        g rY   )rB   r   rC   r   rE   r   r6   r   r2   r   rG   r   r   )r[   r   s     r#   r   r     sM     kkII	II	ZZ
kkr&   c                    SU  S3$ )zhA representation of the Version that shows all internal state.

>>> Version('1.0.0')
<Version('1.0.0')>
z
<Version('z')>r-   rZ   s    r#   __repr__Version.__repr__  s     D6%%r&   c                   SR                  [        [        U R                  5      5      nU R                  (       a  U R                   SU 3nU R
                  b,  USR                  [        [        U R
                  5      5      -  nU R                  b  USU R                   3-  nU R                  b  USU R                   3-  nU R                  b  USU R                   3-  nU$ )zeA string representation of the version that can be round-tripped.

>>> str(Version("1.0a5"))
'1.0a5'
r   ! z.postz.dev+)	joinr   r   rC   rB   r6   r2   rE   rG   )r[   rQ   s     r#   __str__Version.__str__  s     ((3sDLL12 ::AgY/G 88rwws3122G 99 tyyk**G 88dhhZ((G ::!4::,''Gr&   c                    [        U 5      $ )z Internal property for match_argsr   rZ   s    r#   r   Version._str  s     4yr&   c                    U R                   $ )zWThe epoch of the version.

>>> Version("2.0.0").epoch
0
>>> Version("1!2.0.0").epoch
1
)r   rZ   s    r#   rB   Version.epoch  s     {{r&   c                    U R                   $ )a  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   rZ   s    r#   rC   Version.release  s     }}r&   c                    U R                   $ )zThe 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   rZ   s    r#   r6   Version.pre  s     yyr&   c                F    U R                   (       a  U R                   S   $ S$ )zqThe post-release number of the version.

>>> print(Version("1.2.3").post)
None
>>> Version("1.2.3.post1").post
1
r   N)r   rZ   s    r#   r2   Version.post  s     !%

tzz!}44r&   c                F    U R                   (       a  U R                   S   $ S$ )zmThe development number of the version.

>>> print(Version("1.2.3").dev)
None
>>> Version("1.2.3.dev1").dev
1
r   N)r   rZ   s    r#   rE   Version.dev  s      $yytyy|2d2r&   c                j    U R                   (       a"  SR                  S U R                    5       5      $ g)zwThe local version segment of the version.

>>> print(Version("1.2.3").local)
None
>>> Version("1.2.3+abc").local
'abc'
r   c              3  8   #    U  H  n[        U5      v   M     g 7frY   r   )r   xs     r#   r    Version.local.<locals>.<genexpr>,  s     8KqCFFKs   N)r   r   rZ   s    r#   rG   Version.local"  s'     ;;888DKK888r&   c                >    [        U 5      R                  SS5      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   rZ   s    r#   publicVersion.public0  s     4ysA&q))r&   c                    SR                  [        [        U R                  5      5      nU R                  (       a  U R                   SU 3$ U$ )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   rC   rB   )r[   release_segments     r#   base_versionVersion.base_version=  s>     ((3sDLL#9:48JJ$**Q/0SOSr&   c                H    U R                   SL=(       d    U R                  SL$ )zWhether 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)rE   r6   rZ   s    r#   is_prereleaseVersion.is_prereleaseN  s!     xxt#;txxt';;r&   c                    U R                   SL$ )zWhether this version is a post-release.

>>> Version("1.2.3").is_postrelease
False
>>> Version("1.2.3.post1").is_postrelease
True
N)r2   rZ   s    r#   is_postreleaseVersion.is_postrelease_  s     yy$$r&   c                    U R                   SL$ )zWhether this version is a development release.

>>> Version("1.2.3").is_devrelease
False
>>> Version("1.2.3.dev1").is_devrelease
True
N)rE   rZ   s    r#   is_devreleaseVersion.is_devreleasej  s     xxt##r&   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zYThe first item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").major
1
r   r   r   rC   rZ   s    r#   majorVersion.majoru  s'     #&dll"3q"8t||A?a?r&   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zsThe second item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").minor
2
>>> Version("1").minor
0
r   r   r   r   rZ   s    r#   minorVersion.minor~  '     #&dll"3q"8t||A?a?r&   c                V    [        U R                  5      S:  a  U R                  S   $ S$ )zrThe third item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").micro
3
>>> Version("1").micro
0
r   r   r   r   rZ   s    r#   microVersion.micro  r  r&   N)rQ   r   r(   None)r    zUnpack[_VersionReplace]r(   r   )r(   CmpKey)r(   r   )r   r   r(   r	  )r(   r   r{   r(   r   )r(   r   )r(   rA   )r(   rF   )r(   r}   )'rI   rJ   rK   rL   rT   r~   __match_args__recompiler:   VERBOSE
IGNORECASEr   rM   r   r   r   r\   r.   r   setterr   r   r   rB   rC   r6   r2   rE   rG   r   r   r   r   r   r   r  r  rN   r-   r&   r#   r<   r<   6  s   . XINZZ0692::;UVFK
  
  !!4B 
 
 GH
 I 

 __GH I &>         5 5 3 3   
* 
* T T  < <  % % $ $ @ @ @ @ @ @r&   c                  J   ^  \ rS rSrSrSU 4S jjr\SU 4S jj5       rSrU =r	$ )_TrimmedReleasei  r-   c                >  > [        U[        5      (       ax  UR                  U l        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        g [        TU ])  U5        g rY   )rd   r<   r   r   r   r   r   r   r   superr   )r[   rQ   r   s     r#   r   _TrimmedRelease.__init__  sq    gw''!..DK#,,DMDIDI DJ!..DK%00DO!r&   c                   > [         TU ]  n[        U5      nUnUS:  a#  XS-
     S:X  a  US-  nUS:  a  XS-
     S:X  a  M  X2:X  a  U$ USU $ )z
Release segment without any trailing zeros.

>>> _TrimmedRelease('1.0.0').release
(1,)
>>> _TrimmedRelease('0.0').release
(0,)
r   r   N)r  rC   r   )r[   rellen_releaser   r   s       r#   rC   _TrimmedRelease.release  sc     go#h!eE
aFA !eE
a&s3CG3r&   r   )rQ   zstr | Versionr(   r	  r  )
rI   rJ   rK   rL   r~   r   r   rC   rN   __classcell__)r   s   @r#   r  r    s!    I
" 4 4r&   r  c                    U (       a;  U R                  5       n [        R                  X 5      n U [        U=(       d    S5      4$ U(       a  S[        U5      4$ g )Nr   r2   )lower_LETTER_NORMALIZATIONgetr|   )letternumbers     r#   r   r     sQ     
 '**6: s6;Q''' s6{""r&   z[\._-]c                T    U b%  [        S [        R                  U 5       5       5      $ g)zJ
Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
Nc              3     #    U  H5  nUR                  5       (       d  UR                  5       O
[        U5      v   M7     g 7frY   )isdigitr  r|   )r   parts     r#   r   '_parse_local_version.<locals>.<genexpr>  s0      
> !%DJJLCI=>s   =?)r   _local_version_separatorsr   )rG   s    r#   r   r     s4      
177>
 
 	
 r&   c                4   [        U5      nUnU(       a$  XS-
     S:X  a  US-  nU(       a  XS-
     S:X  a  M  Xv:X  a  UOUS U nUc  Uc
  Ub  [        n	OUc  [        n	OUn	Uc  [        n
OUn
Uc  [        nOUnUc  [        nO[        S U 5       5      nXXX4$ )Nr   r   c              3  d   #    U  H&  n[        U[        5      (       a  US 4O[        U4v   M(     g7f)r   N)rd   r|   r   r   s     r#   r   _cmpkey.<locals>.<genexpr>  s.      
NSz!S))QG0@!/DDes   .0)r   r   r   r   )rB   rC   r6   r2   rE   rG   r  r   r   r   r   r   r   s                r#   r   r     s     g,KA
A!#	Q A!#*wH {t|"2 
 |#3  {"* }/  
NS
 
 D55r&   )r"   r   r(   r'   )rQ   r   r(   r<   )r   r'   r(   r|   )r   r'   r(   r   )r   r'   r(   rD   )r   r'   r(   z"tuple[Literal['post'], int] | None)r   r'   r(   z!tuple[Literal['dev'], int] | None)r   r'   r(   r   )r   rF   r!  z str | bytes | SupportsInt | Noner(   r   )rG   rF   r(   r   )rB   r|   rC   r   r6   r   r2   r   rE   r   rG   r   r(   r
  )ArT   
__future__r   r  sysr   r   r   r   r   r   r	   r
   r   _structuresr   r   r   r   r   typing_extensionsr   r   version_infor   r   r.   r)   r  __all__r|   r   	LocalTypeCmpPrePostDevTypeCmpLocalTyper
  r}   VersionComparisonMethodr?   r=   
ValueErrorr;   rV   _VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer:   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2;" 		  D%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't" H (//c:BB4M  	9,1A1AJ1N6)c.>.>.L
'!  
 	 ;R]]K	z \@l \@~
4g 4D @0 JJy1 	:6:6:6 
 :6 !	:6
 
 :6 :6 :6r&   