Ë
    Z²j%/  ã                   óx  — 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j8                  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&y)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y)Ú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   © ó    úZ/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/huggingface_hub/cli/_output.pyr   r       s   „ ÙQà€EØ€DØ€EØ€DØ�Er   r   c                   óš  — e Zd ZU dZeed<   eed<   d#d„Zej                  fdeddfd„Z	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y)%ÚOutputz§Output 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Úno_truncateÚreturnNc                 ó2   — d| _         | j                  «        y )NF)r   Úset_mode©Úselfs    r   Ú__init__zOutput.__init__4   s   € Ø ˆÔØ�‰�r   c                 óÈ   — |t         j                  k(  r*t        «       rt         j                  nt         j                  }|| _        |t         j                  k7  rt        «        yy)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_mode8   sK   € àÔ'×,Ñ,Ò,Ü19´Ô'×-Ò-ÔAU×A[ÑA[ˆDØˆŒ	ØÔ'×-Ñ-Ò-Ü!Õ#ð .r   c                 ó   — || _         y)z2Toggle off cell truncation for human table output.N)r   )r"   r   s     r   Úset_no_truncatezOutput.set_no_truncate@   s
   € à&ˆÕr   c                 ó<   — | j                   t        j                  k(  S ©N)r   r   r   r!   s    r   Úis_quietzOutput.is_quietD   s   € Ø�y‰yÔ0×6Ñ6Ñ6Ð6r   )r   r   Úmsgr   r   c                óÞ   — |�|€|�t        d«      ‚|}t        |«      }| j                  xt        j                  k(  r |�t        |«       yyt        j                  k(  r|�t        |«       yyy)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.textG   sr   € àˆ?ØÐ  EÐ$5Ü Ð!IÓJÐJØˆEÜ Ó$ˆEà�i‰iØ+Ô%×+Õ+ØÐ$Ü˜%•Lð %ä%×+Ô+ØÐ$Ü˜%•Lð %ð ,r   )ÚheadersÚid_keyÚ
alignmentsÚitemsr0   r1   r2   c          
      ó  ‡— |sc| j                   xxt        j                  k(  rnxt        j                  k(  rn n  t	        d«       yt        j
                  k(  rt	        d«       yy|€At        |d   j                  «       «      }|D �‡cg c]  Št        ˆfd„|D «       «      sŒ‰‘Œ }}|D ��cg c]!  }|D �cg c]  }|j                  |«      ‘Œ c}‘Œ# }	}}| j                   xt        j                  k(  �r" g }
d}d}|	D ]Ž  }g }|D ]t  }t        |«      }t        |t        t        t        t        f«      }t        |«      t         kD  r$| j"                  r|r|rd}nd}|dt         dz
   d	z   }|j%                  |«       Œv |
