+
    i                       R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHtHtH	t	H
t
HtHtHt ]P                  '       d	   ^ RIHtHt ]P$                  RD8  d   ^ RIHt M']P                  '       d   ^ RIHt M^ RIt^ RItR R ltRR	R
RRRRRRRRRRR/t. REOtR R lt]]]]3,          R3,          t]]]]3,          R3,          t]]]]]]]3,          t]]]]]R3,          ]3,          ]]]]R3,          ]]3,          3,          t]]].] 3,          t! ! R R]RR7      t"R R lt#R R lt$ ! R  R]%4      t& ! R! R"4      t'R#t(](PS                  R$R%4      PS                  R&R'4      t*]PV                  PX                  R(8X  d   ]P$                  RF8  g>   ]PV                  PX                  R)8X  d   ]P$                  RG8  g   ]P$                  RH8  d   ]*M](t- ]P\                  ! R*]P^                  ]P`                  ,          4      t1]2! R+4      t3R, R- lt4R. R/ lt5R0 R1 lt6R2 R3 lt7R4 R5 lt8R6 R7 lt9 ! R8 R9]	4      t: ! R: R]'4      t; ! R; R<];4      t<R= R> lt=]P\                  ! R?4      t>R@ RA lt?R	^ R^R^/t@RItA^tBRItC]B^ ^ ^ ^^ 3tDRB RC ltER# )JzZ
.. testsetup::

    from packaging.version import parse, normalize_pre, Version, _cmpkey
)annotationsN)AnyCallableLiteral
NamedTupleSupportsIntTuple	TypedDictUnion)SelfUnpack)
deprecatedc                    V ^8  d   QhRRRR/# )   messagestrreturnobject )formats   "]/home/piyush/.cache/uv/builds-v0/.tmpPfdyTF/lib/python3.14/site-packages/packaging/version.py__annotate__r   %   s      S V     c                   a  R  V 3R llpV# )c                    V ^8  d   QhRRRR/# )r   funczCallable[[...], object]r   r   r   )r   s   "r   r   !_deprecated.<locals>.__annotate__&   s     
	 
	3 
	 
	r   c                P   <a  \         P                  ! S 4      R  V V3R ll4       pV# )c               $    V ^8  d   QhRRRRRR/# )r   argsr   kwargsr   r   )r   s   "r   r   4_deprecated.<locals>.decorator.<locals>.__annotate__(   s!     - -v - -F -r   c                 N   < \         P                  ! S\        ^R7       S! V / VB # )r   )category
stacklevel)warningswarnDeprecationWarning)r   r    r   r   s   *,r   wrapper/_deprecated.<locals>.decorator.<locals>.wrapper'   s*    / 
 T,V,,r   )	functoolswraps)r   r(   r   s   f r   	decorator_deprecated.<locals>.decorator&   s*    __T"- - #- Nr   r   )r   r,   s   f r   _deprecatedr.   %   s    
	 
	 r   alphaabetabcrcprepreviewrevpostrInvalidVersionVersionc                   V ^8  d   QhRR/# )r   r   z	list[str]r   )r   s   "r   r   r   B   s       r   c                     \         # N)__all__r   r   r   __dir__r@   B   s    Nr   .c                  T    ] tR t^Qt$ R]R&   R]R&   R]R&   R]R&   R]R&   R	]R
&   RtR# )_VersionReplace
int | Noneepochztuple[int, ...] | Nonereleasetuple[str, int] | Noner5   r8   dev
str | Nonelocalr   N__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r   r   rB   rB   Q   s%    ##	
	Or   rB   F)totalc                    V ^8  d   QhRRRR/# )r   letterr   r   r   )r   s   "r   r   r   Z   s     5 5# 5S 5r   c               L    V P                  4       p \        P                  W 4      # )a  Normalize the pre-release segment of a version string.

Returns a lowercase version of the string if not a known pre-release
identifier.

>>> normalize_pre('alpha')
'a'
>>> normalize_pre('BETA')
'b'
>>> normalize_pre('rc')
'rc'

:param letter:

.. versionadded:: 26.1
)lower_LETTER_NORMALIZATIONget)rS   s   "r   normalize_prerX   Z   s     " \\^F $$V44r   c                    V ^8  d   QhRRRR/# )r   versionr   r   r;   r   )r   s   "r   r   r   o   s      3 7 r   c                    \        V 4      # )zParse the given version string.

This is identical to the :class:`Version` constructor.

>>> 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;   )rZ   s   &r   parser\   o   s     7r   c                      ] tR t^}tRtRtR# )r:   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)rK   rL   rM   rN   __doc__rP   r   r   r   r:   r:   }   s    r   c                      ] tR t^tRt]P                  '       d   ]R R l4       tR R lt	R R lt
R R ltR	 R
 ltR R ltR R ltR R ltRtR# )_BaseVersionc                   V ^8  d   QhRR/# )r   r   ztuple[Any, ...]r   )r   s   "r   r   _BaseVersion.__annotate__   s    ../.r   c                	    R # r>   r   selfs   &r   _key_BaseVersion._key   s    +.r   c                   V ^8  d   QhRR/# r   r   intr   )r   s   "r   r   rb      s      # r   c                	,    \        V P                  4      # r>   )hashrf   rd   s   &r   __hash___BaseVersion.__hash__   s    DIIr   c                    V ^8  d   QhRRRR/# r   otherr`   r   boolr   )r   s   "r   r   rb           & &L &T &r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r>   
