Y$- @s{ddlmZmZmZddlZddlZddlZddlmZddddd gZ ej d d d d dddgZ ddZ Gddde ZGdddeZGdddeZejdejZddddddddd diZddZdd Zd!ZGd"ddeZd#d$Zejd%Zd&d'Zd(d)ZdS)*)absolute_importdivisionprint_functionN)InfinityparseVersion LegacyVersionInvalidVersionVERSION_PATTERN_Versionepochreleasedevprepostlocalc Cs1yt|SWntk r,t|SYnXdS)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)rr r )versionr6/tmp/pip-build-3puug3g5/packaging/packaging/version.pyrs c@seZdZdZdS)r zF An invalid version was found, users should refer to PEP 440. N)__name__ __module__ __qualname____doc__rrrrr $s c@speZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) _BaseVersioncCs t|jS)N)hash_key)selfrrr__hash__,sz_BaseVersion.__hash__cCs|j|ddS)NcSs ||kS)Nr)sorrr0sz%_BaseVersion.__lt__..)_compare)rotherrrr__lt__/sz_BaseVersion.__lt__cCs|j|ddS)NcSs ||kS)Nr)rr rrrr!3sz%_BaseVersion.__le__..)r")rr#rrr__le__2sz_BaseVersion.__le__cCs|j|ddS)NcSs ||kS)Nr)rr rrrr!6sz%_BaseVersion.__eq__..)r")rr#rrr__eq__5sz_BaseVersion.__eq__cCs|j|ddS)NcSs ||kS)Nr)rr rrrr!9sz%_BaseVersion.__ge__..)r")rr#rrr__ge__8sz_BaseVersion.__ge__cCs|j|ddS)NcSs ||kS)Nr)rr rrrr!<sz%_BaseVersion.__gt__..)r")rr#rrr__gt__;sz_BaseVersion.__gt__cCs|j|ddS)NcSs ||kS)Nr)rr rrrr!?sz%_BaseVersion.__ne__..)r")rr#rrr__ne__>sz_BaseVersion.__ne__cCs&t|tstS||j|jS)N) isinstancerNotImplementedr)rr#methodrrrr"Asz_BaseVersion._compareN) rrrrr$r%r&r'r(r)r"rrrrr*s        rc@seZdZddZddZddZeddZed d Zed d Z ed dZ eddZ dS)r cCs%t||_t|j|_dS)N)str_version_legacy_cmpkeyr)rrrrr__init__JszLegacyVersion.__init__cCs|jS)N)r.)rrrr__str__NszLegacyVersion.__str__cCsdjtt|S)Nz)formatreprr-)rrrr__repr__QszLegacyVersion.__repr__cCs|jS)N)r.)rrrrpublicTszLegacyVersion.publiccCs|jS)N)r.)rrrr base_versionXszLegacyVersion.base_versioncCsdS)Nr)rrrrr\szLegacyVersion.localcCsdS)NFr)rrrr is_prerelease`szLegacyVersion.is_prereleasecCsdS)NFr)rrrris_postreleasedszLegacyVersion.is_postreleaseN) rrrr0r1r4propertyr5r6rr7r8rrrrr Hs    z(\d+ | [a-z]+ | \.| -)cpreview-zfinal-rc@ccs{xotj|D]^}tj||}| s|dkr>q|dddkre|jdVqd|VqWdVdS)N.r 0123456789*z*final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)rpartrrr_parse_version_partsrs rIcCsd}g}xt|jD]|}|jdr|dkrgx$|rf|ddkrf|jqCWx$|r|ddkr|jqjW|j|qWt|}||fS) NrrBz*finalz*final-00000000rKrK)rIlower startswithpopappendtuple)rr partsrHrrrr/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@seZdZejdedejejBZddZ	ddZ
ddZed	d
Z
eddZed
dZeddZeddZdS)rz^\s*z\s*$cCs[|jj|}|s-tdj|td|jdrWt|jdnddtdd|jdjdDdt	|jd	|jd
dt	|jd|jd
p|jddt	|jd|jddt
|jd|_t|jj
|jj|jj|jj|jj|jj|_dS)NzInvalid version: '{0}'r
rrcss|]}t|VqdS)N)int).0irrr	sz#Version.__init__..r?rpre_lpre_nrpost_lpost_n1post_n2rdev_ldev_nr)_regexsearchr
r2rgrouprRrPrD_parse_letter_version_parse_local_versionr._cmpkeyr
rrrrrr)rrmatchrrrr0s.*+!					zVersion.__init__cCsdjtt|S)Nz)r2r3r-)rrrrr4szVersion.__repr__cCsMg}|jjdkr4|jdj|jj|jdjdd|jjD|jjdk	r|jdjdd|jjD|jjdk	r|jdj|jjd	|jjdk	r|jd
j|jjd	|jj	dk	r@|jdjdjdd|jj	Ddj|S)
Nrz{0}!r?css|]}t|VqdS)N)r-)rSxrrrrUsz"Version.__str__..css|]}t|VqdS)N)r-)rSrdrrrrUsz.post{0}rz.dev{0}z+{0}css|]}t|VqdS)N)r-)rSrdrrrrUs)
r.r
rOr2joinrrrrr)rrQrrrr1s))  ,zVersion.__str__cCst|jdddS)N+rr)r-rD)rrrrr5
szVersion.publiccCsjg}|jjdkr4|jdj|jj|jdjdd|jjDdj|S)Nrz{0}!r?css|]}t|VqdS)N)r-)rSrdrrrrUsz'Version.base_version..re)r.r
rOr2rfr)rrQrrrr6s
)zVersion.base_versioncCs0t|}d|kr,|jdddSdS)Nrgr)r-rD)rversion_stringrrrrsz
Version.localcCst|jjp|jjS)N)boolr.rr)rrrrr7!szVersion.is_prereleasecCst|jjS)N)rir.r)rrrrr8%szVersion.is_postreleaseN)rrrrecompilerVERBOSE
IGNORECASEr]r0r4r1r9r5r6rr7r8rrrrrs#
cCs|r|dkrd}|j}|dkr9d}n<|dkrNd}n'|d
krcd	}n|dkrud}|t|fS|r|rd}|t|fSdS)Nralphaabetabr:rr;r=revrr)r:zprezpreview)zrevrs)rLrR)letternumberrrrr`*s 			
r`z[\._-]cCs0|dk	r,tddtj|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss3|])}|js!|jn	t|VqdS)N)isdigitrLrR)rSrHrrrrURsz'_parse_local_version..)rP_local_version_seperatorsrD)rrrrraLs	racCsttttjddt|}|dkr^|dkr^|dk	r^t}n|dkrpt}|dkrt}|dkrt}|dkrt}ntdd|D}||||||fS)NcSs
|dkS)Nrr)rdrrrr!`sz_cmpkey..css7|]-}t|tr$|dfn
t|fVqdS)reN)r*rRr)rSrTrrrrUsz_cmpkey..)rPreversedlist	itertools	dropwhiler)r
rrrrrrrrrbWs&		$

		
rb)
__future__rrrcollectionsrzrj_structuresr__all__
namedtuplerr
ValueErrorr
objectrr	rkrlrCrErIr/rrr`rwrarbrrrrs.!$9k