K i*dZddlZdgZGddZy)aUtility 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. N NumpyVersioncVeZdZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d Zy)raParse 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. 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" Traceback (most recent call last): ... ValueError: Not a valid numpy version string z numpy.libc||_tjd|}|s td|j |_|j j dDcgc] }t|c}\|_|_ |_ t||jk(rd|_ ntjd||jd}tjd||jd}tjd||jd}|||fDcgc]}|| }}|r|dj |_ nd |_ ttjd ||_ycc}wcc}w) Nz \d+\.\d+\.\d+z Not a valid numpy version string.finalza\dzb\dzrc\drz.dev)vstringrematch ValueErrorgroupversionsplitintmajorminorbugfixlenend pre_releaseboolsearch is_devversion) selfr ver_mainxalphabetarcmpre_rels X/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/numpy/lib/_version.py__init__zNumpyVersion.__init__6s= 88,g6?@ @~~' LL  s #/%!s1v/%+ DJ w<8<<> )&D HHVWX\\^_%=>E88FGHLLNO$<=D'78<<>?#;/%FsE:%E?-E?cf|j|jk(rx|j|jk(r>|j|jk(rd}|S|j|jkDrd}|Sd}|S|j|jkDrd}|Sd}|S|j|jkDrd}|Sd}|S)zCompare major.minor.bugfixr)rrrrothervercmps r"_compare_versionzNumpyVersion._compare_versionMs :: $zzU[[(;;%,,.F [[5<</F  F ekk)   ZZ%++ %F F c|j|jk(rd}|S|jdk(rd}|S|jdk(rd}|S|j|jkDrd}|Sd}|S)zCompare alpha/beta/rc/final.rrr%r&)rr's r"_compare_pre_releasez!NumpyVersion._compare_pre_releasebs   u00 0F    (F   ' )F     1 1 1F F r+c2t|ttfs tdt|tr t|}|j |}|dk(rD|j |}|dk(r.|j |j urd}|S|j rd}|Sd}|S)Nz,Invalid object to compare with NumpyVersion.rr&r%) isinstancestrrr r*r-rr's r"_comparezNumpyVersion._compareqs%#|!45KL L eS ! 'E&&u- Q;..u5F{%%)<)<<F  ''F F r+c*|j|dkSNrr1rr(s r"__lt__zNumpyVersion.__lt__}}U#a''r+c*|j|dkSr3r4r5s r"__le__zNumpyVersion.__le__}}U#q((r+c*|j|dk(Sr3r4r5s r"__eq__zNumpyVersion.__eq__r:r+c*|j|dk7Sr3r4r5s r"__ne__zNumpyVersion.__ne__r:r+c*|j|dkDSr3r4r5s r"__gt__zNumpyVersion.__gt__r7r+c*|j|dk\Sr3r4r5s r"__ge__zNumpyVersion.__ge__r:r+c"d|jdS)Nz NumpyVersion())r )rs r"__repr__zNumpyVersion.__repr__st||nA..r+N)__name__ __module__ __qualname____doc__r#r*r-r1r6r9r<r>r@rBrEr+r"rr sF$LJ?.* ,()))()/r+)rIr __all__rrJr+r"rLs#  M/M/r+