a0bi?`SrSSKrSSKrSSKrSSKJrJrJrJrJ r J r SSK J r J r JrJr /SQr\ \ \4r\ \\ \\44r\ \\\4r\ \\ \ \\ \\4\ \\44S44r\ \\ \S4\\\\4r\\\/\4r\R4"S/S Q5rS \S S 4S jr"SS\5r"SS5rSr \ r!"SS \5r"S\S\ \\#\4S \\ \\44Sjr$\RJ"S5r&S\S \\4Sjr'S\S\ \S4S\\ \\4S\\ \\4S\\ \\4S\\ \S \4Sjr(g) zB .. testsetup:: from packaging.version import parse, Version N)AnyCallableOptional SupportsIntTupleUnion)Infinity InfinityTypeNegativeInfinityNegativeInfinityType)VERSION_PATTERNparseVersionInvalidVersion._Version)epochreleasedevprepostlocalversionreturnrc[U5$)zParse the given version string. >>> parse('1.0.dev1') :param version: The version string to parse. :raises InvalidVersion: When the version string is not a valid version. )r)rs ڝ/builddir/build/BUILDROOT/alt-python313-setuptools-69.0.2-3.el8.x86_64/opt/alt/python313/lib/python3.13/site-packages/setuptools/_vendor/packaging/version.pyrr+s 7 c\rSrSrSrSrg)r7zRaised when a version string is not a valid version. >>> Version("invalid") Traceback (most recent call last): ... packaging.version.InvalidVersion: Invalid version: 'invalid' N)__name__ __module__ __qualname____firstlineno____doc____static_attributes__r rrrr7srrc\rSrSr%\\S4\S'S\4SjrSSS\ 4Sjr SSS\ 4Sjr S\ S\ 4S jr SSS\ 4S jrSSS\ 4S jrS\ S\ 4S jrS rg) _BaseVersionA._keyrc,[UR5$N)hashr*selfs r__hash___BaseVersion.__hash__DsDIIrothercj[U[5(d[$URUR:$r, isinstancer(NotImplementedr*r/r2s r__lt___BaseVersion.__lt__J(%..! !yy5::%%rcj[U[5(d[$URUR:*$r,r4r7s r__le___BaseVersion.__le__P(%..! !yyEJJ&&rcj[U[5(d[$URUR:H$r,r4r7s r__eq___BaseVersion.__eq__Vr>rcj[U[5(d[$URUR:$r,r4r7s r__ge___BaseVersion.__ge__\r>rcj[U[5(d[$URUR:$r,r4r7s r__gt___BaseVersion.__gt__br:rcj[U[5(d[$URUR:g$r,r4r7s r__ne___BaseVersion.__ne__hr>rr N)r!r"r#r$rr__annotations__intr0boolr8r<objectr@rCrFrIr&r rrr(r(As S/# &N&t& 'N't' 'F't' 'N't' &N&t& 'F't'rr(a v? (?: (?:(?P[0-9]+)!)? # epoch (?P[0-9]+(?:\.[0-9]+)*) # release segment (?P
                                          # pre-release
            [-_\.]?
            (?P(a|b|c|rc|alpha|beta|pre|preview))
            [-_\.]?
            (?P[0-9]+)?
        )?
        (?P                                         # post release
            (?:-(?P[0-9]+))
            |
            (?:
                [-_\.]?
                (?Ppost|rev|r)
                [-_\.]?
                (?P[0-9]+)?
            )
        )?
        (?P                                          # dev release
            [-_\.]?
            (?Pdev)
            [-_\.]?
            (?P[0-9]+)?
        )?
    )
    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
c.\rSrSr%Sr\R"S\-S-\R\R-5r
\\S'S\
SS4S	jrS\
4S
jrS\
4Sjr\S\4Sj5r\S\\S
44Sj5r\S\\\
\44Sj5r\S\\4Sj5r\S\\4Sj5r\S\\
4Sj5r\S\
4Sj5r\S\
4Sj5r\S\4Sj5r\S\4Sj5r\S\4Sj5r \S\4Sj5r!\S\4Sj5r"\S\4Sj5r#Sr$g)ramThis 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

>>> v2

>>> v1 < v2
True
>>> v1 == v2
False
>>> v1 > v2
False
>>> v1 >= v2
False
>>> v1 <= v2
True
z^\s*z\s*$r*rrNcURRU5nU(d[SUS35e[UR	S5(a[UR	S55OS[
SUR	S5RS555[UR	S5UR	S	55[UR	S
5UR	S5=(d UR	S55[UR	S
5UR	S55[UR	S55S9Ul
[URRURRURRURRURR URR"5Ulg)aInitialize 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.
zInvalid version: ''rrc38# UHn[U5v M g7fr,)rL.0is  r	#Version.__init__..sL*KQ#a&&*Kr.pre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrrN)_regexsearchrrgrouprLtuplesplit_parse_letter_version_parse_local_version_version_cmpkeyrrrrrrr*)r/rmatchs   r__init__Version.__init__sU""7+ #5gYa!@AA!/4{{7/C/C#ekk'*+L%++i*@*F*Fs*KLL%ekk'&:EKK>> Version('1.0.0')

z
r r.s r__repr__Version.__repr__sD6%%rcd/nURS:waURURS35 URSRSUR555 URb1URSRSUR555 UR
bURSUR
35 URbURSUR35 URbURS	UR35 SRU5$)
zgA string representation of the version that can be rounded-tripped.

>>> str(Version("1.0a5"))
'1.0a5'
r!rZc38# UHn[U5v M g7fr,strrUxs  rrW"Version.__str__..;lc!fflrYc38# UHn[U5v M g7fr,rtrvs  rrWrxs :AQrYz.postz.dev+)rappendjoinrrrrrr/partss  r__str__Version.__str__s::?LLDJJ>> Version("2.0.0").epoch
0
>>> Version("1!2.0.0").epoch
1
)rir)r/_epochs  rr
Version.epochsmm))
r.c2URRnU$)aThe 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.
)rir)r/_releases  rrVersion.releases%)MM$9$9rc2URRnU$)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)
)rir)r/_pres  rrVersion.pre$s+/--*;*;rcnURR(aURRS$S$)zqThe post-release number of the version.

>>> print(Version("1.2.3").post)
None
>>> Version("1.2.3.post1").post
1
r	N)rirr.s rrVersion.post4s*)-

(:(:t}}!!!$DDrcnURR(aURRS$S$)zmThe development number of the version.

>>> print(Version("1.2.3").dev)
None
>>> Version("1.2.3.dev1").dev
1
r	N)rirr.s rrVersion.dev?s*(,}}'8'8t}}  #BdBrcURR(a,SRSURR55$g)zwThe local version segment of the version.

>>> print(Version("1.2.3").local)
None
>>> Version("1.2.3+abc").local
'abc'
rZc38# UHn[U5v M g7fr,rtrvs  rrW Version.local..Ts@,?qCFF,?rYN)rirr~r.s rr
Version.localJs3==88@DMM,?,?@@@rc>[U5RSS5S$)zThe public portion of the version.

>>> Version("1.2.3").public
'1.2.3'
>>> Version("1.2.3+abc").public
'1.2.3'
>>> Version("1.2.3+abc.dev1").public
'1.2.3'
r|r	r)rurfr.s rpublicVersion.publicXs4ysA&q))rc/nURS:waURURS35 URSRSUR555 SRU5$)aThe "base version" of the version.

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

The "base version" is the public version of the project without any pre or post
release markers.
rrrrZc38# UHn[U5v M g7fr,rtrvs  rrW'Version.base_version..zryrYrz)rr}r~rrs  rbase_versionVersion.base_versiones\::?LLDJJ>> 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)rrr.s r
is_prereleaseVersion.is_prerelease~s!xxt#;txxt';;rcURSL$)zWhether this version is a post-release.

>>> Version("1.2.3").is_postrelease
False
>>> Version("1.2.3.post1").is_postrelease
True
N)rr.s ris_postreleaseVersion.is_postreleasesyy$$rcURSL$)zWhether this version is a development release.

>>> Version("1.2.3").is_devrelease
False
>>> Version("1.2.3.dev1").is_devrelease
True
N)rr.s r
is_devreleaseVersion.is_devreleasesxxt##rcV[UR5S:aURS$S$)zYThe first item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").major
1
r	rlenrr.s rmajor
Version.majors'#&dll"3q"8t||A?a?rcV[UR5S:aURS$S$)zsThe second item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").minor
2
>>> Version("1").minor
0
r	rrr.s rminor
Version.minor'#&dll"3q"8t||A?a?rcV[UR5S:aURS$S$)zrThe third item of :attr:`release` or ``0`` if unavailable.

>>> Version("1.2.3").micro
3
>>> Version("1").micro
0
rrrr.s rmicro
Version.microrr)r*ri)%r!r"r#r$r%recompilerVERBOSE
IGNORECASErbCmpKeyrKrurlrorpropertyrLrrrrrrrrrrrMrrrrrrr&r rrrrs.ZZ/1G;RZZ"--=W
XF
L$
$
$
L&#&B	s		sCx 
XeCHo.

EhsmEECXc]CCx}
*
*
*c0F
WF
v
F
.
.F
|
#Fs6{""fs6{""rz[\._-]rcTUb%[S[RU555$g)zJ
Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
Nc3# UH5nUR5(dUR5O
[U5v M7 g7fr,)isdigitrrL)rUparts  rrW'_parse_local_version..s0
>!%DJJLCI=>s=?)re_local_version_separatorsrf)rs rrhrhs4

177>

	
rrrrrrc$[[[[R"S[U55555nUc
Uc
Ub[
nOUc[nOUnUc[
nOUnUc[n	OUn	Uc[
n
O[SU55n
XXxX4$)NcUS:H$)Nrr )rws r_cmpkey..sAFrc3d# UH&n[U[5(aUS4O[U4v M( g7f)rzN)r5rLrrTs  rrW_cmpkey..0s.
NSz!S))QG0@!/DDes.0)rereversedlist	itertools	dropwhilerr
)rrrrrrrr_post_dev_locals           rrjrjsi))*:HWrs-	EEWW
Cl$889
}eCHo56]C,-	
,#$&45
7	

		


	
sCx...)S
#FF#3T#9:!!C
	3	9	Z+'+'`>#	e@le@P	!!sE;67!
eCHo!HJJy1		(;	<6<6
38_<6
%S/	"<65c?
#	<6

%S/	"<6E,'(
<6<6r