3 Ren< @sddlmZmZmZddlZddlZddlZddlmZm Z ddl m Z e r.ddl 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+ddddddZ,dd 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 Cs&yt|Stk r t|SXdS)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-python36-pip-20.2.4-5.el9.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/packaging/version.pyr0sc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrr r=sc@sPeZdZdZddZddZddZdd 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__cCst|tstS||j|jS)N) isinstancer%NotImplementedr')r(r.methodrrr r-bs z_BaseVersion._compare) r!r"r#r'r)r/r0r1r2r3r4r-rrrr r%Csr%c@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZeddZeddZdS)rcCst||_t|j|_dS)N)str_version_legacy_cmpkeyr')r(rrrr __init__ks zLegacyVersion.__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]+ | \.| -)czfinal-@)rpreview-rcrccsbxVtj|D]H}tj||}| s |dkr,q |dddkrJ|jdVq d|Vq WdVdS)N.r 0123456789*z*final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r*partrrr _parse_version_partss rVcCsd}g}xlt|jD]\}|jdrh|dkrJx|rH|ddkrH|jq.Wx|rf|ddkrf|jqLW|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@seZdZejdedejejBZddZ	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|jj|}|stdj|t|jdr8t|jdndtdd|jdjdDt	|jd|jd	t	|jd
|jdp|jdt	|jd
|jdt
|jdd|_t|jj
|jj|jj|jj|jj|jj|_dS)NzInvalid version: '{0}'rrcss|]}t|VqdS)N)int).0irrr 	sz#Version.__init__..rrLpre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrr)_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	rb|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 rNsz
Version.epochcCs|jj}|S)N)r9r)r(_releaserrr rTszVersion.releasecCs|jj}|S)N)r9r)r(_prerrr rZszVersion.precCs|jjr|jjdSdS)Nr)r9r)r(rrr r`szVersion.postcCs|jjr|jjdSdS)Nr)r9r)r(rrr reszVersion.devcCs(|jjr djdd|jjDSdSdS)NrLcss|]}t|VqdS)N)r8)r_rprrr ransz Version.local..)r9rrr)r(rrr rjsz
Version.localcCst|jdddS)N+rr)r8rQ)r(rrr r@rszVersion.publiccCsFg}|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_devreleasecCst|jdkr|jdSdS)Nrr)lenr)r(rrr majorsz
Version.majorcCst|jdkr|jdSdS)Nrr)rwr)r(rrr minorsz
Version.minorcCst|jdkr|jdSdS)Nryr)rwr)r(rrr microsz
Version.microN)r!r"r#recompilerVERBOSE
IGNORECASErir;r?r<rFrrrrrrr@rArCrDrErxrzr|rrrr rs$cCsx|rZ|dkrd}|j}|dkr&d}n(|dkr4d}n|d
krBd	}n|dkrNd}|t|fS|rt|rtd}|t|fSdS)NralphaabetabrGrrIrKrevrr)rGrrI)rr)rXr^)letternumberrrr rls"
rlz[\._-]cCs$|dk	r tddtj|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|js|jnt|VqdS)N)isdigitrXr^)r_rUrrr rasz'_parse_local_version..)r\_local_version_separatorsrQ)rrrr rms
rmcCsttttjddt|}|dkr>|dkr>|dk	r>t}n|dkrLt}n|}|dkr^t}n|}|dkrpt}	n|}	|dkrt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rprrr r,sz_cmpkey..css(|] }t|tr|dfnt|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 s\$

'F;&