
    .Phh                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlZdedee         fdZde	e         defdZdede	e         fd	Zdej        fd
Zdedee         fdZdee         fdZdee         fdZdee         fdZdee         fdZ e
d          Zdee         de	e         fdZdefdZ ej                    dk    ZdS )    N)Path)TYPE_CHECKINGIteratorOptionalTypeVarfpathreturnc              #      K   t           r>t          j                            dd                              t          j                  }nddg}|D ]	}| |z   V  
d S )NPATHEXT z.exe)
is_windowsosenvirongetsplitpathsep)r   extsexts      S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ensureconda/resolve.pyext_candidatesr      sj       z~~i,,222:>>F|  ck     c                     | dS t           j                            |           o=t          j        | t           j                  ot           j                            |           S )NF)r   pathexistsaccessX_OKisfile)r   s    r   is_exer      sG    }u7>>%  XRYubg%>%>X27>>RWCXCXXr   
executablec                     d t           j        d                             t           j                  D             }t	          j        | t           j                            |                    S )a=  Ensure that environment manager tools like pyenv don't break us

    Certain tools like pyenv make use of magic shim directories that contain
    executables that are unsuitable for our use case.

    These executables will exist but may fail on use due to not being in the right
    pyenv execution environment.
    c                 V    g | ]&}t           j                            d d          |v$|'S )z.pyenvshims)r   r   join).0ps     r   
<listcomp>z"which_no_shims.<locals>.<listcomp>$   s=       7<<'**!33 	
333r   PATH)r   )r   r   r   r   shutilwhichr#   )r   	path_lists     r   which_no_shimsr+      s\     F#))"*55  I
 <
)C)CDDDDr   c                  N    t          j        t          j        d                    S )Nzensure-conda)pathlibr   appdirsuser_data_dir r   r   	site_pathr1   ,   s    <-n==>>>r   exe_namec              #      K   t                      }t          |           D ]T}|||z  }t          |          r|V  t          |          }|r't	          j        |          }t          |          r|V  Ud S N)r1   r   r   r+   r-   r   )r2   path_prefix	candidateprefixed_exeexeexe_paths         r   resolve_executabler:   0   s      ++K#H--  	"&2Ll## #"""" Y'' 	|C((Hh  r   c               #      K   t           j                            d          } | r-t          t	          |                     rt	          |           V  t          d          E d {V  d S )N	CONDA_EXEconda)r   r   r   r   r   r:   )conda_exe_from_envs    r   conda_executablesr?   @   sv      44 +$)**++ 	+)*****!'***********r   c               #   4   K   t          d          E d {V  d S )Nconda_standaloner:   r0   r   r   conda_standalone_executablesrC   H   s-      !"455555555555r   c               #   4   K   t          d          E d {V  d S )NmambarB   r0   r   r   mamba_executablesrF   L   s,      !'***********r   c               #   4   K   t          d          E d {V  d S )N
micromambarB   r0   r   r   micromamba_executablesrI   P   s,      !,///////////r   Titc                 D    	 t          |           S # t          $ r Y d S w xY wr4   )nextStopIteration)rK   s    r   	safe_nextrO   W   s4    Bxx   tts    
c                     ddddd} h d}ddd}d	d l }d
|                    d          z  }| t          j                 }t          j                    }||v r| d| S t          j                                        dk    rdS | d| S )Nlinuxosxwin)linux2rQ   darwinwin32>   arm64ppc64aarch64ppc64lex86x86_64)    @   r      P-zoszzos-z)structcalcsizesysplatformmachinelower)_platform_mapnon_x86_machines_arch_namesrc   bitsplatrg   s          r   platform_subdirrn   ^   s     	 M    K
 MMMvs###D&D  G""""""""						&	&wr   Windows)r   r-   rf   r(   re   r   typingr   r   r   r   r.   strr   boolr   r+   r1   r:   r?   rC   rF   rI   rJ   rO   rn   systemr   r0   r   r   <module>rt      s   				    



       = = = = = = = = = = = = # (3-    Y(4. YT Y Y Y YEs Ex} E E E E"?7< ? ? ? ? $     +8D> + + + +6htn 6 6 6 6+8D> + + + +0 0 0 0 0 GCLL(1+ (1+             @ X_)+


r   