
    j)                        d Z ddl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	 ddl
mZ ddlZddlmZ ddlmZmZmZmZmZ  G d d	ee	          Z G d
 d          ZdedefdZdedeeef         fdZ ej        d          ZdZdedefdZdedefdZ dedefdZ!dedefdZ"efdede#defdZ$dedefdZ% e            Z&dS )z"Output framework for the `hf` CLI.    N)Sequence)Enum)Any)ConfirmationError)ANSI
StatusLinedisable_progress_barsis_agenttabulatec                   &    e Zd ZdZdZdZdZdZdZdS )OutputFormatWithAutozGOutput format for CLI commands with auto detection of agent/human mode.agentautohumanjsonquietN)	__name__
__module____qualname____doc__r   r   r   r   r        ^/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/huggingface_hub/cli/_output.pyr   r       s-        QQEDEDEEEr   r   c                      e Zd ZU dZeed<   d!dZej        fdeddfdZde	fdZ
d"dddd	edz  d
edz  dedz  ddfdZdddddeeeef                  dee         dz  dedz  deeef         dz  ddf
dZdddededz  ddfdZdededdfdZddddede	de	ddfdZd"dedz  defdZdeddfdZdeddfdZdeddfd ZdS )#OutputzOutput sink for the `hf` CLI.

    Mode is resolved once at init time based on `is_agent()` auto-detection
    and can be overridden per-command via `set_mode()`.
    modereturnNc                 .    |                                   d S N)set_modeselfs    r   __init__zOutput.__init__3   s    r   c                     |t           j        k    r&t                      rt           j        nt           j        }|| _        |t           j        k    rt                       dS dS )zPOverride the output mode (called once at startup and again per '--format' flag).N)r   r   r
   r   r   r   r	   )r"   r   s     r   r    zOutput.set_mode6   s\    ',,,19['--AUA[D	'---!##### .-r   c                 ,    | j         t          j        k    S r   )r   r   r   r!   s    r   is_quietzOutput.is_quiet>   s    y0666r   )r   r   msgr   r   c                    |$||t          d          |}t          |          }| j        xt          j        k    r |t          |           dS dS t          j        k    r|t          |           dS dS dS )z)Print a free-form text message to stdout.Nz&Cannot mix 'msg' with 'human'/'agent'.)
ValueError_strip_ansir   r   r   printr   )r"   r'   r   r   s       r   textzOutput.textA   s    ? E$5 !IJJJE$$Ei+%++++$%LLLLL %$%+++$%LLLLL %$ ,+r   )headersid_key
alignmentsitemsr-   r.   r/   c                   s]| j         xxt          j        k    rnxt          j        k    rn n  t	          d           nt          j        k    rt	          d           dS 5t          d                                                   }fd|D             fdD             }| j         xt          j        k    rZ d |D             }d D             }d	 |pi                                 D             }	t	          t          |||	
                     dS xt          j        k    rV t	          d
                                         |D ].}
t	          d
                    d |
D                                  /dS xt          j        k    r8 t	          t          j        t                    t                               dS t          j        k    r4|pd         }D ]%}t	          |                    |d                     &dS dS )a  Print tabular data to stdout.

        Args:
            items: List of dicts. Headers are auto-detected from keys if not provided.
            headers: Explicit column names. If None, derived from dict keys (all-None columns filtered).
            id_key: Key to print in quiet mode. If None, uses the first header.
            alignments: Optional mapping of header name to "left" or "right". Defaults to "left".
        zNo results found.z[]Nr   c                 L    g | ]t          fd D                        S )c              3   F   K   | ]}|                               d uV  d S r   get).0itemcols     r   	<genexpr>z*Output.table.<locals>.<listcomp>.<genexpr>l   s3      8e8eW[#d9R8e8e8e8e8e8er   )any)r6   r8   r0   s    @r   
<listcomp>z Output.table.<locals>.<listcomp>l   s=    fffsS8e8e8e8e_d8e8e8e5e5efsfffr   c                 .    g | ]fd D             S )c                 :    g | ]}                     |          S r   r4   )r6   hr7   s     r   r;   z+Output.table.<locals>.<listcomp>.<listcomp>m   s#    ...!...r   r   )r6   r7   r-   s    @r   r;   z Output.table.<locals>.<listcomp>m   s/    AAA4....g...AAAr   c                 &    g | ]}d  |D             S )c                 ,    g | ]}t          |          S r   )_format_table_cell_humanr6   vs     r   r;   z+Output.table.<locals>.<listcomp>.<listcomp>q   s#    9c9c9cZ[:RST:U:U9c9c9cr   r   )r6   rows     r   r;   z Output.table.<locals>.<listcomp>q   s)    8t8t8thk9c9c_b9c9c9c8t8t8tr   c                 ,    g | ]}t          |          S r   
_to_header)r6   r>   s     r   r;   z Output.table.<locals>.<listcomp>r   s    $D$D$DqZ]]$D$D$Dr   c                 4    i | ]\  }}t          |          |S r   rF   r6   krC   s      r   
<dictcomp>z Output.table.<locals>.<dictcomp>s   s$    '`'`'`TQ
1q'`'`'`r   )r-   r/   	c              3   4   K   | ]}t          |          V  d S r   )_format_table_cell_agentrB   s     r   r9   zOutput.table.<locals>.<genexpr>x   s+      #M#MA$<Q$?$?#M#M#M#M#M#Mr   default )r   r   r   r   r+   r   listkeysr0   r   joindumpsstrr   r5   )r"   r0   r-   r.   r/   all_columnsrowsformatted_rowsscreaming_headersscreaming_alignmentsrD   	quiet_keyr7   s    ``          r   tablezOutput.tableR   sX      	)L/)////2L2F2L2L2L2L2L2L2L2L-....)...$KKKF?uQx}}//KffffkfffGAAAA5AAAi+%++++8t8tos8t8t8t$D$DG$D$D$D!'`'`jFVTVE]E]E_E_'`'`'`$h~7HUijjjkkkkk+%++++dii(())) O OC$))#M#M#M#M#MMMNNNNO O*%****djec:::;;;;;%+++"0gaj	! 3 3D$((9b1122223 3 ,+r   )r.   datac                r   t          j        |          r$t          |t                    st	          |          }| j        t          j        k    r'|%t          |	                    |d                     dS | j        t          j
        k    rdnd}t          t          j        ||t                               dS )zPrint structured data as JSON in all modes (indented for human, compact otherwise).

        Accepts a dict or a dataclass.
        NrQ      )indentrP   )dataclassesis_dataclass
