+
    yj                       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 ]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	TypedDictUnion)SelfUnpack)
deprecatedc                    V ^8  d   QhRRRR/# )   messagestrreturnobject )formats   "E/var/www/html/2rare/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   A   s       r   c                     \         # N)__all__r   r   r   __dir__r?   A   s    Nr   .c                  T    ] tR t^Pt$ 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] | Noner4   r7   dev
str | Nonelocalr   N__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r   r   rA   rA   P   s%    ##	
	Or   rA   F)totalc                    V ^8  d   QhRRRR/# )r   letterr   r   r   )r   s   "r   r   r   Y   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)rR   s   "r   normalize_prerW   Y   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   n   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:   )rY   s   &r   parser[   n   s     7r   c                      ] tR t^|tRtRtR# )r9   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)rJ   rK   rL   rM   __doc__rO   r   r   r   r9   r9   |   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   ra      s      # r   c                	,    \        V P                  4      # r=   )hashre   rc   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   ra           & &L &T &r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r=   
isinstancer_   NotImplementedre   rd   rp   s   &&r   __lt___BaseVersion.__lt__   (    %..!!yy5::%%r   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r   r   ra           ' 'L 'T 'r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8*  # r=   rt   rw   s   &&r   __le___BaseVersion.__le__   (    %..!!yyEJJ&&r   c                    V ^8  d   QhRRRR/# r   rp   r   r   rq   r   )r   s   "r   r   ra           ' 'F 't 'r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8H  # r=   rt   rw   s   &&r   __eq___BaseVersion.__eq__   r   r   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r   r   ra      r|   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r=   rt   rw   s   &&r   __ge___BaseVersion.__ge__   r   r   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r   r   ra      rr   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8  # r=   rt   rw   s   &&r   __gt___BaseVersion.__gt__   rz   r   c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   ra      r   r   c                	l    \        V\        4      '       g   \        # V P                  VP                  8g  # r=   rt   rw   s   &&r   __ne___BaseVersion.__ne__   r   r   r   N)rJ   rK   rL   rM   	__slots__typingTYPE_CHECKINGpropertyre   rl   rx   r~   r   r   r   r   rO   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   ri   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 ru   ri   r9   )r   rC   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)ru   ri   ).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   )ru   tuplelenallr9   )r   rD   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      '       d]   \        V 4      ^8X  dM   V w  r\        V\        4      '       d3   \	        V4      ;pR9   d!   \        V\
        4      '       d   V^ 8  d   W23# RV  2p\        V4      h)Nz=pre must be a tuple of ('a'|'b'|'rc', non-negative int), got >   r/   r1   r3   )ru   r   r   r   rW   ri   r9   )r   rR   number
normalizedr   s   "    r   _validate_prer     s    }%CJ!O vs##,V449II63''! ''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)Nr7   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   8  s       'H r   c               p    V f   V # \        V \        4      '       d   V ^ 8  d   RV 3# RV  2p\        V4      h)NrF   z&dev must be non-negative integer, got r   r   s   " r   _validate_devr   8  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   A  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 )ru   r   _LOCAL_PATTERN	fullmatch_parse_local_versionr9   r   s   " r   _validate_localr   A  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# )_VersioniK  ri   rC   r   rD   r   rF   r   r4   r   r7   r   rH   r   NrI   r   r   r   r   r   K  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:   iT  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*ri   r   r   r   r   r   rB   zCmpKey | Nonec                    V ^8  d   QhRRRR/# )r   rY   r   r   Noner   )r   s   "r   r   Version.__annotate__  s     :  :  :  : r   c                    \         P                  V4      pT'       db    \	        \        \        TP                  R4      4      4      T n        ^ T n        RT n        RT n        RT n        RT n        RT n        RT n        R#  T P$                  P'                  T4      pT'       g   \        RT: 24      hTP)                  R4      '       d   \        TP)                  R4      4      M^ T n        \	        \        \        TP)                  R4      P                  R4      4      4      T n        \+        TP)                  R4      TP)                  R4      4      T n        \+        TP)                  R	4      TP)                  R
4      ;'       g    TP)                  R4      4      T n        \+        TP)                  R4      TP)                  R4      4      T n        \-        TP)                  R4      4      T n        RT n        RT n        R#   \         d    \        RT: 24      Rhi ; i  \         d    \        RT: 24      Rh\         d)    RTP                  R4      9   d   \        RT: 24      Rhh i ; i  \         d    \        RT: 24      R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: N. rC   rD   pre_lpre_npost_lpost_n1post_n2dev_ldev_nrH   )_SIMPLE_VERSION_INDICATORS
issuperset	TypeErrorr9   r   mapri   splitr   AttributeError
ValueErrorr   r   r   r   r   r   r   _regexr   group_parse_letter_versionr   )rd   rY   	is_simplematchs   &&  r   __init__Version.__init__  s:   	L2==gFI  %c#w}}S/A&B C DKDIDJDIDK"DO#D	LKK))'2E  #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+?@ ]  	L #4WK!@AtK	L " P$'8%DE4O  s++(+<WK)HItS*  	L #4WK!@AtK	Ls(   G< -H I+ <H#I(?)I(+JrC   r4   Nr7   rF   rH   c               4    V ^8  d   QhRRRRRRRRR	RR
RRR/# )r   rC   ri   rD   r   r4   rE   r7   rB   rF   rH   rG   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   )clsrC   rD   r4   r7   rF   rH   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.
rC   rD   r4   r7   rF   rH   N)r   r   r   r   r   r   r   r   r   r   r   r   	__class__r   r   r   )	rd   r   rC   rD   r4   r7   rF   rH   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   >  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   rc   s   &r   re   Version._key=  sN    ??"%		

		DO r   c                   V ^8  d   QhRR/# rh   r   )r   s   "r   r   r   L  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   rk   )rd   cached_hashkeys   &  r   rl   Version.__hash__L  s~    +++K8??"C+$+		

		% DOc *.c2;r   c                    V ^8  d   QhRRRR/# ro   r   )r   s   "r   r   r   ^       % %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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   superrx   rd   rp   r   s   &&r   rx   Version.__lt__^      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/# ro   r   )r   s   "r   r   r   y  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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   r  r~   r  s   &&r   r~   Version.__le__y      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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   r  r   r  s   &&r   r   Version.__eq__  r
  r   c                    V ^8  d   QhRRRR/# ro   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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   r  r   r  s   &&r   r   Version.__ge__  r
  r   c                    V ^8  d   QhRRRR/# ro   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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   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=   )ru   r:   r   r   r   r   r   r   r   r   r_   rv   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   rc   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   ru   r   r   r   r   r   r   r   r   dictrV   rC   rD   r4   r7   rF   rH   r   )rd   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   E  s     
 
