
    -:j	#              	       n   d Z ddlZddlZddlZddlZddlmZ ddlmZ ej                  dk(  rddl
Z
nddlZddlZddlZ G d d      Z G d	 d
      Zdedee   defdZdefdZdefdZed        ZdefdZdedee   defdZdedee   defdZ	 ddeeeez        dee   deeef   dz  defdZy)zEContains utilities to print stuff to the terminal (styling, helpers).    N)contextmanager   )is_agentwin32c                   >    e Zd ZdZd	defdZdeddfdZdeddfdZy)

StatusLinezJMinimal TTY status line for sync progress (stderr, single-line overwrite).enabledc                 R    |xr t         j                  j                         | _        y N)sysstderrisatty_active)selfr	   s     a/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/huggingface_hub/utils/_terminal.py__init__zStatusLine.__init__$   s    63::#4#4#6    msgreturnNc                    | j                   sy t        j                         j                  }t	        |      |dz
  kD  r|d |dz
   dz   }t
        j                  j                  d| d       t
        j                  j                          y )Nr      ...	[K[90m[0m	r   shutilget_terminal_sizecolumnslenr   r   writeflushr   r   widths      r   updatezStatusLine.update'   sq    ||((*22s8eaik	"U*C

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

r   c                    | j                   sy t        j                         j                  }t	        |      |dz
  kD  r|d |dz
   dz   }t
        j                  j                  d| d       t
        j                  j                          y )Nr   r   r   r   z[0m
r   r"   s      r   donezStatusLine.done0   sq    ||((*22s8eaik	"U*C

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

r   )T)	__name__
__module____qualname____doc__boolr   strr$   r&    r   r   r   r   !   s7    T7 7# $   r   r   c                      e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zed
edefd       Zed
edefd       Zed
edefd       Zed
edefd       Zed
edefd       Zed
edefd       Zed
edefd       Zed
ededefd       Zy)ANSIz;
    Helper for en.wikipedia.org/wiki/ANSI_escape_code
    z[34mz[1mz[90mz[32mz[31mr   z[4mz[33msr   c                 :    | j                  || j                        S r   )_format_blueclsr0   s     r   bluez	ANSI.blueH       {{1cii((r   c                 :    | j                  || j                        S r   )r2   _boldr4   s     r   boldz	ANSI.boldL   r7   r   c                 :    | j                  || j                        S r   )r2   _grayr4   s     r   grayz	ANSI.grayP   r7   r   c                 :    | j                  || j                        S r   )r2   _greenr4   s     r   greenz
ANSI.greenT   s    {{1cjj))r   c                 T    | j                  || j                  | j                  z         S r   )r2   r9   _redr4   s     r   redzANSI.redX   s     {{1cii#((233r   c                 :    | j                  || j                        S r   )r2   
_underliner4   s     r   	underlinezANSI.underline\   s    {{1cnn--r   c                 :    | j                  || j                        S r   )r2   _yellowr4   s     r   yellowzANSI.yellow`   s    {{1ckk**r   codec                 |    t         j                  j                  d      s
t               r|S | | | j                   S )NNO_COLOR)osenvirongetr   _reset)r5   r0   rJ   s      r   r2   zANSI._formatd   s2    ::>>*%Hs3::,''r   N)r'   r(   r)   r*   r3   r9   r<   r?   rB   rP   rE   rH   classmethodr,   r6   r:   r=   r@   rC   rF   rI   r2   r-   r   r   r/   r/   :   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   r/   promptchoicesr   c                 `    |st        d      t               rt        | |      S t        | |      S )as  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)rR   rS   s     r   select_choicerY   l   s3     HII"673300r   c                      t         j                  r<t         j                  j                         rt         j                  j                         syt         j                  dk(  r
t               S y)NFr   T)r   stdinr   stdoutplatform_enable_windows_vt_processingr-   r   r   rV   rV   {   sB    II#))**,1B1B1D
||w,..r   c                  D   d} d}	 t         j                  j                  }|j                  |      }t        j                         }|j                  |t        j                  |            syt        |j                  ||j                  | z              S # t        $ r Y yw xY w)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byrefr+   SetConsoleModevalue	Exception)"ENABLE_VIRTUAL_TERMINAL_PROCESSINGSTD_OUTPUT_HANDLErb   handlemodes        r   r^   r^      s     *0&==))&&'89 &&vv||D/ABH++FDJJAc4cdee s   A$B +'B 	BBc               #   t  K   t         j                  dk(  rd yt         j                  j                         } t	        j
                  |       }	 t        j                  |        d t	        j                  | t        j                  |       y# t	        j                  | t        j                  |       w xY ww)zRPut the terminal in cbreak mode (read keypresses without Enter). No-op on Windows.r   N)