isinstancer`   NotImplementedrf   re   rq   s   &&r   __lt___BaseVersion.__lt__   (    %..!!yy5::%%r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   rb           ' 'L 'T 'r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8*  # r>   ru   rx   s   &&r   __le___BaseVersion.__le__   (    %..!!yyEJJ&&r   c                    V ^8  d   QhRRRR/# r   rq   r   r   rr   r   )r   s   "r   r   rb           ' 'F 't 'r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8H  # r>   ru   rx   s   &&r   __eq___BaseVersion.__eq__   r   r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   rb      r}   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r>   ru   rx   s   &&r   __ge___BaseVersion.__ge__   r   r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   rb      rs   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r>   ru   rx   s   &&r   __gt___BaseVersion.__gt__   r{   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   rb      r   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8g  # r>   ru   rx   s   &&r   __ne___BaseVersion.__ne__   r   r   r   N)rK   rL   rM   rN   	__slots__typingTYPE_CHECKINGpropertyrf   rm   ry   r   r   r   r   r   rP   r   r   r   r`   r`      sK    I
 	. 
.&'''&' 'r   r`   a3  
    v?+                                                   # optional leading v
    (?a:
        (?:(?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]+)?
        )?+
    )
    (?a:\+
        (?P<local>                                        # local version
            [a-z0-9]+
            (?:[._-][a-z0-9]+)*+
        )
    )?+
z*+*z?+?cpythonpypyz[a-z0-9]+(?:[._-][a-z0-9]+)*z.0123456789c                    V ^8  d   QhRRRR/# )r   valuer   r   rj   r   )r   s   "r   r   r   
  s      6  r   c               x    T ;'       g    ^ p\        V\        4      '       d
   V^ 8  d   V# RV 2p\        V4      h)    z(epoch must be non-negative integer, got rv   rj   r:   )r   rD   msgs   "  r   _validate_epochr   
  s<    JJQE%%1*4UG
<C

r   c                    V ^8  d   QhRRRR/# )r   r   r   r   tuple[int, ...]r   )r   s   "r   r   r     s     	 	V 	? 	r   c                   V f   RMT p\        V\        4      '       dM   \        V4      ^ 8  d=   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   V# RV 2p\	        V4      h)Nc              3  \   "   T F"  p\        V\        4      ;'       d    V^ 8  x  K$  	  R# 5i)r   N)rv   rj   ).0is   & r   	<genexpr>$_validate_release.<locals>.<genexpr>  s&     ?w!
1c"--qAv-ws   ,,FTz@release must be a non-empty tuple of non-negative integers, got )r   )rv   tuplelenallr:   )r   rE   r   s   "  r   _validate_releaser     sc    mdG7E""L1C?w?CCC?w???LWI
VC

r   c                    V ^8  d   QhRRRR/# )r   r   r   r   *tuple[Literal['a', 'b', 'rc'], int] | Noner   )r   s   "r   r   r     s     
 
 
'Q 
r   c                   V f   V # \        V \        4      '       dG   \        V 4      ^8X  d7   V w  r\        V4      pVR9   d!   \        V\        4      '       d   V^ 8  d   W3# RV  2p\        V4      h)Nz=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got >   r0   r2   r4   )rv   r   r   rX   rj   r:   )r   rS   numberr   s   "   r   _validate_prer     sp    }%CJ!Ov&%%*VS*A*AfPQk##I%
QC