j%                  |«       Œ� |D �cg c]  }t'        |«      ‘Œ }}|xs i j)                  «       D ��ci c]  \  }}t'        |«      |“Œ }}}t	        t+        |
||¬
«      «       |r| j-                  d«       y|r| j-                  d«       yyxt        j                  k(  rD t	        dj/                  |«      «       |	D ]#  }t	        dj/                  d„ |D «       «      «       Œ% yxt        j
                  k(  r/ t	        t        j0                  t        |«      t2        ¬«      «       yt        j4                  k(  r,|xs |d   }|D ]  }t	        |j                  |d«      «       Œ yyc c}w c c}w c c}}w c c}w c c}}w )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              3   óD   •K  — | ]  }|j                  ‰«      d u–— Œ y ­wr(   )Úget)Ú.0ÚitemÚcols     €r   ú	<genexpr>zOutput.table.<locals>.<genexpr>r   s   øè ø€ Ò8eÐW[¸¿¹À#»ÈdÔ9RÑ8eùs   ƒ FTé   ú...)r0   r2   z+Use `--no-truncate` to display full values.z0Use `--format json` to display full lists/dicts.ú	c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr(   )Ú_format_table_cell_agent©r7   Úvs     r   r:   zOutput.table.<locals>.<genexpr>“   s   è ø€ Ò#MÀAÔ$<¸Q×$?Ñ#Mùó   ‚©ÚdefaultÚ )r   r   r   r   r.   r   ÚlistÚkeysÚanyr6   Ú_format_table_value_humanÚ
isinstanceÚdictÚsetÚtupleÚlenÚ_MAX_CELL_LENGTHr   ÚappendÚ
_to_headerr3   r   ÚhintÚjoinÚdumpsÚstrr   )r"   r3   r0   r1   r2   Úall_columnsr9   r8   ÚhÚrowsÚformatted_rowsÚscalar_truncatedÚcontainer_truncatedÚrowÚformatted_rowÚvalueÚcellÚis_containerÚscreaming_headersÚkrA   Úscreaming_alignmentsÚ	quiet_keys         `                r   ÚtablezOutput.tableX   s´  ø€ ñ  Ø—)‘)ØLÐ/Ô)×/Õ/Ð2LÔ2F×2LÕ2LÓLÜÐ-Ô.ð ô *×.Ô.Ü˜$”KÙàˆ?Ü˜u Q™xŸ}™}›Ó/ˆKØ&1×f˜s´SÓ8eÐ_dÔ8eÕ5e’sÐfˆGÐfØ;@×A°4 gÖ. �—‘˜!•Ô.ÐAˆÑAà�i‰iØ+Ô%×+Ö+Ø8:�Ø#(Ð Ø&+Ð#Øò 9�CØ57�MØ!$ò 3˜Ü8¸Ó?˜ô (2°%¼$ÄÄcÌ5Ð9QÓ'R˜Ü˜t›9Ô'7Ò7À×AQÒAQÑUaÙ+Ø6:Ñ 3à37Ð 0Ø#'Ð(>Ô*:¸QÑ*>Ð#?À%Ñ#G˜DØ%×,Ñ,¨TÕ2ð3ð #×)Ñ)¨-Õ8ð9ð =DÖ$D°q¤Z°¥]Ð$DÐ!Ð$DØFPÒFVÐTV×E]ÑE]ÓE_×'`¹T¸QÀ¬
°1«°qÑ(8Ð'`Ð$Ñ'`Ü”h˜~Ð7HÐUiÔjÔkÙ#Ø—I‘IÐKÕLÙ(Ø—I‘IÐPÕQð )à+Ô%×+Õ+Ü�d—i‘i Ó(Ô)Øò O�CÜ˜$Ÿ)™)Ñ#MÈÔ#MÓMÕNñOà*Ô%×*Õ*Ü”d—j‘j¤ e£´cÔ:Õ;Ü%×+Ô+Ø"Ò0 g¨a¡j�	Ø!ò 3�DÜ˜$Ÿ(™( 9¨bÓ1Õ2ñ3ð ,ùòI gùÚ.ùÓAùò, %EùÛ'`s0   Â
K1Â$K1Â/	K;Â8K6ÃK;ÆLÇ LË6K;)r1   Údatac                óf  — t        j                  |«      rt        |t        «      st	        |«      }| j
                  t        j                  k(  r|�t        |j                  |d«      «       y| j
                  t        j                  k(  rdnd}t        t        j                  ||t        ¬«      «       y)z„Print structured data as JSON in all modes (indented for human, compact otherwise).

        Accepts a dict or a dataclass.
        NrE   é   )ÚindentrD   )ÚdataclassesÚis_dataclassrJ   ÚtypeÚ_dataclass_to_dictr   r   r   r.   r6   r   r   rT   rU   )r"   rf   r1   ri   s       r   rK   zOutput.dict›   s�   € ô
 ×#Ñ# DÔ)´*¸TÄ4Ô2HÜ% dÓ+ˆDØ�9‰9Ô,×2Ñ2Ò2°vÐ7IÜ�$—(‘(˜6 2Ó&Ô'ØØ—i‘iÔ#7×#=Ñ#=Ò=‘À4ˆÜŒd�j‰j˜ f´cÔ:Õ;r   Úmessagec                 óÜ  — | j                   xt        j                  k(  rg t        j                  d|› �«      g}|j                  «       D ]  \  }}|€Œ	|j                  d|› d|› �«       Œ! t        dj                  |«      «       yxt        j                  k(  rO |j                  «       D ��cg c]  \  }}|€Œ	|› d|› �‘Œ }}}t        |rdj                  |«      «       y|«       yxt        j                  k(  r/ t        |r t        j                  |t        ¬«      «       yd	«       yt        j                  k(  r+t        |j                  «       «      }|rt        |d
   «       yyyc c}}w )z"Print a success summary to stdout.u   âœ“ Nz  z: ú
