Ë
    �š¾j0  ã                   óê   — d dl 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mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZ dd	lmZmZmZmZ dd
lmZ  ddlm!Z!m"Z"m#Z#  G d„ de$«      Z%y)é    N)ÚCounter)Úcontextmanager)ÚProcess)ÚAnyÚ
CollectionÚDictÚNoReturnÚOptionalÚUnionÚcastÚoverloadé   )ÚLiteral)ÚrowÚtable)ÚCOLORSÚICONSÚMESSAGESÚ
can_render)Úcolor)Úlocale_escapeÚsupports_ansiÚwrapc                   óØ  — e Zd Z	 	 	 	 	 	 	 	 	 	 	 d*dededee   dee   dededed	ed
ededefd„Ze	de
fd„«       Z	 	 	 	 	 d+dededededee   f
d„Ze	 	 	 	 	 d+dededededeed      f
d„«       Ze	 	 	 	 	 d,dededededed   defd„«       Z	 	 	 	 	 d+dededededeeeef      deedef   fd„Z	 	 	 	 	 d+dededededee   f
d„Z	 	 	 	 	 d+dededededee   f
d„Z	 	 	 	 	 	 	 	 	 d-dededeeeef      deeeef      dee   dedededee   fd „Z	 	 	 	 d.ded!ededee   fd"„Zd#eeef   fd$„Zd#efd%„Zed/defd&„«       Zd/defd'„Z	 	 	 	 d0deded(ee   dededee   fd)„Zy)1ÚPrinterNÚprettyÚno_printÚcolorsÚiconsÚline_maxÚ	animationÚanimation_asciiÚhide_animationÚignore_warningsÚ
env_prefixÚ	timestampc                 ó<  — t        j                  dj                  |
«      d«      }t        j                  dj                  |
«      d«      }t        «       | _        |xr | | _        || _        t        «       xr | | _        |xs || _	        |	| _
        || _        t        t        «      | _        t        t        «      | _        || _        |r| j                  j%                  |«       |r| j                   j%                  |«       t'        |«      r|| _        y|| _        y)aŸ  Initialize the command-line printer.

        pretty (bool): Pretty-print output (colors, icons).
        no_print (bool): Don't actually print, just return.
        colors (Optional[Dict]): Optional color values to add or overwrite, name mapped to value.
        icons (Optional[Dict]): Optional icons to add or overwrite. Name mapped to unicode icon.
        line_max (int): Maximum line length (for divider).
        animation (str): Steps of loading animation for loading() method.
        animation_ascii (str): Alternative animation for ASCII terminals.
        hide_animation (bool): Don't display animation, e.g. for logs.
        ignore_warnings (bool): Do not output messages of type MESSAGE.WARN.
        env_prefix (str): Prefix for environment variables, e.g.
            WASABI_LOG_FRIENDLY.
        timestamp (bool): Print a timestamp (default False).
        RETURNS (Printer): The initialized printer.
        z{}_LOG_FRIENDLYFz{}_NO_PRETTYN)ÚosÚgetenvÚformatr   Ú_countsr   r   r   Ú
show_colorr#   r$   r    Údictr   r   r   r   r&   Úupdater   Úanim)Úselfr   r   r   r   r    r!   r"   r#   r$   r%   r&   Úenv_log_friendlyÚenv_no_prettys                 úX/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/wasabi/printer.pyÚ__init__zPrinter.__init__   så   € ô< Ÿ9™9Ð%6×%=Ñ%=¸jÓ%IÈ5ÓQÐÜŸ	™	 .×"7Ñ"7¸
Ó"CÀUÓKˆÜ '£	ˆŒØÒ2 ]Ð!2ˆŒØ ˆŒÜ'›/ÒBÐ2BÐ.BˆŒØ,Ò@Ð0@ˆÔØ.ˆÔØ ˆŒÜœ6“lˆŒÜœ%“[ˆŒ
Ø"ˆŒÙØ�K‰K×Ñ˜vÔ&ÙØ�J‰J×Ñ˜eÔ$Ü!+¨IÔ!6�Iˆ�	¸Oˆ�	ó    Úreturnc                 ó   — | j                   S )z•Get the counts of how often the special printers were fired,
        e.g. MESSAGES.GOOD. Can be used to print an overview like "X warnings".
        )r+   )r0   s    r3   ÚcountszPrinter.countsD   s   € ð
 �|‰|Ðr5   ÚtitleÚtextÚshowÚspacedÚexitsc                 óL   — | j                  ||t        j                  |||¬«      S )a§  Print a success message.

        title (Any): The main text to print.
        text (Any): Optional additional text to print.
        show (bool): Whether to print or not. Can be used to only output
            messages under certain condition, e.g. if --verbose flag is set.
        spaced (bool): Whether to add newlines around the output.
        exits (Optional[int]): Optional toggle to perform a system exit.
        ©Ústyler;   r<   r=   )Ú_get_msgr   ÚGOOD©r0   r9   r:   r;   r<   r=   s         r3   ÚgoodzPrinter.goodK   ó+   € ð" �}‰}Ø�4œxŸ}™}°4ÀÈeð ó 