r   c                    V ^8  d   QhRRRR/# )r   r   r   r   "tuple[Literal['post'], int] | Noner   )r   s   "r   r   r   +  s      & (J r   c               p    V f   V # \        V \        4      '       d   V ^ 8  d   RV 3# RV  2p\        V4      h)Nr8   z'post must be non-negative integer, got r   r   r   s   " r   _validate_postr   +  s@    }%%1*3E7
;C

r   c                    V ^8  d   QhRRRR/# )r   r   r   r   !tuple[Literal['dev'], int] | Noner   )r   s   "r   r   r   4  s       'H r   c               p    V f   V # \        V \        4      '       d   V ^ 8  d   RV 3# RV  2p\        V4      h)NrG   z&dev must be non-negative integer, got r   r   s   " r   _validate_devr   4  s@    }%%1*u~25'
:C

r   c                    V ^8  d   QhRRRR/# )r   r   r   r   LocalType | Noner   )r   s   "r   r   r   =  s      6 )9 r   c                   V f   V # \        V \        4      '       d'   \        P                  V 4      '       d   \	        V 4      # RV : 2p\        V4      h)Nz*local must be a valid version string, got )rv   r   _LOCAL_PATTERN	fullmatch_parse_local_versionr:   r   s   " r   _validate_localr   =  sK    }%.":":5"A"A#E**6ui
@C

r   c                  T    ] tR tRt$ R]R&   R]R&   R]R&   R]R	&   R
]R&   R]R&   RtR# )_VersioniG  rj   rD   r   rE   r   rG   r   r5   r   r8   r   rI   r   NrJ   r   r   r   r   r   G  s%    J	**	33
,,r   r   c                    a  ] tR tRt$ RtR[tR\t ]P                  ! R]	,           R,           ]P                  ]P                  ,          4      tR]R&   R]R
&   R]R&   R]R	&   R]R&   R]R&   R]R&   R]R&   R R lt]R^ RRRRRRRR/R R ll4       tR R lt]R  R! l4       tR" R# ltR$ V 3R% lltR& V 3R' lltR( V 3R) lltR* V 3R+ lltR, V 3R- lltR. V 3R/ lltR0 R1 ltR2 R3 lt]]! R44      R5 R6 l4       4       t]P>                  ]! R44      R7 R8 l4       4       tR9 R: lt R; R< lt!]R= R> l4       t"]R? R@ l4       t#]RA RB l4       t$]RC RD l4       t%]RE RF l4       t&]RG RH l4       t']RI RJ l4       t(]RK RL l4       t)]RM RN l4       t*]RO RP l4       t+]RQ RR l4       t,]RS RT l4       t-]RU RV l4       t.]RW RX l4       t/]RY RZ l4       t0R[t1V ;t2# )]r;   iP  aT  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

:class:`Version` is immutable; use :meth:`__replace__` to change
part of a version.

Instances are safe to serialize with :mod:`pickle`. They use a stable
format so the same pickle can be loaded in future packaging releases.

.. versionchanged:: 26.2

    Added a stable pickle format. Pickles created with packaging 26.2+ can
    be unpickled with future releases.  Backward compatibility with pickles
    from packaging < 26.2 is supported but may be removed in a future
    release.
_dev_epoch_hash_cache
_key_cache_local_post_pre_releasez\s*rj   r   r   r   r   r   rC   zCmpKey | Nonec                    V ^8  d   QhRRRR/# )r   rZ   r   r   Noner   )r   s   "r   r   Version.__annotate__  s     0  0  0  0 r   c                \   \         P                  V4      '       db    \        \        \        VP                  R4      4      4      V n        ^ T n	        RT n
        RT n        RT n        RT n        RT n        RT n        R# V P                   P#                  V4      pV'       g   \        RV: 24      hVP%                  R4      '       d   \	        VP%                  R4      4      M^ V n	        \        \        \        VP%                  R4      P                  R4      4      4      V n        \'        VP%                  R4      VP%                  R4      4      V n
        \'        VP%                  R	4      VP%                  R
