Ë
    ëÿæi'&  ã                   ó`  — 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  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j4                  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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Ú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   © ó    úp/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/huggingface_hub/cli/_output.pyr   r       s   „ ÙQà€EØ€DØ€EØ€DØ�Er   r   c                   óL  — e Zd ZU dZeed<   dd„Zej                  fdedd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e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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ÚreturnNc                 ó$   — | j                  «        y ©N)Úset_mode)Úselfs    r   Ú__init__zOutput.__init__3   s   € Ø�‰�r   c                 óŒ   — |t         j                  k(  r*t        «       rt         j                  nt         j                  }|| _        y)zHOverride the output mode (called by commands that receive ``--format``).N)r   r   r   r   r   r   )r   r   s     r   r   zOutput.set_mode6   s1   € àÔ'×,Ñ,Ò,Ü19´Ô'×-Ò-ÔAU×A[ÑA[ˆDØˆ�	r   )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.text<   sr   € àˆ?ØÐ  EÐ$5Ü Ð!IÓJÐJØˆEÜ Ó$ˆEà�i‰iØ+Ô%×+Õ+ØÐ$Ü˜%•Lð %ä%×+Ô+ØÐ$Ü˜%•Lð %ð ,r   )ÚheadersÚid_keyÚ
alignmentsÚitemsr(   r)   r*   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‰ |	D �
�cg c]  }
|
D �cg c]  }t        |«      ‘Œ c}‘Œ }}
}|D �cg c]  }t        |«      ‘Œ }}|xs i j                  «       D ��ci c]  \  }}t        |«      |“Œ }}}t	        t        |||¬«      «       yxt        j                  k(  rD t	        dj                  |«      «       |	D ]#  }
t	        dj                  d„ |
D «       «      «       Œ% yxt        j
                  k(  r/ t	        t        j                  t        |«      t         ¬	«      «       yt        j"                  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 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>g   s"   øè ø€ Ð8eÑ_dÐW[¸¿¹À#»ÈdÔ9RÑ_dùs   ƒ )r(   r*   Ú	c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )Ú_format_table_cell_agent©r/   Úvs     r   r2   zOutput.table.<locals>.<genexpr>s   s   è ø€ Ð#MÉÀAÔ$<¸Q×$?Éùó   ‚©ÚdefaultÚ )r   r   r   r   r&   r   ÚlistÚkeysÚanyr.   Ú_format_table_cell_humanÚ
_to_headerr+   r	   ÚjoinÚdumpsÚstrr   )r   r+   r(   r)   r*   Úall_columnsr1   r0   ÚhÚrowsÚrowr7   Úformatted_rowsÚscreaming_headersÚkÚscreaming_alignmentsÚ	quiet_keys         `          r   ÚtablezOutput.tableM   s  ø€ ñ  Ø—)‘)ØLÐ/Ô)×/Õ/Ð2LÔ2F×2LÕ2LÓLÜÐ-Ô.ð ô *×.Ô.Ü˜$”KÙàˆ?Ü˜u Q™xŸ}™}›Ó/ˆKÙ&1Ôf¡k˜s´SÓ8eÑ_dÓ8eÕ5e’s kˆGÐfÙ;@ÔA¹5°4¡gÓ.¡g �—‘˜!• gÓ.¸5ˆÑAà�i‰iØ+Ô%×+Õ+ÙosÔ8tÑosÐhkÑ_bÓ9cÑ_bÐZ[Ô:RÐSTÕ:UÐ_bÓ9cÐos�Ñ8tÙ<CÓ$D¹G°q¤Z°¥]¸GÐ!Ð$DØFPÒFVÐTV×E]ÑE]ÔE_Ô'`ÑE_¹T¸QÀ¬
°1«°qÑ(8ÐE_Ð$Ñ'`Ü”h˜~Ð7HÐUiÔjÕkØ+Ô%×+Õ+Ü�d—i‘i Ó(Ô)Û�CÜ˜$Ÿ)™)Ñ#MÉÓ#MÓMÕNñ  à*Ô%×*Õ*Ü”d—j‘j¤ e£´cÔ:Õ;Ü%×+Ô+Ø"Ò0 g¨a¡j�	Û!�DÜ˜$Ÿ(™( 9¨bÓ1Õ2ñ "ð ,ùò gùÚ.ùÓAùò :dùÓ8tùÚ$DùÛ'`sH   Â
IÂ$IÂ/	I!Â8IÃI!Ã<	I,ÄI'ÄI,Ä#I2ÅI7ÉI!É'I,Údatac                 óð   — t        j                  |«      rt        |t        «      st	        |«      }| 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.
        é   N)Úindentr:   )ÚdataclassesÚis_dataclassÚ
isinstanceÚtypeÚ_dataclass_to_dictr   r   r   r&   r   rB   rC   )r   rN   rQ   s      r   ÚdictzOutput.dict{   sS   € ô
 ×#Ñ# DÔ)´*¸TÄ4Ô2HÜ% dÓ+ˆDØ—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: Ú
Ú=Ú r9   r;   r   )r   r   r   r   Úgreenr+   Úappendr&   rA   r   r   rB   rC   r   r<   Úvalues)r   rX   rN   ÚpartsrJ   r7   r_   s          r   ÚresultzOutput.result…   s  € à�i‰iØ+Ô%×+Õ+ÜŸ™ d¨7¨)Ð$4Ó5Ð6�Ø ŸJ™JžL‘D�A�qØ‘}ØŸ™ r¨!¨¨B¨q¨c ]Õ3ð )ô �d—i‘i Ó&Õ'Ø+Ô%×+Õ+Ø04·
±
´ÔN±©¨¨1ÀÁ˜A˜3˜a ˜sš°�Ñ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)r:   Úyesr:   rb   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)r:   Úabort)r   r   r   r   ÚtyperÚconfirm)r   rX   r:   rb   s       r   rf   zOutput.confirm˜   s@   € ñ ØØ�9‰9Ô,×2Ñ2Ò2Ü# w iÐ/OÐ$PÓQÐQÜ�‰�g w°dÖ;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   rX   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: rh   N)r   r   r   r&   r   Úredrk   rl   rm   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: rh   N)r   r   r   r&   r   Úgrayrk   rl   rm   s     r   Úhintz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__r    r   r   rC   r'   r   rW   r   r<   rM   ra   Úboolrf   rn   rq   rt   r   r   r   r   r   *   se  … ñð Óóð 5I×4MÑ4Mñ Ð1ð ÐRVó ð!À$Ð\`ò !˜˜d™
ð !°S¸4±Zð !ÈsÐUYÉzð !Ðeió !ð* %)Ø!Ø,0ò,3à˜˜S #˜X™Ñ'ð,3ð �c‘˜TÑ!ð	,3ð
 �d‘
ð,3ð ˜˜c˜‘N TÑ)ð,3ð 
ó,3ð\<˜ð < ó <ð%˜cð %¨3ð %°4ó %ð& 8=È%ò <˜sð <°ð <À4ð <ÐTXó <ð:˜sð : tó :ð8˜Sð 8 Tó 8ð7˜Cð 7 Dô 7r   r   r7   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.)rT   ÚdatetimeÚ	isoformatrW   r+   Ú_serialize_valuer<   )r7   ÚkeyÚvalr0   s       r   rz   rz   »   s‰   € ä�!”X×&Ñ&Ô'Ø�{‰{‹}ÐÜ	�A”tÔ	Ø;<¿7¹7¼9ÔX¹9©x¨s°CÈÉ�Ô% cÓ*Ñ*¸9ÒXÐXÜ	�A”tÔ	Ù34Ó5±1¨4Ô  Õ&°1Ñ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.)rR   Úasdictr+   rz   )r}   rJ   r7   s      r   rV   rV   Æ   sE   € ä/:×/AÑ/AÀ$Ó/G×/MÑ/MÔ/OÔaÑ/O¡t q¨!ÐSTÑS`ˆAÔ Ó"Ñ"Ð/OÒaÐaùÓas
   §
A²Az\033\[[0-9;]*mé#   r'   c                 ó.   — t         j                  d| «      S )Nr;   )Ú_ANSI_REÚsub)r'   s    r   r%   r%   Ï   s   € Ü�<‰<˜˜DÓ!Ð!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   r@   r@   Ó   s!   € ä
�‰Ð  (¨DÓ1€AØ�7‰7‹9Ðr   Úvaluec                 ó´  — | €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dj                  d„ | D «       «      S t        | t        «      r'd	| v rt	        | d	   «      S t        j                  | «      S t	        | «      S )
z/Convert a value to string for terminal display.Nr;   u   âœ”z%Y-%m-%dz^\d{4}-\d{2}-\d{2}Té
   z, c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   )Ú_format_table_value_humanr6   s     r   r2   z,_format_table_value_human.<locals>.<genexpr>ä   s   è ø€ ÐE¹u¸!Ô2°1×5¹uùr8   r„   )rT   rv   rx   ÚstrftimerC   r†   Úmatchr<   rA   rW   r   rB   ©r‰   s    r   r�   r�   Ù   s¼   € à€}ØÜ�%œÔÙˆuÐ% 2Ð%Ü�%œ×*Ñ*Ô+Ø�~‰~˜jÓ)Ð)Ü�%œÔ¤"§(¡(Ð+AÀ5Ô"IØ�S�bˆzÐÜ�%œÔØ�y‰yÑE¹uÓEÓEÐEÜ	�Eœ4Ô	 Ø�U‰?Ü�u˜V‘}Ó%Ð%Ü�z‰z˜%Ó Ð Üˆu‹:Ðr   Úmax_lenc                 óN   — t        | «      }t        |«      |kD  r|d|dz
   dz   }|S )z/Format a value + truncate it for table display.Né   z...)r�   Úlen)r‰   r‘   Úcells      r   r?   r?   ì   s2   € ä$ UÓ+€DÜ
