ó
¼S]c           @@ s^   d  Z  d d l m Z m Z d d l m Z e d d d d g ƒ Z d e f d	 „  ƒ  YZ d
 S(   s-   The plugin registry (used to locate plugins).i    (   t   absolute_importt   print_function(   t
   namedtuplet   ServiceTypet   namet   default_variablet   descriptiont   RequirementsRegistryc           B@ s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s3   Allows creating Requirement and Provider instances.c         C@ s)   d d l  m } | d |  d | d | ƒ S(   s  Create a requirement instance given an environment variable name.

        Args:
            env_var (str): environment variable name
            options (dict): options from the project file for this requirement

        Returns:
            instance of Requirement
        i   (   t   EnvVarRequirementt   registryt   env_vart   options(   t   requirementR   (   t   selfR
   R   R   (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt   find_requirement_by_env_var   s    
c         C@ s
   | d k S(   s<  See if we can create a requirement instance given a service type.

        Args:
            service_type (str): name of the service type
            env_var (str): environment variable name
            options (dict): options from the project file for this requirement

        Returns:
            boolean
        t   redis(    (   R   t   service_typeR
   R   (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt$   can_find_requirement_by_service_type    s    c         C@ s©   d | k s | d | k r5 | j  ƒ  } | | d <n  | d k r… |  j | | | ƒ s\ t ‚ d d l m } | d |  d | d | ƒ S|  j | | | ƒ s¡ t ‚ d Sd S(	   sE  Create a requirement instance given a service type.

        Args:
            service_type (str): name of the service type
            env_var (str): environment variable name
            options (dict): options from the project file for this requirement

        Returns:
            instance of ServiceRequirement
        t   typeR   i   (   t   RedisRequirementR	   R
   R   N(   t   copyR   t   AssertionErrort   requirements.redisR   t   None(   R   R   R
   R   R   (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt    find_requirement_by_service_type.   s    c         C@ s   t  d d d d d d ƒ g S(   s‘   List known service types.

        Returns:
           iterable of ``ServiceType`` named tuples with (name,default_variable,description)
        R   R   R   t	   REDIS_URLR   s   A Redis server(   R   (   R   (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt   list_service_typesF   s    c         C@ sÉ   | d k r# d d l  m } | ƒ  S| d k rF d d l  m } | ƒ  S| d k ri d d l m } | ƒ  S| d k rŒ d d	 l m } | ƒ  S| d
 k r¯ d d l m } | ƒ  Sd | } t	 | ƒ ‚ d S(   sÍ   Look up a provider by class name.

        Args:
            class_name (str): name of the provider class

        Returns:
            an instance of the passed-in class name or None if not found
        t   CondaEnvProvideri   (   R   t   CondaBootstrapEnvProvider(   R   t   RedisProvider(   R   t   EnvVarProvider(   R   t   DownloadProvider(   R   s5   Provider class %s is not found in providers registry.N(
   t   providers.conda_envR   R   t   providers.redisR   t   providerR   t   providers.downloadR   t
   ValueError(   R   t
   class_nameR   R   R   R   R   t   msg(    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt   find_provider_by_class_nameN   s"    

(   t   __name__t
   __module__t   __doc__R   R   R   R   R'   (    (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyR      s   				N(	   R*   t
   __future__R    R   t   collectionsR   R   t   objectR   (    (    (    sN   lib/python2.7/site-packages/anaconda_project/requirements_registry/registry.pyt   <module>   s   