
    qi              
           d Z ddlZddlZddlZddlmZmZ  G d d      Z G d d      Z	 dde	e	ee
ef         d	e	e
   d
eee
e
f      de
fdZy)zEContains utilities to print stuff to the terminal (styling, helpers).    N)OptionalUnionc                   >    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     Q/opt/pipecat/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 )N      ...	[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.done%   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
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[33msr   c                 :    | j                  || j                        S r	   )_format_blueclsr/   s     r   bluez	ANSI.blue<       {{1cii((r   c                 :    | j                  || j                        S r	   )r1   _boldr3   s     r   boldz	ANSI.bold@   r6   r   c                 :    | j                  || j                        S r	   )r1   _grayr3   s     r   grayz	ANSI.grayD   r6   r   c                 :    | j                  || j                        S r	   )r1   _greenr3   s     r   greenz
ANSI.greenH   s    {{1cjj))r   c                 T    | j                  || j                  | j                  z         S r	   )r1   r8   _redr3   s     r   redzANSI.redL   s     {{1cii#((233r   c                 :    | j                  || j                        S r	   )r1   _yellowr3   s     r   yellowzANSI.yellowP   s    {{1ckk**r   codec                 h    t         j                  j                  d      r|S | | | j                   S )NNO_COLOR)osenvironget_reset)r4   r/   rF   s      r   r1   zANSI._formatT   s.    ::>>*%Hs3::,''r   N)r&   r'   r(   r)   r2   r8   r;   r>   rA   rL   rD   classmethodr+   r5   r9   r<   r?   rB   rE   r1   r,   r   r   r.   r.   /   s    EEEFDFG)S )S ) ) )S )S ) ) )S )S ) ) *c *c * * 4C 4C 4 4 +s +s + + ( (3 (3 ( (r   r.   rowsheaders
alignmentsr   c           
         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>k   s     /ac#a&k/s    rT    c              3   2   K   | ]  \  }}d | | d  yw)z{:}Nr,   )rX   aws      r   rZ   ztabulate.<locals>.<genexpr>m   s      QTQCs1#R.Qs   -
)r   
IndexErrorzipmaxrK   joinappendformat)rN   rO   rP   
_ALIGN_MAProwcol
col_widthsh
col_aligns
row_formatlinesr_   s               r   tabulaterp   \   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)   rI   r   r
   typingr   r   r   r.   listr+   intdictrp   r,   r   r   <module>ru      s}    L 	  
 " 2*( *(` ,0
tE#s(O$
%#Y c3h( 		r   