o Ec8@shddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZgdZe eefZe ee eeffZe eeefZe ee e ee eefe eeffdffZe ee edfeeeefZe ee edffZee eefe eefgefZedgdZd ed e d fd d ZGdddeZ GdddZ!Gddde!Z"e#dej$Z%ddddddZ&ded eefddZ'd ed efddZ(dZ)Gdd d e!Z*d!ed"e ee+e fd ee eeffd#d$Z,e#d%Z-d&ed eefd'd(Z.d)ed*e edfd+ee eefd,ee eefd-ee eefd&ee ed efd.d/Z/dS)0N)CallableIteratorListOptional SupportsIntTupleUnion)Infinity InfinityTypeNegativeInfinityNegativeInfinityType)parseVersion LegacyVersionInvalidVersionVERSION_PATTERN._Version)epochreleasedevprepostlocalversionreturn)rrcCs&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)rrP/opt/alt/python310/lib/python3.10/site-packages/pip/_vendor/packaging/version.pyr*s    rc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrrr6src@seZdZUeeefed<defddZddde fddZ ddde fdd Z de de fd d Z ddde fd d Zddde fddZde de fddZdS) _BaseVersion_keyrcCs t|jSN)hashr#selfrrr__hash__?s z_BaseVersion.__hash__othercCst|tstS|j|jkSr$ isinstancer"NotImplementedr#r'r)rrr__lt__E  z_BaseVersion.__lt__cCst|tstS|j|jkSr$r*r-rrr__le__Kr/z_BaseVersion.__le__cCst|tstS|j|jkSr$r*r-rrr__eq__Qr/z_BaseVersion.__eq__cCst|tstS|j|jkSr$r*r-rrr__ge__Wr/z_BaseVersion.__ge__cCst|tstS|j|jkSr$r*r-rrr__gt__]r/z_BaseVersion.__gt__cCst|tstS|j|jkSr$r*r-rrr__ne__cr/z_BaseVersion.__ne__N)rrr rCmpKey LegacyCmpKey__annotations__intr(boolr.r0objectr1r2r3r4rrrrr"<s r"c@seZdZdeddfddZdefddZdefdd Zedefd d Zedefd d Z ede fddZ ed ddZ ed ddZ ed ddZed ddZed ddZedefddZedefddZedefddZdS)!rrrNcCst||_t|j|_dSr$)str_version_legacy_cmpkeyr#)r'rrrr__init__ks zLegacyVersion.__init__cC|jSr$r<r&rrr__str__pszLegacyVersion.__str__cC d|dS)Nzrr&rrr__repr__s zLegacyVersion.__repr__cCr?r$r@r&rrrpublicvzLegacyVersion.publiccCr?r$r@r&rrr base_versionzrGzLegacyVersion.base_versioncCdS)Nrr&rrrr~zLegacyVersion.epochcCdSr$rr&rrrrrKzLegacyVersion.releasecCrLr$rr&rrrrrKzLegacyVersion.precCrLr$rr&rrrrrKzLegacyVersion.postcCrLr$rr&rrrrrKzLegacyVersion.devcCrLr$rr&rrrrrKzLegacyVersion.localcCrINFrr&rrr is_prereleaserKzLegacyVersion.is_prereleasecCrIrMrr&rrris_postreleaserKzLegacyVersion.is_postreleasecCrIrMrr&rrr is_devreleaserKzLegacyVersion.is_devrelease)rN)rrr r;r>rArDpropertyrFrHr8rrrrrrr9rNrOrPrrrrrjs4     rz(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcrsccs^t|D]#}t||}|r|dkrq|dddvr$|dVqd|VqdVdS)N.r 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rWpartrrr_parse_version_partss    rccCsd}g}t|D]8}|dr=|dkr)|r)|ddkr)||r)|ddks|r=|ddkr=||r=|ddks1||q |t|fS)NrJr[r\z*final-Z00000000)rclower startswithpopappendtuple)rrpartsrbrrrr=s   r=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@sreZdZededejejBZde	ddfddZ
de	fdd	Zde	fd
dZe
defdd
Ze
deedffddZe
deee	effddZe
deefddZe
deefddZe
dee	fddZe
de	fddZe
de	fddZe
defddZe
defdd Ze
defd!d"Ze
defd#d$Ze
defd%d&Ze
defd'd(ZdS))rz^\s*z\s*$rrNc
Cs|j|}|std|dt|drt|dndtdd|ddDt|d	|d
t|d|dpD|d
t|d|dt	|dd|_
t|j
j|j
j
|j
j|j
j|j
j|j
j|_dS)NzInvalid version: ''rrcs|]}t|VqdSr$)r8.0irrr	
z#Version.__init__..rrXZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrr)_regexsearchrrgroupr8rhr^_parse_letter_version_parse_local_versionr<_cmpkeyrrrrrrr#)r'rmatchrrrr>s*
zVersion.__init__cCrB)Nz
.csrkr$ryrzrrrro,rpz.postz.dev+)rrgjoinrrrrrr'rirrrrA s