( 
r   c                	    \        V P                  V P                  V P                  V P                  V P
                  V P                  4      # r=   )r   r   r   r   r   r   r   rc   s   &r   r  Version._versionC  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   L  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=   )rC   r   rD   r   rF   r   r4   r   r7   r   rH   r   r   r   )rd   r   s   &&r   r  r(  J  sU     kkII	II	ZZ
kkr   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r   V  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   rJ   r   rc   s   &r   __repr__Version.__repr__V  s(     4>>**+1SYM<<r   c                   V ^8  d   QhRR/# r,  r   )r   s   "r   r   r   ^  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   rD   rC   r4   r7   rF   rH   )rd   rY   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                   V ^8  d   QhRR/# r,  r   )r   s   "r   r   r   ~  s      c r   c                    \        V 4      # )z Internal property for match_argsr   rc   s   &r   _strVersion._str}  s     4yr   c                   V ^8  d   QhRR/# rh   r   )r   s   "r   r   r     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   rc   s   &r   rC   Version.epoch  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   rc   s   &r   rD   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   rc   s   &r   r4   Version.pre  s     yyr   c                   V ^8  d   QhRR/# r   r   rB   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   rc   s   &r   r7   Version.post  s     !%


tzz!}44r   c                   V ^8  d   QhRR/# rI  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   rc   s   &r   rF   Version.dev  s      $yyytyy|2d2r   c                   V ^8  d   QhRR/# )r   r   rG   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=   r;  )r   xs   & r   r    Version.local.<locals>.<genexpr>  s     8KqCFFKs   N)r   r6  rc   s   &r   rH   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'
r5  )r   r   rc   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   r4  )r6  r   r   rD   rC   )rd   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   rq   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)rF   r4   rc   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)r7   rc   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)rF   rc   s   &r   is_devreleaseVersion.is_devrelease  s     xxt##r   c                   V ^8  d   QhRR/# rh   r   )r   s   "r   r   r     s     @ @s @r   c                `    \        V P                  4      ^8  d   V P                  ^ ,          # ^ # )zqThe first item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").major
1

