U o ax< @sddlmZmZmZddlZddlZddlZddlmZm Z ddl m Z e r.ddl m Z mZmZmZmZmZmZddlmZmZeeefZeeeeeffZeeeefZeeeeeeeefeeeffdffZeeeedfeeeefZeeeedffZe eeefeeefgefZd d d d d gZ e!dddddddgZ"dd Z#Gdd d e$Z%Gddde&Z'Gdd d e'Z(e)dej*Z+ddddddZ,dd Z-d!d"Z.d#Z/Gd$d d e'Z0d%d&Z1e)d'Z2d(d)Z3d*d+Z4dS),)absolute_importdivisionprint_functionN)InfinityNegativeInfinity)MYPY_CHECK_RUNNING)CallableIteratorListOptional SupportsIntTupleUnion) InfinityTypeNegativeInfinityType.parseVersion LegacyVersionInvalidVersionVERSION_PATTERN_VersionepochreleasedevprepostlocalcCs,z t|WStk r&t|YSXdS)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^C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\packaging\version.pyr0s c@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|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          z(\d+ | [a-z]+ | \.| -)czfinal-@)rpreview-rcrccs\t|D]F}t||}|r |dkr(q |dddkrF|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-00000000)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 	sz#Version.__init__..rrUpre_lpre_npost_lpost_n1post_n2dev_ldev_nr)rrrrrr)_regexsearchrrErgrouprhrfr[_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|jdk	rb|ddd|jD|jdk	r~|d|j|jdk	r|d	|j|jdk	r|d
|jd|S)Nr{0}!rUcss|]}t|VqdSr&r>rjxrrr rl:sz"Version.__str__..css|]}t|VqdSr&r|r}rrr rl>sz.post{0}z.dev{0}z+{0})	rrerEjoinrrrrrr*rgrrr 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&r|r}rrr rlnsz Version.local..)r?rrr)rrr rjsz
Version.localcCst|dddS)N+rr)r>r[r)rrr rHrszVersion.publiccCsFg}|jdkr |d|j|ddd|jDd|S)Nrr{rUcss|]}t|VqdSr&r|r}rrr rlsz'Version.base_version..r)rrerErrrrrr rIws

zVersion.base_versioncCs|jdk	p|jdk	Sr&)rrr)rrr rLszVersion.is_prereleasecCs
|jdk	Sr&)rr)rrr rMszVersion.is_postreleasecCs
|jdk	Sr&)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
IGNORECASErtrArGrCrOrrrrrrrHrIrLrMrNrrrrrrr rs@













cCsv|rZ|dkrd}|}|dkr&d}n(|dkr4d}n|dkrBd}n|dkrNd	}|t|fS|sr|rrd	}|t|fSdS)
Nralphaabetab)rPrrRrT)revrr)rbrh)letternumberrrr rws"rwz[\._-]cCs$|dk	r tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr&)isdigitrbrh)rjr_rrr rlsz'_parse_local_version..)rf_local_version_separatorsr[)rrrr rxs
rxcCsttttddt|}|dkr>|dkr>|dk	r>t}n|dkrLt}n|}|dkr^t}n|}|dkrpt}	n|}	|dkrt}
ntdd|D}
|||||	|
fS)NcSs|dkS)Nrr)r~rrr r/r0z_cmpkey..css(|] }t|tr|dfnt|fVqdS)rN)r;rhrrirrr rlsz_cmpkey..)rfreversedlist	itertools	dropwhilerr)rrrrrrrr_post_dev_localrrr rys(	ry)5
__future__rrrcollectionsrr_structuresrr_typingrtypingr	r
rrr
rrrrZ
InfiniteTypesr>rhZPrePostDevTypeZSubLocalTypeZ	LocalTypeZCmpKeyZLegacyCmpKeyboolZVersionComparisonMethod__all__
namedtuplerr
ValueErrorrobjectr%rrrrZr\r`r@rrrwrrxryrrrr sr$


'F	 &