4      ;'       g    VP%                  R4      4      V n        \'        VP%                  R4      VP%                  R4      4      V n        \)        VP%                  R4      4      V n        RV n        RV n        R#   \         d)    RTP                  R4      9   d   \        RT: 24      Rhh i ; i)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: NrD   rE   pre_lpre_npost_lpost_n1post_n2dev_ldev_nrI   )_SIMPLE_VERSION_INDICATORS
issupersetr   maprj   splitr   
ValueErrorr:   r   r   r   r   r   r   r   _regexr   group_parse_letter_versionr   )re   rZ   matchs   && r   __init__Version.__init__  s    &0099	 %c#w}}S/A&B C DKDIDJDIDK"DO#D %%g. #4WK!@AA38;;w3G3Gc%++g./Qc#u{{9'='C'CC'HIJ *%++g*>G@TU	*KK!5;;y#9#S#SU[[=S

 *%++g*>G@TU	*5;;w+?@ G   s++(+<WK)HItSs   -G8 83H+rD   r5   Nr8   rG   rI   c               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# )r   rD   rj   rE   r   r5   rF   r8   rC   rG   rI   rH   r   r   r   )r   s   "r   r   r     sR     , , , !	,
 $, , , , 
,r   c               @   \        V4      p\        V4      pVe   \        V4      MRp	Ve   \        V4      MRp
Ve   \	        V4      MRpVe   \        V4      MRpV P                  V 4      pRVn        RVn        W}n	        Wn
        Wn        Wn        Wn        Wn        V# )a  
Return a new version composed of the various parts.

This allows you to build a version without going though a string and
running a regular expression. It normalizes pre-release strings. The
``release=`` keyword argument is required.

>>> Version.from_parts(release=(1,2,3))
<Version('1.2.3')>
>>> Version.from_parts(release=(0,1,0), pre=("b", 1))
<Version('0.1.0b1')>

:param epoch:
:param release: This version tuple is required

.. versionadded:: 26.1
N)r   r   r   r   r   r   __new__r   r   r   r   r   r   r   r   )clsrD   rE   r5   r8   rG   rI   r   r   r   r   r   r   new_versions   &$$$$$$       r   
from_partsVersion.from_parts  s    8 !'$W-%(_}S!$(,(8t$d%(_}S!$+0+<'$kk#&!%"&#'!#r   c                    V ^8  d   QhRRRR/# )r   r    zUnpack[_VersionReplace]r   r   r   )r   s   "r   r   r     s     8 8$; 8 8r   c                4   RV9   d   \        VR,          4      MV P                  pRV9   d   \        VR,          4      MV P                  pRV9   d   \	        VR,          4      MV P
                  pRV9   d   \        VR,          4      MV P                  pRV9   d   \        VR,          4      MV P                  pRV9   d   \        VR,          4      MV P                  pW P                  8X  dS   W0P                  8X  dC   W@P
                  8X  d3   WPP                  8X  d#   W`P                  8X  d   WpP                  8X  d   V # V P                  P                  V P                  4      pRVn        RVn        W(n        W8n        WHn        WXn        Whn	        Wxn        V# )aW  
__replace__(*, epoch=..., release=..., pre=..., post=..., dev=..., local=...)

Return a new version with parts replaced.

This returns a new version (unless no parts were changed). The
pre-release is normalized. Setting a value to ``None`` clears it.

>>> v = Version("1.2.3")
>>> v.__replace__(pre=("a", 1))
<Version('1.2.3a1')>

:param int | None epoch:
:param tuple[int, ...] | None release:
:param tuple[str, int] | None pre:
:param int | None post:
:param int | None dev:
:param str | None local:

.. versionadded:: 26.0
.. versionchanged:: 26.1

   The pre-release portion is now normalized.
