
    =[j                    
   U d Z ddlmZ ddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZ dd
lmZ ddlmZ dZdZdZdZdZded<    G d dee	          Zd/dZddd0dZd1d Zd2d#Z d3d*Z!d4d,Z"d1d-Z#d5d.Z$dS )6z(Shared output helpers for the Typer CLI.    )annotationsN)asdictis_dataclass)datetime)Enum)Path)SimpleNamespace)AnyIterable)Console)Tablezbold bright_cyanzbold bright_white ztuple[str, ...]TABLE_ROW_STYLESc                      e Zd ZdZdZdZdS )OutputFormatzSupported output formats.textjsonN)__name__
__module____qualname____doc__TEXTJSONr       [/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pyicloud/cli/output.pyr   r      s        ##DDDDr   r   valuer
   returnc                   t          | t                    r|                                 S t          | t                    rt	          |           S t          |           rt          |           S t          | t                    rt          |           S t          | d          r;	 | 
                    d          S # t          $ r | 
                                cY S w xY wt          | d          r| j        S t          | d          r!t          | j        t                    r| j        S t          | t                    rt!          |           S t          | t"                    r|                     d          S t	          |           S )z8Serialize common CLI values to JSON-friendly structures.
model_dumpr   )moderaw_datadatareplace)errors)
isinstancer   	isoformatr   strr   r   r	   varshasattrr   	TypeErrorr!   r"   dictsetsortedbytesdecode)r   s    r   json_defaultr0      sv    %"" !   % 5zzE e}}%)) E{{ul## &	&###000 	& 	& 	&##%%%%%	&uj!! ~uf *UZ">"> z% e}}% .||9|---u::s   !B7 7CCindentpayloadr2   
int | Noner'   c               B    t          j        | t          d||du          S )zRender a payload as JSON.FN)defaultensure_asciir2   	sort_keys)r   dumpsr0   )r3   r2   s     r   to_json_stringr:   9   s1     :$   r   consoler   Nonec                L    |                      t          |                     dS )zWrite a JSON payload to stdout.r   N
print_jsonr:   r;   r3   s     r   
write_jsonrB   E   s)     N73344444r   pathr   c                    | j                             dd           |                     t          |d          dz   d           dS )	zWrite JSON to disk.T)parentsexist_ok   r1   
zutf-8)encodingN)parentmkdir
write_textr:   )rC   r3   s     r   write_json_filerM   K   sM     	KdT222OON71555<wOOOOOOr   titlecolumns	list[str]rowsIterable[Iterable[Any]]r   c           	         t          | t          t          t          t	          t
                              }|D ]}|                    |           |D ]} |j        d |D               |S )zBuild a simple rich table.rN   title_styleheader_styleborder_style
row_stylesc                4    g | ]}|dnt          |          S )N )r'   ).0items     r   
<listcomp>z!console_table.<locals>.<listcomp>a   s&    LLLt|TLLLr   )r   TABLE_TITLE_STYLETABLE_HEADER_STYLETABLE_BORDER_STYLElistr   
add_columnadd_row)rN   rO   rQ   tablecolumnrows         r   console_tablerg   R   s    
 %''())  E  ! !     N NLLLLLMMMLr   Iterable[tuple[str, Any]]c           	     0   t          | t          t          t          t	          t
                              }|                    dt                     |                    d           |D ],\  }}|                    ||dnt          |                     -|S )z#Build a two-column key/value table.rT   Field)styleValueNrZ   )
r   r^   r_   r`   ra   r   rb   TABLE_KEY_STYLErc   r'   )rN   rQ   rd   keyr   s        r   console_kv_tablero   e   s     %''())  E 
WO444	W @ @
Uc22CJJ????Lr   c                P    |                      t          |d                     dS )z(Pretty-print a JSON object in text mode.rG   r1   r>   Nr?   rA   s     r   print_json_textrq   v   s.     N71===>>>>>r   c                <   | sdS | }t          | t                    r\|                                 }|sdS |                    d          s|S 	 t	          j        |          }n# t          j        $ r |cY S w xY wt          |t                    r|                    d          }|                    d          p|                    d          }|r|r|dk    r| d| dS |rt          |          S |rt          |          S t          |          S t          |          S )	zBReturn a compact human-friendly representation of reminder colors.rZ   {daHexStringckSymbolicColorNamedaSymbolicColorNamecustomz ())
r%   r'   strip
startswithr   loadsJSONDecodeErrorr+   getr:   )r   r3   stripped	hex_valuesymbolics        r   format_color_valuer   |   s]     rG% 	;;== 	2""3'' 	O	j**GG# 	 	 	OOO	 '4   'KK..	;;455 
!:
 :
  	/ 	/h(&:&:..).... 	"y>>! 	!x== g&&&w<<s   A! !A54A5)r   r
   r   r
   )r3   r
   r2   r4   r   r'   )r;   r   r3   r
   r   r<   )rC   r   r3   r
   r   r<   )rN   r'   rO   rP   rQ   rR   r   r   )rN   r'   rQ   rh   r   r   )r   r
   r   r'   )%r   
__future__r   r   dataclassesr   r   r   enumr   pathlibr   typesr	   typingr
   r   rich.consoler   
rich.tabler   r^   r_   r`   rm   r   __annotations__r'   r   r0   r:   rB   rM   rg   ro   rq   r   r   r   r   <module>r      s   . . . " " " " " "  , , , , , , , ,                   ! ! ! ! ! !                                  & '  %$&  & & & &    3      6 :> 	 	 	 	 	 	5 5 5 5P P P P   &   "? ? ? ?     r   