
    yIfL                        d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZ e
r"d dlZd dlmZ ej        dk    rd d	lmZ nd d	lmZ  G d
 d          ZdS )    )annotations)contextmanager)EventLockTimer)IOTYPE_CHECKINGIterator)ForeN)TracebackType)      )Selfc                      e Zd ZdZdZd%d&dZd'dZd(dZd)dZd*dZ	d+dZ
d+dZd+dZd,dZed-d!            Zed'd"            Zed.d$            ZdS )/	SyncWritez
    Make sure data collected is synced in-memory and to the target stream on every newline and time period.

    Used to propagate executed commands output to the standard output/error streams visible to the user.
    g?NnamestrtargetIO[bytes] | Nonecolor
str | NonereturnNonec                    t                      | _        || _        |d u| _        t	                      | _        t                      | _        t                      | _        d| _	        || _
        || _        d S )Nr   )	bytearray_content_target_target_enabledr   _keep_printingr   _content_lock_lock_at_colorr   )selfr   r   r   s       F/var/www/piapp/venv/lib/python3.11/site-packages/tox/execute/stream.py__init__zSyncWrite.__init__   s]    !)/%+4%7%*WW#'6666
"'			    c                P    | j         j         d| j        d| j        d| j        dS )Nz(name=z	, target=z, color=))	__class____name__r   r   r#   r$   s    r%   __repr__zSyncWrite.__repr__'   s6    .)oooot|oo_c_joooor'   r   c                <    | j         r|                                  | S N)r   _startr,   s    r%   	__enter__zSyncWrite.__enter__*   s     	KKMMMr'   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                    | j         r=|                                  |                     t          | j                             d S d S r/   )r   _cancel_writelenr   )r$   r2   r4   r6   s       r%   __exit__zSyncWrite.__exit__/   sH      	,LLNNNKKDM**+++++	, 	,r'   contentbytesc                   | j         5  | j                            |           | j        du r	 ddd           dS |                    d          }|dk    r*t          | j                  t          |          z
  |z   dz   }ddd           n# 1 swxY w Y   |                                  	 |dk    r|                     |           |                                  dS # |                                  w xY w)z.A callback called whenever content is written.FN   
   )	r    r   extendr   rfindr;   r9   r:   r0   )r$   r=   ats      r%   handlerzSyncWrite.handler9   sW    	@ 	@M  )))#u,,	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ u%%BRxx''#g,,6;a?	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 		RxxBKKMMMMMDKKMMMMs#   %BABBB+C C2c                    t          | j        | j                  | _        | j         d| j        _        | j                                         d S )Nz-sync-timer)r   REFRESH_RATE_trigger_timertimerr   startr,   s    r%   r0   zSyncWrite._startI   sG    4,d.ABB
!Y333

r'   c                8    | j                                          d S r/   )rJ   cancelr,   s    r%   r9   zSyncWrite._cancelN   s    
r'   c                    | j         5  t          | j                  }d d d            n# 1 swxY w Y   |                     |           d S r/   )r    r;   r   r:   r$   rE   s     r%   rI   zSyncWrite._trigger_timerQ   s     	$ 	$T]##B	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$Bs   )--rE   intc                z   | j         J | j        5  || j        k    r	 |                                 5  | j                             | j        | j        |                    d d d            n# 1 swxY w Y   | j                                          || _        n# || _        w xY wd d d            d S # 1 swxY w Y   d S r/   )r   r!   r"   coloredwriter   flushrO   s     r%   r:   zSyncWrite._writeV   sO   |'''Z 	" 	"DH}}" I I**4=B+GHHHI I I I I I I I I I I I I I IL&&(((!DHHrDHMMMM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"sK   B0B-A+B+A/	/B2A/	3BB0	B  B00B47B4Iterator[None]c              #    K   | j         | j        d V  d S | j                            | j                             d                     	 d V  | j                            t          j                            d                     d S # | j                            t          j                            d                     w xY w)Nutf-8)r#   r   rS   encoder   RESETr,   s    r%   rR   zSyncWrite.coloreda   s      ;$,"6EEEEELt{11'::;;;?""4:#4#4W#=#=>>>>>""4:#4#4W#=#=>>>>s   
B 9C c                |    | j         5  | j                            dd          cd d d            S # 1 swxY w Y   d S )NrW   surrogateescape)errors)r    r   decoder,   s    r%   textzSyncWrite.textl   s     	K 	K=''8I'JJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   155r   c                R    | j         5  | j        cd d d            S # 1 swxY w Y   d S r/   )r    r   r,   s    r%   r=   zSyncWrite.contentq   st     	! 	!=	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s     r/   )r   r   r   r   r   r   r   r   )r   r   )r   r   )r2   r3   r4   r5   r6   r7   r   r   )r=   r>   r   r   )r   r   )rE   rP   r   r   )r   rU   )r   r   )r+   
__module____qualname____doc__rH   r&   r-   r1   r<   rF   r0   r9   rI   r:   r   rR   propertyr^   r=    r'   r%   r   r      sF         L	 	 	 	 	p p p p   
, , , ,       
      
	" 	" 	" 	" ? ? ? ^? K K K XK ! ! ! X! ! !r'   r   )
__future__r   
contextlibr   	threadingr   r   r   typingr   r	   r
   coloramar   systypesr   version_infor   typing_extensionsr   rd   r'   r%   <module>rn      s   " " " " " " % % % % % % ( ( ( ( ( ( ( ( ( ( . . . . . . . . . .       +JJJ######
7""******a! a! a! a! a! a! a! a! a! a!r'   