ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ ]c@`s^dZddlmZmZmZddlZddlmZdgZdddYZ 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`sqeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z RS( sParse 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|}|s0tdn|j|_g|jjdD]}t|^qR\|_|_ |_ t ||j krd|_ ntjd||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((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__init__8s" : . cC`s|j|jkr|j|jkrc|j|jkr?d}q|j|jkrZd}qd}q|j|jkr~d}qd}n!|j|jkrd}nd}|S(sCompare major.minor.bugfixiii(RRR(Rtothertvercmp((sE/opt/alt/python27/lib64/python2.7/site-packages/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$((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt_compare_pre_releaseds    cC`st|ttfs$tdnt|trBt|}n|j|}|dkr|j|}|dkr|j|jkrd}q|jrd}qd}qn|S(Ns,Invalid object to compare with NumpyVersion.iii(t isinstanceRRR R%R&R(RR#R$((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt_comparess      cC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__lt__scC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__le__scC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__eq__scC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__ne__scC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__gt__scC`s|j|dkS(Ni(R((RR#((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__ge__scC`s d|jS(NsNumpyVersion(%s)(R(R((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyt__reprs(t__name__t __module__t__doc__R"R%R&R(R)R*R+R,R-R.t_NumpyVersion__repr(((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyRs$          (( R2t __future__RRRR t numpy.compatRt__all__R(((sE/opt/alt/python27/lib64/python2.7/site-packages/numpy/lib/_version.pyts