
    DIe                    |    d 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 dd	lmZmZ d
Z G d d          ZdS )zDefine binstar spec.    )annotationsN)cached_property)
ModuleType)EnvironmentFileNotDownloadednormalized_version   )Environment	from_yaml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    sX     ?? 	E< X  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_name1   sM    
 8M3ty>>22>4Y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.binstarE   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>P   s.     
 
 
d6lFV6V6VD6V6V6Vr   files)r   r   s    r   r&   zBinstarSpec.file_dataN   s*    
 
!\'2
 
 
 	
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>V   s@     
 
 
 .a	l;;9VV
 
 
r   c                    | d         S )Nr7    )xs    r   <lambda>z)BinstarSpec.environment.<locals>.<lambda>Z   s
    Q|_ r   )keyr8   c                ,    g | ]}|d          k    |S )r6   r;   )r0   r1   latest_versions     r   r2   z+BinstarSpec.environment.<locals>.<listcomp>[   s.     
 
 
d9o6W6WD6W6W6Wr   r3   r   basename)
r&   maxr   r   downloadusernamepackagenamer   r   text)r   versionsr&   reqr@   s       @r   environmentzBinstarSpec.environmentT   s    
 
^
 
 
 X+D+DEEEjQ
 
 
 
!\'2
 
 
	 l##M4+^Yq\*=U
 
 ;.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.packagee   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.usernamep       ysA&&q))r   c                D    | j                             dd          d         S )NrO   rP   rQ   r   s    r   rE   zBinstarSpec.packagenamet   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      s0         C      "   ' ' ' '    _ 
 
 
 _

 # # # _#    _ * * * _* * * * _* * *r   r   )rX   
__future__r   r!   	functoolsr   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 ( ( ( ( ( ( ( ( d* d* d* d* d* d* d* d* d* d*r   