
    k	hj                     4   d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
Z
d dlZd dlmZ  G d d          Zedk    rd dlZd dlZd dlZ ej                    Zd	d
ded<    ej        e           dZ ee          Z ed           e5  d Zd Z ee          D ]WZ e
j         ej        dd                      ej                    dk    Zeredz  Znedz  Ze                    ee           X	 ddd           n# 1 swxY w Y    ed           dS dS )    N)Progress	BarColumn
TextColumnTimeElapsedColumn)Console)Lock)
app_loggerc                   F    e Zd ZdZdefdZd Zd ZdedefdZd	 Z	d
 Z
dS )	ConsoleUIz>Manages console output using rich.progress for overall status.total_itemsc                    || _         t                      | _        d| _        d| _        t
          j                                        rt
          j        nt
          j        }|                                rt          |          nd | _
        | j
        rt          t          dd          t          d           t          d          t          d          t          d	          t          d
          t                      | j
        dd
  
        | _        | j                            d| j         ddd          | _        t%          j        d           d S d | _        d | _        t%          j        d           d S )Nr   )filez[bold blue]{task.description}left)justify)	bar_widthz-[progress.percentage]{task.percentage:>3.0f}%z&[bold green]{task.fields[ok_count]} OKz*[bold red]{task.fields[fail_count]} Failedz)[cyan]{task.completed}/{task.total} ItemsF   )console	transientrefresh_per_secondzOverall Progress)totalstartok_count
fail_countz*Console UI initialized with Rich Progress.z7Console output is not a TTY. Rich Progress UI disabled.)r   r   _lock_current_ok_current_failedsysstdoutisattystderrr   _consoler   r   r   r   	_progressadd_taskmain_task_idr	   debugwarning)selfr   console_targets      4c:\Users\brownies\Downloads\rentrytest\console_ui.py__init__zConsoleUI.__init__   ss   &VV
 '*z'8'8':':J
,:,A,A,C,CMG(((( 	 = 	%:FKKKD)))JKKCDDGHHFGG!###$  DN !% 7 7"& !8 ! !D IJJJJJ!DN $DI        c                 >   | j         r	 | j                                          | j        | j                             | j                   t	          j        d           dS # t          $ r2}t	          j        d| d           d| _         d| _        Y d}~dS d}~ww xY wdS )zStarts the progress display.NzRich Progress bar started.zError starting Rich Progress: Texc_info)r"   r   r$   
start_taskr	   r%   	Exceptionerrorr'   es     r)   r   zConsoleUI.start;   s    > 
	)	)$$&&&$0N--d.?@@@ !=>>>>> ) ) ) !E!!E!EPTUUUU!%$(!!!!!!!)
	) 
	)s   AA 
B('BBc                    | j         r	 |                     | j        | j                   | j                                          t          j        d           dS # t          $ r$}t          j        d| d           Y d}~dS d}~ww xY wdS )zStops the progress display.zRich Progress bar stopped.zError stopping Rich Progress: Tr-   N)	r"   update_progressr   r   stopr	   r%   r0   r1   r2   s     r)   r6   zConsoleUI.stopI   s    > 	VV$$T%5t7KLLL##%%% !=>>>>> V V V !E!!E!EPTUUUUUUUUUUV	V 	Vs   AA 
B"BB	completedfailedc                    | j         r| j        dS | j        | j         j        vrdS 	 | j        5  || _        || _        ||z   }t          || j                  }| j                             | j        |||           ddd           dS # 1 swxY w Y   dS # t          $ r$}t          j        d| d           Y d}~dS d}~ww xY w)z!Updates the overall progress bar.N)r7   r   r   z"Error updating overall UI status: Fr-   )r"   r$   task_idsr   r   r   minr   updater0   r	   r1   )r'   r7   r8   	processedcompleted_for_barr3   s         r)   r5   zConsoleUI.update_progressT   sU   ~ 	!2!:FDN$;;;F	W  #, '-$%.	$'	43C$D$D!%%%/&%	 &                      	W 	W 	WE!EEPUVVVVVVVVVV	Ws;   B AB:B BB BB 
CB==Cc                 .    |                                   | S N)r   )r'   s    r)   	__enter__zConsoleUI.__enter__m   s    

r+   c                 .    |                                   d S r@   )r6   )r'   exc_typeexc_valexc_tbs       r)   __exit__zConsoleUI.__exit__q   s    		r+   N)__name__
__module____qualname____doc__intr*   r   r6   r5   rA   rF    r+   r)   r   r      s        HH&C & & & &P) ) )	V 	V 	VW Wc W W W W2      r+   r   __main__INFOfalse)	log_level
debug_modeMisc2   zOStarting UI test (Simple Progress bar should appear below if console is TTY)...g?g333333?   zUI test finished.) r   rich.progressr   r   r   r   rich.consoler   	threadingr   timeloggingloggerr	   r   rG   randomconfigparserConfigParserdummy_configsetup_loggingTOTALuiprintr7   r8   rangeisleepuniform
is_successr5   rL   r+   r)   <module>rh      s[   



            !                        b b b b b b b bL zMMMMMM,<,..L)/wGGLF&&&E	5		B	EY   
 
2 
2	u 	2 	2ADJ~v~dD11222&4/J Q		!y&1111	2
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
2 
E
5 s   A(D  DD