ó
Ê½÷Xc           @   sB   d  Z  d d l Z d d l m Z d g Z d d d „  ƒ  YZ d S(   s  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.

iÿÿÿÿN(   t   string_typest   NumpyVersionc           B   sq   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 RS(   s¢  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.

    Parameters
    ----------
    vstring : str
        Numpy version string (``np.__version__``).

    Notes
    -----
    All dev versions of the same (pre-)release compare equal.

    Examples
    --------
    >>> from scipy._lib._version import NumpyVersion
    >>> if NumpyVersion(np.__version__) < '1.7.0':
    ...     print('skip')
    skip

    >>> NumpyVersion('1.7')  # raises ValueError, add ".0"

    c   	      C   sf  | |  _  t j d | ƒ } | s0 t d ƒ ‚ n  | j ƒ  |  _ g  |  j j d ƒ D] } t | ƒ ^ qR \ |  _ |  _	 |  _
 t | ƒ | j ƒ  k r  d |  _ n§ t j d | | j ƒ  ƒ } t j d | | j ƒ  ƒ } t j d | | j ƒ  ƒ } g  | | | g D] } | d  k	 r| ^ q} | r>| d j ƒ  |  _ n	 d	 |  _ t t j d
 | ƒ ƒ |  _ d  S(   Ns   \d[.]\d+[.]\d+s    Not a valid numpy version stringt   .t   finals   a\ds   b\ds   rc\di    t    s   .dev(   t   vstringt   ret   matcht
   ValueErrort   groupt   versiont   splitt   intt   majort   minort   bugfixt   lent   endt   pre_releaset   Nonet   boolt   searcht   is_devversion(	   t   selfR   t   ver_maint   xt   alphat   betat   rct   mt   pre_rel(    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __init__7   s"    	:.	c         C   s¬   |  j  | j  k r‡ |  j | j k rc |  j | j k r? d } q„ |  j | j k rZ d } q„ d } q¨ |  j | j k r~ d } q¨ d } n! |  j  | j  k r¢ d } n d } | S(   s   Compare major.minor.bugfixi    i   iÿÿÿÿ(   R   R   R   (   R   t   othert   vercmp(    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   _compare_versionN   s    						c         C   sp   |  j  | j  k r d } nQ |  j  d k r3 d } n9 | j  d k rK d } n! |  j  | j  k rf d } n d } | S(   s   Compare alpha/beta/rc/final.i    R   i   iÿÿÿÿ(   R   (   R   R    R!   (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   _compare_pre_releasec   s    				c         C   sµ   t  | t t f ƒ s$ t d ƒ ‚ n  t  | t ƒ rB t | ƒ } n  |  j | ƒ } | d k r± |  j | ƒ } | d k r± |  j | j k r“ d } q® |  j r¥ d } q® d } q± n  | S(   Ns,   Invalid object to compare with NumpyVersion.i    iÿÿÿÿi   (   t
   isinstanceR    R   R   R"   R#   R   (   R   R    R!   (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   _comparer   s    			c         C   s   |  j  | ƒ d k  S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __lt__ˆ   s    c         C   s   |  j  | ƒ d k S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __le__‹   s    c         C   s   |  j  | ƒ d k S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __eq__Ž   s    c         C   s   |  j  | ƒ d k S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __ne__‘   s    c         C   s   |  j  | ƒ d k S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __gt__”   s    c         C   s   |  j  | ƒ d k S(   Ni    (   R%   (   R   R    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __ge__—   s    c         C   s   d |  j  S(   Ns   NumpyVersion(%s)(   R   (   R   (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   __repr__š   s    (   t   __name__t
   __module__t   __doc__R   R"   R#   R%   R&   R'   R(   R)   R*   R+   R,   (    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyR      s   %										(    (   R/   R   t   scipy._lib.sixR    t   __all__R   (    (    (    s2   /tmp/pip-build-7oUkmx/scipy/scipy/_lib/_version.pyt   <module>   s   	