Ren< @sddlmZmZmZddlZddlZddlZddlmZm Z ddl m Z e rddl m Z mZmZmZmZmZmZddlmZmZeeefZeeeeeffZeeeefZeeeeeeeefeeeffdffZeeeedfeeeefZeeeedffZe eeefeeefgefZd d d d d gZ ej!dddddddgZ"dd Z#Gdd d e$Z%Gddde&Z'Gdd d e'Z(ej)dej*Z+dddddddddd iZ,d!d"Z-d#d$Z.d%Z/Gd&d d e'Z0d'd(Z1ej)d)Z2d*d+Z3d,d-Z4dS).)absolute_importdivisionprint_functionN)InfinityNegativeInfinity) TYPE_CHECKING)CallableIteratorListOptional SupportsIntTupleUnion) InfinityTypeNegativeInfinityType.parseVersion LegacyVersionInvalidVersionVERSION_PATTERN_Versionepochreleasedevprepostlocalc Cs1yt|SWntk r,t|SYnXdS)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)versionr/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/packaging/version.pyr0s c@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrr r=s c@sveZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS) _BaseVersionNcCs t|jS)N)hash_key)selfrrr __hash__Fsz_BaseVersion.__hash__cCs|j|ddS)NcSs ||kS)Nr)sorrr Lsz%_BaseVersion.__lt__..)_compare)r(otherrrr __lt__Jsz_BaseVersion.__lt__cCs|j|ddS)NcSs ||kS)Nr)r*r+rrr r,Psz%_BaseVersion.__le__..)r-)r(r.rrr __le__Nsz_BaseVersion.__le__cCs|j|ddS)NcSs ||kS)Nr)r*r+rrr r,Tsz%_BaseVersion.__eq__..)r-)r(r.rrr __eq__Rsz_BaseVersion.__eq__cCs|j|ddS)NcSs ||kS)Nr)r*r+rrr r,Xsz%_BaseVersion.__ge__..)r-)r(r.rrr __ge__Vsz_BaseVersion.__ge__cCs|j|ddS)NcSs ||kS)Nr)r*r+rrr r,\sz%_BaseVersion.__gt__..)r-)r(r.rrr __gt__Zsz_BaseVersion.__gt__cCs|j|ddS)NcSs ||kS)Nr)r*r+rrr r,`sz%_BaseVersion.__ne__..)r-)r(r.rrr __ne__^sz_BaseVersion.__ne__cCs&t|tstS||j|jS)N) isinstancer%NotImplementedr')r(r.methodrrr r-bsz_BaseVersion._compare) r!r"r#r'r)r/r0r1r2r3r4r-rrrr r%Cs        r%c@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZeddZeddZdS)rcCs%t||_t|j|_dS)N)str_version_legacy_cmpkeyr')r(rrrr __init__kszLegacyVersion.__init__cCs|jS)N)r9)r(rrr __str__pszLegacyVersion.__str__cCsdjtt|S)Nz)formatreprr8)r(rrr __repr__tszLegacyVersion.__repr__cCs|jS)N)r9)r(rrr publicxszLegacyVersion.publiccCs|jS)N)r9)r(rrr base_version}szLegacyVersion.base_versioncCsdS)Nrr)r(rrr rszLegacyVersion.epochcCsdS)Nr)r(rrr rszLegacyVersion.releasecCsdS)Nr)r(rrr rszLegacyVersion.precCsdS)Nr)r(rrr rszLegacyVersion.postcCsdS)Nr)r(rrr rszLegacyVersion.devcCsdS)Nr)r(rrr rszLegacyVersion.localcCsdS)NFr)r(rrr is_prereleaseszLegacyVersion.is_prereleasecCsdS)NFr)r(rrr is_postreleaseszLegacyVersion.is_postreleasecCsdS)NFr)r(rrr is_devreleaseszLegacyVersion.is_devreleaseN)r!r"r#r;r<r?propertyr@rArrrrrrrCrDrErrrr rjs    z(\d+ | [a-z]+ | \.| -)cpreview-zfinal-rc@ccs{xotj|D]^}tj||}| s|dkr>q|dddkre|jdVqd|VqWdVdS)N.r 0123456789*z*final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r*partrrr _parse_version_partss rVcCsd}g}xt|jD]|}|jdr|dkrgx$|rf|ddkrf|jqCWx$|r|ddkr|jqjW|j|qW|t|fS) NrrOz*finalz*final-00000000rBrBrB)rVlower startswithpopappendtuple)rrpartsrUrrr r: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@sTeZdZejdedejejBZddZ	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*$cCs[|jj|}|s-tdj|td|jdrWt|jdnddtdd|jdjdDdt	|jd	|jd
dt	|jd|jd
p|jddt	|jd|jddt
|jd|_t|jj
|jj|jj|jj|jj|jj|_dS)NzInvalid version: '{0}'rrrcss|]}t|VqdS)N)int).0irrr 	sz#Version.__init__..rLrpre_lpre_nrpost_lpost_n1post_n2rdev_ldev_nr)_regexsearchrr=rgroupr^r\rQ_parse_letter_version_parse_local_versionr9_cmpkeyrrrrrrr')r(rmatchrrr r;s$*+!-!					zVersion.__init__cCsdjtt|S)Nz)r=r>r8)r(rrr r?-szVersion.__repr__cCsg}|jdkr.|jdj|j|jdjdd|jD|jdk	r|jdjdd|jD|jdk	r|jdj|j|jdk	r|jd	j|j|jdk	r|jd
j|jdj|S)Nrz{0}!rLcss|]}t|VqdS)N)r8)r_xrrr ra:sz"Version.__str__..css|]}t|VqdS)N)r8)r_rprrr ra>sz.post{0}z.dev{0}z+{0})	rr[r=joinrrrrr)r(r]rrr r<1s&&zVersion.__str__cCs|jj}|S)N)r9r)r(_epochrrr rNsz
Version.epochcCs|jj}|S)N)r9r)r(_releaserrr rTszVersion.releasecCs|jj}|S)N)r9r)r(_prerrr rZszVersion.precCs|jjr|jjdSdS)Nr)r9r)r(rrr r`szVersion.postcCs|jjr|jjdSdS)Nr)r9r)r(rrr reszVersion.devcCs4|jjr,djdd|jjDSdSdS)NrLcss|]}t|VqdS)N)r8)r_rprrr ransz Version.local..)r9rrr)r(rrr rjs z
Version.localcCst|jdddS)N+rr)r8rQ)r(rrr r@rszVersion.publiccCsag}|jdkr.|jdj|j|jdjdd|jDdj|S)Nrz{0}!rLcss|]}t|VqdS)N)r8)r_rprrr rasz'Version.base_version..rq)rr[r=rrr)r(r]rrr rAws
&zVersion.base_versioncCs|jdk	p|jdk	S)N)rr)r(rrr rCszVersion.is_prereleasecCs
|jdk	S)N)r)r(rrr rDszVersion.is_postreleasecCs
|jdk	S)N)r)r(rrr rEszVersion.is_devreleasecCs$t|jdkr |jdSdS)Nrr)lenr)r(rrr majorsz
Version.majorcCs$t|jdkr |jdSdS)Nrr)rwr)r(rrr minorsz
Version.minorcCs$t|jdkr |jdSdS)Nryr)rwr)r(rrr microsz
Version.microN)r!r"r#recompilerVERBOSE
IGNORECASErir;r?r<rFrrrrrrr@rArCrDrErxrzr|rrrr rs$$cCs|r|dkrd}|j}|dkr9d}n<|dkrNd}n'|d
krcd	}n|dkrud}|t|fS|r|rd}|t|fSdS)NralphaabetabrGrrHrJrevrr)rGrrH)rr)rXr^)letternumberrrr rls"			
rlz[\._-]cCs0|dk	r,tddtj|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss3|])}|js!|jn	t|VqdS)N)isdigitrXr^)r_rUrrr rasz'_parse_local_version..)r\_local_version_separatorsrQ)rrrr rms
	rmcCsttttjddt|}|dkr]|dkr]|dk	r]t}n|dkrrt}n|}|dkrt}n|}|dkrt}	n|}	|dkrt}
ntdd|D}
|||||	|
fS)NcSs
|dkS)Nrr)rprrr r,sz_cmpkey..css6|],}t|tr$|dfn	t|fVqdS)rqN)r5r^r)r_r`rrr rasz_cmpkey..)r\reversedlist	itertools	dropwhilerr)rrrrrrrtru_post_dev_localrrr rns$-$						rn)5
__future__rrrcollectionsrr}_structuresrr_typingrtypingr	r
rrr
rrrrZ
InfiniteTypesr8r^ZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtuplerr
ValueErrorrobjectr%rr~rrPrRrVr:rrrlrrmrnrrrr sZ4
#'
'F;&