
    si!                       S r SSKJr  SSKrSSKJrJr  SSKJr  SSK	J
r
Jr  SSKJr  SSKJr  S	S
KJr  S	SKJr  S	SKJr  S	SKJr  S	SKJr  S	SKJr  S	SKJr  SSKJr  SSK J!r!J"r"J#r#J$r$  \(       a  SSK%J&r&  S	SKJ'r'   " S S\"5      r( " S S\"5      r) " S S\$5      r* " S S\$5      r+ " S S\#5      r,\" S S!9S" 5       r-g)#ze
Defines a "console" reporter backend.

This reporter backend provides the default output for conda.
    )annotationsN)EPIPE	ESHUTDOWN)cycle)EventThread)sleep)TYPE_CHECKING   ) DEFAULT_CONSOLE_REPORTER_BACKEND)context)swallow_broken_pipe)paths_equal)
PrefixData)
CondaError)human_bytes   )hookimpl)CondaReporterBackendProgressBarBaseReporterRendererBaseSpinnerBase)Iterable)PathTypec                  6    \ rS rSrSrSS jrSS jrSS jrSrg)	QuietProgressBar)   z:
Progress bar class used when no output should be printed
c                    g N )selffractions     Glib/python3.13/site-packages/conda/plugins/reporter_backends/console.py	update_toQuietProgressBar.update_to.           c                    g r   r    r!   s    r#   refreshQuietProgressBar.refresh1   r&   r'   c                    g r   r    r)   s    r#   closeQuietProgressBar.close4   r&   r'   r    NreturnNone)	__name__
__module____qualname____firstlineno____doc__r$   r*   r-   __static_attributes__r    r'   r#   r   r   )   s    r'   r   c                  v   ^  \ rS rSrSr  S	   S
U 4S jjjrSS jr\SS j5       rSS jr	\
S 5       rSrU =r$ )TQDMProgressBar8   z0
Progress bar class used for tqdm progress bars
c           
        > [         TU ]  U5        SU l        Sn U R                  UUSS[        R
                  UUS9U l        g ! [         a,  nUR                  [        [        4;   a  SU l         S nAg e S nAff = f)NTz!{desc}{bar} | {percentage:3.0f}%    )desc
bar_formatasciitotalfilepositionleaveF)super__init__enabled_tqdmsysstdoutpbarOSErrorerrnor   r   )r!   descriptionrB   rC   kwargsr>   e	__class__s          r#   rE   TQDMProgressBar.__init__=   s     	%8
	

 %ZZ! # DI  	ww5),,$		s   (A 
