
    Kh                     *    S r SSKrS/r " S S5      rg)a  Utility 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NumpyVersionc                   ^    \ rS rSrSrSrS rS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)r      a  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.

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                 ,   Xl         [        R                  " SU5      nU(       d  [        S5      eUR	                  5       U l        U R
                  R                  S5       Vs/ s H  n[        U5      PM     snu  U l        U l	        U l
        [        U5      UR                  5       :X  a  SU l        O[        R                  " SXR                  5       S  5      n[        R                  " SXR                  5       S  5      n[        R                  " SXR                  5       S  5      nXEU4 Vs/ s H	  owc  M  UPM     nnU(       a  US   R	                  5       U l        OS	U l        [        [        R                  " S
U5      5      U l        g s  snf s  snf )Nz\d+\.\d+\.\d+z Not a valid numpy version string.finalza\dzb\dzrc\dr    z.dev)vstringrematch
ValueErrorgroupversionsplitintmajorminorbugfixlenendpre_releaseboolsearchis_devversion)	selfr
   ver_mainxalphabetarcmpre_rels	            D/var/www/html/env/lib/python3.13/site-packages/numpy/lib/_version.py__init__NumpyVersion.__init__7   s;   88,g6?@@~~'LLs#/%# ;<s1v#/%+
DJw<8<<>)&DHHVW\\^_%=>E88FGLLNO$<=D'7<<>?#;<B#("3E"3Qq"3GE#*1:#3#3#5 #% !"))GW"=>/% Fs   "F-F7Fc                 v   U R                   UR                   :X  a~  U R                  UR                  :X  aA  U R                  UR                  :X  a  SnU$ U R                  UR                  :  a  SnU$ Sn U$ U R                  UR                  :  a  SnU$ Sn U$ U R                   UR                   :  a  SnU$ SnU$ )zCompare major.minor.bugfixr      )r   r   r   r   othervercmps      r#   _compare_versionNumpyVersion._compare_versionN   s    ::$zzU[[(;;%,,.F  [[5<</F   F  ekk)    ZZ%++%F  F    c                     U R                   UR                   :X  a  SnU$ U R                   S:X  a  SnU$ UR                   S:X  a  SnU$ U R                   UR                   :  a  SnU$ SnU$ )zCompare alpha/beta/rc/final.r   r   r'   r(   )r   r)   s      r#   _compare_pre_release!NumpyVersion._compare_pre_releasec   s    u000F  (F  ')F   1 11F  Fr.   c                 V   [        U[        [        45      (       d  [        S5      e[        U[        5      (       a  [        U5      nU R	                  U5      nUS:X  aK  U R                  U5      nUS:X  a4  U R                  UR                  L a  SnU$ U R                  (       a  SnU$ SnU$ )Nz,Invalid object to compare with NumpyVersion.r   r(   r'   )
isinstancestrr   r   r,   r0   r   r)   s      r#   _compareNumpyVersion._comparer   s    %#|!455KLLeS!! 'E&&u-Q;..u5F{%%)<)<<F  ''F  Fr.   c                 *    U R                  U5      S:  $ Nr   r5   r   r*   s     r#   __lt__NumpyVersion.__lt__       }}U#a''r.   c                 *    U R                  U5      S:*  $ r8   r9   r:   s     r#   __le__NumpyVersion.__le__       }}U#q((r.   c                 *    U R                  U5      S:H  $ r8   r9   r:   s     r#   __eq__NumpyVersion.__eq__   rA   r.   c                 *    U R                  U5      S:g  $ r8   r9   r:   s     r#   __ne__NumpyVersion.__ne__   rA   r.   c                 *    U R                  U5      S:  $ r8   r9   r:   s     r#   __gt__NumpyVersion.__gt__   r=   r.   c                 *    U R                  U5      S:  $ r8   r9   r:   s     r#   __ge__NumpyVersion.__ge__   rA   r.   c                      SU R                   -  $ )NzNumpyVersion(%s))r
   )r   s    r#   __repr__NumpyVersion.__repr__   s    !DLL00r.   )r   r   r   r   r   r   r
   N)__name__
__module____qualname____firstlineno____doc__r$   r,   r0   r5   r;   r?   rC   rF   rI   rL   rO   __static_attributes__ r.   r#   r   r      sF    $L J?.*,()))()1r.   )rU   r   __all__r   rW   r.   r#   <module>rY      s%    
 
M1 M1r.   