
    gj	#              	          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dS )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dS )
StatusLinezJMinimal TTY status line for sync progress (stderr, single-line overwrite).Tenabledc                 P    |ot           j                                        | _        d S N)sysstderrisatty_active)selfr	   s     c/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/huggingface_hub/utils/_terminal.py__init__zStatusLine.__init__$   s     63:#4#4#6#6    msgreturnNc                    | j         sd S t          j                    j        }t	          |          |dz
  k    r|d |dz
           dz   }t
          j                            d| d           t
          j                                         d S )Nr      ...	[K[90m[0m	r   shutilget_terminal_sizecolumnslenr   r   writeflushr   r   widths      r   updatezStatusLine.update'   s    | 	F(**2s88eaik	k"U*C
8C888999
r   c                    | j         sd S t          j                    j        }t	          |          |dz
  k    r|d |dz
           dz   }t
          j                            d| d           t
          j                                         d S )Nr   r   r   r   z[0m
r   r"   s      r   donezStatusLine.done0   s    | 	F(**2s88eaik	k"U*C
:C:::;;;
r   )T)	__name__
__module____qualname____doc__boolr   strr$   r&    r   r   r   r   !   s~        TT7 7 7 7 7 7# $           r   r   c                   6   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dS )ANSIz;
    Helper for en.wikipedia.org/wiki/ANSI_escape_code
    z[34mz[1mz[90mz[32mz[31mr   z[4mz[33msr   c                 8    |                      || j                  S r   )_format_blueclsr0   s     r   bluez	ANSI.blueH       {{1ci(((r   c                 8    |                      || j                  S r   )r2   _boldr4   s     r   boldz	ANSI.boldL   r7   r   c                 8    |                      || j                  S r   )r2   _grayr4   s     r   grayz	ANSI.grayP   r7   r   c                 8    |                      || j                  S r   )r2   _greenr4   s     r   greenz
ANSI.greenT   s    {{1cj)))r   c                 H    |                      || j        | j        z             S r   )r2   r9   _redr4   s     r   redzANSI.redX   s    {{1ci#(2333r   c                 8    |                      || j                  S r   )r2   
_underliner4   s     r   	underlinezANSI.underline\   s    {{1cn---r   c                 8    |                      || j                  S r   )r2   _yellowr4   s     r   yellowzANSI.yellow`   s    {{1ck***r   codec                 z    t           j                            d          st                      r|S | | | j         S )NNO_COLOR)osenvirongetr   _reset)r5   r0   rJ   s      r   r2   zANSI._formatd   s@    :>>*%% 	 	H''3:'''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/   :   s         EEEFDFJG)S )S ) ) ) [) )S )S ) ) ) [) )S )S ) ) ) [) *c *c * * * [* 4C 4C 4 4 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   sJ      JHIII 4"67333000r   c                      t           j        r<t           j                                        rt           j                                        sdS t           j        dk    rt                      S dS )NFr   T)r   stdinr   stdoutplatform_enable_windows_vt_processingr-   r   r   rV   rV   {   sY    I #)**,, 1B1B1D1D u
|w,...4r   c                  J   d} d}	 t           j        j        }|                    |          }t          j                    }|                    |t          j        |                    sdS t          |                    ||j	        | z                      S # t          $ r Y dS 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9  &&vv|D/A/ABB 	5H++FDJAc4cddeee   uus   A!B )*B 
B"!B"c               #   V  K   t           j        dk    rdV  dS t           j                                        } t	          j        |           }	 t          j        |            dV  t	          j        | t          j	        |           dS # t	          j        | t          j	        |           w xY 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   B "B(c                  L   t           j        dk    rCt          j                    } | dv r*ddd                    t          j                    d          S | S t           j                                        }t          j        |d          } | dk    rt          j	        |gg g d	          d
         ret          j        |d          dk    rJt          j	        |gg g d	          d
         r,ddd                    t          j        |d          d          S dS | 
                    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D 
				B72q>>Dw6="r2t<<Q?72q>>T!!fmRD"b$&G&G&J!f--11"'"a.."EEEr;;i;(((r   c                    dt          t                              d|            t                              d          z              dfd}	 t          j                            d            |             t                      5  	 t                      }|dk    rt          |d	k    rd
z
  t                    z  ns|dk    rd
z   t                    z  nW|                                r=d
t          |          cxk    rt                    k    rn nt          |          d
z
  nA|dv rn<t          j                            dt                     d            |             d d d            n# 1 swxY w Y   t          j                            d           t          j                                         nB# t          j                            d           t          j                                         w xY wt          j                            dt                    d
z    d           t          t                              d|  d          t                                                 z              S )Nr   ? z   [Use arrows, Enter to confirm]r   c                  4   t                    D ]h\  } }| k    r5t                              d          t                              |          z   nd|z   }t          j                            d| d           it          j                                         d S )Nz>   z[K
)	enumerater/   r@   r:   r   r\   r    r!   )ichoicelinerS   selecteds      r   renderz#_select_with_arrows.<locals>.render   s    "7++ 	2 	2IAv;<==4::d##dii&7&777dU[mDJ00001111
r   z[?25lT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	$))MMM
"
"TYY/Q%R%R
RSSS      
%%%__ 	 	kk&== ,+$;; (1G<HHF]] (1G<HH]]__ c#hh)F)F)F)F#g,,)F)F)F)F)F"3xx!|HL((
  !8W!8!8!8999%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	* 	
%%%
 	
%%%
 J8S\\A-888999	$))NNNN
#
#djj1B&C&C
CDDDOs1   7G 	C'E<0G <F  G F G ?Hc                    t          d|             t          |d          D ]\  }}t          d| d|            	 t          d                                          }|sdS |                                r<dt          |          cxk    rt          |          k    rn nt          |          dz
  S t          d	t          |           d
           )Nr   r   )startr   z. Tz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    	-v--wa000 " "	6 1    !!!!ON##))++ 	1==?? 	 qCHH<<<<G<<<<<s88a<Mc'llMMMNNNOr   rowsheaders
alignmentsc           
      b   ddd| D ]U}t          |          t          |          k     r3t          dt          |           dt          |           d| d          Vd t          g | |R  D             }fd	|D             }d
                    d t          ||          D                       }g }|                     |j        |            |                     |j        d |D                         | D ]}|                     |j        |             d                    |          S )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                 @    g | ]}t          d  |D                       S )c              3   N   K   | ] }t          t          |                    V  !d S r   )r   r,   ).0xs     r   	<genexpr>z&tabulate.<locals>.<listcomp>.<genexpr>   s.      //ac#a&&kk//////r   )max)r   cols     r   
<listcomp>ztabulate.<locals>.<listcomp>   s/    OOOC#//3/////OOOr   c                 h    g | ].}                     pi                      |d           d          /S )r   r   )rO   )r   h
_ALIGN_MAPr   s     r   r   ztabulate.<locals>.<listcomp>   s<    ZZZQ*..*"2!7!76!B!BCHHZZZr   r   c              3   ,   K   | ]\  }}d | | dV  dS )z{:}Nr-   )r   aws      r   r   ztabulate.<locals>.<genexpr>   s2      QQTQ..1...QQQQQQr   c                     g | ]}d |z  S )-r-   )r   r   s     r   r   ztabulate.<locals>.<listcomp>  s    $A$A$AS1W$A$A$Ar   r   )r   
IndexErrorzipjoinappendformat)	r   r   r   row
col_widths
col_aligns
row_formatlinesr   s	     `     @r   tabulater      ss    ,,J l ls88c'll""jCjjs7||jj`gjjjkkk #OO3;N;Ng;N;N;NOOOJZZZZZRYZZZJQQSZ5P5PQQQQQJE	LL""G,---	LL""$A$Aj$A$A$ABCCC . .&Z&,----99Ur   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      sA   L K  				  



 % % % % % % # # # # # # <7MMMMMMMNNNJJJ       2/( /( /( /( /( /( /( /(d1# 1S	 1c 1 1 1 1    t      ? ? ?)3 ) ) ) )(( (d3i (C ( ( ( (V
O 
OtCy 
OS 
O 
O 
O 
O  )- 
tC#I
#Y S#X% 		     r   