.. versionadded:: 20.0
r   rD   rc   s   &r   majorVersion.major  s'     #&dll"3q"8t||A?a?r   c                   V ^8  d   QhRR/# rh   r   )r   s   "r   r   r   (       
@ 
@s 
@r   c                `    \        V P                  4      ^8  d   V P                  ^,          # ^ # )zThe second item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").minor
2
>>> Version("1").minor
0

.. versionadded:: 20.0
rm  rc   s   &r   minorVersion.minor'  '     #&dll"3q"8t||A?a?r   c                   V ^8  d   QhRR/# rh   r   )r   s   "r   r   r   5  rq  r   c                `    \        V P                  4      ^8  d   V P                  ^,          # ^ # )zThe third item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").micro
3
>>> Version("1").micro
0

.. versionadded:: 20.0
rm  rc   s   &r   microVersion.micro4  ru  r   r   r   r   r   r   r   r   r   )r<  )3rJ   rK   rL   rM   r]   r   __match_args__recompileVERSION_PATTERNVERBOSE
IGNORECASEr   rN   r   classmethodr   r   r   re   rl   rx   r~   r   r   r   r   r  r$  r-   r  setterr0  r7  r<  rC   rD   r4   r7   rF   rH   rW  r\  ra  re  ri  rn  rs  rx  rO   __classcell__r   s   @r   r:   r:   T  s   "H	I N ZZ0692::;UVFK
++
44--: x , ,
 '+,  , , !, ,\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	# )_TrimmedReleaseiB  c                    V ^8  d   QhRRRR/# )r   rY   zstr | Versionr   r   r   )r   s   "r   r   _TrimmedRelease.__annotate__E  s     " " "$ "r   c                	f  < \        V\        4      '       d   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        VP                  V n	        R # \        SV `-  V4       R # r=   )ru   r:   r   r   r   r   r   r   r   r   r  r   )rd   rY   r   s   &&r   r   _TrimmedRelease.__init__E  s    gw''!..DK#,,DMDIDI DJ!..DK%00DO&22D!r   c                   V ^8  d   QhRR/# rB  r   )r   s   "r   r   r  S  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  rD   r   )rd   rellen_releaser   r   s   &   r   rD   _TrimmedRelease.releaseR  sN     go#h!eE
aFA&s3CG3r   rz  r   )
rJ   rK   rL   rM   r   r   r   rD   rO   r  r  s   @r   r  r  B  s&    I" " 4 4r   r  c               $    V ^8  d   QhRRRRRR/# )r   rR   rG   r   z str | bytes | SupportsInt | Noner   rE   r   )r   s   "r   r   r   e  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   r7   N)rT   rU   rV   ri   )rR   r   s   &&r   r   r   e  sS     
 '**6: s6;;Q''' s6{""r   z[\._-]c                    V ^8  d   QhRRRR/# )r   rH   rG   r   r   r   )r   s   "r   r   r     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=   )isdigitrT   ri   )r   parts   & r   r   '_parse_local_version.<locals>.<genexpr>  s0      
> !%DJJLCI=>s
   A #A )r   _local_version_separatorsr   )rH   s   &r   r   r     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   rC   ri   rD   r   r4   rE   r7   rF   rH   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)ru   ri   _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   )rC   rD   r4   r7   rF   rH   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~  r9   r:   rW   r[   )r        )r  r  r  )r  r  )Fr]   
__future__r   r|  sysr   r   r   r   r   r   r   r	   r   typing_extensionsr
   r   version_infor$   r   r-   r)   rU   r>   r?   r   ri   r   	LocalTypeCmpLocalType	CmpSuffixr   rq   VersionComparisonMethodrA   rW   r[   r   r9   r_   _VERSION_PATTERNreplace_VERSION_PATTERN_OLDimplementationnamer~  r}  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 k@l k@\ 4g  4F0 JJy1 
 !S!T1%	    #Aq!Q2J-r   