ð 	
r5   )r   Fc                  ó   — y ©N© rC   s         r3   ÚfailzPrinter.fail`   ó   € ð 	r5   )r   Tc                  ó   — y rG   rH   rC   s         r3   rI   zPrinter.failk   rJ   r5   c                 óL   — | j                  ||t        j                  |||¬«      S )a¦  Print an error message.

        title (Any): The main text to print.
        text (Any): Optional additional text to print.
        show (bool): Whether to print or not. Can be used to only output
            messages under certain condition, e.g. if --verbose flag is set.
        spaced (bool): Whether to add newlines around the output.
        exits (Optional[int]): Optional toggle to perform a system exit.
        r?   )rA   r   ÚFAILrC   s         r3   rI   zPrinter.failv   rE   r5   c                 óL   — | j                  ||t        j                  |||¬«      S )a§  Print a warning message.

        title (Any): The main text to print.
        text (Any): Optional additional text to print.
        show (bool): Whether to print or not. Can be used to only output
            messages under certain condition, e.g. if --verbose flag is set.
        spaced (bool): Whether to add newlines around the output.
        exits (Optional[int]): Optional toggle to perform a system exit.
        r?   )rA   r   ÚWARNrC   s         r3   ÚwarnzPrinter.warn‹   rE   r5   c                 óL   — | j                  ||t        j                  |||¬«      S )a®  Print an informational message.

        title (Any): The main text to print.
        text (Any): Optional additional text to print.
        show (bool): Whether to print or not. Can be used to only output
            messages under certain condition, e.g. if --verbose flag is set.
        spaced (bool): Whether to add newlines around the output.
        exits (Optional[int]): Optional toggle to perform a system exit.
        r?   )rA   r   ÚINFOrC   s         r3   ÚinfozPrinter.info    rE   r5   r   Úbg_colorÚiconc
                 ó´  — |sy| j                   rÏ| j                  j                  t        t        |«      |«      }| j                  j                  t        t        |«      |«      }| j
                  j                  t        t        |«      «      }|r)t        dj                  ||«      «      j                  «       }| j                  rt        |||¬«      }t        |d¬«      }|rdj                  |t        |d¬«      «      }| j                  r?t        j                  j                  «       j                  d«      }
dj                  |
|«      }|	€|rd	j                  |«      }| j                   s|st#        |«       |	�~t$        j&                  j)                  «        t$        j*                  j)                  «        | j                   s|r|	dk7  r	 t-        |j                  «       «      ‚t%        j8                  |	«       | j                   s|r|S y# t.        $ rF}d
j1                  t3        j4                  «       dd «      }t7        dj                  ||«      «      ‚d}~ww xY w)a�  Print a message.

        title (Any): The main text to print.
        text (Any): Optional additional text to print.
        color (Optional[Union[str, int]]): Optional foreground color.
        bg_color (Optional[Union[str, int]]): Optional background color.
        icon (Optional[str]): Optional name of icon to add.
        spaced (bool): Whether to add newlines around the output.
        show (bool): Whether to print or not. Can be used to only output
            messages under certain condition, e.g. if --verbose flag is set.
        no_print (bool): Don't actually print, just return.
        exits (Optional[int]): Perform a system exit. Optional.
        Nú{} {})ÚfgÚbgr   )Úindentz{}
{}z%Y-%m-%d %H:%M:%Sz{}	{}z
{}
ú
éýÿÿÿ)r   r   Úgetr   Ústrr   r   r*   Ústripr,   Ú_colorr   r&   ÚdatetimeÚnowÚstrftimer   ÚprintÚsysÚstdoutÚflushÚstderrÚRuntimeErrorÚ	ExceptionÚjoinÚ	tracebackÚformat_stackÚ
SystemExitÚexit)r0   r9   r:   r   rT   rU   r<   r;   r   r=   rb   ÚeÚtbs                r3   r:   zPrinter.textµ   sÉ  € ñ2 ØØ�;Š;Ø—K‘K—O‘O¤D¬¨eÓ$4°eÓ<ˆEØ—{‘{—‘¤t¬C°Ó':¸HÓEˆHØ—:‘:—>‘>¤$¤s¨D£/Ó2ˆDÙÜ% g§n¡n°T¸5Ó&AÓB×HÑHÓJ�Ø�ŠÜ˜u¨°8Ô<�Ü˜ qÔ)ˆEÙØ—O‘O E¬4°¸QÔ+?Ó@ˆEØ�>Š>Ü×#Ñ#×'Ñ'Ó)×2Ñ2Ð3FÓGˆCØ—O‘O C¨Ó/ˆEØÐ¡Ø—O‘O EÓ*ˆEØ�}Š}¡XÜ�%ŒLØÐÜ�J‰J×ÑÔÜ�J‰J×ÑÔØ�}Š}¡¨U°aªZð=Ü& u§{¡{£}Ó5Ð5ô
 �H‰H�UŒOØ�=Š=™HØˆLð %øô !ò =àŸ™¤9×#9Ñ#9Ó#;¸C¸RÐ#@ÓA�BÜ$ X§_¡_°R¸Ó%;Ó<Ð<ûð=ús   Ç	H È	IÈAIÉIÚcharc           	      ó„  — |syt        |«      dk7  rt        dj                  |«      «      ‚| j                  rð| j                  j                  t        t        |«      «      }|r)t        dj                  ||«      «      j                  «       }|t        t        | j                  t        |«      z
  «      dz  «      dz
  z  }|rdj                  |«      nd}t        dj                  ||¬	«      d
¬«      }t        |«      | j                  k  r||| j                  t        |«      z
  z  z   }| j                  r|S t        |«       y)ag  Print a divider with a headline:
        ============================ Headline here ===========================

        text (str): Headline text. If empty, only the line is printed.
        char (str): Line character to repeat, e.g. =.
        show (bool): Whether to print or not.
        icon (Optional[str]): Optional icon to display with title.
        Nr   z9Divider chars need to be one character long. Received: {}rW   é   z {} Ú z
{deco}{text}{deco})Údecor:   T)Úbold)ÚlenÚ
ValueErrorr*   r   r   r]   r   r^   r   r_   ÚintÚroundr    r`   r   rd   )r0   r:   rr   r;   rU   rv   s         r3   ÚdividerzPrinter.dividerð   s  € ñ ØÜˆt‹9˜Š>Üðß%™v d›|óð ð �;Š;Ø—:‘:—>‘>¤$¤s¨D£/Ó2ˆDÙÜ$ W§^¡^°D¸$Ó%?Ó@×FÑFÓH�Øœ3œu d§m¡m´c¸$³iÑ&?ÓAÀAÑEÓFÈÑJÑKˆDÙ*.�6—=‘= Ô&°BˆDÜØ&×-Ñ-°4¸dÐ-ÓCÈ$ôˆDô �4‹y˜4Ÿ=™=Ò(Ø˜d d§m¡m´c¸$³iÑ&?Ñ@Ñ@�Ø�=Š=ØˆKÜˆd�r5   Údatac                 ó˜   — |j                  dd«      }t        |fi |¤Ž}|r| j                  |«       | j                  r|S t	        |«       y)zìPrint data as a table.

        data (Union[Collection, Dict]): The data to render. Either a list of lists
            (one per row) or a dict for two-column tables.
        kwargs: Table settings. See tables.table for details.
        r9   N)Úpopr   r|   r   rd   )r0   r}   Úkwargsr9   r:   s        r3   r   zPrinter.table  sE   € ð —
