
    ;)di!                     r    d dl mZmZ d dlZd dlZ G d de          Z G d de          Z e            ZdS )    )ABCabstractmethodNc                       e Zd Zed             Zedefd            Zedefd            Zedefd            Zedde	fd            Z
e	 	 	 ddededededef
d            Zedefd            ZdS )TemplateLoggerc                     dS )z&
        Log a plain message.
        N )selfargskwargss      U/var/www/menimich/repos/protonApp/venv/lib/python3.11/site-packages/esptool/logger.pyprintzTemplateLogger.print   	    
 	    messagec                     dS )z&
        Log a Note: message.
        Nr   r	   r   s     r   notezTemplateLogger.note   r   r   c                     dS )z)
        Log a Warning: message.
        Nr   r   s     r   warningzTemplateLogger.warning   r   r   c                     dS )z'
        Log an error message.
        Nr   r   s     r   errorzTemplateLogger.error    r   r   Ffinishc                     dS )z:
        Start or finish a new collapsible stage.
        Nr   )r	   r   s     r   stagezTemplateLogger.stage'   r   r       cur_itertotal_itersprefixsuffix
bar_lengthc                     dS )z'
        Print a progress bar.
        Nr   )r	   r   r   r   r    r!   s         r   progress_barzTemplateLogger.progress_bar.   s	     	r   	verbosityc                     dS )z*
        Set the verbosity level.
        Nr   r	   r$   s     r   set_verbosityzTemplateLogger.set_verbosity<   r   r   NFr   r   r   )__name__
__module____qualname__r   r   strr   r   r   boolr   intr#   r'   r   r   r   r   r   
   sU         ^ C    ^ s    ^ S    ^  D    ^ 
    	
     ^ s    ^  r   r   c                       e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   d	Zeed
<   dZeed<   g Zee         ed<   d	Zeed<   dZedz  ed<   d	Zeed<    fdZed(d            Zed)dedz  fd            Zd ZdefdZdefdZdefdZd*defdZ	 	 	 d+ded ed!ed"ed#ef
d$Zd% Zd&efd'Z  xZ!S ),EsptoolLoggerr   ansi_redansi_yellow	ansi_blueansi_normal
ansi_clearansi_line_upansi_line_clearF_stage_activer   _newline_count_kept_lines_smart_featuresN
_verbosity_print_anywayc                     t          | d          s@t                                          |           | _        | j                            d           | j        S )zM
        Singleton to ensure only one instance of the logger exists.
        instanceauto)hasattrsuper__new__r@   r'   )cls	__class__s    r   rD   zEsptoolLogger.__new__U   sL     sJ'' 	/ 77??3//CLL&&v...|r   returnc                 .    t          | d          r| `d S d S )Nr@   )rB   r@   )rE   s    r   _delzEsptoolLogger._del^   s'    3
## 		 	r   overridec                 ~   ||| j         _        nt          t          j        d          ot          j                                        }t          j        dd                                          dv }t          j        dd          	                                                                dv }|p|o| | j         _        t          j
        dk    r:| j         j        r.	 dd	lm}  |             n# t          $ r d
| j         _        Y nw xY w| j         j        rVd| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d S d| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d| j         _        d S )NisattyTERMr   )xtermzxterm-256colorscreenzscreen-256colorlinuxvt100NO_COLOR)1trueyeswin32r   )initFz[1;31mz[0;33mz[1;36mz[0mz[Kz[1Az[2K)r@   r<   rB   sysstdoutrL   osgetenvlowerstripplatformcoloramarW   ImportErrorr2   r3   r4   r5   r6   r7   r8   )rE   rJ   is_ttyterm_supports_colorno_colorrW   s         r   _set_smart_featuresz!EsptoolLogger._set_smart_featuresc   s    +3CL((SZ22Jsz7H7H7J7JF"$)FB"7"7"="="?"? D # yR006688>>@@DXXH >->h, L( |w&&3<+G&9------DFFFF" 9 9 938CL0009 <' 	.$0CL!'3CL$%1CL"'0CL$&.CL#(1CL%+4CL((($&CL!')CL$%'CL"')CL$&(CL#(*CL%+-CL(((s   C+ +DDc                 L   | j         dk    r	| j        sdS | j        rud                    t	          t
          |                    }| xj        |                    d          z  c_        |                    dd          dk    r| xj        dz  c_        t          |i | d| _        dS )zO
        Log a plain message. Count newlines if in a collapsing stage.
        silentNr   
end   F)
r=   r>   r9   joinmapr-   r:   countgetr   )r	   r
   r   r   s       r   r   zEsptoolLogger.print   s     ?h&&t/A&F 	)ggc#tnn--G7==#6#66zz%&&$..##q(##tv"r   r   c                     | j          d| j         d| }| j        r| j                            |           |                     |           dS )z8
        Log a Note: message in blue and white.
        zNote: N)r4   r5   r9   r;   appendr   r	   r   formatted_messages      r   r   zEsptoolLogger.note   sa      $~PPD4DPPwPP 	7##$5666

$%%%%%r   c                     | j          d| j         d| }| j        r| j                            |           |                     |           dS )z=
        Log a Warning: message in yellow and white.
        zWarning:ro   N)r3   r5   r9   r;   rp   r   rq   s      r   r   zEsptoolLogger.warning   sb      $/UU9IUUGUU 	7##$5666

