o )an< @sddlmZmZmZddlZddlZddlZddlmZm Z ddl m Z e rddl m Z mZmZmZmZmZmZddlmZmZeeefZeeeeeffZeeeefZeeeeeeeefeeeffdffZeeeedfeeeefZeeeedffZe eeefeeefgefZgd Z e!d gd Z"d d Z#Gddde$Z%Gddde&Z'Gddde'Z(e)dej*Z+ddddddZ,ddZ-ddZ.dZ/Gddde'Z0d d!Z1e)d"Z2d#d$Z3d%d&Z4dS)')absolute_importdivisionprint_functionN)InfinityNegativeInfinity) TYPE_CHECKING)CallableIteratorListOptional SupportsIntTupleUnion) InfinityTypeNegativeInfinityType.)parseVersion LegacyVersionInvalidVersionVERSION_PATTERN_Version)epochreleasedevprepostlocalcCs&zt|WStyt|YSw)z Parse the given version string and return either a :class:`Version` object or a :class:`LegacyVersion` object depending on if the given version is a valid PEP 440 version or a legacy version. )rrr)versionrZ/opt/alt/python310/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.pyr0s    rc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrr r=src@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS) _BaseVersionNcCs t|jSN)hash_keyselfrrr __hash__Fs z_BaseVersion.__hash__cC||ddS)NcSs||kSr&rsorrr Lz%_BaseVersion.__lt__.._comparer*otherrrr __lt__Jz_BaseVersion.__lt__cCr,)NcSs||kSr&rr-rrr r0Pr1z%_BaseVersion.__le__..r2r4rrr __le__Nr7z_BaseVersion.__le__cCr,)NcSs||kSr&rr-rrr r0Tr1z%_BaseVersion.__eq__..r2r4rrr __eq__Rr7z_BaseVersion.__eq__cCr,)NcSs||kSr&rr-rrr r0Xr1z%_BaseVersion.__ge__..r2r4rrr __ge__Vr7z_BaseVersion.__ge__cCr,)NcSs||kSr&rr-rrr r0\r1z%_BaseVersion.__gt__..r2r4rrr __gt__Zr7z_BaseVersion.__gt__cCr,)NcSs||kSr&rr-rrr r0`r1z%_BaseVersion.__ne__..r2r4rrr __ne__^r7z_BaseVersion.__ne__cCst|tstS||j|jSr&) isinstancer%NotImplementedr()r*r5methodrrr r3bs z_BaseVersion._compare) r!r"r#r(r+r6r8r9r:r;r<r3rrrr r%Cs r%c@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZeddZeddZdS)rcCst||_t|j|_dSr&)str_version_legacy_cmpkeyr()r*rrrr __init__ks zLegacyVersion.__init__cC|jSr&rAr)rrr __str__pszLegacyVersion.__str__cCdtt|S)Nzformatreprr@r)rrr __repr__tzLegacyVersion.__repr__cCrDr&rEr)rrr publicxzLegacyVersion.publiccCrDr&rEr)rrr base_version}rNzLegacyVersion.base_versioncCdS)Nrr)rrr rzLegacyVersion.epochcCdSr&rr)rrr rrRzLegacyVersion.releasecCrSr&rr)rrr rrRzLegacyVersion.precCrSr&rr)rrr rrRzLegacyVersion.postcCrSr&rr)rrr rrRzLegacyVersion.devcCrSr&rr)rrr rrRzLegacyVersion.localcCrPNFrr)rrr is_prereleaserRzLegacyVersion.is_prereleasecCrPrTrr)rrr is_postreleaserRzLegacyVersion.is_postreleasecCrPrTrr)rrr is_devreleaserRzLegacyVersion.is_devreleaseN)r!r"r#rCrFrKpropertyrMrOrrrrrrrUrVrWrrrr rjs4          rz(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcrccs^t|D]#}t||}|r|dkrq|dddvr$|dVqd|VqdVdS)N.r 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r.partrrr _parse_version_partss    ricCsd}g}t|D]8}|dr=|dkr)|r)|ddkr)||r)|ddks|r=|ddkr=||r=|ddks1||q |t|fS)NrQrarbz*final-Z00000000)rilower startswithpopappendtuple)rrpartsrhrrr rBs   rBa 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@seZdZededejejBZddZ	ddZ
ddZed	d
Z
eddZed
dZeddZeddZeddZeddZeddZeddZeddZeddZedd Zed!d"Zed#d$Zd%S)&rz^\s*z\s*$c
Cs|j|}|std|t|drt|dndtdd|ddDt	|d|d	t	|d
|dpC|dt	|d
|dt
|dd|_t|jj
|jj|jj|jj|jj|jj|_dS)NzInvalid version: '{0}'rrcs|]}t|VqdSr&)int.0irrr 	z#Version.__init__..rr^Zpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrr)_regexsearchrrIrgrouprqrnrd_parse_letter_version_parse_local_versionrA_cmpkeyrrrrrrr()r*rmatchrrr rCs*
zVersion.__init__cCrG)NzrHr)rrr rK-rLzVersion.__repr__cCsg}|jdkr|d|j|ddd|jD|jdur1|ddd|jD|jdur?|d|j|jdurM|d	|j|jdur[|d
|jd|S)Nr{0}!r^csrpr&r@rsxrrr ru:rvz"Version.__str__..csrpr&rrrrr ru>rvz.post{0}z.dev{0}z+{0})	rrmrIjoinrrrrrr*rorrr rF1s