rD   rE   r5   r8   rG   rI   N)r   r   r   r   r   r   r   r   r   r   r   r   	__class__r   r   r   )	re   r    rD   rE   r5   r8   rG   rI   r   s	   &,       r   __replace__Version.__replace__  sE   2 5<v4Ew04;; F" fY/0 	
 /4vomF5M*4991761A~fVn-tzz.3vomF5M*4994;v4Ew04;; [[ ==(yy 

"yy $Knn,,T^^<!%"&"& "r   c                   V ^8  d   QhRR/# )r   r   CmpKeyr   )r   s   "r   r   r   0  s     
 
f 
r   c                	    V P                   fR   \        V P                  V P                  V P                  V P
                  V P                  V P                  4      V n         V P                   # r>   )r   _cmpkeyr   r   r   r   r   r   rd   s   &r   rf   Version._key/  sN    ??"%		

		DO r   c                   V ^8  d   QhRR/# ri   r   )r   s   "r   r   r   >  s      # r   c                	   V P                   ;pe   V# V P                  ;pfT   \        V P                  V P                  V P
                  V P                  V P                  V P                  4      ;V n        p\        V4      ;V n         pV# r>   )
r   r   r   r   r   r   r   r   r   rl   )re   cached_hashkeys   &  r   rm   Version.__hash__>  s~    +++K8??"C+$+		

		% DOc *.c2;r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   r   P       % %L %T %r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   superry   re   rq   r   s   &&r   ry   Version.__lt__P      eW%%&")KKMMIIJJIIKK# '#*LLNNJJKKJJLL$  ??U%5%555%..!!w~e$$r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   r   k  r   r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8*  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   r   r   r  s   &&r   r   Version.__le__k      eW%%&")KKMMIIJJIIKK# '#*LLNNJJKKJJLL$  ??e&6&666%..!!w~e$$r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r          % %F %t %r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8H  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   r   r   r  s   &&r   r   Version.__eq__  r  r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   r     r   r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   r   r   r  s   &&r   r   Version.__ge__  r  r   c                    V ^8  d   QhRRRR/# rp   r   )r   s   "r   r   r     r   r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   r   r   r  s   &&r   r   Version.__gt__  r  r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r     r	  r   c                	4  < \        V\        4      '       d   V P                  fR   \        V P                  V P
                  V P                  V P                  V P                  V P                  4      V n        VP                  fR   \        VP                  VP
                  VP                  VP                  VP                  VP                  4      Vn        V P                  VP                  8g  # \        V\        4      '       g   \        # \        SV `5  V4      # r>   )rv   r;   r   r   r   r   r   r   r   r   r`   rw   r   r   r  s   &&r   r   Version.__ne__  r  r   c                   V ^8  d   QhRR/# )r   r   zutuple[int, tuple[int, ...], tuple[str, int] | None, tuple[str, int] | None, tuple[str, int] | None, LocalType | None]r   )r   s   "r   r   r     s     
 


r   c                	    V P                   V P                  V P                  V P                  V P                  V P
                  3# r>   )r   r   r   r   r   r   rd   s   &r   __getstate__Version.__getstate__  s8     KKMMIIJJIIKK
 	
r   c                    V ^8  d   QhRRRR/# )r   stater   r   r   r   )r   s   "r   r   r     s     +B +B& +BT +Br   c                	@   R V n         R V n        \        V\        4      '       d   \	        V4      ^8X  d*   Vw  V n        V n        V n        V n        V n	        V n
        R # \	        V4      ^8X  d   Vw  r#\        V\        4      '       dw   VR,          V n        VR,          V n        VP                  R4      V n        VP                  R4      V n        VP                  R4      V n	        VP                  R4      V n
        R # \        V\        4      '       d~   VP                  R4      pVei   VP                  V n        VP                  V n        VP                  V n        VP                   V n        VP"                  V n	        VP$                  V n
        R # \'        RV: 24      h)	Nr   r   r   r   r   r   _versionzCannot restore Version from )r   r   rv   r   r   r   r   r   r   r   r   dictrW   rD   rE   r5   r8   rG   rI   	TypeError)re   r  _	slot_dict
version_nts   &&   r   __setstate__Version.__setstate__  sQ    eU##5zQ KMIJIK5zQ$i.."+H"5DK$-j$9DM )f 5DI!*w!7DJ )f 5DI"+--"9DKeT"" :.J%(.. * 2 2&NN	'__
&NN	(..6ui@AAr   z4Version._version is private and will be removed soonc                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   7  s     
 
( 
r   c                	    \        V P                  V P                  V P                  V P                  V P
                  V P                  4      # r>   )r   r   r   r   r   r   r   rd   s   &r   r  Version._version5  s6     KK		499djj$++
 	
r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r   >  s        h  4  r   c                	    VP                   V n        VP                  V n        VP                  V n        VP                  V n        VP                  V n	        VP                  V n        R V n        R V n        R # r>   )rD   r   rE   r   rG   r   r5   r   r8   r   rI   r   r   r   )re   r   s   &&r   r  r&  <  sU     kkII	II	ZZ
kkr   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r   H  s     = =# =r   c                P    RV P                   P                   R\        V 4      : R2# )zhA representation of the Version that shows all internal state.

>>> Version('1.0.0')
<Version('1.0.0')>
<(z)>)r   rK   r   rd   s   &r   __repr__Version.__repr__H  s(     4>>**+1SYM<<r   c                   V ^8  d   QhRR/# r*  r   )r   s   "r   r   r   P  s       r   c                   RP                  \        \        V P                  4      4      pV P                  '       d   V P                   RV 2pV P
                  e1   VRP                  \        \        V P
                  4      4      ,          pV P                  e   VRV P                   2,          pV P                  e   VRV P                   2,          pV P                  e   VRV P                   2,          pV# )zeA string representation of the version that can be round-tripped.

>>> str(Version("1.0a5"))
'1.0a5'
r   !r   z.postz.dev+)	joinr   r   rE   rD   r5   r8   rG   rI   )re   rZ   s   & r   __str__Version.__str__P  s     ((3sDLL12 :::AgY/G 88rwws3122G 99 tyyk**G 88dhhZ((G ::!4::,''Gr   c                   V ^8  d   QhRR/# r*  r   )r   s   "r   r   r   p  s      c r   c                    \        V 4      # )z Internal property for match_argsr   rd   s   &r   _strVersion._stro  s     4yr   c                   V ^8  d   QhRR/# ri   r   )r   s   "r   r   r   u  s      s r   c                    V P                   # )zWThe epoch of the version.

>>> Version("2.0.0").epoch
0
>>> Version("1!2.0.0").epoch
1
)r   rd   s   &r   rD   Version.epocht  s     {{r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r     s       r   c                    V P                   # )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   rd   s   &r   rE   Version.release  s     }}r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r     s      ? r   c                    V P                   # )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   rd   s   &r   r5   Version.pre  s     yyr   c                   V ^8  d   QhRR/# r   r   rC   r   )r   s   "r   r   r     s     5 5j 5r   c                P    V P                   '       d   V P                   ^,          # R# )zqThe post-release number of the version.

>>> print(Version("1.2.3").post)
None
>>> Version("1.2.3.post1").post
1
N)r   rd   s   &r   r8   Version.post  s     !%


tzz!}44r   c                   V ^8  d   QhRR/# rG  r   )r   s   "r   r   r     s     3 3Z 3r   c                P    V P                   '       d   V P                   ^,          # R# )zmThe development number of the version.

>>> print(Version("1.2.3").dev)
None
>>> Version("1.2.3.dev1").dev
1
N)r   rd   s   &r   rG   Version.dev  s      $yyytyy|2d2r   c                   V ^8  d   QhRR/# )r   r   rH   r   )r   s   "r   r   r     s      z r   c                n    V P                   '       d#   RP                  R V P                    4       4      # R# )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   "   T F  p\        V4      x  K  	  R # 5ir>   r9  )r   xs   & r   r    Version.local.<locals>.<genexpr>  s     8KqCFFKs   N)r   r4  rd   s   &r   rI   Version.local  s)     ;;;888DKK888r   c                   V ^8  d   QhRR/# r*  r   )r   s   "r   r   r     s     * * *r   c                F    \        V 4      P                  R^4      ^ ,          # )a)  The public portion of the version.

This returns a string. If you want a :class:`Version` again and care
about performance, use ``v.__replace__(local=None)`` instead.

>>> 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'
r3  )r   r   rd   s   &r   publicVersion.public  s     4ysA&q))r   c                   V ^8  d   QhRR/# r*  r   )r   s   "r   r   r     s     T Tc Tr   c                    RP                  \        \        V P                  4      4      pV P                  '       d   V P                   RV 2# T# )a  The "base version" of the version.