ˆ4ƒy�7ÒØ�M�g ‘kÐ" UÑ*ˆØ€Kr   c                 óŒ   — t        | t        j                  «      r| j                  «       S t        | «      j	                  dd«      S )zHFormat a cell value for agent TSV output (ISO timestamps, tabs escaped).r3   r\   )rT   rx   ry   rC   Úreplacer�   s    r   r5   r5   ô   s6   € ä�%œ×*Ñ*Ô+Ø�‰Ó Ð Üˆu‹:×Ñ˜d CÓ(Ð(r   )$r   rR   rx   r   r†   rk   Úcollections.abcr   Úenumr   Útypingr   re   Úhuggingface_hub.errorsr   Úhuggingface_hub.utilsr   r   r	   rC   r   r   Úobjectrz   rW   rV   Úcompiler‚   Ú_MAX_CELL_LENGTHr%   r@   r�   Úintr?   r5   Úoutr   r   r   Ú<module>r¢      s  ðñ )ã Û Û Û 	Û 
Ý $Ý Ý ã å 4ß :Ñ :ô˜3 ô ÷K7ñ K7ðb˜ð  6ó ðb˜Sð b T¨#¨s¨(¡^ó bð
 ˆ2�:‰:Ð'Ó(€ØÐ ð"�cð "˜có "ð�Sð ˜Só ð Sð ¨Só ð& 9Iñ  Cð °#ð ÈSó ð) Cð )¨Có )ñ ƒh�r   