$%%%%%r   c                 z    | j          | | j         }d| _        |                     |t          j                   dS )z8
        Log an error message in red to stderr.
        T)fileN)r2   r5   r>   r   rX   stderrrq   s      r   r   zEsptoolLogger.error   sF      $}IgIt7GII!

$3:
66666r   r   c                 $   |r| j         sdS d| _         | j        rM|                     | j         | j         | j        z  dd           | j        D ]}|                     |           | j                                         d| _        dS d| _         dS )aQ  
        Start or finish a collapsible stage.
        Any log messages printed between the start and finish will be deleted
        when the stage is successfully finished.
        Warnings and notes will be saved and printed at the end of the stage.
        If terminal doesn't support ANSI escape codes, no collapsing happens.
        NFr   Trh   flushr   )r9   r<   r   r7   r8   r:   r;   clear)r	   r   lines      r   r   zEsptoolLogger.stage   s      	&% !&D# 
%

(@$*>@@*,	     !, % %DJJt$$$$ ""$$$"#D!%Dr   r   r   r   r   r    r!   c                 ,   t          ||z  |z            }||k    rd|z  }n|dk    rd|z  }nd|dz
  z   dd||z
  z   }d|t          |          z  z  d}|                     d| j         | d	| d
|dd| d
| j        r||k    rdndd           dS )z
        Call in a loop to print a progress bar overwriting itself in place.
        If terminal doesn't support ANSI escape codes, no overwriting happens.
        =r   ro   ri   >d   z.1f[z] z>5%rg   r   Trx   N)r/   floatr   r6   r<   )	r	   r   r   r   r    r!   filledbarpercents	            r   r#   zEsptoolLogger.progress_bar   s     Z(*k9::Z
"CCq[[
"CCFQJ'GG#f1D*EGGCHu['9'99:@@

HH&HH3HH'HHHvHHH 0SH4K4KQS 	 	
 	
 	
 	
 	
r   c                     |j         | _         d S NrF   )r	   
new_loggers     r   
set_loggerzEsptoolLogger.set_logger   s    #-r   r$   c                    || j         k    rdS || _         |dk    r|                                  dS |dk    r|                     d           dS |dk    rdS |dk    r|                     d           dS t          d	|           )
ag  
        Set the verbosity level to one of the following:
        - "auto": Enable smart terminal features and colors if supported by the terminal
        - "verbose": Enable verbose output (no collapsing output)
        - "silent": Disable all output except errors
        - "compact": Enable smart terminal features and colors even if not supported
        NrA   verboseF)rJ   rf   compactTzInvalid verbosity level: )r=   rd   
ValueErrorr&   s     r   r'   zEsptoolLogger.set_verbosity   s     ''F#$$&&&&&)##$$e$44444(""D)##$$d$33333DDDEEEr   )rG   Nr   r(   r)   )"r*   r+   r,   r2   r-   __annotations__r3   r4   r5   r6   r7   r8   r9   r.   r:   r/   r;   listr<   r=   r>   rD   classmethodrI   rd   r   r   r   r   r   r#   r   r'   __classcell__r   s   @r   r1   r1   D   sk        HcKIsKJL#OSM4NCKc!OT!!!!Jd
!!!M4        [ ,. ,.4$; ,. ,. ,. [,.\# # #&C & & & &&s & & & &7S 7 7 7 7& &D & & & &H 
 

 
 	

 
 
 
 
 
6. . .Fs F F F F F F F Fr   r1   )abcr   r   rX   rZ   r   r1   logr   r   r   <module>r      s   
 $ # # # # # # # 



 				7 7 7 7 7S 7 7 7tJF JF JF JF JFN JF JF JFZ moor   