a ?&Nbf> @sddlmZmZmZddlZddlZddlZddlZddlm Z m Z ddl m Z e r6ddl mZmZmZmZmZmZmZddlmZmZeeefZeeeeeffZeeeefZeeeeeeeefeeeffdffZeeeedfeeeefZeeeedffZeeeefeeefgefZ gd Z!e"d gd Z#d d Z$Gddde%Z&Gddde'Z(Gddde(Z)e*dej+Z,ddddddZ-ddZ.ddZ/dZ0Gddde(Z1d d!Z2e*d"Z3d#d$Z4d%d&Z5dS)')absolute_importdivisionprint_functionN)InfinityNegativeInfinity) TYPE_CHECKING)CallableIteratorListOptional SupportsIntTupleUnion) InfinityTypeNegativeInfinityType.)parseVersion LegacyVersionInvalidVersionVERSION_PATTERN_Version)epochreleasedevprepostlocalcCs*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)versionr5/usr/lib/python3.9/site-packages/packaging/version.pyr1s  rc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrr r>src@sHeZdZdZddZddZddZdd Zd d Zd d Z ddZ dS) _BaseVersionNcCs t|jSN)hash_keyselfrrr __hash__Gsz_BaseVersion.__hash__cCst|tstS|j|jkSr& isinstancer%NotImplementedr(r*otherrrr __lt__Ns z_BaseVersion.__lt__cCst|tstS|j|jkSr&r,r/rrr __le__Us z_BaseVersion.__le__cCst|tstS|j|jkSr&r,r/rrr __eq__\s z_BaseVersion.__eq__cCst|tstS|j|jkSr&r,r/rrr __ge__cs z_BaseVersion.__ge__cCst|tstS|j|jkSr&r,r/rrr __gt__js z_BaseVersion.__gt__cCst|tstS|j|jkSr&r,r/rrr __ne__qs z_BaseVersion.__ne__) r!r"r#r(r+r1r2r3r4r5r6rrrr r%Dsr%c@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZeddZeddZdS)rcCs&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__zs   zLegacyVersion.__init__cCs|jSr&r8r)rrr __str__szLegacyVersion.__str__cCsdtt|S)Nzformatreprr7r)rrr __repr__szLegacyVersion.__repr__cCs|jSr&r>r)rrr publicszLegacyVersion.publiccCs|jSr&r>r)rrr base_versionszLegacyVersion.base_versioncCsdS)Nrr)rrr rszLegacyVersion.epochcCsdSr&rr)rrr rszLegacyVersion.releasecCsdSr&rr)rrr rszLegacyVersion.precCsdSr&rr)rrr rszLegacyVersion.postcCsdSr&rr)rrr rszLegacyVersion.devcCsdSr&rr)rrr rszLegacyVersion.localcCsdSNFrr)rrr is_prereleaseszLegacyVersion.is_prereleasecCsdSrGrr)rrr is_postreleaseszLegacyVersion.is_postreleasecCsdSrGrr)rrr is_devreleaseszLegacyVersion.is_devreleaseN)r!r"r#r=r?rCpropertyrDrErrrrrrrHrIrJrrrr rys2           rz(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcrccs\t|D]F}t||}|r |dkr(q |dddvrF|dVq d|Vq dVdS)N.r 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)spartrrr _parse_version_partss   r]cCsvd}g}t|D]T}|dr^|dkrD|rD|ddkrD|q*|r^|ddkr^|qD||q|t|fS)NrFrTrUz*final-Z00000000)r]lower startswithpopappendtuple)rrpartsr\rrr r9s    r9a 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@seZdZededejejBZddZ	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|j|}|std|t|dr8t|dndtdd|ddDt	|d|d	t	|d
|dp|dt	|d
|dt
|dd|_t|jj
|jj|jj|jj|jj|jj|_dS)NzInvalid version: '{0}'rrcss|]}t|VqdSr&)int.0irrr 	/z#Version.__init__..rrQZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrr)_regexsearchrrArgrouprdrbrW_parse_letter_version_parse_local_versionr8_cmpkeyrrrrrrr()r*rmatchrrr r=$s*zVersion.__init__cCsdtt|S)Nzr@r)rrr rCBszVersion.__repr__cCsg}|jdkr |d|j|ddd|jD|jdurb|ddd|jD|jdur~|d|j|jdur|d	|j|jdur|d
|jd|S)Nr{0}!rQcss|]}t|VqdSr&r7rfxrrr rhOriz"Version.__str__..css|]}t|VqdSr&rrrsrrr rhSriz.post{0}z.dev{0}z+{0})	rrarAjoinrrrrrr*rcrrr r?Fs




zVersion.__str__cCs|jj}|Sr&)r8r)r*Z_epochrrr rcsz
Version.epochcCs|jj}|Sr&)r8r)r*_releaserrr riszVersion.releasecCs|jj}|Sr&)r8r)r*_prerrr roszVersion.precCs|jjr|jjdSdSNr)r8rr)rrr ruszVersion.postcCs|jjr|jjdSdSrz)r8rr)rrr rzszVersion.devcCs(|jjr ddd|jjDSdSdS)NrQcss|]}t|VqdSr&rrrsrrr rhriz Version.local..)r8rrvr)rrr rsz
Version.localcCst|dddS)N+rr)r7rWr)rrr rDszVersion.publiccCsFg}|jdkr |d|j|ddd|jDd|S)NrrqrQcss|]}t|VqdSr&rrrsrrr rhriz'Version.base_version..ru)rrarArvrrwrrr rEs

zVersion.base_versioncCs|jdup|jduSr&)rrr)rrr rHszVersion.is_prereleasecCs
|jduSr&)rr)rrr rIszVersion.is_postreleasecCs
|jduSr&)rr)rrr rJszVersion.is_devreleasecCst|jdkr|jdSdS)Nrrlenrr)rrr majorsz
Version.majorcCst|jdkr|jdSdS)Nrrr|r)rrr minorsz
Version.minorcCst|jdkr|jdSdS)Nrrr|r)rrr microsz
Version.microN)r!r"r#recompilerVERBOSE
IGNORECASErjr=rCr?rKrrrrrrrDrErHrIrJr~rrrrrr r s@













rcCsv|rZ|durd}|}|dkr&d}n(|dkr4d}n|dvrBd}n|dvrNd	}|t|fS|sr|rrd	}|t|fSdS)
NrZalphaaZbetab)rLrrNrP)Zrevrr)r^rd)ZletterZnumberrrr rms"rmz[\._-]cCs$|dur tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr&)isdigitr^rd)rfr\rrr rhsz'_parse_local_version..)rb_local_version_separatorsrW)rrrr rns
rncCsttttddt|}|dur>|dur>|dur>t}n|durLt}n|}|dur^t}n|}|durpt}	n|}	|durt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rtrrr riz_cmpkey..css(|] }t|tr|dfnt|fVqdS)ruN)r-rdrrerrr rh(sz_cmpkey..)rbreversedlist	itertools	dropwhilerr)rrrrrrrxryZ_postZ_dev_localrrr ros(	ro)6Z
__future__rrrcollectionsrrr:Z_structuresrrZ_typingrtypingr	r
rrr
rrrrZ
InfiniteTypesr7rdZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtuplerr
ValueErrorrobjectr%rrrrVrXr]r9rrrmrrnrorrrr sr$


5L	 &