
    5pj	#              	          S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  \R                  S:X  a  SSK
r
OSSKrSSKrSSKr " S S5      r " S	 S
5      rS\S\\   S\4S jrS\4S jrS\4S jr\S 5       rS\4S jrS\S\\   S\4S jrS\S\\   S\4S jr SS\\\\-        S\\   S\\\4   S-  S\4S jjrg)zEContains utilities to print stuff to the terminal (styling, helpers).    N)contextmanager   )is_agentwin32c                   N    \ rS rSrSrSS\4S jjrS\SS4S jrS\SS4S	 jr	S
r
g)
StatusLine!   zJMinimal TTY status line for sync progress (stderr, single-line overwrite).enabledc                 \    U=(       a    [         R                  R                  5       U l        g N)sysstderrisatty_active)selfr
   s     [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/huggingface_hub/utils/_terminal.py__init__StatusLine.__init__$   s    63::#4#4#6    msgreturnNc                 "   U R                   (       d  g [        R                  " 5       R                  n[	        U5      US-
  :  a  US US-
   S-   n[
        R                  R                  SU S35        [
        R                  R                  5         g )Nr      ...	[K[90m[0m	r   shutilget_terminal_sizecolumnslenr   r   writeflushr   r   widths      r   updateStatusLine.update'   sq    ||((*22s8eaik	"U*C

+C589

r   c                 "   U R                   (       d  g [        R                  " 5       R                  n[	        U5      US-
  :  a  US US-
   S-   n[
        R                  R                  SU S35        [
        R                  R                  5         g )Nr   r   r   r   z[0m
r   r$   s      r   doneStatusLine.done0   sq    ||((*22s8eaik	"U*C

+C5	:;

r   )r   )T)__name__
__module____qualname____firstlineno____doc__boolr   strr&   r)   __static_attributes__ r   r   r   r   !   s7    T7 7# $   r   r   c                      \ rS rSrSrSrSrSrSrSr	Sr
S	rS
r\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       r\S\S\4S j5       r\S\S\S\4S j5       rSrg)ANSI:   z3
Helper for en.wikipedia.org/wiki/ANSI_escape_code
z[34mz[1mz[90mz[32mz[31mr   z[4mz[33msr   c                 8    U R                  XR                  5      $ r   )_format_blueclsr7   s     r   blue	ANSI.blueH       {{1ii((r   c                 8    U R                  XR                  5      $ r   )r9   _boldr;   s     r   bold	ANSI.boldL   r?   r   c                 8    U R                  XR                  5      $ r   )r9   _grayr;   s     r   gray	ANSI.grayP   r?   r   c                 8    U R                  XR                  5      $ r   )r9   _greenr;   s     r   green
ANSI.greenT   s    {{1jj))r   c                 R    U R                  XR                  U R                  -   5      $ r   )r9   rA   _redr;   s     r   redANSI.redX   s    {{1ii#((233r   c                 8    U R                  XR                  5      $ r   )r9   
_underliner;   s     r   	underlineANSI.underline\   s    {{1nn--r   c                 8    U R                  XR                  5      $ r   )r9   _yellowr;   s     r   yellowANSI.yellow`   s    {{1kk**r   codec                     [         R                  R                  S5      (       d  [        5       (       a  U$ U U U R                   3$ )NNO_COLOR)osenvirongetr   _reset)r<   r7   rX   s      r   r9   ANSI._formatd   s7    ::>>*%%Hs3::,''r   r3   N)r+   r,   r-   r.   r/   r:   rA   rE   rI   rM   r^   rQ   rU   classmethodr1   r=   rB   rF   rJ   rN   rR   rV   r9   r2   r3   r   r   r5   r5   :   sF    EEEFDFJG)S )S ) ) )S )S ) ) )S )S ) ) *c *c * * 4C 4C 4 4 .# .# . . +s +s + + ( (3 (3 ( (r   r5   promptchoicesr   c                 p    U(       d  [        S5      e[        5       (       a  [        X5      $ [        X5      $ )a_  Single-choice interactive prompt. Returns the index of the selected choice.

On a TTY, renders an arrow-key menu (Up/Down to move, Enter to confirm, 1-9 to pick
directly, Ctrl+C to abort). Falls back to a numbered `input()` prompt when raw
keyboard input is not available. Callers are responsible for not prompting at all in
non-interactive contexts.
z-select_choice() requires at least one choice.)
ValueError_supports_raw_keyboard_select_with_arrows_select_with_numbers)ra   rb   s     r   select_choicerh   l   s2     HII"63300r   c                      [         R                  (       aF  [         R                  R                  5       (       a#  [         R                  R                  5       (       d  g[         R                  S:X  a
  [        5       $ g)NFr   T)r   stdinr   stdoutplatform_enable_windows_vt_processingr3   r   r   re   re   {   sH    II#))**,,1B1B1D1D
||w,..r   c                  R   Sn Sn [         R                  R                  nUR                  U5      n[         R                  " 5       nUR                  U[         R                  " U5      5      (       d  g[        UR                  X4R                  U -  5      5      $ ! [         a     gf = f)u   Enable VT escape-sequence processing on the Windows console (off by default in legacy
cmd.exe/PowerShell windows, where the menu would otherwise render as literal `←[K` garbage).r   iF)ctypeswindllkernel32GetStdHandlec_uint32GetConsoleModebyrefr0   SetConsoleModevalue	Exception)"ENABLE_VIRTUAL_TERMINAL_PROCESSINGSTD_OUTPUT_HANDLErq   handlemodes        r   rm   rm      s     *0&==))&&'89 &&vv||D/ABBH++FJJAc4cdee s   A+B 2&B 
B&%B&c               #   ~  #    [         R                  S:X  a  Sv   g[         R                  R                  5       n [        R
                  " U 5      n [        R                  " U 5        Sv   [        R                  " U [        R                  U5        g! [        R                  " U [        R                  U5        f = f7f)zRPut the terminal in cbreak mode (read keypresses without Enter). No-op on Windows.r   N)
r   rl   rj   filenotermios	tcgetattrtty	setcbreak	tcsetattr	TCSADRAIN)fdold_settingss     r   _raw_terminalr      s      ||w				B$$R(L?b"g//>"g//>s   AB=B +'B=(B::B=c                  \   [         R                  S:X  aE  [        R                  " 5       n U S;   a(  SSS.R	                  [        R                  " 5       S5      $ U $ [         R
                  R                  5       n[        R                  " US5      n U S:X  a  [        R                  " U// / S	5      S
   (       ah  [        R                  " US5      S:X  aL  [        R                  " U// / S	5      S
   (       a*  SSS.R	                  [        R                  " US5      S5      $ gU R                  SS9$ )z9Read one keypress, normalizing arrow keys to "up"/"down".r   )    àupdown)HP r      g?r      [)   A   Breplace)errors)r   rl   msvcrtgetwchr]   rj   r~   r[   readselectdecode)charr   s     r   	_read_keyr      s    
||w}}##F+//DD 
			B772q>Dw6=="r2t<Q?772q>T!fmmRD"b$&G&Jf-11"''"a."EE;;i;((r   c                   ^^ Sm[        [        R                  SU  35      [        R                  S5      -   5        SUU4S jjn [        R
                  R                  S5        U" 5         [        5           [        5       nUS:X  a  [        eUS:X  a  TS-
  [        T5      -  mOgUS	:X  a  TS-   [        T5      -  mOOUR                  5       (       a1  S[        U5      s=::  a  [        T5      ::  a  O  O[        U5      S-
  mO>US
;   a  O7M  [        R
                  R                  S[        T5       S35        U" 5         M  S S S 5        [        R
                  R                  S5        [        R
                  R                  5         [        R
                  R                  S[        T5      S-    S35        [        [        R                  SU  S35      [        R                  TT   5      -   5        T$ ! , (       d  f       N= f! [        R
                  R                  S5        [        R
                  R                  5         f = f)Nr   ? z   [Use arrows, Enter to confirm]c                    > [        T5       H^  u  pU T:X  a+  [        R                  S5      [        R                  U5      -   OSU-   n[        R
                  R                  SU S35        M`     [        R
                  R                  5         g )Nz>   z[K
)	enumerater5   rJ   rB   r   rk   r"   r#   )ichoicelinerb   selecteds      r   render#_select_with_arrows.<locals>.render   sj    "7+IA;<=4::d#dii&77dU[mDJJxvR01 , 	

r   z[?25lr   r   r   )r   z[Az[?25hzA[J )r   N)printr5   rB   rF   r   rk   r"   r   r   KeyboardInterruptr!   	isdecimalintr#   rJ   )ra   rb   r   keyr   s    `  @r   rf   rf      s   H	$))bM
"TYY/Q%R
RS 

%_k&= ,+$; (1G<HF] (1G<H]]__c#h)F#g,)F"3x!|HL(

  5Wa!89%  * 	

%

 JJuS\A-.i89	$))bN
#djj1B&C
CDO7 _* 	

%

s%   0H 6CG3H 3
H=H ?Ic                 h   [        SU  35        [        USS9 H  u  p#[        SU SU 35        M      [        S5      R                  5       nU(       d  gUR	                  5       (       a0  S[        U5      s=::  a  [        U5      ::  a  O  O[        U5      S-
  $ [        S[        U5       S	35        M  )
Nr   r   )startr   z. zChoice [1]: r   z-Invalid choice. Enter a number between 1 and .)r   r   inputstripr   r   r!   )ra   rb   r   r   raws        r   rg   rg      s    	Bvh-wa0	1#Rx ! 1
N#))+==??qCH<G<s8a<=c'l^1MN r   rowsheaders
alignmentsc           
         SSS.nU  HB  n[        U5      [        U5      :  d  M  [        S[        U5       S[        U5       SU S35      e   [        / U QUP76  Vs/ s H  n[        S U 5       5      PM     nnU Vs/ s H-  osR	                  U=(       d    0 R	                  US	5      S5      PM/     nnS
R                  S [        X5       5       5      n	/ n
U
R                  U	R                  " U6 5        U
R                  U	R                  " U Vs/ s H  nSU-  PM
     sn6 5        U  H!  nU
R                  U	R                  " U6 5        M#     SR                  U
5      $ s  snf s  snf s  snf )zy
Inspired by:

- stackoverflow.com/a/8356620/593036
- stackoverflow.com/questions/9535954/printing-lists-as-tabular-data
<>)leftrightzRow has z values but expected z (headers: )c              3   J   #    U  H  n[        [        U5      5      v   M     g 7fr   )r!   r1   ).0xs     r   	<genexpr>tabulate.<locals>.<genexpr>   s     /3ac#a&kk3s   !#r   r   c              3   6   #    U  H  u  pS U U S3v   M     g7f)z{:}Nr3   )r   aws      r   r   r      s      Q5PTQCs1#R.5Ps   -r   )r!   
IndexErrorzipmaxr]   joinappendformat)r   r   r   
_ALIGN_MAProwcol
col_widthsh
col_aligns
row_formatlinesr   s               r   tabulater      sT    ,Js8c'l"xCz1Fs7|nT_`g_hhijkk  <?;N;Ng;NO;NC#/3//;NJORYZRYQ..*"2!7!76!BCHRYJZQS5PQQJE	LL""G,-	LL""j$AjS1Wj$ABCZ&&,- 99U PZ %Bs   E ?4E%E*r   )r/   ro   r[   r   r   
contextlibr   _detect_agentr   rl   r   r   r   r   r   r5   r1   listr   rh   r0   re   rm   r   r   rf   rg   dictr   r3   r   r   <module>r      s/   L  	  
 % # <<7 2/( /(d1# 1S	 1c 1 t   ? ?)3 )(( (d3i (C (V
O 
OtCy 
OS 
O  )-
tC#I
#Y S#X% 		r   