
    c                     ^    d Z ddlmZmZ ddlmZ  edg d          Z G d de          ZdS )	z-The plugin registry (used to locate plugins).    )absolute_importprint_function)
namedtupleServiceTypenamedefault_variabledescriptionc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )RequirementsRegistryz3Allows creating Requirement and Provider instances.c                 *    ddl m}  || ||          S )a  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
           )EnvVarRequirementregistryenv_varoptions)requirementr   )selfr   r   r   s       Olib/python3.11/site-packages/anaconda_project/requirements_registry/registry.pyfind_requirement_by_env_varz0RequirementsRegistry.find_requirement_by_env_var   s.     	322222  $QQQQ    c                     |dk    S )a<  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
        redis )r   service_typer   r   s       r   $can_find_requirement_by_service_typez9RequirementsRegistry.can_find_requirement_by_service_type   s     w&&r   c                     d|vs|d         |k    r|                                 }||d<   |dk    r-|                     |||          sJ ddlm}  || ||          S |                     |||          rJ dS )aE  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
        typer   r   )RedisRequirementr   N)copyr   requirements.redisr    )r   r   r   r   r    s        r    find_requirement_by_service_typez5RequirementsRegistry.find_requirement_by_service_type-   s       	+GFO|$C 	+llnnG*GFO 7" 	<<\7T[\\\\\<<<<<<##T7GTTTT@@wX_`````4r   c                 (    t          ddd          gS )zList known service types.

        Returns:
           iterable of ``ServiceType`` named tuples with (name,default_variable,description)
        r   	REDIS_URLzA Redis serverr   )r   )r   s    r   list_service_typesz'RequirementsRegistry.list_service_typesE   s     ;Tdeeeffr   c                     |dk    rddl m}  |            S |dk    rddlm}  |            S |dk    rddlm}  |            S |dk    rdd	lm}  |            S d
|z  }t          |          )zLook 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
        CondaEnvProviderr   )r(   RedisProvider)r)   EnvVarProvider)r*   DownloadProvider)r+   z5Provider class %s is not found in providers registry.)	providers.conda_envr(   providers.redisr)   providerr*   providers.downloadr+   
ValueError)r   
class_namer(   r)   r*   r+   msgs          r   find_provider_by_class_namez0RequirementsRegistry.find_provider_by_class_nameM   s     ++ 	"======##%%%?* 	"666666 =??"++ 	"000000!>###-- 	"<<<<<<##%%%IJVCS//!r   N)	__name__
__module____qualname____doc__r   r   r#   r&   r3   r   r   r   r   r      sk        ==R R R' ' '  0g g g" " " " "r   r   N)	r7   
__future__r   r   collectionsr   r   objectr   r   r   r   <module>r;      s    4 3 6 6 6 6 6 6 6 6 " " " " " "j(S(S(STTU" U" U" U" U"6 U" U" U" U" U"r   