
    Ǆg                     *    d Z ddlZdgZ G d d      Zy)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    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)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.

    .. 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"
    Traceback (most recent call last):
        ...
    ValueError: Not a valid numpy version string

    c                    || _         t        j                  d|      }|st        d      |j	                         | _        | j
                  j                  d      D cg c]  }t        |       c}\  | _        | _	        | _
        t        |      |j                         k(  rd| _        nt        j                  d||j                         d        }t        j                  d||j                         d        }t        j                  d||j                         d        }|||fD cg c]  }||	 }}|r|d   j	                         | _        nd	| _        t        t        j                  d
|            | _        y c c}w c c}w )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	            Z/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/numpy/lib/_version.py__init__zNumpyVersion.__init__7   s=   88,g6?@@~~'LLs#/%!s1v /%+
DJw<8<<>)&DHHVWX\\^_%=>E88FGHLLNO$<=D'78<<>?#;<B#($"3EQq}qEGE#*1:#3#3#5 #% !"))GW"=>/% Fs   E:%E?-E?c                 f   | j                   |j                   k(  rx| j                  |j                  k(  r>| j                  |j                  k(  rd}|S | j                  |j                  kD  rd}|S d}|S | j                  |j                  kD  rd}|S d}|S | j                   |j                   kD  rd}|S d}|S )zCompare major.minor.bugfixr      )r   r   r   r   othervercmps      r"   _compare_versionzNumpyVersion._compare_versionN   s    ::$zzU[[(;;%,,.F  [[5<</F   F  ekk)    ZZ%++%F  F    c                     | j                   |j                   k(  rd}|S | j                   dk(  rd}|S |j                   dk(  rd}|S | j                   |j                   kD  rd}|S d}|S )zCompare alpha/beta/rc/final.r   r   r%   r&   )r   r'   s      r"   _compare_pre_releasez!NumpyVersion._compare_pre_releasec   s    u000F  (F  ')F   1 11F  Fr+   c                 2   t        |t        t        f      st        d      t        |t              rt        |      }| j	                  |      }|dk(  rD| j                  |      }|dk(  r.| j                  |j                  u rd}|S | j                  rd}|S d}|S )Nz,Invalid object to compare with NumpyVersion.r   r&   r%   )
isinstancestrr   r   r*   r-   r   r'   s      r"   _comparezNumpyVersion._comparer   s    %#|!45KLLeS! 'E&&u-Q;..u5F{%%)<)<<F  ''F  Fr+   c                 *    | j                  |      dk  S Nr   r1   r   r(   s     r"   __lt__zNumpyVersion.__lt__       }}U#a''r+   c                 *    | j                  |      dk  S r3   r4   r5   s     r"   __le__zNumpyVersion.__le__       }}U#q((r+   c                 *    | j                  |      dk(  S r3   r4   r5   s     r"   __eq__zNumpyVersion.__eq__   r:   r+   c                 *    | j                  |      dk7  S r3   r4   r5   s     r"   __ne__zNumpyVersion.__ne__   r:   r+   c                 *    | j                  |      dkD  S r3   r4   r5   s     r"   __gt__zNumpyVersion.__gt__   r7   r+   c                 *    | j                  |      dk\  S r3   r4   r5   s     r"   __ge__zNumpyVersion.__ge__   r:   r+   c                      d| j                   z  S )NzNumpyVersion(%s))r	   )r   s    r"   __repr__zNumpyVersion.__repr__   s    !DLL00r+   N)__name__
__module____qualname____doc__r#   r*   r-   r1   r6   r9   r<   r>   r@   rB   rD    r+   r"   r   r      s?    &P?.*,()))()1r+   )rH   r
   __all__r   rI   r+   r"   <module>rK      s%    
 
M1 M1r+   