Ë
    ð�©j)#  ã                  ó  — 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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 d dlmZmZ d d	lmZ eeez     Zdd
„Zdd„Zdd„Z	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z y)é    )ÚannotationsN)ÚCallableÚIterableÚMapping)ÚAnyÚLiteral)Ú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      úe/var/www/html/streamforge-license/venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.pyÚmake_commandr      sJ   € ð !#€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˜“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   s,   € ð 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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ÚlocaleÚbackslashreplace)ÚstdinÚstdoutÚstderrÚcwdÚenvÚencodingÚ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   r4   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_errorr4   s                               r   Úcall_subprocessrs   ;   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
 Æ4N5 Î
	N2ÎN-Î-N2Î5)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)rc   r.   r^   r`   )r   rs   )rZ   r.   r^   r`   Úmessages       €r   Úrunnerz+runner_with_spinner_message.<locals>.runnerë   s;   ø€ ô
 ˜'Ó"ð 	 gÜØØ$ØØ+Øõ÷	÷ 	ñ 	ús   �'§0)NN)rZ   ú	list[str]r.   ú
str | Noner^   úMapping[str, Any] | NoneÚreturnÚNone© )rv   rw   s   ` r   Úrunner_with_spinner_messager~   ä   s;   ø€ ð Ø26ðØðàðð 0ðð 
õ	ð €Mr   )r   zstr | HiddenText | CommandArgsr{   ÚCommandArgs)r   úlist[str] | CommandArgsr{   r    )r   r€   r{   rx   )	FNr6   NNNNTF)rZ   r€   r[   Úboolr.   ry   r\   z"Literal['raise', 'warn', 'ignore']r]   zIterable[int] | Noner^   rz   r_   zIterable[str] | Noner`   zSpinnerInterface | Nonera   úbool | Nonerb   r‚   rc   r    r{   r    )rv   r    r{   zCallable[..., None])!Ú
__future__r   r@   rD   r   rI   Úcollections.abcr   r   r   Útypingr   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'   rs   r~   r}   r   r   ú<module>r‹      sô   ðÝ "ã Û 	Û Û ß 7Ñ 7ß å *ç EÝ @ß BÝ /à�3˜Ñ#Ñ$€óó"óPð ØØ8?Ø15Ø.2Ø*.Ø'+Ø"&Ø$ðfØ	 ðfàðfð 
ðfð 6ð	fð
 /ðfð ,ðfð (ðfð %ðfð  ðfð ðfð ðfð 	ófôRr   