a [f8 @sPddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZgdZe eefZe ee eeffZe eeefZe ee e ee eefe eeffdffZe ee edfeeeefZe ee edffZee eefe eefgefZedgdZee d d d d ZGd ddeZ GdddZ!Gddde!Z"e#dej$Z%ddddddZ&eeedddZ'eed ddZ(dZ)Gddde!Z*ee ee+e fee eefd d!d"Z,e#d#Z-eeed$d%d&Z.ee edfee eefee eefee eefee eed'd(d)Z/dS)*N)CallableIteratorListOptional SupportsIntTupleUnion)Infinity InfinityTypeNegativeInfinityNegativeInfinityType)parseVersion LegacyVersionInvalidVersionVERSION_PATTERN._Version)epochreleasedevprepostlocal)rrversionreturncCs*z t|WSty$t|YS0dS)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. N)rrr)rrA/usr/lib/python3.9/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<edddZde dddZ de ddd Z e e dd d Z de dd d Zde dddZe e dddZdS) _BaseVersion_keyrcCs t|jSN)hashr$selfrrr__hash__?sz_BaseVersion.__hash__)otherrcCst|tstS|j|jkSr& isinstancer#NotImplementedr$r)r+rrr__lt__Es z_BaseVersion.__lt__cCst|tstS|j|jkSr&r,r/rrr__le__Ks z_BaseVersion.__le__cCst|tstS|j|jkSr&r,r/rrr__eq__Qs z_BaseVersion.__eq__cCst|tstS|j|jkSr&r,r/rrr__ge__Ws z_BaseVersion.__ge__cCst|tstS|j|jkSr&r,r/rrr__gt__]s z_BaseVersion.__gt__cCst|tstS|j|jkSr&r,r/rrr__ne__cs z_BaseVersion.__ne__N)rr r!rCmpKey LegacyCmpKey__annotations__intr*boolr0r1objectr2r3r4r5rrrrr#<s r#c@seZdZeddddZedddZeddd Zeedd d Zeedd d Z ee dddZ eddddZ eddddZ eddddZeddddZeddddZeedddZeedddZeedddZdS) rNrcCst||_t|j|_dSr&)str_version_legacy_cmpkeyr$)r)rrrr__init__ks zLegacyVersion.__init__r%cCs|jSr&r=r(rrr__str__pszLegacyVersion.__str__cCs d|dS)Nzrr(rrr__repr__sszLegacyVersion.__repr__cCs|jSr&r@r(rrrpublicvszLegacyVersion.publiccCs|jSr&r@r(rrr base_versionzszLegacyVersion.base_versioncCsdS)Nrr(rrrr~szLegacyVersion.epochcCsdSr&rr(rrrrszLegacyVersion.releasecCsdSr&rr(rrrrszLegacyVersion.precCsdSr&rr(rrrrszLegacyVersion.postcCsdSr&rr(rrrrszLegacyVersion.devcCsdSr&rr(rrrrszLegacyVersion.localcCsdSNFrr(rrr is_prereleaseszLegacyVersion.is_prereleasecCsdSrGrr(rrris_postreleaseszLegacyVersion.is_postreleasecCsdSrGrr(rrr is_devreleaseszLegacyVersion.is_devrelease)rr r!r<r?rArCpropertyrDrEr9rrrrrrr:rHrIrJrrrrrjs2rz(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcr)srccs\t|D]F}t||}|r |dkr(q |dddvrF|dVq d|Vq dVdS)N.r 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rQpartrrr_parse_version_partss   r]cCsvd}g}t|D]T}|dr^|dkrD|rD|ddkrD|q*|r^|ddkr^|qD||q|t|fS)NrFrUrVz*final-Z00000000)r]lower startswithpopappendtuple)rrpartsr\rrrr>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@speZdZededejejBZe	ddddZ
e	ddd	Ze	dd
dZe
eddd
Ze
eedfdddZe
eee	efdddZe
eedddZe
eedddZe
ee	dddZe
e	dddZe
e	dddZe
edddZe
eddd Ze
edd!d"Ze
edd#d$Ze
edd%d&Ze
edd'd(ZdS))rz^\s*z\s*$Nrc
Cs|j|}|s td|dt|dr:t|dndtdd|ddDt|d	|d
t|d|dp|d
t|d|dt	|dd|_
t|j
j|j
j
|j
j|j
j|j
j|j
j|_dS)NzInvalid version: ''rrcss|]}t|VqdSr&)r9.0irrr	
z#Version.__init__..rrRZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrr)_regexsearchrrgroupr9rbrX_parse_letter_version_parse_local_versionr=_cmpkeyrrrrrrr$)r)rmatchrrrr?s*zVersion.__init__r%cCsd|dS)Nz
.css|]}t|VqdSr&rrrsrrrrh,riz.postz.dev+)rrajoinrrrrrr)rcrrrrA s




