
    wBf                    \   d Z ddlmZ ddl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m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 d	dlmZmZ d	dlmZ d	dlmZ d	dl m!Z! erddl"m#Z# ddlm$Z$  ee%      Z& edd      Z'd Z(ddZ)	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ*ddZ+	 	 	 	 	 ddZ,y) z!Helpler functions for subprocess.    )annotationsN)
namedtuple)	getLogger)abspath)PIPECalledProcessErrorPopen)TYPE_CHECKING   )ACTIVE_SUBPROCESSES)shlex_split_unicodedals)context)encode_environment
isiterable)TRACE)rm_rf)wrap_subprocess_call)Path)SequenceResponse)stdoutstderrrcc                (    t        d      | ||||fz  S )Nzp
    $ %s
    ==> cwd: %s <==
    ==> exit code: %d <==
    ==> stdout <==
    %s
    ==> stderr <==
    %s
    r   )command_strcwdr   r   r   s        9lib/python3.12/site-packages/conda/gateways/subprocess.py_format_outputr        s)    	
 
c2vv.
/ 
/    c                   t        t        j                  |t        j                  t        j                  |       \  }}t        ||xs |dt        t        |      }|j                         \  }}|6dt        j                  vrt        |       nt        j                  d|        t        |d      r|j                  dd      }t        |d      r|j                  dd      }|||j                  fS )	NF)r   universal_newlinesr   r   envCONDA_TEST_SAVE_TEMPSz2CONDA_TEST_SAVE_TEMPS :: retaining pip run_script decodezutf-8replace)errors)r   r   root_prefixdevdebugr	   r   communicateosenvironr   logwarninghasattrr&   
returncode)	argsprefixr$   r   script_callercommand_argsprocessr   r   s	            r   any_subprocessr8   .   s    "6#M< M6 G ((*NFF ""**4- KKD]OT vx wy9vx wy967----r!   c           
        t        |xs t        j                        }|t        j                  n
t        |      }t        |       st        |       } 	 t        j                  |       }t        j                  d|       d}|rt        }n|rt        d      d}t!        | |||||dd      }	t#        j$                  |	       |	j'                  |      \  }
}|	j(                  }t#        j*                  |	       |r|d	k7  st        j-                  t.              rt1        ||||
|      }|r(|d	k7  r#t        j3                         t5        || |
      t        j-                  t.              rt        j                  t.               t7        |
|t9        |            S # t        $ r- dj                  t        t        j                  |             }Y ew xY w)zsThis utility function should be preferred for all conda subprocessing.
    It handles multiple tricky details.
    N zexecuting>> %sz/When passing stdin, output needs to be capturedTr'   )r   stdinr   r   r$   textr(   )inputr   )output)r   r-   r.   sysr4   r   r   r   fspath	TypeErrorjoinmapr/   r+   r   
ValueErrorr	   r   addr,   r2   removeisEnabledForr   r    infor   r   int)commandr$   pathr;   raise_on_errorcapture_outputr   r   piper7   r   r   r   formatted_outputs                 r   subprocess_callrP   M   s    S.BJJ
/C#**'$-Cg%g.8ii( II,D	JKK 	G G$ ((u(5NFF			Bw'27s'7'7'>)+sBO"'!" W5EFF
'(FFCG,,O  8hhs299g678s   F 2GGc                r    g }|r|j                  d       |r|j                  d       |D ]
  }|| v s| |=  y )N)
PYTHONPATH
PYTHONHOME)
CONDA_ROOTCONDA_PROMPT_MODIFIER	CONDA_EXECONDA_DEFAULT_ENV)extend)r$   clean_pythonclean_condadelskeys        r   _subprocess_clean_envr]      sH    D01U	
  #:Cr!   c                x    t         j                  j                         }t        |||       t	        | ||||      S )N)r$   rK   r;   rL   )r-   r.   copyr]   rP   )rJ   rK   r;   rL   rY   rZ   r$   s          r   subprocess_call_with_clean_envr`      s8     **//
C#|[9St5 r!   )NN)NNNTT)rJ   z=str | os.PathLike | Path | Sequence[str | os.PathLike | Path]r$   zdict[str, str] | NonerK   zstr | os.PathLike | Path | Noner;   z
str | NonerL   boolrM   ra   )TT)NNTTT)-__doc__
__future__r   r-   r?   collectionsr   loggingr   os.pathr   
subprocessr   r   r	   typingr
    r   auxlib.compatr   
auxlib.ishr   base.contextr   common.compatr   r   common.constantsr   gateways.disk.deleter   utilsr   pathlibr   r   __name__r/   r   r    r8   rP   r]   r`    r!   r   <module>rt      s    ( " 	 
 "   6 6   " /  " : $ ( (j"<=/.B "&,08-J8-	8- *8- 	8-
 8- 8-v
 

r!   