r   r]   r[   filenotermios	tcgetattrtty	setcbreak	tcsetattr	TCSADRAIN)fdold_settingss     r   _raw_terminalrx      s      ||w				B$$R(L?b"g//>"g//>s   AB8B (&B8'B55B8c                  6   t         j                  dk(  rAt        j                         } | dv r'dddj	                  t        j                         d      S | S t         j
                  j                         }t        j                  |d      } | dk(  r{t        j                  |gg g d	      d
   r_t        j                  |d      dk(  rEt        j                  |gg g d	      d
   r)dddj	                  t        j                  |d      d      S y| j                  d      S )z9Read one keypress, normalizing arrow keys to "up"/"down".r   )    àupdown)HP r      g?r      [)   A   Breplace)errors)r   r]   msvcrtgetwchrO   r[   ro   rM   readselectdecode)charrv   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                 b   dt        t        j                  d|        t        j                  d      z          dfd}	 t        j
                  j                  d        |        t               5  	 t               }|dk(  rt        |dk(  rdz
  t              z  n\|d	k(  rdz   t              z  nE|j                         r/dt        |      cxk  rt              k  rn nt        |      dz
  n:|d
v rn5t        j
                  j                  dt               d        |        d d d        t        j
                  j                  d       t        j
                  j                          t        j
                  j                  dt              dz    d       t        t        j                  d|  d      t        j                           z          S # 1 sw Y   xY w# t        j
                  j                  d       t        j
                  j                          w xY w)Nr   ? z   [Use arrows, Enter to confirm]c                     t              D ]]  \  } }| k(  r+t        j                  d      t        j                  |      z   nd|z   }t        j
                  j                  d| d       _ t        j
                  j                          y )Nz>   z[K
)	enumerater/   r@   r:   r   r\   r    r!   )ichoicelinerS   selecteds      r   renderz#_select_with_arrows.<locals>.render   sq    "7+ 	2IAv;<=4::d#dii&77dU[mDJJxvR01	2 	

r   z[?25lr|   r   r}   )r   z[Az[?25hzA[J )r   N)printr/   r:   r=   r   r\   r    rx   r   KeyboardInterruptr   	isdecimalintr!   r@   )rR   rS   r   keyr   s    `  @r   rW   rW      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%   0G/ 4B>G#2G/ #G,(G/ /?H.c                 R   t        d|         t        |d      D ]  \  }}t        d| d|         	 t        d      j                         }|sy|j	                         r.dt        |      cxk  rt        |      k  rn nt        |      dz
  S t        dt        |       d	       s)
Nr   r   )startr   z. zChoice [1]: r   z-Invalid choice. Enter a number between 1 and .)r   r   inputstripr   r   r   )rR   rS   r   r   raws        r   rX   rX      s    	Bvh-wa0 "	61#Rx !"
N#))+==?qCH<G<s8a<=c'l^1MN r   rowsheaders
alignmentsc           
         ddd}| D ]@  }t        |      t        |      k  st        dt        |       dt        |       d| d       t        g | | D cg c]  }t        d |D               }}|D cg c](  }|j	                  |xs i j	                  |d	      d      * }}d
j                  d t        ||      D              }	g }
|
j                   |	j                  |        |
j                   |	j                  |D cg c]  }d|z  	 c}        | D ]   }|
j                   |	j                  |        " dj                  |
      S c c}w c c}w c c}w )z
    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   D   K   | ]  }t        t        |              y wr   )r   r,   ).0xs     r   	<genexpr>ztabulate.<locals>.<genexpr>   s     /ac#a&k/s    r   r   c              3   2   K   | ]  \  }}d | | d  yw)z{:}Nr-   )r   aws      r   r   ztabulate.<locals>.<genexpr>   s      QTQCs1#R.Qs   -r   )r   
IndexErrorzipmaxrO   joinappendformat)r   r   r   
_ALIGN_MAProwcol
col_widthsh
col_aligns
row_formatlinesr   s               r   tabulater      sc    ,J ls8c'l"xCz1Fs7|nT_`g_hhijkkl <?;N;Ng;NOC#/3//OJORYZQ*..*"2!7!76!BCHZJZQSZ5PQQJE	LL"""G,-	LL"""j$AS1W$ABC .&Z&&,-.99U PZ %Bs   E9-EEr   )r*   r`   rM   r   r   
contextlibr   _detect_agentr   r]   r   r   rp   rr   r   r/   r,   listr   rY   r+   rV   r^   rx   r   rW   rX   dictr   r-   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   