zVersion.__str__cC|jj}|Sr$)r<r)r'_epochrrrr<z
Version.epoch.cCrr$)r<r)r'_releaserrrrArzVersion.releasecCrr$)r<r)r'_prerrrrFrzVersion.precC|jjr
|jjdSdSNr	)r<rr&rrrrKzVersion.postcCrr)r<rr&rrrrOrzVersion.devcCs$|jjrddd|jjDSdS)NrXcsrkr$ryrzrrrroVrpz Version.local..)r<rr~r&rrrrSsz
Version.localcCst|dddS)Nr}r	r)r;r^r&rrrrFZzVersion.publiccCsFg}|jdkr||jd|ddd|jDd|S)NrrxrXcsrkr$ryrzrrrrogrpz'Version.base_version..r|)rrgr~rrrrrrH^s


zVersion.base_versioncCs|jdup	|jduSr$)rrr&rrrrNkrzVersion.is_prereleasecC
|jduSr$)rr&rrrrOo
zVersion.is_postreleasecCrr$)rr&rrrrPsrzVersion.is_devreleasecCst|jdkr|jdSdS)Nr	rlenrr&rrrmajorwz
Version.majorcCt|jdkr|jdSdS)Nr	rrr&rrrminor{rz
Version.minorcCr)Nrrrr&rrrmicrorz
Version.micro) rrr recompilerVERBOSE
IGNORECASErqr;r>rDrArQr8rrrrrrrrrFrHr9rNrOrPrrrrrrrrsBrletternumbercCsv|r-|durd}|}|dkrd}n|dkrd}n
|dvr!d}n|dvr'd	}|t|fS|s9|r9d	}|t|fSdS)
NrZalphaaZbetab)rRrrTrV)Zrevrr)rdr8)rrrrrrts"rtz[\._-]rcCs$|durtddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss(|]}|s|nt|VqdSr$)isdigitrdr8)rmrbrrrros

z'_parse_local_version..)rh_local_version_separatorsr^)rrrrrus
rurrrrrcCsttttddt|}|dur|dur|durt}n	|dur&t}n|}|dur/t}n|}|dur8t}	n|}	|durAt}
n	tdd|D}
|||||	|
fS)NcSs|dkS)Nrr)r{rrrsz_cmpkey..css*|]}t|tr
|dfnt|fVqdS)r|N)r+r8rrlrrrros
z_cmpkey..)rhreversedlist	itertools	dropwhilerr
)rrrrrrrrZ_postZ_dev_localrrrrvs(	rv)0collectionsrrwarningstypingrrrrrrrZ_structuresr
rrr
__all__Z
InfiniteTypesr;r8ZPrePostDevTypeZSubLocalTypeZ	LocalTyper5r6r9ZVersionComparisonMethod
namedtuplerr
ValueErrorrr"rrrr]r_rcr=rrbytesrtrrurvrrrrs$

.9	 	

$