
    G/Ph                     2    d Z ddlZdgZ G d d          ZdS )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                   T    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dS )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                 2   || _         t          j        d|          }|st          d          |                                | _        d | j                            d          D             \  | _        | _        | _	        t          |          |                                k    rd| _        nt          j        d||                                d                    }t          j        d||                                d                    }t          j        d||                                d                    }d	 |||fD             }|r |d
                                         | _        nd| _        t          t          j        d|                    | _        d S )Nz\d+\.\d+\.\d+z Not a valid numpy version stringc                 ,    g | ]}t          |          S  )int).0xs     R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/lib/_version.py
<listcomp>z)NumpyVersion.__init__.<locals>.<listcomp>>   s*     /% /% /%!s1vv /% /% /%    .finalza\dzb\dzrc\dc                     g | ]}||S )Nr   )r	   ms     r   r   z)NumpyVersion.__init__.<locals>.<listcomp>F   s    EEEQq}q}}}r   r    z.dev)vstringrematch
ValueErrorgroupversionsplitmajorminorbugfixlenendpre_releaseboolsearchis_devversion)selfr   ver_mainalphabetarcpre_rels          r   __init__zNumpyVersion.__init__7   sp   8,g66 	A?@@@~~''/% /%Ls##/% /% /%+
DJw<<8<<>>))&DHVWX\\^^__%=>>E8FGHLLNNOO$<==D'78<<>>??#;<<BEE5$"3EEEG &#*1:#3#3#5#5  #% !")GW"="=>>r   c                     | j         |j         k    rO| j        |j        k    r)| j        |j        k    rd}nA| j        |j        k    rd}n.d}n+| j        |j        k    rd}nd}n| j         |j         k    rd}nd}|S )zCompare major.minor.bugfixr      )r   r   r   r#   othervercmps      r   _compare_versionzNumpyVersion._compare_versionN   s    :$$zU[((;%,..FF[5<//FFFFek))Z%+%%FFFr   c                     | j         |j         k    rd}n1| j         dk    rd}n#|j         dk    rd}n| j         |j         k    rd}nd}|S )zCompare alpha/beta/rc/final.r   r   r+   r,   )r   r-   s      r   _compare_pre_releasez!NumpyVersion._compare_pre_releasec   sf    u000FF((FF'))FF 111FFFr   c                 J   t          |t          t          f          st          d          t          |t                    rt          |          }|                     |          }|dk    r8|                     |          }|dk    r| j        |j        u rd}n| j        rd}nd}|S )Nz,Invalid object to compare with NumpyVersion.r   r,   r+   )
isinstancestrr   r   r0   r2   r"   r-   s      r   _comparezNumpyVersion._comparer   s    %#|!455 	MKLLLeS!! 	( ''E&&u--Q;;..u55F{{%)<<<FF' FFFr   c                 4    |                      |          dk     S Nr   r6   r#   r.   s     r   __lt__zNumpyVersion.__lt__       }}U##a''r   c                 4    |                      |          dk    S r8   r9   r:   s     r   __le__zNumpyVersion.__le__       }}U##q((r   c                 4    |                      |          dk    S r8   r9   r:   s     r   __eq__zNumpyVersion.__eq__   r?   r   c                 4    |                      |          dk    S r8   r9   r:   s     r   __ne__zNumpyVersion.__ne__   r?   r   c                 4    |                      |          dk    S r8   r9   r:   s     r   __gt__zNumpyVersion.__gt__   r<   r   c                 4    |                      |          dk    S r8   r9   r:   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    !DL00r   N)__name__
__module____qualname____doc__r)   r0   r2   r6   r;   r>   rA   rC   rE   rG   rI   r   r   r   r   r      s        & &P? ? ?.  *    ,( ( () ) )) ) )) ) )( ( () ) )1 1 1 1 1r   )rM   r   __all__r   r   r   r   <module>rO      s`     
			 
M1 M1 M1 M1 M1 M1 M1 M1 M1 M1r   