a :jg6@sdZddlZddlZddlZgdZGdddZeZGdddZeZedgd Zd d Z Gd d d e Z GdddZ Gddde Z edejZddddddZddZddZdZGddde ZddZed Zd!d"Zd#d$ZdS)%zUtility to compare pep440 compatible version strings. The LooseVersion and StrictVersion classes that distutils provides don't work; they don't recognize anything like alpha/beta/rc/dev versions. N)parseVersion LegacyVersionInvalidVersionVERSION_PATTERNc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)InfinitycCsdS)Nrselfrr>/usr/local/lib/python3.9/site-packages/numpy/_utils/_pep440.py__repr__.szInfinity.__repr__cCs tt|SNhashreprr rrr __hash__1szInfinity.__hash__cCsdSNFrr otherrrr __lt__4szInfinity.__lt__cCsdSrrrrrr __le__7szInfinity.__le__cCs t||jSr  isinstance __class__rrrr __eq__:szInfinity.__eq__cCst||j Sr rrrrr __ne__=szInfinity.__ne__cCsdSNTrrrrr __gt__@szInfinity.__gt__cCsdSrrrrrr __ge__CszInfinity.__ge__cCstSr )NegativeInfinityr rrr __neg__FszInfinity.__neg__N __name__ __module__ __qualname__r rrrrrrrr rrrr r-src@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)rcCsdS)Nz -Infinityrr rrr r NszNegativeInfinity.__repr__cCs tt|Sr rr rrr rQszNegativeInfinity.__hash__cCsdSrrrrrr rTszNegativeInfinity.__lt__cCsdSrrrrrr rWszNegativeInfinity.__le__cCs t||jSr rrrrr rZszNegativeInfinity.__eq__cCst||j Sr rrrrr r]szNegativeInfinity.__ne__cCsdSrrrrrr r`szNegativeInfinity.__gt__cCsdSrrrrrr rcszNegativeInfinity.__ge__cCstSr )rr rrr r fszNegativeInfinity.__neg__Nr!rrrr rMsr_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)versionrrr rus  rc@seZdZdZdS)rzF An invalid version was found, users should refer to PEP 440. N)r"r#r$__doc__rrrr rsrc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) _BaseVersioncCs t|jSr )r_keyr rrr rsz_BaseVersion.__hash__cCs||ddS)NcSs||kSr rsorrr z%_BaseVersion.__lt__.._comparerrrr rsz_BaseVersion.__lt__cCs||ddS)NcSs||kSr rr0rrr r3r4z%_BaseVersion.__le__..r5rrrr rsz_BaseVersion.__le__cCs||ddS)NcSs||kSr rr0rrr r3r4z%_BaseVersion.__eq__..r5rrrr rsz_BaseVersion.__eq__cCs||ddS)NcSs||kSr rr0rrr r3r4z%_BaseVersion.__ge__..r5rrrr rsz_BaseVersion.__ge__cCs||ddS)NcSs||kSr rr0rrr r3r4z%_BaseVersion.__gt__..r5rrrr rsz_BaseVersion.__gt__cCs||ddS)NcSs||kSr rr0rrr r3r4z%_BaseVersion.__ne__..r5rrrr rsz_BaseVersion.__ne__cCst|tstS||j|jSr )rr.NotImplementedr/)r rmethodrrr r6s z_BaseVersion._compareN) r"r#r$rrrrrrrr6rrrr r.sr.c@s`eZdZddZddZddZeddZed d Zed d Z ed dZ eddZ dS)rcCst||_t|j|_dSr )str_version_legacy_cmpkeyr/)r r,rrr __init__s zLegacyVersion.__init__cCs|jSr r:r rrr __str__szLegacyVersion.__str__cCsdtt|S)Nzformatrr9r rrr r szLegacyVersion.__repr__cCs|jSr r=r rrr publicszLegacyVersion.publiccCs|jSr r=r rrr base_versionszLegacyVersion.base_versioncCsdSr rr rrr r+szLegacyVersion.localcCsdSrrr rrr is_prereleaseszLegacyVersion.is_prereleasecCsdSrrr rrr is_postreleaseszLegacyVersion.is_postreleaseN) r"r#r$r<r>r propertyrArBr+rCrDrrrr rs    rz(\d+ | [a-z]+ | \.| -)czfinal-@)r)preview-rcr(ccs\t|D]F}t||}|r |dkr(q |dddvrF|dVq d|Vq dVdS)N. 0123456789**final)_legacy_version_component_resplit_legacy_version_replacement_mapgetzfill)r1partrrr _parse_version_partss   rWcCszd}g}t|D]T}|dr^|dkrD|rD|ddkrD|q*|r^|ddkr^|qD||qt|}||fS)NrOrPz*final-Z00000000)rWlower startswithpopappendtuple)r,r&partsrVrrr 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@s|eZdZededejejBZddZ	ddZ
ddZed	d
Z
eddZed
dZeddZeddZdS)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}'r&rcss|]}t|VqdSr
)int.0irrr	-r4z#Version.__init__..r'rKpre_lpre_npost_lpost_n1post_n2dev_ldev_nr+r&r'r)r*r(r+)_regexsearchrr@r%groupr_r]rR_parse_letter_version_parse_local_versionr:_cmpkeyr&r'r)r*r(r+r/)r
r,matchrrrr<$s8zVersion.__init__cCsdtt|S)Nzr?r	rrrrGszVersion.__repr__cCsg}|jjdkr$|d|jj|ddd|jjD|jjdurl|ddd|jjD|jjdur|d|jjd	|jjdur|d
|jjd	|jj	dur|dddd|jj	Dd|S)
Nr{0}!rKcss|]}t|VqdSr
r9raxrrrrcRr4z"Version.__str__..css|]}t|VqdSr
rtrurrrrcVr4z.post{0}rLz.dev{0}z+{0}css|]}t|VqdSr
rtrurrrrccr4)
r:r&r\r@joinr'r)r*r(r+r
r^rrrr>JszVersion.__str__cCst|dddS)N+rLrr9rRr	rrrrAhszVersion.publiccCsLg}|jjdkr$|d|jj|ddd|jjDd|S)NrrsrKcss|]}t|VqdSr
rtrurrrrcur4z'Version.base_version..rw)r:r&r\r@rxr'ryrrrrBls
zVersion.base_versioncCs$t|}d|vr |dddSdS)NrzrLr{)r
version_stringrrrr+ysz
Version.localcCst|jjp|jjSr
)boolr:r(r)r	rrrrCszVersion.is_prereleasecCst|jjSr
)r}r:r*r	rrrrDszVersion.is_postreleaseN)r"r#r$recompilerVERBOSE
IGNORECASErlr<rr>rErArBr+rCrDrrrrrs"

#



rcCsv|rZ|durd}|}|dkr&d}n(|dkr4d}n|dvrBd}n|dvrNd	}|t|fS|sr|rrd	}|t|fSdS)
Nralphaabetab)rFr)rHrJ)revrr*)rYr_)letternumberrrrros roz[\._-]cCs$|dur tddt|DSdS)zR
    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
    Ncss&|]}|s|nt|VqdSr
)isdigitrYr_)rarVrrrrcsz'_parse_local_version..)r]_local_version_seperatorsrR)r+rrrrpsrpcCsttttddt|}|dur@|dur@|dur@t}n|durLt}|durZt}|durft}|durvt}ntdd|D}||||||fS)NcSs|dkS)Nrr)rvrrrr3r4z_cmpkey..css*|]"}t|tr|dfnt|fVqdS)rwN)rr_rr`rrrrcsz_cmpkey..)r]reversedlist	itertools	dropwhilerrkrrrrqs,
	rq)r-collectionsrr~__all__rr
namedtupler%r
ValueErrorrr.rrrrQrSrWr;rrrorrprqrrrrs: !
 k