Ë
    »ÿæi#  ã                  ó  — d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ eeeef      Zdd
„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z dd„Z!y)é    )ÚannotationsN)ÚIterableÚMapping)ÚAnyÚCallableÚLiteralÚUnion)Úescape)ÚSpinnerInterfaceÚopen_spinner)ÚInstallationSubprocessError)ÚVERBOSEÚsubprocess_logger)Ú
HiddenTextc                 ó~   — g }| D ]5  }t        |t        «      r|j                  |«       Œ%|j                  |«       Œ7 |S )z&
    Create a CommandArgs object.
    )Ú
isinstanceÚlistÚextendÚappend)ÚargsÚcommand_argsÚargs      ús/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.pyÚmake_commandr      sE   € ð !#€LÛˆô �cœ4Ô Ø×Ñ Õ$ð ×Ñ Õ$ð ð Ðó    c                ó2   — dj                  d„ | D «       «      S )z/
    Format command arguments for display.
    Ú c              3  ó¢   K  — | ]G  }t        |t        «      rt        j                  t	        |«      «      nt        j                  |«      –— ŒI y ­w)N)r   r   ÚshlexÚquoteÚstr)Ú.0r   s     r   Ú	<genexpr>z&format_command_args.<locals>.<genexpr>.   s<   è ø€ ð áˆCô ",¨C´Ô!<Œ�‰”C˜“HÔÄ%Ç+Á+ÈcÓBRÓRÙùs   ‚AA)Újoin)r   s    r   Úformat_command_argsr%   %   s"   € ð �8‰8ñ áóó ð r   c                ód   — | D �cg c]   }t        |t        «      r|j                  n|‘Œ" c}S c c}w )z=
    Return the arguments in their raw, unredacted form.
    )r   r   Úsecret)r   r   s     r   Úreveal_command_argsr(   4   s0   € ñ KOÓOÉ$À3œ* S¬*Ô5ˆC�JŠJ¸3Ñ>È$ÑOÐOùÒOs   …%-c
          	     óÀ  — |€g }|€g }|r!t         j                  }t        j                  }nt         j                  }t
        }t        j                  «       |k  }| xr |du} |d|
