U
    ?h                     @   s$   d Z ddlZdgZG d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                   @   sh   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zd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                 C   s   || _ td|}|std| | _dd | jdD \| _| _| _	t
|| krbd| _nvtd|| d  }td|| d  }td	|| d  }d
d |||fD }|r|d  | _nd| _ttd|| _d S )Nz\d+\.\d+\.\d+z Not a valid numpy version stringc                 S   s   g | ]}t |qS  )int).0xr   r   D/var/www/html/venv/lib/python3.8/site-packages/numpy/lib/_version.py
<listcomp>>   s     z)NumpyVersion.__init__.<locals>.<listcomp>.finalza\dzb\dzrc\dc                 S   s   g | ]}|d k	r|qS )Nr   )r   mr   r   r   r   F   s      r    z.dev)vstringrematch
ValueErrorgroupversionsplitmajorminorbugfixlenendpre_releaseboolsearchis_devversion)selfr   Zver_mainalphabetarcZpre_relr   r   r   __init__7   s$    

zNumpyVersion.__init__c                 C   st   | j |j krZ| j|jkrB| j|jkr*d}qX| j|jkr<d}qXd}qp| j|jkrTd}qpd}n| j |j krld}nd}|S )zCompare major.minor.bugfixr      )r   r   r   r   otherZvercmpr   r   r   _compare_versionN   s    zNumpyVersion._compare_versionc                 C   sL   | j |j krd}n6| j dkr"d}n&|j dkr2d}n| j |j krDd}nd}|S )zCompare alpha/beta/rc/final.r   r
   r"   r#   )r   r$   r   r   r   _compare_pre_releasec   s    

z!NumpyVersion._compare_pre_releasec                 C   sr   t |ttfstdt |tr(t|}| |}|dkrn| |}|dkrn| j|jkr^d}n| jrjd}nd}|S )Nz,Invalid object to compare with NumpyVersion.r   r#   r"   )
isinstancestrr   r   r&   r'   r   r$   r   r   r   _comparer   s    


zNumpyVersion._comparec                 C   s   |  |dk S Nr   r*   r   r%   r   r   r   __lt__   s    zNumpyVersion.__lt__c                 C   s   |  |dkS r+   r,   r-   r   r   r   __le__   s    zNumpyVersion.__le__c                 C   s   |  |dkS r+   r,   r-   r   r   r   __eq__   s    zNumpyVersion.__eq__c                 C   s   |  |dkS r+   r,   r-   r   r   r   __ne__   s    zNumpyVersion.__ne__c                 C   s   |  |dkS r+   r,   r-   r   r   r   __gt__   s    zNumpyVersion.__gt__c                 C   s   |  |dkS r+   r,   r-   r   r   r   __ge__   s    zNumpyVersion.__ge__c                 C   s
   d| j  S )NzNumpyVersion(%s))r   )r   r   r   r   __repr__   s    zNumpyVersion.__repr__N)__name__
__module____qualname____doc__r!   r&   r'   r*   r.   r/   r0   r1   r2   r3   r4   r   r   r   r   r      s   ()r8   r   __all__r   r   r   r   r   <module>   s   