a hn< @sddlmZmZmZddlZddlZddlZddlmZm Z ddl m Z e r.ddl m Z mZmZmZmZmZmZddlmZmZeeefZeeeeeffZeeeefZeeeeeeeefeeeffdffZeeeedfeeeefZeeeedffZe eeefeeefgefZgd Z e!d gd Z"d d Z#Gddde$Z%Gddde&Z'Gddde'Z(e)dej*Z+ddddddZ,ddZ-ddZ.dZ/Gddde'Z0d d!Z1e)d"Z2d#d$Z3d%d&Z4dS)')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)versionrH/usr/lib/python3.9/site-packages/setuptools/_vendor/packaging/version.pyr0s  rc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrr r=src@sPeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ dS) _BaseVersionNcCs t|jSN)hash_keyselfrrr __hash__Fsz_BaseVersion.__hash__cCs||ddS)NcSs||kSr&rsorrr Lz%_BaseVersion.__lt__.._comparer*otherrrr __lt__Jsz_BaseVersion.__lt__cCs||ddS)NcSs||kSr&rr,rrr r/Pr0z%_BaseVersion.__le__..r1r3rrr __le__Nsz_BaseVersion.__le__cCs||ddS)NcSs||kSr&rr,rrr r/Tr0z%_BaseVersion.__eq__..r1r3rrr __eq__Rsz_BaseVersion.__eq__cCs||ddS)NcSs||kSr&rr,rrr r/Xr0z%_BaseVersion.__ge__..r1r3rrr __ge__Vsz_BaseVersion.__ge__cCs||ddS)NcSs||kSr&rr,rrr r/\r0z%_BaseVersion.__gt__..r1r3rrr __gt__Zsz_BaseVersion.__gt__cCs||ddS)NcSs||kSr&rr,rrr r/`r0z%_BaseVersion.__ne__..r1r3rrr __ne__^sz_BaseVersion.__ne__cCst|tstS||j|jSr&) isinstancer%NotImplementedr()r*r4methodrrr r2bs z_BaseVersion._compare) r!r"r#r(r+r5r6r7r8r9r:r2rrrr r%Csr%c@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ eddZ eddZ eddZeddZeddZeddZdS)rcCst||_t|j|_dSr&)str_version_legacy_cmpkeyr()r*rrrr __init__ks zLegacyVersion.__init__cCs|jSr&r?r)rrr __str__pszLegacyVersion.__str__cCsdtt|S)Nzformatreprr>r)rrr __repr__tszLegacyVersion.__repr__cCs|jSr&rBr)rrr publicxszLegacyVersion.publiccCs|jSr&rBr)rrr base_version}szLegacyVersion.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_prereleasecCsdSrKrr)rrr is_postreleaseszLegacyVersion.is_postreleasecCsdSrKrr)rrr is_devreleaseszLegacyVersion.is_devreleaseN)r!r"r#rArCrGpropertyrHrIrrrrrrrLrMrNrrrr rjs2          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)r-partrrr _parse_version_partss   r`cCsvd}g}t|D]T}|dr^|dkrD|rD|ddkrD|q*|r^|ddkr^|qD||q|t|fS)NrJrXrYz*final-Z00000000)r`lower startswithpopappendtuple)rrpartsr_rrr 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@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 	r0z#Version.__init__..rrUZpre_lZpre_nZpost_lZpost_n1Zpost_n2Zdev_lZdev_nr)rrrrrr)_regexsearchrrErgrouprgrer[_parse_letter_version_parse_local_versionr?_cmpkeyrrrrrrr()r*rmatchrrr rAs*zVersion.__init__cCsdtt|S)NzrDr)rrr rG-szVersion.__repr__cCsg}|jdkr |d|j|ddd|jD|jdurb|ddd|jD|jdur~|d|j|jdur|d	|j|jdur|d
|jd|S)Nr{0}!rUcss|]}t|VqdSr&r>rixrrr rk:r0z"Version.__str__..css|]}t|VqdSr&rtrurrr rk>r0z.post{0}z.dev{0}z+{0})	rrdrEjoinrrrrrr*rfrrr rC1s




zVersion.__str__cCs|jj}|Sr&)r?r)r*_epochrrr rNsz
Version.epochcCs|jj}|Sr&)r?r)r*_releaserrr rTszVersion.releasecCs|jj}|Sr&)r?r)r*_prerrr rZszVersion.precCs|jjr|jjdSdSNr)r?rr)rrr r`szVersion.postcCs|jjr|jjdSdSr})r?rr)rrr reszVersion.devcCs(|jjr ddd|jjDSdSdS)NrUcss|]}t|VqdSr&rtrurrr rknr0z Version.local..)r?rrxr)rrr rjsz
Version.localcCst|dddS)N+rr)r>r[r)rrr rHrszVersion.publiccCsFg}|jdkr |d|j|ddd|jDd|S)NrrsrUcss|]}t|VqdSr&rtrurrr rkr0z'Version.base_version..rw)rrdrErxrryrrr rIws

zVersion.base_versioncCs|jdup|jduSr&)rrr)rrr rLszVersion.is_prereleasecCs
|jduSr&)rr)rrr rMszVersion.is_postreleasecCs
|jduSr&)rr)rrr rNszVersion.is_devreleasecCst|jdkr|jdSdS)Nrrlenrr)rrr majorsz
Version.majorcCst|jdkr|jdSdS)Nrrrr)rrr minorsz
Version.minorcCst|jdkr|jdSdS)Nrrrr)rrr microsz
Version.microN)r!r"r#recompilerVERBOSE
IGNORECASErlrArGrCrOrrrrrrrHrIrLrMrNrrrrrrr rs@













rcCsv|rZ|durd}|}|dkr&d}n(|dkr4d}n|dvrBd}n|dvrNd	}|t|fS|sr|rrd	}|t|fSdS)
NrZalphaaZbetab)rPrrRrT)Zrevrr)rarg)Zletternumberrrr ros"roz[\._-]cCs$|dur tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr&)isdigitrarg)rir_rrr rksz'_parse_local_version..)re_local_version_separatorsr[)rrrr rps
rpcCsttttddt|}|dur>|dur>|dur>t}n|durLt}n|}|dur^t}n|}|durpt}	n|}	|durt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)rvrrr r/r0z_cmpkey..css(|] }t|tr|dfnt|fVqdS)rwN)r;rgrrhrrr rksz_cmpkey..)rereversedlist	itertools	dropwhilerr)rrrrrrr{r|Z_postZ_dev_localrrr rqs(	rq)5Z
__future__rrrcollectionsrrZ_structuresrrZ_typingrtypingr	r
rrr
rrrrZ
InfiniteTypesr>rgZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtuplerr
ValueErrorrobjectr%rrrrZr\r`r@rrrorrprqrrrr sp$


'F	 &