This returns a string. If you want a :class:`Version` again and care
about performance, use
``v.__replace__(pre=None, post=None, dev=None, local=None)`` instead.

>>> 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   r2  )r4  r   r   rE   rD   )re   release_segments   & r   base_versionVersion.base_version  s@    $ ((3sDLL#9:48JJJ$**Q/0SOSr   c                   V ^8  d   QhRR/# r   r   rr   r   )r   s   "r   r   r     s     < <t <r   c                J    V P                   RJ;'       g    V P                  RJ# )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)rG   r5   rd   s   &r   is_prereleaseVersion.is_prerelease  s$     xxt#;;txxt';;r   c                   V ^8  d   QhRR/# r]  r   )r   s   "r   r   r     s     % % %r   c                    V P                   RJ# )zWhether this version is a post-release.

>>> Version("1.2.3").is_postrelease
False
>>> Version("1.2.3.post1").is_postrelease
True
N)r8   rd   s   &r   is_postreleaseVersion.is_postrelease  s     yy$$r   c                   V ^8  d   QhRR/# r]  r   )r   s   "r   r   r     s     $ $t $r   c                    V P                   RJ# )zWhether this version is a development release.

>>> Version("1.2.3").is_devrelease
False
>>> Version("1.2.3.dev1").is_devrelease
True
N)rG   rd   s   &r   is_devreleaseVersion.is_devrelease  s     xxt##r   c                   V ^8  d   QhRR/# ri   r   )r   s   "r   r   r     s     @ @s @r   c                `    \        V P                  4      ^8  d   V P                  ^ ,          # ^ # )zYThe first item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").major
1
r   rE   rd   s   &r   majorVersion.major  s'     #&dll"3q"8t||A?a?r   c                   V ^8  d   QhRR/# ri   r   )r   s   "r   r   r          @ @s @r   c                `    \        V P                  4      ^8  d   V P                  ^,          # ^ # )zsThe second item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").minor
2
>>> Version("1").minor
0
rk  rd   s   &r   minorVersion.minor  '     #&dll"3q"8t||A?a?r   c                   V ^8  d   QhRR/# ri   r   )r   s   "r   r   r   #  ro  r   c                `    \        V P                  4      ^8  d   V P                  ^,          # ^ # )zrThe third item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").micro
3
>>> Version("1").micro
0
rk  rd   s   &r   microVersion.micro"  rs  r   )r   r   r   r   r   r   r   r   )r:  )3rK   rL   rM   rN   r^   r   __match_args__recompileVERSION_PATTERNVERBOSE
IGNORECASEr   rO   r   classmethodr   r   r   rf   rm   ry   r   r   r   r   r   r  r"  r.   r  setterr.  r5  r:  rD   rE   r5   r8   rG   rI   rU  rZ  r_  rc  rg  rl  rq  rv  rP   __classcell__r   s   @r   r;   r;   P  s   "H	I N ZZ0692::;UVFK
++
44--0 d , ,
 '+,  , , !, ,\8t 
 
