o N&`I9@shddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ddl m Z mZmZmZgdZe eefZe ee eeffZe eeefZe ee e ee eefe eeffdffZe ee edfeeeefZe ee edffZee eefe eefgefZedgdZd ed e d fd d ZGdddeZ GdddZ!Gddde!Z"e#dej$Z%ddddddZ&ded eefddZ'd ed efddZ(dZ)Gdd d e!Z*d!ed"e ee+e fd ee eeffd#d$Z,e#d%Z-d&ed eefd'd(Z.d)ed*e edfd+ee eefd,ee eefd-ee eefd&ee ed efd.d/Z/dS)0N)CallableIteratorListOptional SupportsIntTupleUnion)Infinity InfinityTypeNegativeInfinityNegativeInfinityType)parseVersion LegacyVersionInvalidVersionVERSION_PATTERN._Version)epochreleasedevprepostlocalversionreturn)rrcCs&zt|WStyt|YSw)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. )rrr)rr3/usr/lib/python3/dist-packages/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<defddZddde fddZ ddde fdd Z de de fd d Z ddde fd d Zddde fddZde de fddZdS) _BaseVersion_keyrcCs t|jSN)hashr#selfrrr__hash__?s z_BaseVersion.__hash__othercCst|tstS|j|jkSr$ isinstancer"NotImplementedr#r'r)rrr__lt__E  z_BaseVersion.__lt__cCst|tstS|j|jkSr$r*r-rrr__le__Kr/z_BaseVersion.__le__cCst|tstS|j|jkSr$r*r-rrr__eq__Qr/z_BaseVersion.__eq__cCst|tstS|j|jkSr$r*r-rrr__ge__Wr/z_BaseVersion.__ge__cCst|tstS|j|jkSr$r*r-rrr__gt__]r/z_BaseVersion.__gt__cCst|tstS|j|jkSr$r*r-rrr__ne__cr/z_BaseVersion.__ne__N)rrr rCmpKey LegacyCmpKey__annotations__intr(boolr.r0objectr1r2r3r4rrrrr"<s r"c@seZdZdeddfddZdefddZdefdd Zedefd d Zedefd d Z ede fddZ ed ddZ ed ddZ ed ddZed ddZed ddZedefddZedefddZedefddZdS)!rrrNcCs&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__cC|jSr$r<r&rrr__str__uszLegacyVersion.__str__cC d|dS)Nzrr&rrr__repr__x zLegacyVersion.__repr__cCrBr$rCr&rrrpublic{zLegacyVersion.publiccCrBr$rCr&rrr base_versionrJzLegacyVersion.base_versioncCdS)Nrr&rrrrzLegacyVersion.epochcCdSr$rr&rrrrrNzLegacyVersion.releasecCrOr$rr&rrrrrNzLegacyVersion.precCrOr$rr&rrrrrNzLegacyVersion.postcCrOr$rr&rrrrrNzLegacyVersion.devcCrOr$rr&rrrrrNzLegacyVersion.localcCrLNFrr&rrr is_prereleaserNzLegacyVersion.is_prereleasecCrLrPrr&rrris_postreleaserNzLegacyVersion.is_postreleasecCrLrPrr&rrr is_devreleaserNzLegacyVersion.is_devrelease)rN)rrr r;rArDrGpropertyrIrKr8rrrrrrr9rQrRrSrrrrrjs4      rz(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcrsccs^t|D]#}t||}|r|dkrq|dddvr$|dVqd|VqdVdS)N.r 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rZpartrrr_parse_version_partss    rfcCsd}g}t|D]8}|dr=|dkr)|r)|ddkr)||r)|ddks|r=|ddkr=||r=|ddks1||q |t|fS)NrMr^r_z*final-00000000)rflower startswithpopappendtuple)rrpartsrerrrr=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@sreZdZededejejBZde	ddfddZ
de	fdd	Zde	fd
dZe
defdd
Ze
deedffddZe
deee	effddZe
deefddZe
deefddZe
dee	fddZe
de	fddZe
de	fddZe
defddZe
defdd Ze
defd!d"Ze
defd#d$Ze
defd%d&Ze
defd'd(ZdS))rz^\s*z\s*$rrNc
Cs|j|}|std|dt|drt|dndtdd|ddDt|d	|d
t|d|dpD|d
t|d|dt	|dd|_
t|j
j|j
j
|j
j|j
j|j
j|j
j|_dS)NzInvalid version: ''rrcs|]}t|VqdSr$)r8.0irrr	z#Version.__init__..rr[pre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrr)_regexsearchrrgroupr8rlra_parse_letter_version_parse_local_versionr<_cmpkeyrrrrrrr#)r'rmatchrrrrAs*
zVersion.__init__cCrE)Nz
.csror$rrrrrrs1rtz.postz.dev+)rrkjoinrrrrrr'rmrrrrD%s





zVersion.__str__cC|jj}|Sr$)r<r)r'_epochrrrrAz
Version.epoch.cCrr$)r<r)r'_releaserrrrFrzVersion.releasecCrr$)r<r)r'_prerrrrKrzVersion.precC|jjr
|jjdSdSNr	)r<rr&rrrrPzVersion.postcCrr)r<rr&rrrrTrzVersion.devcCs$|jjrddd|jjDSdS)Nr[csror$rrrrrrs[rtz Version.local..)r<rrr&rrrrXsz
Version.localcCst|dddS)Nrr	r)r;rar&rrrrI_zVersion.publiccCsFg}|jdkr||jd|ddd|jDd|S)Nrrr[csror$rrrrrrslrtz'Version.base_version..r)rrkrrrrrrrKcs


zVersion.base_versioncCs|jdup	|jduSr$)rrr&rrrrQprzVersion.is_prereleasecC
|jduSr$)rr&rrrrRt
zVersion.is_postreleasecCrr$)rr&rrrrSxrzVersion.is_devreleasecCst|jdkr|jdSdS)Nr	rlenrr&rrrmajor|z
Version.majorcCt|jdkr|jdSdS)Nr	rrr&rrrminorrz
Version.minorcCr)Nrrrr&rrrmicrorz
Version.micro) rrr recompilerVERBOSE
IGNORECASEr|r;rArGrDrTr8rrrrrrrrrIrKr9rQrRrSrrrrrrrrsBrletternumbercCsv|r-|durd}|}|dkrd}n|dkrd}n
|dvr!d}n|dvr'd	}|t|fS|s9|r9d	}|t|fSdS)
Nralphaabetab)rUrrWrY)revrr)rhr8)rrrrrrs"rz[\._-]rcCs$|durtddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss(|]}|s|nt|VqdSr$)isdigitrhr8)rqrerrrrss

z'_parse_local_version..)rl_local_version_separatorsra)rrrrrs
rrrrrrcCsttttddt|}|dur|dur|durt}n	|dur&t}n|}|dur/t}n|}|dur8t}	n|}	|durAt}
n	tdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rrrrsz_cmpkey..css*|]}t|tr
|dfnt|fVqdS)rN)r+r8rrprrrrss
z_cmpkey..)rlreversedlist	itertools	dropwhilerr
)rrrrrrrr_post_dev_localrrrrs(	r)0collectionsrrr>typingrrrrrrr_structuresr
rrr
__all__
InfiniteTypesr;r8PrePostDevTypeSubLocalType	LocalTyper5r6r9VersionComparisonMethod
namedtuplerr
ValueErrorrr"rrrr`rbrfr=rrbytesrrrrrrrrs$

.>	 	

$