zVersion.__str__cC|jj}|Sr&)rAr)r*Z_epochrrr rNz
Version.epochcCrr&)rAr)r*_releaserrr rTrzVersion.releasecCrr&)rAr)r*_prerrr rZrzVersion.precC|jjr
|jjdSdSNr)rArr)rrr r`zVersion.postcCrr)rArr)rrr rerzVersion.devcCs$|jjrddd|jjDSdS)Nr^csrpr&rrrrr runrvz Version.local..)rArrr)rrr rjsz
Version.localcCst|dddS)N+rr)r@rdr)rrr rMrzVersion.publiccCsFg}|jdkr|d|j|ddd|jDd|S)Nrr~r^csrpr&rrrrr rurvz'Version.base_version..r)rrmrIrrrrrr rOws


zVersion.base_versioncCs|jdup	|jduSr&)rrr)rrr rUrzVersion.is_prereleasecC
|jduSr&)rr)rrr rV
zVersion.is_postreleasecCrr&)rr)rrr rWrzVersion.is_devreleasecCst|jdkr|jdSdS)Nrrlenrr)rrr majorz
Version.majorcCt|jdkr|jdSdS)Nrrrr)rrr minorrz
Version.minorcCr)Nrrrr)rrr microrz
Version.microN)r!r"r#recompilerVERBOSE
IGNORECASErwrCrKrFrXrrrrrrrMrOrUrVrWrrrrrrr rsB












rcCsv|r-|durd}|}|dkrd}n|dkrd}n
|dvr!d}n|dvr'd	}|t|fS|s9|r9d	}|t|fSdS)
NrZalphaaZbetab)rYrr[r])Zrevrr)rjrq)ZletterZnumberrrr rzs"rzz[\._-]cCs$|durtddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss(|]}|s|nt|VqdSr&)isdigitrjrq)rsrhrrr rus

z'_parse_local_version..)rn_local_version_separatorsrd)rrrr r{s
r{cCsttttddt|}|dur|dur|durt}n	|dur&t}n|}|dur/t}n|}|dur8t}	n|}	|durAt}
n	tdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rrrr r0r1z_cmpkey..css*|]}t|tr
|dfnt|fVqdS)rN)r=rqrrrrrr rus
z_cmpkey..)rnreversedlist	itertools	dropwhilerr)rrrrrrrrZ_postZ_dev_localrrr r|s(	r|)5Z
__future__rrrcollectionsrrZ_structuresrrZ_typingrtypingr	r
rrr
rrrrZ
InfiniteTypesr@rqZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtuplerr
ValueErrorrobjectr%rrrrcrerirBrrrzrr{r|rrrr sr$


'F	 
&