‘
˜7 DÓ)ˆÜ�TÑ$˜VÑ$ˆÙØ�L‰L˜ÔØ�=Š=ØˆKÜˆd�r5   c                 óN   — t        |fi |¤Ž}| j                  r|S t        |«       y)z“Print a table row.

        data (Collection): The individual columns to format.
        kwargs: Row settings. See tables.row for details.
        N)r   r   rd   )r0   r}   r€   r:   s       r3   r   zPrinter.row$  s&   € ô �4Ñ"˜6Ñ"ˆØ�=Š=ØˆKÜˆd�r5   c              #   ó  K  — | j                   rd –— y | j                  rt        |«       d –— y t        j                  j                  «        t        | j                  |f¬«      }|j                  «        	 d –— |j                  «        t        j                  j                  d«       t        j                  j                  «        y # t        $ r6}|j                  «        t        j                  j                  d«       |‚d }~ww xY w­w)N)ÚtargetÚargsr[   z[2K)r   r#   rd   re   rf   rg   r   Ú_spinnerÚstartrj   Ú	terminateÚwrite)r0   r:   Útrp   s       r3   ÚloadingzPrinter.loading/  s´   è ø€ à�=Š=ÜØ× Ò Ü�$ŒKÜä�J‰J×ÑÔÜ˜tŸ}™}°D°7Ô;ˆAØ�G‰GŒIðÛð �K‰KŒMÜ�J‰J×Ñ˜[Ô)Ü�J‰J×ÑÕøô ò à—‘”Ü—
