ó
‹²,]c           @   su   d  Z  d d l Z d d l m Z d e f d „  ƒ  YZ g  a d e d „ Z	 d „  Z
 t e j d „ Z d	 „  Z d S(
   s+   Module checking Spyder runtime dependenciesiÿÿÿÿN(   t   programst
   Dependencyc           B   sD   e  Z d  Z d Z d Z d e d „ Z d „  Z d „  Z	 d „  Z
 RS(   s¦   Spyder's dependency

    version may starts with =, >=, > or < to specify the exact requirement ;
    multiple conditions may be separated by ';' (e.g. '>=0.13;<1.0')t   OKt   NOKc         C   si   | |  _  | |  _ | |  _ | |  _ | d  k r\ y t j | ƒ |  _ Wqe d  |  _ qe Xn	 | |  _ d  S(   N(   t   modnamet   featurest   required_versiont   optionalt   NoneR    t   get_module_versiont   installed_version(   t   selfR   R   R   R
   R   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   __init__   s    				c         C   s   t  j |  j |  j |  j ƒ S(   s    Check if dependency is installed(   R    t   is_module_installedR   R   R
   (   R   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   check*   s    c         C   s8   |  j  ƒ  r  d |  j |  j f Sd |  j |  j f Sd S(   s!   Return dependency status (string)s   %s (%s)N(   R   R
   R   R   (   R   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   get_installed_version0   s    c         C   s   |  j  ƒ  r |  j S|  j Sd S(   s!   Return dependency status (string)N(   R   R   R   (   R   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt
   get_status7   s    N(   t   __name__t
   __module__t   __doc__R   R   R   t   FalseR   R   R   R   (    (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyR      s   		c         C   sV   x0 t  D]( } | j |  k r t d |  ƒ ‚ q q Wt  t |  | | | | ƒ g 7a  d S(   s   Add Spyder dependencys*   Dependency has already been registered: %sN(   t   DEPENDENCIESR   t
   ValueErrorR   (   R   R   R   R
   R   t
   dependency(    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   addB   s    c         C   s>   x7 t  D] } | j |  k r | j ƒ  Sq Wt d |  ƒ ‚ d S(   s)   Check if required dependency is installeds   Unkwown dependency %sN(   R   R   R   t   RuntimeError(   R   R   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyR   N   s    c   	      C   sÇ   d } g  } g  } x` |  D]X } | j  } | d | j 7} | j | ƒ t | t | ƒ g ƒ } | j | j ƒ  ƒ q Wd } xA t t |  ƒ ƒ D]- } | | | j | ƒ d | | | 7} qŽ W| d  S(   s   Return a status of dependenciesi    t    t    s   :  iÿÿÿÿ(   R   R   t   appendt   maxt   lenR   t   ranget   ljust(	   t   depst   linesept   maxwidtht   col1t   col2R   t   title1t   textt   index(    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   statusW   s    	+c          C   s_   g  }  x5 t  D]- } | j ƒ  r | j r |  j | ƒ q q W|  rW t d |  d d ƒ Sd Sd S(   s2   Return the status of missing dependencies (if any)R!   R"   s   <br>R   N(   R   R   R   R   R)   (   t   missing_depsR   (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   missing_dependenciesh   s    (   R   t   ost   spyder.utilsR    t   objectR   R   R   R   R   R   R"   R)   R+   (    (    (    s2   lib/python2.7/site-packages/spyder/dependencies.pyt   <module>   s   /		