zVersion.__str__cCs|jj}|Sr&)r=r)r)_epochrrrr<sz
Version.epoch.cCs|jj}|Sr&)r=r)r)_releaserrrrAszVersion.releasecCs|jj}|Sr&)r=r)r)_prerrrrFszVersion.precCs|jjr|jjdSdSNr	)r=rr(rrrrKszVersion.postcCs|jjr|jjdSdSr|)r=rr(rrrrOszVersion.devcCs(|jjr ddd|jjDSdSdS)NrRcss|]}t|VqdSr&rrrsrrrrhVriz Version.local..)r=rrwr(rrrrSsz
Version.localcCst|dddS)Nrvr	r)r<rXr(rrrrDZszVersion.publiccCsFg}|jdkr ||jd|ddd|jDd|S)NrrqrRcss|]}t|VqdSr&rrrsrrrrhgriz'Version.base_version..ru)rrarwrrxrrrrE^s

zVersion.base_versioncCs|jdup|jduSr&)rrr(rrrrHkszVersion.is_prereleasecCs
|jduSr&)rr(rrrrIoszVersion.is_postreleasecCs
|jduSr&)rr(rrrrJsszVersion.is_devreleasecCst|jdkr|jdSdS)Nr	rlenrr(rrrmajorwsz
Version.majorcCst|jdkr|jdSdS)Nr	rr}r(rrrminor{sz
Version.minorcCst|jdkr|jdSdS)Nrrr}r(rrrmicrosz
Version.micro) rr r!recompilerVERBOSE
IGNORECASErjr<r?rCrArKr9rrrrrrrrrDrEr:rHrIrJrrrrrrrrs@r)letternumberrcCsv|rZ|durd}|}|dkr&d}n(|dkr4d}n|dvrBd}n|dvrNd	}|t|fS|sr|rrd	}|t|fSdS)
NrZalphaaZbetab)rLrrNrP)Zrevrr)r^r9)rrrrrrms"rmz[\._-])rrcCs$|dur tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr&)isdigitr^r9)rfr\rrrrhsz'_parse_local_version..)rb_local_version_separatorsrX)rrrrrns
rn)rrrrrrrcCsttttddt|}|dur>|dur>|dur>t}n|durLt}n|}|dur^t}n|}|durpt}	n|}	|durt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rtrrrriz_cmpkey..css(|] }t|tr|dfnt|fVqdS)ruN)r-r9rrerrrrhsz_cmpkey..)rbreversedlist	itertools	dropwhilerr
)rrrrrrrzr{Z_postZ_dev_localrrrros(	ro)0collectionsrrwarningstypingrrrrrrrZ_structuresr
rrr
__all__Z
InfiniteTypesr<r9ZPrePostDevTypeZSubLocalTypeZ	LocalTyper6r7r:ZVersionComparisonMethod
namedtuplerr
ValueErrorrr#rrrrWrYr]r>rrbytesrmrrnrorrrrs|$

.9	 
$