«       t        j                  j                  «       }|r|j                  |«       |D ]  }|j                  |d«       Œ 	 t        j                  t        | «      t        j                  t        j                  |	st        j                   nt        j                  ||d¬«      }g }|	sá|j&                  sJ ‚|j(                  sJ ‚|j(                  j+                  «        	 |j&                  j-                  «       }|snC|j/                  «       }|j1                  |dz   «        ||«       |r|sJ ‚|j3                  «        Œ`	 |j5                  «        |j&                  r|j&                  j+                  «        	 dj7                  |«      }nq|j9                  «       \  }}|j;                  «       D ]
  } ||«       Œ |j1                  |«       |j;                  «       D ]
  } ||«       Œ |j1                  |«       |}|j<                  xr |j<                  |v}|r)|sJ ‚|r|j?                  d	«       n|j?                  d
«       |rÑ|dk(  r�tA        |
|j<                  |s|nd¬«      }|rmt        jB                  d|ddi¬«       t        j                  dtE        tG        | «      «      ddi¬«       t        j                  dtE        |xs d«      ddi¬«       |‚|dk(  r$t        jH                  d|
|j<                  |«       |S |dk(  r	 |S tK        d|›�«      ‚|S # t"        $ r}|rt        j$                  d||
«       ‚ d}~ww xY w# |j&                  r|j&                  j+                  «        w w xY w)aÍ  
    Args:
      show_stdout: if true, use INFO to log the subprocess's stderr and
        stdout streams.  Otherwise, use DEBUG.  Defaults to False.
      extra_ok_returncodes: an iterable of integer return codes that are
        acceptable, in addition to 0. Defaults to None, which means [].
      unset_environ: an iterable of environment variable names to unset
        prior to calling subprocess.Popen().
      log_failed_cmd: if false, failed commands are not logged, only raised.
      stdout_only: if true, return only stdout, else return both. When true,
        logging of both stdout and stderr occurs when the subprocess has
        terminated, else logging occurs as subprocess output is produced.
    NzRunning command %sÚbackslashreplace)ÚstdinÚstdoutÚstderrÚcwdÚenvÚerrorsz#Error %s while executing command %sTÚ
Ú ÚerrorÚdoneÚraise)Úcommand_descriptionÚ	exit_codeÚoutput_linesz%sÚrich)Úextraz*[bold magenta]full command[/]: [blue]%s[/]Úmarkupz[bold magenta]cwd[/]: %sz	[inherit]Úwarnz$Command "%s" had error code %s in %sÚignorezInvalid value: on_returncode=)&r   ÚinfoÚloggingÚINFOÚverboser   ÚgetEffectiveLevelÚosÚenvironÚcopyÚupdateÚpopÚ
subprocessÚPopenr(   ÚPIPEÚSTDOUTÚ	ExceptionÚcriticalr,   r+   ÚcloseÚreadlineÚrstripr   ÚspinÚwaitr$   ÚcommunicateÚ
splitlinesÚ
returncodeÚfinishr   r3   r
   r%   ÚwarningÚ
ValueError)ÚcmdÚshow_stdoutr.   Úon_returncodeÚextra_ok_returncodesÚextra_environÚunset_environÚspinnerÚlog_failed_cmdÚstdout_onlyÚcommand_descÚlog_subprocessÚ
used_levelÚshowing_subprocessÚuse_spinnerr/   ÚnameÚprocÚexcÚ
all_outputÚlineÚoutputÚoutÚerrÚout_lineÚerr_lineÚproc_had_errorr3   s                               r   Úcall_subprocessrr   ;   sž  € ð6 Ð#Ø!ÐØÐØˆñ  ä.?×.DÑ.DˆÜ—\‘\‰
ô +×2Ñ2ˆÜˆ
ô +×<Ñ<Ó>À*ÑLÐð )Ð(Ò@¨W¸DÐ-@€KáÐ'¨Ô6Ü
�*‰*�/‰/Ó
€CÙØ�
‰
�=Ô!ÛˆØ�‰��dÕð ðÜ×Ñä Ó$Ü—/‘/Ü—?‘?Ù,7”:×$Ò$¼Z¿_¹_ØØØ%ô	
ˆð$ €JÙØ�{Š{Ðˆ{Ø�zŠzÐˆzØ�
‰
×ÑÔàØŸ™×,Ñ,Ó.ˆDÙØØ—;‘;“=ˆDØ×Ñ˜d T™kÔ*ñ ˜4Ô áÙ��wØ—‘”ð ð	$Ø�I‰IŒKà�{Š{Ø—‘×!Ñ!Õ#Ø—‘˜Ó$‰ð ×#Ñ#Ó%‰ˆˆSàŸ™Ö(ˆHÙ˜8Õ$ð )à×Ñ˜#ÔØŸ™Ö(ˆHÙ˜8Õ$ð )à×Ñ˜#ÔØˆà—_‘_ÒT¨¯©Ð@TÐ)T€NÙÙˆˆwÙØ�N‰N˜7Õ#à�N‰N˜6Ô"ÙØ˜GÒ#Ü/Ø$0ØŸ/™/Ù/A™ZÀtôˆEñ
 Ü!×'Ñ'¨¨e¸FÀD¸>ÕJÜ!×)Ñ)Ø@ÜÔ.¨sÓ3Ó4Ø# TÐ*õô
 "×)Ñ)Ø.Ü˜3Ò- +Ó.Ø# TÐ*õð ˆKØ˜fÒ$Ü×%Ñ%Ø6ØØ—‘Øô	ð €Mð	 ˜hÒ&Øð €Mô Ð<¸]Ð<MÐNÓOÐOØ€Møôk ò ÙÜ×&Ñ&Ø5ØØôð
 	ûðûð< �{Š{Ø—‘×!Ñ!Õ#ð ús%   Â6A!N	 Æ3N4 Î		N1ÎN,Î,N1Î4)Oc                ó(   ‡ — 	 	 d	 	 	 	 	 	 	 dˆ fd„}|S )zßProvide a subprocess_runner that shows a spinner message.

    Intended for use with for BuildBackendHookCaller. Thus, the runner has
    an API that matches what's expected by BuildBackendHookCaller.subprocess_runner.
    c                óf   •— t        ‰«      5 }t        | ‰|||¬«       d d d «       y # 1 sw Y   y xY w)N)rb   r.   r]   r_   )r   rr   )rY   r.   r]   r_   Úmessages       €r   Úrunnerz+runner_with_spinner_message.<locals>.runnerê   s2   ø€ ô
 ˜'Ô" gÜØØ$ØØ+Øõ÷ #×"Ñ"ús   �'§0)NN)rY   ú	list[str]r.   ú
str | Noner]   úMapping[str, Any] | NoneÚreturnÚNone© )ru   rv   s   ` r   Úrunner_with_spinner_messager}   ã   s;   ø€ ð Ø26ðØðàðð 0ðð 
õ	ð €Mr   )r   zstr | HiddenText | CommandArgsrz   ÚCommandArgs)r   úlist[str] | CommandArgsrz   r!   )r   r   rz   rw   )	FNr5   NNNNTF)rY   r   rZ   Úboolr.   rx   r[   z"Literal['raise', 'warn', 'ignore']r\   zIterable[int] | Noner]   ry   r^   zIterable[str] | Noner_   zSpinnerInterface | Noner`   úbool | Nonera   r�   rb   r!   rz   r!   )ru   r!   rz   zCallable[..., None])"Ú
__future__r   r?   rC   r   rH   Úcollections.abcr   r   Útypingr   r   r   r	   Úpip._vendor.rich.markupr
   Úpip._internal.cli.spinnersr   r   Úpip._internal.exceptionsr   Úpip._internal.utils.loggingr   r   Úpip._internal.utils.miscr   r   r!   r~   r   r%   r(   rr   r}   r|   r   r   Ú<module>rŠ      sø   ðÝ "ã Û 	Û Û ß -ß 0Ó 0å *ç EÝ @ß BÝ /à�5˜˜j˜Ñ)Ñ*€óó"óPð ØØ8?Ø15Ø.2Ø*.Ø'+Ø"&Ø$ðeØ	 ðeàðeð 
ðeð 6ð	eð
 /ðeð ,ðeð (ðeð %ðeð  ðeð ðeð ðeð 	óeôPr   