$% %6% %6% %6% %6% %6% %6
,+BZ GH
 I 

 __GH  I  =>         5 5 3 3   * * T T( < <  % % $ $ @ @ @ @ @ @r   c                  N   a  ] tR tRtRtR V 3R llt]R V 3R ll4       tRtV ;t	# )_TrimmedReleasei.  c                    V ^8  d   QhRRRR/# )r   rZ   zstr | Versionr   r   r   )r   s   "r   r   _TrimmedRelease.__annotate__1  s     
" 
" 
"$ 
"r   c                	D  < \        V\        4      '       dz   VP                  V n        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        VP                  V n        R # \        SV `)  V4       R # r>   )rv   r;   r   r   r   r   r   r   r   r   r   )re   rZ   r   s   &&r   r   _TrimmedRelease.__init__1  sq    gw''!..DK#,,DMDIDI DJ!..DK%00DO!r   c                   V ^8  d   QhRR/# r@  r   )r   s   "r   r   r  >  s     4 4 4r   c                   < \         SV `  p\        V4      pTpV^8  d    W^,
          ,          ^ 8X  d   V^,          pK&  W28X  d   V# VRV # )z
Release segment without any trailing zeros.

>>> _TrimmedRelease('1.0.0').release
(1,)
>>> _TrimmedRelease('0.0').release
(0,)
N)r   rE   r   )re   rellen_releaser   r   s   &   r   rE   _TrimmedRelease.release=  sN     go#h!eE
aFA&s3CG3r   )r   r   r   r   r   r   r   r   )
rK   rL   rM   rN   r   r   r   rE   rP   r  r  s   @r   r  r  .  s&    I
" 
" 4 4r   r  c               $    V ^8  d   QhRRRRRR/# )r   rS   rH   r   z str | bytes | SupportsInt | Noner   rF   r   )r   s   "r   r   r   P  s$       @r   c                    V '       d=   V P                  4       p \        P                  W 4      p T \        T;'       g    ^ 4      3# V'       d   R\        V4      3# R# )r   r8   N)rU   rV   rW   rj   )rS   r   s   &&r   r   r   P  sS     
 '**6: s6;;Q''' s6{""r   z[\._-]c                    V ^8  d   QhRRRR/# )r   rI   rH   r   r   r   )r   s   "r   r   r   k  s     
 

 
/? 
r   c                    V eS   \         ;QJ d'    . R \        P                  V 4       4       F  NK  	  5# ! R \        P                  V 4       4       4      # R# )zT
Takes a string like ``"abc.1.twelve"`` and turns it into
``("abc", 1, "twelve")``.
Nc              3     "   T F6  pVP                  4       '       g   VP                  4       M
\        V4      x  K8  	  R # 5ir>   )isdigitrU   rj   )r   parts   & r   r   '_parse_local_version.<locals>.<genexpr>q  s0      
> !%DJJLCI=>s
   A #A )r   _local_version_separatorsr   )rI   s   &r   r   r   k  sW    
 u 
177>
u 	
u 
177>
 
 	
 r   c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# )r   rD   rj   rE   r   r5   rF   r8   rG   rI   r   r   r   r   )r   s   "r   r   r     sW     J- J-J-J- 
 J- !	J-
 
 J- J- J-r   c                   \        V4      pTpV'       d    W^,
          ,          ^ 8X  d   V^,          pK'  Wv8X  d   TMVRV pVf   Vf   Vf   Vf	   W\        3# Vf   Vf   Ve	   \        ^ rM(Vf	   \        ^ rM\        V^ ,          ,          V^,          rVf   ^ M^pVf   ^ MV^,          pVf   ^M^ pVf   ^ MV^,          pWWW3pVf   WV3# \
        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      pWVV3# )aA  Build a comparison key for PEP 440 ordering.

Returns ``(epoch, release, suffix)`` or
``(epoch, release, suffix, local)`` so that plain tuple
comparison gives the correct order.

Trailing zeros are stripped from the release so that ``1.0.0 == 1``.

The suffix is a flat 6-int tuple that encodes pre/post/dev:
``(pre_rank, pre_n, post_rank, post_n, dev_rank, dev_n)``

pre_rank: dev-only=-1, a=0, b=1, rc=2, no-pre=3
    Dev-only releases (no pre or post) get -1 so they sort before
    any alpha/beta/rc.  Releases without a pre-release tag get 3
    so they sort after rc.
post_rank: no-post=0, post=1
    Releases without a post segment sort before those with one.
dev_rank: dev=0, no-dev=1
    Releases without a dev segment sort after those with one.

Local segments use ``(n, "")`` for ints and ``(-1, s)`` for strings,
following PEP 440: strings sort before ints, strings compare
lexicographically, ints compare numerically, and shorter segments
sort before longer when prefixes match.  Versions without a local
segment sort before those with one (3-tuple < 4-tuple).

>>> _cmpkey(0, (1, 0, 0), None, None, None, None)
(0, (1,), (3, 0, 0, 0, 1, 0))
>>> _cmpkey(0, (1,), ("a", 1), None, None, None)
(0, (1,), (0, 1, 0, 0, 1, 0))
>>> _cmpkey(0, (1,), None, None, None, ("ubuntu", 1))
(0, (1,), (3, 0, 0, 0, 1, 0), ((-1, 'ubuntu'), (1, '')))
Nc              3  f   "   T F'  p\        V\        4      '       d   VR 3M\        V3x  K)  	  R# 5i)r   N)rv   rj   _LOCAL_STR_RANK)r   segs   & r   r   _cmpkey.<locals>.<genexpr>  s.      $QV#ZS))b	/EEQVs   /1)r   _STABLE_SUFFIX_PRE_RANK_DEV_ONLY_PRE_RANK_STABLE	_PRE_RANKr   )rD   rE   r5   r8   rG   rI   r  r   trimmedpre_rankr   	post_rankpost_ndev_rankr   suffix	cmp_locals   &&&&&&           r   r   r     s   T g,KA
A!#	Q)gwr{G {t|~--
{t|,a%	*A%#CF+SV%\qI,QDGFKqQHA#a&Ey(BF}v%%#e $QV$ee $QV$ I 69,,r   )      )r{  r:   r;   rX   r\   )r        )r  r  r  )r  r  )Fr^   
__future__r   ry  sysr   r   r   r   r   r   r   r	   r
   r   typing_extensionsr   r   version_infor%   r   r.   r*   rV   r?   r@   rj   r   	LocalTypeCmpLocalType	CmpSuffixr   rr   VersionComparisonMethodrB   rX   r\   r   r:   r`   _VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer{  rz  r}  ASCIIr   	frozensetr   r   r   r   r   r   r   r   r;   r  r   r  r   r  r  r  r  r  r   r   r   r   <module>r     s   # 	 
 	 	 	 
.w2;" S
C	4t	6  U %S/3&'	U38_c)*#sCc3./			#uS#X	
)*	#uS#X	<
78:
 #FF#3T#9: iu 5*Z 3' 3't" H (//c:BB4M  	9,1A1AJ1N6)c.>.>.L
'!  
 $ ;R]]RXX=UV '}5 	
z [@l [@|4g 4D0 JJy1 
 !S!T1%	    #Aq!Q2J-r   