3 eI9 @s^ddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZddddd gZe eefZe ee eeffZe eeefZe ee e ee eefe eeffd ffZe ee ed feeeefZe ee ed ffZee eefe eefgefZejd d d ddddgZee d.dddZGdddeZ GdddZ!Gddde!Z"ej#dej$Z%ddddddZ&eeedddZ'eedd d!Z(d"Z)Gd#dde!Z*ee ee+e fee eefd$d%d&Z,ej#d'Z-eeed(d)d*Z.ee ed fee eefee eefee eefee eed+d,d-Z/dS)/N)CallableIteratorListOptional SupportsIntTupleUnion)Infinity InfinityTypeNegativeInfinityNegativeInfinityTypeparseVersion LegacyVersionInvalidVersionVERSION_PATTERN._Versionepochreleasedevprepostlocal)versionreturnc 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)rrJ/tmp/pip-build-vlmub77e/setuptools/setuptools/_vendor/packaging/version.pyr*sc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrrr6sc@seZdZUeeefedddZde dddZ de dddZ e e dd d Z de dd d Zde dd dZe e dddZdS) _BaseVersion)rcCs t|jS)N)hash_key)selfrrr__hash__?sz_BaseVersion.__hash__)otherrcCst|tstS|j|jkS)N) isinstancer"NotImplementedr$)r%r'rrr__lt__Es z_BaseVersion.__lt__cCst|tstS|j|jkS)N)r(r"r)r$)r%r'rrr__le__Ks z_BaseVersion.__le__cCst|tstS|j|jkS)N)r(r"r)r$)r%r'rrr__eq__Qs z_BaseVersion.__eq__cCst|tstS|j|jkS)N)r(r"r)r$)r%r'rrr__ge__Ws z_BaseVersion.__ge__cCst|tstS|j|jkS)N)r(r"r)r$)r%r'rrr__gt__]s z_BaseVersion.__gt__cCst|tstS|j|jkS)N)r(r"r)r$)r%r'rrr__ne__cs z_BaseVersion.__ne__N)rrr rCmpKey LegacyCmpKeyr$intr&boolr*r+objectr,r-r.r/rrrrr"<s  r"c@seZdZeddddZedddZeddd Zeedd d Zeedd d Z ee dddZ eddddZ eddddZ eddddZeddddZeddddZeedddZeedddZeedddZdS) rN)rrcCs&t||_t|j|_tjdtdS)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__)rcCs|jS)N)r6)r%rrr__str__uszLegacyVersion.__str__cCs d|dS)Nzr)r%rrr__repr__xszLegacyVersion.__repr__cCs|jS)N)r6)r%rrrpublic{szLegacyVersion.publiccCs|jS)N)r6)r%rrr base_versionszLegacyVersion.base_versioncCsdS)Nr r)r%rrrrszLegacyVersion.epochcCsdS)Nr)r%rrrrszLegacyVersion.releasecCsdS)Nr)r%rrrrszLegacyVersion.precCsdS)Nr)r%rrrrszLegacyVersion.postcCsdS)Nr)r%rrrrszLegacyVersion.devcCsdS)Nr)r%rrrrszLegacyVersion.localcCsdS)NFr)r%rrr is_prereleaseszLegacyVersion.is_prereleasecCsdS)NFr)r%rrris_postreleaseszLegacyVersion.is_postreleasecCsdS)NFr)r%rrr is_devreleaseszLegacyVersion.is_devrelease)rrr r5r;r<r=propertyr>r?r2rrrrrrr3rArBrCrrrrrjs2 z(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcr)srccsbxVtj|D]H}tj||}| s |dkr,q |dddkrJ|jdVq d|Vq WdVdS)N.r 0123456789*z*final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rJpartrrr_parse_version_partss rUcCsd}g}xlt|jD]\}|jdrh|dkrJx|rH|ddkrH|jq.Wx|rf|ddkrf|jqLW|j|qW|t|fS) Nr rNz*finalz*final-00000000r@r@r@)rUlower startswithpopappendtuple)rrpartsrTrrrr7s   r7a 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@speZdZejdedejejBZe	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*$N)rrc	Cs|jj|}|s td|dt|jdr:t|jdndtdd|jdjdDt|jd	|jd
t|jd|jdp|jd
t|jd|jdt	|jdd|_
t|j
j|j
j
|j
j|j
j|j
j|j
j|_dS)NzInvalid version: ''rrcss|]}t|VqdS)N)r2).0irrr	sz#Version.__init__..rrKpre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrr)_regexsearchrrgroupr2r[rP_parse_letter_version_parse_local_versionr6_cmpkeyrrrrrrr$)r%rmatchrrrr;s$zVersion.__init__)rcCsd|dS)Nz
r)r%rrrr="szVersion.__repr__cCsg}|jdkr |j|jd|jdjdd|jD|jdk	rb|jdjdd|jD|jdk	r~|jd|j|jdk	r|jd	|j|jdk	r|jd
|jdj|S)Nr!rKcss|]}t|VqdS)N)r5)r^xrrrr`-sz"Version.__str__..css|]}t|VqdS)N)r5)r^rprrrr`1sz.postz.dev+)rrZjoinrrrrr)r%r\rrrr<%s




