a  zeI9 @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)rr_/opt/bitninja-python-dojo/embedded/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) rNrcCs&t||_t|j|_tdtdS)NzZCreating a LegacyVersion has been deprecated and will be removed in the next major release)str_version_legacy_cmpkeyr$warningswarnDeprecationWarning)r)rrrr__init__ks   zLegacyVersion.__init__r%cCs|jSr&r=r(rrr__str__uszLegacyVersion.__str__cCs d|dS)Nzrr(rrr__repr__xszLegacyVersion.__repr__cCs|jSr&rCr(rrrpublic{szLegacyVersion.publiccCs|jSr&rCr(rrr base_versionszLegacyVersion.base_versioncCsdS)Nrr(rrrrszLegacyVersion.epochcCsdSr&rr(rrrrszLegacyVersion.releasecCsdSr&rr(rrrrszLegacyVersion.precCsdSr&rr(rrrrszLegacyVersion.postcCsdSr&rr(rrrrszLegacyVersion.devcCsdSr&rr(rrrrszLegacyVersion.localcCsdSNFrr(rrr is_prereleaseszLegacyVersion.is_prereleasecCsdSrJrr(rrris_postreleaseszLegacyVersion.is_postreleasecCsdSrJrr(rrr is_devreleaseszLegacyVersion.is_devrelease)rr r!r<rBrDrFpropertyrGrHr9rrrrrrr:rKrLrMrrrrrjs2 rz(\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)rTpartrrr_parse_version_partss   r`cCsvd}g}t|D]T}|dr^|dkrD|rD|ddkrD|q*|r^|ddkr^|qD||q|t|fS)NrIrXrYz*final-00000000)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__..rrUpre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrr)_regexsearchrrgroupr9rfr[_parse_letter_version_parse_local_versionr=_cmpkeyrrrrrrr$)r)rmatchrrrrBs*zVersion.__init__r%cCsd|dS)Nz
.css|]}t|VqdSr&r}r~rrrrl1rmz.postz.dev+)rrejoinrrrrrr)rgrrrrD%s




zVersion.__str__cCs|jj}|Sr&)r=r)r)_epochrrrrAsz
Version.epoch.cCs|jj}|Sr&)r=r)r)_releaserrrrFszVersion.releasecCs|jj}|Sr&)r=r)r)_prerrrrKszVersion.precCs|jjr|jjdSdSNr	)r=rr(rrrrPszVersion.postcCs|jjr|jjdSdSr)r=rr(rrrrTszVersion.devcCs(|jjr ddd|jjDSdSdS)NrUcss|]}t|VqdSr&r}r~rrrrl[rmz Version.local..)r=rrr(rrrrXsz
Version.localcCst|dddS)Nrr	r)r<r[r(rrrrG_szVersion.publiccCsFg}|jdkr ||jd|ddd|jDd|S)Nrr|rUcss|]}t|VqdSr&r}r~rrrrllrmz'Version.base_version..r)rrerrrrrrrHcs

zVersion.base_versioncCs|jdup|jduSr&)rrr(rrrrKpszVersion.is_prereleasecCs
|jduSr&)rr(rrrrLtszVersion.is_postreleasecCs
|jduSr&)rr(rrrrMxszVersion.is_devreleasecCst|jdkr|jdSdS)Nr	rlenrr(rrrmajor|sz
Version.majorcCst|jdkr|jdSdS)Nr	rrr(rrrminorsz
Version.minorcCst|jdkr|jdSdS)Nrrrr(rrrmicrosz
Version.micro) rr r!recompilerVERBOSE
IGNORECASErur<rBrFrDrNr9rrrrrrrrrGrHr:rKrLrMrrrrrrrrs@r)letternumberrcCsv|rZ|durd}|}|dkr&d}n(|dkr4d}n|dvrBd}n|dvrNd	}|t|fS|sr|rrd	}|t|fSdS)
Nralphaabetab)rOrrQrS)revrr)rbr9)rrrrrrxs"rxz[\._-])rrcCs$|dur tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr&)isdigitrbr9)rjr_rrrrlsz'_parse_local_version..)rf_local_version_separatorsr[)rrrrrys
ry)rrrrrrrcCsttttddt|}|dur>|dur>|dur>t}n|durLt}n|}|dur^t}n|}|durpt}	n|}	|durt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rrrrrmz_cmpkey..css(|] }t|tr|dfnt|fVqdS)rN)r-r9rrirrrrlsz_cmpkey..)rfreversedlist	itertools	dropwhilerr
)rrrrrrrr_post_dev_localrrrrzs(	rz)0collectionsrrr?typingrrrrrrr_structuresr
rrr
__all__
InfiniteTypesr<r9PrePostDevTypeSubLocalType	LocalTyper6r7r:VersionComparisonMethod
namedtuplerr
ValueErrorrr#rrrrZr\r`r>rrbytesrxrryrzrrrrs|$

.>	 
$