ú=ú rC   rE   r   )r   r   r   r   Úgreenr3   rP   r.   rS   r   r   rT   rU   r   rF   Úvalues)r"   rn   rf   Úpartsrb   rA   rt   s          r   ÚresultzOutput.result¨   s"  € à�i‰iØ+Ô%×+Õ+ÜŸ™ d¨7¨)Ð$4Ó5Ð6�Ø ŸJ™J›Lò 4‘D�A�qØ‘}ØŸ™ r¨!¨¨B¨q¨c ]Õ3ð4ô �d—i‘i Ó&Õ'Ø+Ô%×+Õ+Ø04·
±
³×N©¨¨1ÀÁ˜A˜3˜a ˜sšÐN�ÑNÜ©�c—h‘h˜u“oÕ<°GÕ<Ø*Ô%×*Õ*Ü±t”d—j‘j ¬sÔ3ÕDÀÕDÜ%×+Ô+Ü˜dŸk™k›mÓ,�ÙÜ˜& ™)Õ$ð ð ,ùó	 Os   Â-
E(Â8	E(F)rD   ÚyesrD   rw   c                ó�   — |ry| j                   t        j                  k7  rt        |› d�«      ‚t	        j
                  ||d¬«       y)zV
        Ask for confirmation. Raises `ConfirmationError` in non-human modes.
        Nz  Use --yes to skip confirmation.T)rD   Úabort)r   r   r   r   ÚtyperÚconfirm)r"   rn   rD   rw   s       r   r{   zOutput.confirm»   s@   € ñ ØØ�9‰9Ô,×2Ñ2Ò2Ü# w iÐ/OÐ$PÓQÐQÜ�‰�g w°dÖ;r   c                 óz   — t        | j                  t        j                  k(  ¬«      }|�|j	                  |«       |S )zEReturn a status line that emits only in human mode (no-op otherwise).)Úenabled)r   r   r   r   Úupdate)r"   rn   Ústatuss      r   r   zOutput.statusÅ   s3   € ä D§I¡IÔ1E×1KÑ1KÑ$KÔLˆØÐØ�M‰M˜'Ô"Øˆr   c                 óÞ   — | j                   t        j                  k(  r2t        t	        j
                  d|› �«      t        j                  ¬«       yt        d|› �t        j                  ¬«       y)z0Print a non-fatal warning to stderr (all modes).z	Warning: ©ÚfileN)r   r   r   r.   r   ÚyellowÚsysÚstderr©r"   rn   s     r   ÚwarningzOutput.warningÌ   sH   € à�9‰9Ô,×2Ñ2Ò2Ü”$—+‘+ 	¨'¨Ð3Ó4¼3¿:¹:ÖFä�I˜g˜YÐ'¬c¯j©jÖ9r   c                 óÞ   — | j                   t        j                  k(  r2t        t	        j
                  d|› �«      t        j                  ¬«       yt        d|› �t        j                  ¬«       y)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Ó   sH   € à�9‰9Ô,×2Ñ2Ò2Ü”$—(‘(˜W W IÐ.Ó/´c·j±jÖAä�G˜G˜9Ð%¬C¯J©JÖ7r   c                 óÞ   — | j                   t        j                  k(  r2t        t	        j
                  d|› �«      t        j                  ¬«       yt        d|› �t        j                  ¬«       y)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   rR   zOutput.hintÚ   sH   € à�9‰9Ô,×2Ñ2Ò2Ü”$—)‘)˜f W IÐ.Ó/´c·j±jÖAä�F˜7˜)Ð$¬3¯:©:Ö6r   )r   Nr(   )r   r   r   r   r   Ú__annotations__Úboolr#   r   r    r&   r)   rU   r/   r   rK   r   rF   re   rv   r{   r   r   r‡   rŠ   rR   r   r   r   r   r   *   s·  … ñð ÓØÓóð 5I×4MÑ4Mñ $Ð1ð $ÐRVó $ð'¨4ð '°Dó 'ð7˜$ó 7ð!À$Ð\`ò !˜˜d™
ð !°S¸4±Zð !ÈsÐUYÉzð !Ðeió !ð* %)Ø!Ø,0òA3à˜˜S #˜X™Ñ'ðA3ð �c‘˜TÑ!ð	A3ð
 �d‘