zVersion.__str__cCs|jj}|S)N)r6r)r%Z_epochrrrrAsz
Version.epoch.cCs|jj}|S)N)r6r)r%_releaserrrrFszVersion.releasecCs|jj}|S)N)r6r)r%_prerrrrKszVersion.precCs|jjr|jjdSdS)Nr	)r6r)r%rrrrPszVersion.postcCs|jjr|jjdSdS)Nr	)r6r)r%rrrrTszVersion.devcCs(|jjr djdd|jjDSdSdS)NrKcss|]}t|VqdS)N)r5)r^rprrrr`[sz Version.local..)r6rrs)r%rrrrXsz
Version.localcCst|jdddS)Nrrr	r)r5rP)r%rrrr>_szVersion.publiccCsFg}|jdkr |j|jd|jdjdd|jDdj|S)NrrorKcss|]}t|VqdS)N)r5)r^rprrrr`lsz'Version.base_version..rq)rrZrsr)r%r\rrrr?cs

zVersion.base_versioncCs|jdk	p|jdk	S)N)rr)r%rrrrApszVersion.is_prereleasecCs
|jdk	S)N)r)r%rrrrBtszVersion.is_postreleasecCs
|jdk	S)N)r)r%rrrrCxszVersion.is_devreleasecCst|jdkr|jdSdS)Nr	r)lenr)r%rrrmajor|sz
Version.majorcCst|jdkr|jdSdS)Nr	r)rvr)r%rrrminorsz
Version.minorcCst|jdkr|jdSdS)Nrxr)rvr)r%rrrmicrosz
Version.micro) rrr recompilerVERBOSE
IGNORECASErhr5r;r=r<rDr2rrrrrrrrr>r?r3rArBrCrwryr{rrrrrs@)letternumberrcCsx|rZ|dkrd}|j}|dkr&d}n(|dkr4d}n|d
krBd	}n|dkrNd}|t|fS|rt|rtd}|t|fSdS)NralphaabetabrErrGrIrevrr)rErrG)rr)rWr2)rrrrrrks"
rkz[\._-])rrcCs$|dk	r tddtj|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|js|jnt|VqdS)N)isdigitrWr2)r^rTrrrr`sz'_parse_local_version..)r[_local_version_separatorsrP)rrrrrls
rl)rrrrrrrcCsttttjddt|}|dkr>|dkr>|dk	r>t}n|dkrLt}n|}|dkr^t}n|}|dkrpt}	n|}	|dkrt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rprrrsz_cmpkey..css(|] }t|tr|dfnt|fVqdS)rqN)r(r2r)r^r_rrrr`sz_cmpkey..)r[reversedlist	itertools	dropwhilerr
)rrrrrrrtruZ_postZ_dev_localrrrrms$	rm)rr)0collectionsrr|r8Ztypingrrrrrrr_structuresr
rrr
__all__Z
InfiniteTypesr5r2ZPrePostDevTypeZSubLocalTypeZ	LocalTyper0r1r3ZVersionComparisonMethod
namedtuplerr
ValueErrorrr"rr}r~rOrQrUr7rrbytesrkrrlrmrrrrsd$
.>:
"