
    %d                    x    d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 ddlmZmZ d	Z G d
 d          ZdS )    )annotations)cached_propertyN)
ModuleType)EnvironmentFileNotDownloadednormalized_version   )	from_yamlEnvironmentenvc                      e Zd ZdZdZddZddZddZddZe	dd
            Z
e	dd            Ze	dd            Ze	d             Ze	dd            Ze	dd            ZdS )BinstarSpecz
    spec = BinstarSpec('darth/deathstar')
    spec.can_handle() # => True / False
    spec.environment # => YAML string
    spec.msg # => Error messages
    :raises: EnvironmentFileNotDownloaded
    Nc                    || _         d S N)name)selfr   s     7lib/python3.11/site-packages/conda_env/specs/binstar.py__init__zBinstarSpec.__init__   s    			    returnboolc                    |                                  r-| j        s	d| _        dS | j        duo|                                 S dS )ze
        Validates loader can process environment definition.
        :return: True or False
        zAnaconda Client is required to interact with anaconda.org or an Anaconda API. Please run `conda install anaconda-client -n base`.FN)
valid_namebinstarmsgpackagevalid_packager   s    r   
can_handlezBinstarSpec.can_handle   sS     ?? 	E< `u<t+D0B0B0D0DDur   c                    t          j        dt          | j                            dS | j        d| _        nd| j        d| _        dS )z?
        Validates name
        :return: True or False
        z^(.+)/(.+)$NTzCan't process without a namezInvalid name z, try the format: user/packageF)rematchstrr   r   r   s    r   r   zBinstarSpec.valid_name.   sS    
 8M3ty>>22 	S4Y 	S5DHHRtyRRRDHur   c                2    t          | j                  dk    S )z`
        Returns True if package has an environment file
        :return: True or False
        r   )len	file_datar   s    r   r   zBinstarSpec.valid_package;   s    
 4>""Q&&r   r   c                F    	 ddl m}  |            S # t          $ r Y d S w xY w)Nr   )get_server_api)binstar_client.utilsr(   ImportError)r   r(   s     r   r   zBinstarSpec.binstarB   sI    	;;;;;;!>### 	 	 	DD	s    
  list[dict[str, str]]c                0    d | j         d         D             S )Nc                4    g | ]}|d          t           k    |S )type)ENVIRONMENT_TYPE).0datas     r   
<listcomp>z)BinstarSpec.file_data.<locals>.<listcomp>M   s'    [[[$v,JZ:Z[[[[r   files)r   r   s    r   r&   zBinstarSpec.file_dataK   s    [[g!6[[[[r   r   c                N   d | j         D             }t          |d           d         fd| j        d         D             }| j                            | j        | j        |d         d                   }|t          | j        | j                  t          |j	                  S )	Nc                J    g | ] }t          |d                    |d          d!S )version)
normalizedoriginalr   )r0   ds     r   r2   z+BinstarSpec.environment.<locals>.<listcomp>Q   s@     
 
 
 .a	l;;9VV
 
 
r   c                    | d         S )Nr7    )xs    r   <lambda>z)BinstarSpec.environment.<locals>.<lambda>U   s
    Q|_ r   )keyr8   c                ,    g | ]}|d          k    |S )r6   r;   )r0   r1   latest_versions     r   r2   z+BinstarSpec.environment.<locals>.<listcomp>V   s(    aaadtIR`?`aTaaar   r3   r   basename)
r&   maxr   r   downloadusernamepackagenamer   r
   text)r   versionsr&   reqr@   s       @r   environmentzBinstarSpec.environmentO   s    
 
^
 
 
 X+D+DEEEjQaaaadl7&;aaa	l##M4+^Yq\*=U
 
  	P.t}d>NOOO"""r   c                    	 | j                             | j        | j                  S # t          t
          f$ r# d                    | j                  | _        Y d S w xY w)Nz_{} was not found on anaconda.org.
You may need to be logged in. Try running:
    anaconda login)	r   r   rD   rE   
IndexErrorAttributeErrorformatr   r   r   s    r   r   zBinstarSpec.package^   se    	<''t7GHHHN+ 	 	 	%%+VDI%6%6 HHHH	s   $' 0AAr#   c                D    | j                             dd          d         S )N/   r   r   splitr   s    r   rD   zBinstarSpec.usernamei       ysA&&q))r   c                D    | j                             dd          d         S )NrO   rP   rQ   r   s    r   rE   zBinstarSpec.packagenamem   rS   r   r   )r   r   )r   r   )r   r+   )r   r   )r   r#   )__name__
__module____qualname____doc__r   r   r   r   r   r   r   r&   rI   r   rD   rE   r;   r   r   r   r      s4         C         ' ' ' '    _ \ \ \ _\ # # # _#   _ * * * _* * * * _* * *r   r   )
__future__r   	functoolsr   r!   typesr   conda.exceptionsr   conda.models.versionr   r   r
   r   r/   r   r;   r   r   <module>r^      s    # " " " " " % % % % % % 				       9 9 9 9 9 9 3 3 3 3 3 3 ( ( ( ( ( ( ( (  ]* ]* ]* ]* ]* ]* ]* ]* ]* ]*r   