‘
× Ñ  Ô&Ø�	ûð	üs+   ‚A4DÁ7C	 Á;ADÃ		DÃ1DÄDÄDc                 ó  — t        j                  | j                  «      D ]d  }t        j                  j                  dj                  ||«      «       t        j                  j                  «        t        j                  d«       Œf y )Nz{} {}gš™™™™™¹?)
Ú	itertoolsÚcycler/   re   rf   rˆ   r*   rg   ÚtimeÚsleep)r0   r:   rr   s      r3   r…   zPrinter._spinnerE  sX   € Ü—O‘O D§I¡IÓ.ò 	ˆDÜ�J‰J×Ñ˜Y×-Ñ-¨d°DÓ9Ô:Ü�J‰J×ÑÔÜ�J‰J�s�Oñ	r5   r@   c           	      ó¢   — | j                   r|t        j                  k(  rd}| j                  |xx   dz  cc<   | j	                  |||||||¬«      S )NFr   )r   rU   r;   r<   r=   )r$   r   rO   r+   r:   )r0   r9   r:   r@   r;   r<   r=   s          r3   rA   zPrinter._get_msgK  sW   € ð ×Ò E¬X¯]©]Ò$:ØˆDØ�‰�UÓ˜qÑ ÓØ�y‰yØ�4˜u¨5°tÀFÐRWð ó 
ð 	
r5   )TFNNéP   u   â ™â ¹â ¸â ¼â ´â ¦â §â ‡â �z|/-\FFÚWASABIF)ru   ru   TFN)ru   ru   TFT)	ru   ru   NNNFTFN)ru   ú=TN)z
Loading...)NFFN)Ú__name__Ú
__module__Ú__qualname__Úboolr
   r   rz   r^   r4   Úpropertyr   r8   r   rD   r   r   rI   r	   r   rP   rS   r:   r|   r   r   r   r   rŠ   r…   rA   rH   r5   r3   r   r      sJ  „ ð ØØ!%Ø $ØØ6Ø&Ø$Ø %Ø"Øñ.Làð.Lð ð.Lð ˜‘ð	.Lð
 ˜‰~ð.Lð ð.Lð ð.Lð ð.Lð ð.Lð ð.Lð ð.Lð ó.Lð` ð˜ò ó ðð ØØØØ#ñ
àð
ð ð
ð ð	
ð
 ð
ð ˜‰}ó
ð* ð ØØØØ-1ñàðð ðð ð	ð
 ðð ˜ Ñ)Ñ*òó ðð ð ØØØØ"&ñàðð ðð ð	ð
 ðð �wÑðð 
òó ðð ØØØØ,0ñ
àð
ð ð
ð ð	
ð
 ð
ð ˜˜c 4˜iÑ(Ñ)ð
ð 
ˆs�D˜(Ð"Ñ	#ó
ð. ØØØØ#ñ
àð
ð ð
ð ð	
ð
 ð
ð ˜‰}ó
ð. ØØØØ#ñ
àð
ð ð
ð ð	
ð
 ð
ð ˜‰}ó
ð. ØØ+/Ø.2Ø"ØØØØ#ñ9àð9ð ð9ð ˜˜c 3˜h™Ñ(ð	9ð
 ˜5  c ™?Ñ+ð9ð �s‰mð9ð ð9ð ð9ð ð9ð ˜‰}ó9ðz ØØØ"ñ#àð#ð ð#ð ð	#ð
 �s‰mó#ðJ˜% 
¨DÐ 0Ñ1ó ð	˜
ó 	ð ñ˜Cò ó ðñ*˜Só ð  $ØØØ#ñ
àð
ð ð
ð ˜‰}ð	
ð
 ð
ð ð
ð ˜‰}ô
r5   r   )&ra   rŒ   r(   re   rŽ   rl   Úcollectionsr   Ú
contextlibr   Úmultiprocessingr   Útypingr   r   r   r	   r
   r   r   r   Úcompatr   Útablesr   r   Úutilr   r   r   r   r   r`   r   r   r   Úobjectr   rH   r5   r3   ú<module>r¡      sL   ðÛ Û Û 	Û 
Û Û Ý Ý %Ý #ß S× SÓ Så ß ß 5Ó 5Ý !ß 4Ñ 4ôF
ˆfõ F
r5   