ó 2ÄÈ[c@`s^dZddlmZmZmZddlZddlmZdgZddd„ƒYZ dS(sUtility to compare (NumPy) version strings. The NumpyVersion class allows properly comparing numpy version strings. The LooseVersion and StrictVersion classes that distutils provides don't work; they don't recognize anything like alpha/beta/rc/dev versions. i(tdivisiontabsolute_importtprint_functionN(t basestringt NumpyVersioncB`sqeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z RS( s³Parse and compare numpy version strings. NumPy has the following versioning scheme (numbers given are examples; they can be > 9) in principle): - Released version: '1.8.0', '1.8.1', etc. - Alpha: '1.8.0a1', '1.8.0a2', etc. - Beta: '1.8.0b1', '1.8.0b2', etc. - Release candidates: '1.8.0rc1', '1.8.0rc2', etc. - Development versions: '1.8.0.dev-f1234afa' (git commit hash appended) - Development versions after a1: '1.8.0a1.dev-f1234afa', '1.8.0b2.dev-f1234afa', '1.8.1rc1.dev-f1234afa', etc. - Development versions (no git hash available): '1.8.0.dev-Unknown' Comparing needs to be done against a valid version string or other `NumpyVersion` instance. Note that all development versions of the same (pre-)release compare equal. .. versionadded:: 1.9.0 Parameters ---------- vstring : str NumPy version string (``np.__version__``). Examples -------- >>> from numpy.lib import NumpyVersion >>> if NumpyVersion(np.__version__) < '1.7.0': ... print('skip') skip >>> NumpyVersion('1.7') # raises ValueError, add ".0" c C`sf||_tjd|ƒ}|s0tdƒ‚n|jƒ|_g|jjdƒD]}t|ƒ^qR\|_|_ |_ t |ƒ|j ƒkr d|_ n§tjd||j ƒƒ}tjd||j ƒƒ}tjd||j ƒƒ}g|||gD]}|dk r|^q}|r>|djƒ|_ n d |_ ttjd |ƒƒ|_dS( Ns\d[.]\d+[.]\d+s Not a valid numpy version stringt.tfinalsa\dsb\dsrc\dits.dev(tvstringtretmatcht ValueErrortgrouptversiontsplittinttmajortminortbugfixtlentendt pre_releasetNonetbooltsearcht is_devversion( tselfRtver_maintxtalphatbetatrctmtpre_rel((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__init__8s" : . cC`s¬|j|jkr‡|j|jkrc|j|jkr?d}q„|j|jkrZd}q„d}q¨|j|jkr~d}q¨d}n!|j|jkr¢d}nd}|S(sCompare major.minor.bugfixiiiÿÿÿÿ(RRR(Rtothertvercmp((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt_compare_versionOs      cC`sp|j|jkrd}nQ|jdkr3d}n9|jdkrKd}n!|j|jkrfd}nd}|S(sCompare alpha/beta/rc/final.iRiiÿÿÿÿ(R(RR#R$((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt_compare_pre_releaseds    cC`sµt|ttfƒs$tdƒ‚nt|tƒrBt|ƒ}n|j|ƒ}|dkr±|j|ƒ}|dkr±|j|jkr“d}q®|jr¥d}q®d}q±n|S(Ns,Invalid object to compare with NumpyVersion.iiÿÿÿÿi(t isinstanceRRR R%R&R(RR#R$((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt_comparess      cC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__lt__‰scC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__le__ŒscC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__eq__scC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__ne__’scC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__gt__•scC`s|j|ƒdkS(Ni(R((RR#((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__ge__˜scC`s d|jS(NsNumpyVersion(%s)(R(R((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyt__repr›s(t__name__t __module__t__doc__R"R%R&R(R)R*R+R,R-R.t_NumpyVersion__repr(((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyRs$          (( R2t __future__RRRR t numpy.compatRt__all__R(((s1/tmp/pip-build-fiC0ax/numpy/numpy/lib/_version.pyts