isinstancetype_dataclass_to_dictr   r   r   r+   r5   r   r   rU   rV   )r"   r^   r.   ra   s       r   dictzOutput.dict   s    
 #D)) 	,*T42H2H 	,%d++D9,222v7I$((62&&'''Fi#7#===4djfc:::;;;;;r   messagec                    | j         xt          j        k    rt t          j        d|           g}|                                D ]"\  }}||                    d| d|            #t          d                    |                     dS xt          j	        k    rG d |                                D             }t          |rd                    |          n|           dS xt          j
        k    r/ t          |rt          j        |t                    nd	           dS t          j        k    r<t          |                                          }|rt          |d
                    dS dS dS )z"Print a success summary to stdout.u   ✓ Nz  z: 
c                 &    g | ]\  }}|| d| S )N=r   rI   s      r   r;   z!Output.result.<locals>.<listcomp>   s'    NNN1Ar    rO   rQ   r   )r   r   r   r   greenr0   appendr+   rT   r   r   rU   rV   r   rR   values)r"   rh   r^   partsrJ   rC   rp   s          r   resultzOutput.result   sy   i+%++++$47$4$4556 JJLL 4 4DAq}]!]]q]]333dii&&'''''+%++++NN

NNN;chhuoooG<<<<<*%****tCdjs3333DDDDD%+++dkkmm,, %&)$$$$$% % ,+r   F)rP   yesrP   rs   c                    |rdS | j         t          j        k    rt          | d          t	          j        ||d           dS )zV
        Ask for confirmation. Raises `ConfirmationError` in non-human modes.
        Nz  Use --yes to skip confirmation.T)rP   abort)r   r   r   r   typerconfirm)r"   rh   rP   rs   s       r   rw   zOutput.confirm   sV      	F9,222#w$P$P$PQQQgwd;;;;;;r   c                 z    t          | j        t          j        k              }||                    |           |S )zEReturn a status line that emits only in human mode (no-op otherwise).)enabled)r   r   r   r   update)r"   rh   statuss      r   r{   zOutput.status   s:    DI1E1K$KLLLMM'"""r   c                     | j         t          j        k    r2t          t	          j        d|           t          j                   dS t          d| t          j                   dS )z0Print a non-fatal warning to stderr (all modes).z	Warning: fileN)r   r   r   r+   r   yellowsysstderrr"   rh   s     r   warningzOutput.warning   se    9,222$+3'33443:FFFFFF'g''cj999999r   c                     | j         t          j        k    r2t          t	          j        d|           t          j                   dS t          d| t          j                   dS )z%Print an error to stderr (all modes).zError: r}   N)r   r   r   r+   r   redr   r   r   s     r   errorzOutput.error   se    9,222$(.W..//cjAAAAAA%G%%CJ777777r   c                     | j         t          j        k    r2t          t	          j        d|           t          j                   dS t          d| t          j                   dS )zEPrint a helpful hint to stderr (human: gray, agent/json: plain text).zHint: r}   N)r   r   r   r+   r   grayr   r   r   s     r   hintzOutput.hint   se    9,222$).W..//cjAAAAAA$7$$3:666666r   )r   Nr   )r   r   r   r   r   __annotations__r#   r   r    boolr&   rV   r,   r   rg   r   rR   r]   rr   rw   r   r{   r   r   r   r   r   r   r   r   *   s              5I4M $ $1 $RV $ $ $ $7$ 7 7 7 7!$\` ! ! !d
 !S4Z !sUYz !ei ! ! ! !* %)!,0,3 ,3 ,3S#X',3 cT!	,3
 d
,3 cNT),3 
,3 ,3 ,3 ,3\ 7; < < < <t <t < < < <%c %3 %4 % % % %& 8=% < < <s < <4 <TX < < < < cDj J    :s :t : : : :8S 8T 8 8 8 87C 7D 7 7 7 7 7 7r   r   rC   r   c                 
   t          | t          j                  r|                                 S t          | t                    rd |                                 D             S t          | t
                    rd | D             S | S )z4Recursively serialize a value to be JSON-compatible.c                 8    i | ]\  }}||t          |          S r   _serialize_value)r6   keyvals      r   rK   z$_serialize_value.<locals>.<dictcomp>   s(    XXXxsC%c**r   c                 ,    g | ]}t          |          S r   r   )r6   r7   s     r   r;   z$_serialize_value.<locals>.<listcomp>   s!    5554 &&555r   )rd   datetime	isoformatrg   r0   rR   )rC   s    r   r   r      s~    !X&'' 6{{}}	At		 6XX17799XXXX	At		 65515555Hr   infoc                 b    d t          j        |                                           D             S )z0Convert a dataclass to a json-serializable dict.c                 8    i | ]\  }}||t          |          S r   r   rI   s      r   rK   z&_dataclass_to_dict.<locals>.<dictcomp>   s-    aaatq!STS`A""S`S`S`r   )rb   asdictr0   )r   s    r   rf   rf      s-    aa{/A$/G/G/M/M/O/Oaaaar   z\033\[[0-9;]*m#   r,   c                 8    t                               d|           S )NrQ   )_ANSI_REsubr,   s    r   r*   r*      s    <<D!!!r   c                 P    d                     |                                           S )Nrm   )rT   splitr   s    r   _single_liner      s    88DJJLL!!!r   namec                 V    t          j        dd|           }|                                S )zAConvert a camelCase or PascalCase string to SCREAMING_SNAKE_CASE.z([a-z])([A-Z])z\1_\2)rer   upper)r   ss     r   rG   rG      s$    
 (D11A7799r   valuec                    | dS t          | t                    r| rdndS t          | t          j                  r|                     d          S t          | t                    rt          j        d|           r
| dd         S t          | t                    rt          |           S t          | t                    rd	                    d | D                       S t          | t                    rGd	| v r"t          t	          | d	                             S t          t          j        |                     S t          t	          |                     S )
z/Convert a value to string for terminal display.NrQ   u   ✔z%Y-%m-%dz^\d{4}-\d{2}-\d{2}T
   z, c              3   4   K   | ]}t          |          V  d S r   )_format_table_value_humanrB   s     r   r9   z,_format_table_value_human.<locals>.<genexpr>   s+      EE!2155EEEEEEr   r   )rd   r   r   strftimerV   r   matchr   rR   rT   rg   r   rU   r   s    r   r   r      s<   }r% &%uu2%%*++ *~~j)))% "(+A5"I"I SbSz% #E"""% /yyEEuEEEEEE	E4	 	  /U??E&M 2 2333DJu--...E

###r   max_lenc                 j    t          |           }t          |          |k    r|d|dz
           dz   }|S )z/Format a value + truncate it for table display.N   z...)r   len)r   r   cells      r   rA   rA     s<    $U++D
4yy7MgkM"U*Kr   c                     t          | t          j                  r|                                 S t          t	          |                     S )zHFormat a cell value for agent TSV output (ISO timestamps, tabs escaped).)rd   r   r   r   rV   r   s    r   rN   rN   	  s;    %*++ !   E

###r   )'r   rb   r   r   r   r   collections.abcr   enumr   typingr   rv   huggingface_hub.errorsr   huggingface_hub.utilsr   r   r	   r
   r   rV   r   r   objectr   rg   rf   compiler   _MAX_CELL_LENGTHr*   r   rG   r   intrA   rN   outr   r   r   <module>r      sp   ) (       				 



 $ $ $ $ $ $              4 4 4 4 4 4 ] ] ] ] ] ] ] ] ] ] ] ] ] ]    3   Z7 Z7 Z7 Z7 Z7 Z7 Z7 Z7@ 6    bS bT#s(^ b b b b
 2:'(( "c "c " " " ""s "s " " " "S S    $S $S $ $ $ $* 9I  C # S    $C $C $ $ $ $ fhhr   