A:!A54A55A:c                     U R                   (       a2  U R                  R                  XR                  R                  -
  5        g g ! [         a,  nUR
                  [        [        4;   a  SU l          S nAg e S nAff = fNF)rF   rJ   updatenrK   rL   r   r   )r!   r"   rO   s      r#   r$   TQDMProgressBar.update_toZ   s]    	||		  IIKK!78  	ww5),,$		s   AA 
A<!A76A77A<c                \    U R                   (       a  U R                  R                  5         g g r   )rF   rJ   r-   r)   s    r#   r-   TQDMProgressBar.closed   s    <<IIOO r'   c                \    U R                   (       a  U R                  R                  5         g g r   )rF   rJ   r*   r)   s    r#   r*   TQDMProgressBar.refreshi   s    <<II r'   c                     SSK Jn  U" U 0 UD6$ )z=Deferred import so it doesn't hit the `conda activate` paths.r   )tqdm)	tqdm.autor\   )argsrN   r\   s      r#   rG   TQDMProgressBar._tqdmm   s     	#T$V$$r'   )rF   rJ   )NT)rM   strr0   r1   r/   )r2   r3   r4   r5   r6   rE   r$   r   r-   r*   staticmethodrG   r7   __classcell__rP   s   @r#   r9   r9   8   s^     	 
 :    % %r'   r9   c                  d   ^  \ rS rSr\" S5      rS
U 4S jjrS rS rS r	\
S 5       rS rS	rU =r$ )Spinneru   z/-\|c                   > [         TU ]  X5        SU l        [        5       U l        [        U R                  S9U l        [        [        U R                  5      5      S-   U l        [        R                  U l        g )NT)targetr<   )rD   rE   	show_spinr   _stop_runningr   _start_spinning_spinner_threadlennextspinner_cycle_indicator_lengthrH   rI   fh)r!   messagefail_messagerP   s      r#   rE   Spinner.__init__x   s\    /#"W%T-A-AB!$T$*<*<%=!>!B**r'   c                8    U R                   R                  5         g r   )rl   startr)   s    r#   rv   Spinner.start   s    ""$r'   c                z    U R                   R                  5         U R                  R                  5         SU l        g rS   )rj   setrl   joinri   r)   s    r#   stopSpinner.stop   s-     !!#r'   c                    U R                   R                  5       (       d  U R                  R                  [	        U R
                  5      S-   5        U R                  R                  5         [        S5        U R                  R                  SU R                  -  5        U R                   R                  5       (       d  M  g g ! [         a5  nUR                  [        [        4;   a  U R                  5          S nAg e S nAff = f)N g?)rj   is_setrq   writern   ro   flushr	   rp   rK   rL   r   r   r{   )r!   rO   s     r#   rk   Spinner._start_spinning   s    
	((//11d4#5#56<=ddT%;%;;<	 ((//11
  	ww5),,				s   B<C 
D*C<;C<<Dc                    [         R                  R                  U R                   S35        [         R                  R	                  5         U R                  5         g )N: )rH   rI   r   rr   r   rv   r)   s    r#   	__enter__Spinner.__enter__   s8    

DLL>,-



r'   c                N   U R                  5         [           U(       d  U(       a*  [        R                  R	                  U R
                  5        O[        R                  R	                  S5        [        R                  R                  5         S S S 5        g ! , (       d  f       g = fNzdone
)r{   r   rH   rI   r   rs   r   r!   exc_typeexc_valexc_tbs       r#   __exit__Spinner.__exit__   sY    		 7

  !2!23

  *JJ !  s   A6B
B$)rp   rl   rj   rq   ri   zfailed
)r2   r3   r4   r5   r   ro   rE   rv   r{   rk   r   r   r   r7   rb   rc   s   @r#   re   re   u   s>    'NM%
  
 r'   re   c                       \ rS rSrS rS rSrg)QuietSpinner   c                   [         R                  R                  U R                   S35        [         R                  R	                  5         [         R                  R                  S5        [         R                  R	                  5         g )Nr   z...working... )rH   rI   r   rr   r   r)   s    r#   r   QuietSpinner.__enter__   sR    

DLL>,-



)*

r'   c                .   [            U(       d  U(       a*  [        R                  R                  U R                  5        O[        R                  R                  S5        [        R                  R                  5         S S S 5        g ! , (       d  f       g = fr   )r   rH   rI   r   rs   r   r   s       r#   r   QuietSpinner.__exit__   sP     7

  !2!23

  *JJ !  s   A6B
Br    N)r2   r3   r4   r5   r   r   r7   r    r'   r#   r   r      s    r'   r   c                  p    \ rS rSrSrS
S jr\ S   SS jj5       r    SS jrSSS jjr	SSS jjr
Srg	)ConsoleReporterRenderer   z7
Default implementation for console reporting in conda
c                   S/n[        [        [        UR                  5       5      5      nUR	                  5        H   u  pVUR                  SUSU 3 SU 35        M"     UR                  S5        SR                  U5      $ )N r~   >z : 
)maxmaprm   keysitemsappendrz   )r!   datarN   table_partslongest_headerheadervalues          r#   detail_view#ConsoleReporterRenderer.detail_view   sw    dSdiik23!ZZ\MF6!N+;);"<CwGH * 	4 yy%%r'   c                  ^ U(       d  gUR                  SS5      m/ SQnSU4S jjnU  H:  n[        U[        5      (       d  [        U5      nUR                  U" U5      5        M<     UR                  S5        SR	                  U5      $ )Nr   	show_sizeF)r   z# conda environments:#z# * -> activez# + -> frozenc           	       > [         R                  (       a+  [        U R                  [         R                  5      (       a  SOSnU R	                  5       (       a  SOSnT(       a?  [        U R                  5       5      nU R                  S SU SU SUS SU R                   3	$ U R                  S SU SU SU R                   3$ )N*r~   +20z>10)r   active_prefixr   prefix_path	is_frozenr   sizename)prefixactivefrozensize_strr   s       r#   disp_env3ConsoleReporterRenderer.envs_list.<locals>.disp_env   s     (( 2 2G4I4IJJ  	  #,,..SCF&v{{}5 ++b)6(!F81XcN!FL^L^K_`` ++b)6(!F81V=O=O<PQQr'   r   )r   r   r0   r`   )get
isinstancer   r   rz   )prefixesoutputrN   r   
env_prefixr   s        @r#   	envs_list!ConsoleReporterRenderer.envs_list   sy     JJ{E2	
	R #Jj*55'
3
MM(:./ #
 	dyy  r'   c                \    [         R                  (       a  [        U40 UD6$ [        U40 UD6$ )zD
Determines whether to return a TQDMProgressBar or QuietProgressBar
)r   quietr   r9   )r!   rM   rN   s      r#   progress_bar$ConsoleReporterRenderer.progress_bar   s+     ==#K:6::";9&99r'   c                X    [         R                  (       a  [        X5      $ [        X5      $ )z8
Determines whether to return a Spinner or QuietSpinner
)r   r   r   re   )r!   rr   rs   s      r#   spinnerConsoleReporterRenderer.spinner   s!     ==66711r'   c                    X2;  a  [        SU S35      e/ nU H6  nXS:X  a  UR                  SUS    S35        M"  UR                  US   5        M8     SR                  USR                  U5      5      nU VVs0 s H  ofUS   4  H  owU_M     M     nnnX2S'    [        R
                  R                  U5        [        R
                  R                  5          [        R                  R                  5       R                  5       R                  5       nX;  a  [        SU 35        OA[        R
                  R                  S5        [        R
                  R                  5         X(   $ M  s  snnf ! [         a  n	[        S	U	 35      eS
n	A	ff = f)z#
Implementation of a prompt dialog
zDefault value 'z' must be part of `choices`[r   ]z	{} ({})? /r   zcannot read from stdin: NzInvalid choice: r   )
ValueErrorr   formatrz   rH   rI   r   r   stdinreadlinestriplowerrK   r   print)
r!   rr   choicesdefaultoptionsoptionchoicealtuser_choicerO   s
             r#   promptConsoleReporterRenderer.prompt  sl    !wi7RSTTF 6!9+Q/0vay)	  $$Wchhw.?@-4TW6PQ@S;@S3WTJJW%JJA!ii00288:@@B )(67

  &

  "++  U  A #;A3!?@@As   9E*:E0 0
F:FFr    N)r   zdict[str, str | int | bool]r0   r`   )T)r   zIterable[PathType | PrefixData]r0   r`   )rM   r`   r0   r   r   )rr   r`   rs   r`   r0   r   )Proceed)yesnor   )r0   r`   )r2   r3   r4   r5   r6   r   ra   r   r   r   r   r7   r    r'   r#   r   r      sZ    	& :>%!1%!	%! %!N:: 
	:2, ,r'   r   T)tryfirstc               #  6   #    [        [        S[        S9v   g7f)z
Reporter backend for console
z5Default implementation for console reporting in conda)r   rM   rendererN)r   r   r   r    r'   r#   conda_reporter_backendsr   &  s      -K( s   ).r6   
__future__r   rH   rL   r   r   	itertoolsr   	threadingr   r   timer	   typingr
   base.constantsr   base.contextr   	common.ior   common.pathr   core.prefix_datar   
exceptionsr   utilsr   r   r   typesr   r   r   r   collections.abcr   r   r   r9   re   r   r   r   r    r'   r#   <module>r      s    # 
 "  #    $ , & * $     (' :%o :%z.k .b; "l,2 l,^ 
r'   