
    =e]                       U d Z ddlmZ ddgZddlZddlZddlZddlZddlZddl	Z	ej
        dk    rej        ndZded<    G d	 d
e	j                  Z G d de	j                  ZddddZded<   ded<   ded<   ded<   ddZdS )z"Utilities to detect :code:`conda`.    )annotations
find_conda
CONDA_INFONwin32ztyping.Final[int]FLAGSc                  2    e Zd ZU dZded<   ded<   ded<   dS )	CondaInfoz#Details on detected conda instance.str	CONDA_EXECONDA_PREFIX
CONDA_ROOTN)__name__
__module____qualname____doc____annotations__     :lib/python3.11/site-packages/binstar_client/utils/conda.pyr	   r	      s6         -- NNNOOOOOr   r	   c                      e Zd ZdZdS )Emptyzg
    Empty dictionary.

    Alternative to :class:`~CondaInfo` in case :code:`conda` is not found.
    N)r   r   r   r   r   r   r   r   r      s           r   r   F)use_envprefixesr
   r   boolreturntyping.Union[CondaInfo, Empty]c                   g }t           j                            dd          x}ra| rJt           j                            dd          x}r(t           j                            dd          x}r|||dS |                    |           t           j                            t          j                  }t           j        dk    r!t           j        	                    dd          }n t           j        	                    d	d
          }t          j        |t           j                            t           j                            |                    |g          D ]5}|                    t           j        	                    ||                     6|                    d
           |D ]}	 t          j        t          j        |ddgt"                              }|                    dd          p|                    dd          }|                    dd          p|                    dd          }n(# t$          t&          t(          t          j        f$ r Y w xY w|||dc S i S )a:  
    Find :code:`conda` and collect essential details on it.

    :param prefixes: Extra prefixes where to look for conda.
    :param use_env: Use only existing environment variables if they contain all required details.

                    If at least one variable is missing - usual detection will be used.
    r    r   r   )r   r   r   ntScriptszconda-script.pybincondainfoz--json)creationflagsactive_prefixconda_prefixroot_prefix)osenvirongetappendpathabspathsysprefixnamejoin	itertoolschaindirnamejsonloads
subprocesscheck_outputr   KeyErrorOSError
ValueErrorSubprocessError)r   r   commandscommandr/   rootr#   s          r   r   r   &   s'    "$H
 *..b111w ! 	V"*.."D"DD 	VSUS]SaSabnprSsSsKs4 	V!(&PTUUU   W__SZ((F	w$',,y*;<<',,ug../(RW__RW__V=T=T-U-UW],^__ 7 7VW556666OOG R R	:j5w6QafggghhDXXor22Rdhh~r6R6RF88M2..N$((>22N2NDD':z/IJ 	 	 	H	$fDQQQQQIs   !BH**"IIztyping.Optional[str]r   r   r   r0   
typing.Anyc                   | dk    r.t                                          dt                                S | dv r0t          j        t
                   j                            | d          S t          dt
          d|           )z!Calculate lazy module properties.r   >   r   r   r   Nzmodule z has no attribute )	globals
setdefaultr   r.   modulesr   r   r*   AttributeError)r0   s    r   __getattr__rF   W   sv    |yy##L*,,???:::{8$/33D$???
I8IIII
J
JJr   )r   r
   r   r   r   r   )r0   r
   r   r@   )r   
__future__r   __all__r2   r5   r(   r7   r.   typingplatformCREATE_NO_WINDOWr   r   	TypedDictr	   r   r   rF   r   r   r   <module>rM      sd   ) ( ( " " " " " "
&      				     



  ;>,':Q:Q:66WX X X X X            F    05 ' ' ' ' ' 'T + * * *     " " " "        K K K K K Kr   