ðA3ð ˜˜c˜‘N TÑ)ðA3ð 
óA3ðF 7;ò <˜ð <¨¨t©ð <¸tó <ð%˜cð %¨3ð %°4ó %ð& 8=È%ò <˜sð <°ð <À4ð <ÐTXó <ñ˜c D™jð °Jó ð:˜sð : tó :ð8˜Sð 8 Tó 8ð7˜Cð 7 Dô 7r   r   rA   r   c                 óB  — t        | t        j                  «      r| j                  «       S t        | t        «      r0| j	                  «       D ��ci c]  \  }}|€Œ	|t        |«      “Œ c}}S t        | t        «      r| D �cg c]  }t        |«      ‘Œ c}S | S c c}}w c c}w )z4Recursively serialize a value to be JSON-compatible.)rJ   ÚdatetimeÚ	isoformatrK   r3   Ú_serialize_valuerF   )rA   ÚkeyÚvalr8   s       r   r’   r’   å   s�   € ä�!”X×&Ñ&Ô'Ø�{‰{‹}ÐÜ	�A”tÔ	Ø;<¿7¹7»9×X©x¨s°CÈÉ�Ô% cÓ*Ñ*ÓXÐXÜ	�A”tÔ	Ø34Ö5¨4Ô  Õ&Ò5Ð5Ø€Hùó Yùâ5s   Á
BÁBÁ?BÚinfoc                 ó”   — t        j                  | «      j                  «       D ��ci c]  \  }}|€Œ	|t        |«      “Œ c}}S c c}}w )z0Convert a dataclass to a json-serializable dict.)rj   Úasdictr3   r’   )r•   rb   rA   s      r   rm   rm   ð   s?   € ä/:×/AÑ/AÀ$Ó/G×/MÑ/MÓ/O×a¡t q¨!ÐSTÑS`ˆAÔ Ó"Ñ"ÓaÐaùÓas
   §
A²Az\033\[[0-9;]*mé#   r/   c                 ó.   — t         j                  d| «      S )NrE   )Ú_ANSI_REÚsub©r/   s    r   r-   r-   ù   s   € Ü�<‰<˜˜DÓ!Ð!r   c                 ó@   — dj                  | j                  «       «      S )Nrr   )rS   Úsplitrœ   s    r   Ú_single_linerŸ   ý   s   € Ø�8‰8�D—J‘J“LÓ!Ð!r   Únamec                 óP   — t        j                  dd| «      }|j                  «       S )zAConvert a camelCase or PascalCase string to SCREAMING_SNAKE_CASE.z([a-z])([A-Z])z\1_\2)Úrer›   Úupper)r    Úss     r   rQ   rQ     s!   € ä
�‰Ð  (¨DÓ1€AØ�7‰7‹9Ðr   r^   c                 ó   — | €yt        | t        «      r| rdS dS t        | t        j                  «      r| j                  d«      S t        | t        «      rt        j                  d| «      r| dd S t        | t        «      rt        | «      S t        | t        «      rdj                  d„ | D «       «      S t        | t        «      r9d	| v rt        t	        | d	   «      «      S t        t        j                  | «      «      S t        t	        | «      «      S )
z/Convert a value to string for terminal display.NrE   u   âœ”z%Y-%m-%dz^\d{4}-\d{2}-\d{2}Té
   z, c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr(   )rI   r@   s     r   r:   z,_format_table_value_human.<locals>.<genexpr>  s   è ø€ ÒE¸!Ô2°1×5ÑEùrB   r    )rJ   rŽ   r�   ÚstrftimerU   r¢   ÚmatchrŸ   rF   rS   rK   r   rT   ©r^   s    r   rI   rI     sà   € à€}ØÜ�%œÔÙˆuÐ% 2Ð%Ü�%œ×*Ñ*Ô+Ø�~‰~˜jÓ)Ð)Ü�%œÔ¤"§(¡(Ð+AÀ5Ô"IØ�S�bˆzÐÜ�%œÔÜ˜EÓ"Ð"Ü�%œÔØ�y‰yÑE¸uÔEÓEÐEÜ	�Eœ4Ô	 Ø�U‰?Ü¤ E¨&¡MÓ 2Ó3Ð3ÜœDŸJ™J uÓ-Ó.Ð.Üœ˜E›
Ó#Ð#r   Úmax_lenc                 óN   — t        | «      }t        |«      |kD  r|d|dz
   dz   }|S )z/Format a value + truncate it for table display.Nr;   r<   )rI   rN   )r^   r«   r_   s      r   Ú_format_table_cell_humanr­     s2   € ä$ UÓ+€DÜ
ˆ4ƒy�7ÒØ�M�g ‘kÐ" UÑ*ˆØ€Kr   c                 ó~   — t        | t        j                  «      r| j                  «       S t        t	        | «      «      S )zHFormat a cell value for agent TSV output (ISO timestamps, tabs escaped).)rJ   r�   r‘   rŸ   rU   rª   s    r   r?   r?   $  s.   € ä�%œ×*Ñ*Ô+Ø�‰Ó Ð Üœ˜E›
Ó#Ð#r   )'r   rj   r�   r   r¢   r„   Úcollections.abcr   Úenumr   Útypingr   rz   Úhuggingface_hub.errorsr   Úhuggingface_hub.utilsr   r   r	   r
   r   rU   r   r   Úobjectr’   rK   rm   Úcompilerš   rO   r-   rŸ   rQ   rI   Úintr­   r?   Úoutr   r   r   ú<module>r¸      s  ðñ )ã Û Û Û 	Û 
Ý $Ý Ý ã å 4ß ]Õ ]ô˜3 ô ÷u7ñ u7ðv˜ð  6ó ðb˜Sð b T¨#¨s¨(¡^ó bð
 ˆ2�:‰:Ð'Ó(€ØÐ ð"�cð "˜có "ð"�sð "˜só "ð�Sð ˜Só ð$ Sð $¨Só $ð* 9Iñ  Cð °#ð ÈSó ð$ Cð $¨Có $ñ ƒh�r   