ó
Ý˛k^c           @   s   d  d l  Z  d  d l m Z d d l m Z d d l m Z y$ d  d l m Z d  d l	 m
 Z
 Wn e k
 ry d Z
 n Xd Z d	 e f d
     YZ d S(   i˙˙˙˙N(   t   normalized_versioni   (   t   env(   t   EnvironmentFileNotDownloaded(   t   errors(   t   get_server_apiR   t   BinstarSpecc           B   sś   e  Z d  Z d Z d Z d Z d Z d Z d Z	 d d  Z
 d   Z d   Z d   Z d   Z e d    Z e d    Z e d    Z e d	    Z e d
    Z d   Z RS(   sĺ   
    spec = BinstarSpec('darth/deathstar')
    spec.can_handle() # => True / False
    spec.environment # => YAML string
    spec.msg # => Error messages
    :raises: EnvironmentFileDoesNotExist, EnvironmentFileNotDownloaded
    c         K   s:   | |  _  t |  _ t d  k	 r- t   |  _ n	 d  |  _ d  S(   N(   t   namet   Falset   quietR   t   Nonet   binstar(   t   selfR   t   kwargs(    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyt   __init__$   s
    		c         C   s   |  j    } | S(   N(   t   _can_handle(   R   t   result(    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyt
   can_handle,   s    c         C   sE   |  j    rA |  j d k r( d |  _ t S|  j d k	 o@ |  j   St S(   se   
        Validates loader can process environment definition.
        :return: True or False
        s   Anaconda Client is required to interact with anaconda.org or an Anaconda API. Please run `conda install anaconda-client -n base`.N(   t
   valid_nameR
   R	   t   msgR   t   packaget   valid_package(   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR   0   s    	c         C   sM   t  j d t |  j   d k	 r% t S|  j d k r@ d |  _ n	 d |  _ t S(   s?   
        Validates name
        :return: True or False
        s   ^(.+)/(.+)$s   Can't process without a names*   Invalid name, try the format: user/packageN(   t   ret   matcht   strR   R	   t   TrueR   R   (   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR   ?   s    !	c         C   s   t  |  j  d k S(   s`   
        Returns True if package has an environment file
        :return: True or False
        i    (   t   lent	   file_data(   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR   L   s    c         C   sL   |  j  d  k rE g  |  j d D] } | d t k r | ^ q |  _  n  |  j  S(   Nt   filest   type(   t
   _file_dataR	   R   t   ENVIRONMENT_TYPE(   R   t   data(    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR   S   s
    "c         C   sü   |  j  d	 k rě g  |  j D]( } i t | d  d 6| d d 6^ q } t | d d   d } g  |  j d D] } | d | k rn | ^ qn } |  j j |  j |  j	 | | d d  } | d	 k rÝ t
 |  j |  j	   n  | j |  _  n  t j |  j   S(
   s7   
        :raises: EnvironmentFileNotDownloaded
        t   versiont
   normalizedt   originalt   keyc         S   s   |  d S(   NR!   (    (   t   x(    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyt   <lambda>c   s    R   i    t   basenameN(   t   _environmentR	   R   R    t   maxR   R
   t   downloadt   usernamet   packagenameR   t   textR   t	   from_yaml(   R   t   dt   versionst   latest_versionR   R   t   req(    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyt   environment[   s    5c         C   sg   |  j  d  k r` y" |  j j |  j |  j  |  _  Wq` t j k
 r\ d j |  j	  |  _
 q` Xn  |  j  S(   Ns_   {} was not found on anaconda.org.
You may need to be logged in. Try running:
    anaconda login(   t   _packageR	   R
   R   R*   R+   R   t   NotFoundt   formatR   R   (   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR   n   s    "c         C   s,   |  j  d  k r% |  j   d |  _  n  |  j  S(   Ni    (   t	   _usernameR	   t   parse(   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR*   y   s    c         C   s,   |  j  d  k r% |  j   d |  _  n  |  j  S(   Ni   (   t   _packagenameR	   R7   (   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR+      s    c         C   s   |  j  j d d  S(   s#   Parse environment definition handlet   /i   (   R   t   split(   R   (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR7      s    N(   t   __name__t
   __module__t   __doc__R	   R'   R6   R8   R3   R   R   R   R   R   R   R   t   propertyR   R2   R   R*   R+   R7   (    (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyR      s$   				(   R   t   conda.models.versionR    t    R   t
   exceptionsR   t   binstar_clientR   t   binstar_client.utilsR   t   ImportErrorR	   R   t   objectR   (    (    (    s6   lib/python2.7/site-packages/conda_env/specs/binstar.pyt   <module>   s   
