+
    "Ý³j #  ã                  ó  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	H
t
Ht ]]]
],          ]
]P                  ,          3,          t]P                  ! 4       t/ tR]R&    ! R R4      tR R	 ltRR
 R lltRR.tR# )z=Utilities for providing buffered stdout behavior when needed.)ÚannotationsN)ÚOptionalÚTuplezKdict[int, Tuple[Optional[weakref.ReferenceType[object]], 'QueueingStdout']]Ú_CACHED_WRAPPERSc                  óŠ   € ] tR t^tRtR R ltR R ltR tR tR t	R	 t
]R
 4       tR tR tR tR tR tR R ltR tRtR# )ÚQueueingStdoutzCProxy stdout that funnels writes through a background flush thread.c               ó   € V ^8„  d   QhRR/# )é   ÚstreamÚobject© )Úformats   "ÚN/home/luca/screen-checking/.venv/lib/python3.14/site-packages/logbar/buffer.pyÚ__annotate__ÚQueueingStdout.__annotate__   s   € ÷ ñ ˜vñ ó    c                óÞ  €  \         P                  ! V4      V n        RV n        \         P                  ! WP
                  4       \        P                  ! 4       V n	        RV n
        \        P                  ! 4       V n        RV n        RV n        \        P                   ! V P"                  RRR7      V n        V P$                  P'                  4        R#   \         d    RT n        Yn         L§i ; i)zCWrap an unbuffered-like stream so writes are serialized off-thread.NFTzlogbar-stdout-flush)ÚtargetÚnameÚdaemon)ÚweakrefÚrefÚ_stream_refÚ_streamÚfinalizeÚcloseÚ	TypeErrorÚqueueÚQueueÚ_queueÚ_closedÚ	threadingÚLockÚ_state_lockÚ_close_eventÚ_logbar_queue_wrappedÚThreadÚ_drain_workerÚ_workerÚstart©Úselfr
   s   &&r   Ú__init__ÚQueueingStdout.__init__   sº   € ð		1ÜHOÏÊÐTZÓH[ˆDÔð
  ˆDŒLô ×Ò˜V§Z¡ZÔ0Ü05·²³ˆŒØˆŒÜ$Ÿ>š>Ó+ˆÔØ7;ˆÔØ%)ˆÔ"Ü ×'Ò'Ø×%Ñ%Ø&Øô
ˆŒð
 	�‰×ÑÖøô% ô 	"Ø#ˆDÔØ!ŽLð	"ús   ‚C ÃC,Ã+C,c               ó   € V ^8„  d   QhRR/# )r	   Úreturnr   r   )r   s   "r   r   r   3   s   € ÷ ñ  ñ r   c                óx   € V P                   e"   V P                  4       pVf   \        R4      hV# V P                  # )z?Return the wrapped stream, failing clearly if it was collected.z$underlying stream has been collected)r   Ú
ValueErrorr   r*   s   & r   Ú_target_streamÚQueueingStdout._target_stream3   s>   € ð ×ÑÒ'Ø×%Ñ%Ó'ˆFØŠ~Ü Ð!GÓHÐHØˆMØ�|‰|Ðr   c                óD  € \        V\        4      '       g   \        V4      pV'       g   ^ # V P                  ;_uu_ 4        V P                  '       d   \	        R4      hV P
                  P                  RVR34       RRR4       \        V4      #   + '       g   i     L; i)z9Queue a write and return the character count immediately.zI/O operation on closed file.ÚwriteN)Ú
isinstanceÚstrr#   r    r1   r   ÚputÚlen)r+   Údatas   &&r   r5   ÚQueueingStdout.write=   sr   € ô ˜$¤×$Ò$Ü�t“9ˆDçÙà××ÓØ�|�|ˆ|Ü Ð!@ÓAÐAØ�K‰K�O‰O˜W d¨DÐ1Ô2÷ ô �4‹yÐ÷	 ×ús   Á <BÂB	c                ó:   € V F  pV P                  V4       K  	  R# )z@Queue multiple lines using the single-write path for each entry.N)r5   )r+   ÚlinesÚlines   && r   Ú
writelinesÚQueueingStdout.writelinesL   s   € ó ˆDØ�J‰J�tÖó r   c                ó&  € \         P                  ! 4       pV P                  ;_uu_ 4        V P                  '       d   \	        R4      hV P
                  P                  RRV34       RRR4       VP                  4        R#   + '       g   i     L"; i)z<Block until queued writes are flushed to the wrapped stream.zflush of closed fileÚflushN)r!   ÚEventr#   r    r1   r   r8   Úwait©r+   Úevents   & r   rB   ÚQueueingStdout.flushR   sa   € ô —’Ó!ˆØ××ÓØ�|�|ˆ|Ü Ð!7Ó8Ð8Ø�K‰K�O‰O˜W d¨EÐ2Ô3÷ ð 	�
‰
Ž÷	 ×ús   ª<B Â B	c                ób  € V P                   ;_uu_ 4        V P                  '       d   V P                  pVf    RRR4       R# M@RV n        \        P                  ! 4       pWn        V P
                  P                  RRV34       RRR4       XP                  4        R#   + '       g   i     L"; i)z0Drain pending output and stop the worker thread.NTr   )r#   r    r$   r!   rC   r   r8   rD   rE   s   & r   r   ÚQueueingStdout.close\   s„   € ð ××ÓØ�|�|ˆ|Ø×)Ñ)�Ø’=Ø÷	 Ñð !ð
  $�”Ü!ŸšÓ)�Ø$)Ô!Ø—‘—‘ ¨$°Ð 6Ô7÷ ð 	�
‰
Ž÷ ×ús   •$BÁABÂB.	c                ó€   € V P                   ;_uu_ 4        V P                  uuRRR4       #   + '       g   i     R# ; i)z1Mirror the standard file-like `closed` attribute.N)r#   r    ©r+   s   &r   ÚclosedÚQueueingStdout.closedm   s&   € ð ××ÓØ—<‘<÷ ××Óús   •,¬=	c                ó~   € \        V P                  4       RR4      p\        V4      '       d   V! 4       # \        R4      h)z6Expose `fileno()` when the wrapped stream supports it.ÚfilenoNz)underlying stream does not provide fileno)Úgetattrr2   ÚcallableÚAttributeError)r+   rO   s   & r   rO   ÚQueueingStdout.filenot   s9   € ô ˜×,Ñ,Ó.°¸$Ó?ˆÜ�F×ÒÙ“8ˆOÜÐHÓIÐIr   c                ól   € \        V P                  4       RR4      p\        V4      '       d   V! 4       # R# )z;Delegate TTY detection to the wrapped stream when possible.ÚisattyNF©rP   r2   rQ   ©r+   Úmethods   & r   rU   ÚQueueingStdout.isatty|   s0   € ô ˜×,Ñ,Ó.°¸$Ó?ˆÜ�F×ÒÙ“8ˆOÙr   c                ól   € \        V P                  4       RR4      p\        V4      '       d   V! 4       # R# )z1Mirror the wrapped stream readability capability.ÚreadableNFrV   rW   s   & r   r[   ÚQueueingStdout.readable„   ó0   € ô ˜×,Ñ,Ó.°
¸DÓAˆÜ�F×ÒÙ“8ˆOÙr   c                ó   € R# )zAAdvertise write support because this wrapper only proxies writes.Tr   rK   s   &r   ÚwritableÚQueueingStdout.writableŒ   s   € ñ r   c                ól   € \        V P                  4       RR4      p\        V4      '       d   V! 4       # R# )z5Mirror the wrapped stream seekability when available.ÚseekableNFrV   rW   s   & r   rb   ÚQueueingStdout.seekable‘   r]   r   c               ó   € V ^8„  d   QhRR/# ©r	   r/   ÚNoner   )r   s   "r   r   r   ™   s   € ÷ )ñ )˜tñ )r   c                óÒ  €  V P                   P                  4       w  rp VR8X  dP   V'       dG   V P                  4       pVP                  V4       \	        VRR4      p\        V4      '       d   V! 4        M VR8X  dI   \	        V P                  4       RR4      p\        V4      '       d   V! 4        Ve   VP                  4        MQVR8X  dJ   \	        V P                  4       RR4      p\        V4      '       d   V! 4        Ve   VP                  4        R#  Ve   VR9  d   VP                  4        RpRpEK7    \         d$    Te   TP                  4        TR8X  d    R#  EKd  i ; i)z>Continuously drain queued writes, flushes, and close requests.r5   rB   Nr   >   r   rB   )r   Úgetr2   r5   rP   rQ   ÚsetÚ	Exception)r+   ÚactionÚpayloadrF   r
   rB   s   &     r   r'   ÚQueueingStdout._drain_worker™   s7  € ð Ø%)§[¡[§_¡_Ó%6Ñ"ˆF˜UðØ˜WÔ$ßØ!%×!4Ñ!4Ó!6˜ØŸ™ WÔ-Ü '¨°¸Ó >˜Ü# EŸ?š?Ù!œGøØ˜wÔ&Ü# D×$7Ñ$7Ó$9¸7ÀDÓI�EÜ —’ÙœØÒ(ØŸ	™	œøØ˜wÔ&Ü# D×$7Ñ$7Ó$9¸7ÀDÓI�EÜ —’ÙœØÒ(ØŸ	™	œÙð 'ð Ò  VÐ3EÔ%EØ—	‘	”ð
 ˆFØ‹Eøô ô ØÒ$Ø—I‘I”KØ˜WÔ$ÚÛðús%    D8 ¯AD8 Á6AD8 ÃAD8 Ä8&E&Å%E&c                ó6   € \        V P                  4       V4      # )z7Fall back to the wrapped stream for unknown attributes.)rP   r2   )r+   Úitems   &&r   Ú__getattr__ÚQueueingStdout.__getattr__Ä   s   € ô �t×*Ñ*Ó,¨dÓ3Ð3r   )r$   r    r%   r   r#   r   r   r(   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r,   r2   r5   r?   rB   r   ÚpropertyrL   rO   rU   r[   r_   rb   r'   rp   Ú__static_attributes__r   r   r   r   r      s\   † ÙMõõ2òòòòð" ñ ó ð òJòòòò
õ)öV4r   r   c               ó    € V ^8„  d   QhRRRR/# )r	   r
   r   r/   Úboolr   )r   s   "r   r   r   Ê   s   € ÷ #ñ # ð #¨4ñ #r   c                óÀ   € \        V RR4      '       d   R# \        V \        P                  4      '       d   R# \        V RR4      pV'       d   R# \        V RR4      pVRJ# )zCHeuristically detect streams that already provide useful buffering.r%   FTÚwrite_throughÚbufferN)rP   r6   ÚioÚStringIO)r
   r|   Úbuffer_attrs   &  r   Ú_stdout_is_bufferedr�   Ê   sX   € ô ˆvÐ.°×6Ò6Ùä�&œ"Ÿ+™+×&Ò&Ùä˜F O°UÓ;€MßÙä˜& (¨DÓ1€KØ˜dÐ"Ð"r   c               ó    € V ^8„  d   QhRRRR/# )r	   r
   zOptional[object]r/   r   r   )r   s   "r   r   r   Û   s   € ÷ 'ñ 'Ð 0ð '¸Fñ 'r   c                óˆ  € V e   T M\         P                  p\        VRR4      '       d   V# \        V4      '       d   V# \	        V4      p\
        ;_uu_ 4        \        P                  V4      pVej   Vw  rEVe   V! 4       MRpVe   WaJ d6   VP                  '       g   VuuRRR4       # \        P                  VR4       MVf   \        P                  VR4       \        V4      p RV/R R llp\        P                  ! W4      pWE3\        V&   VuuRRR4       #   \         d    Rp L%i ; i  + '       g   i     R# ; i)z@Return a cached queueing wrapper only when the stream needs one.Nr%   FÚ	stream_idc               ó   € V ^8„  d   QhRR/# re   r   )r   s   "r   r   Ú)get_buffered_stdout.<locals>.__annotate__ö   s   € ÷ >ñ >°dñ >r   c               óÔ   € \         ;_uu_ 4        \        P                  V4      pVe$   V^ ,          V J d   \        P                  VR4       RRR4       R#   + '       g   i     R# ; i)z9Drop a cached wrapper when its underlying stream is gone.N)Ú_CACHE_LOCKr   rh   Úpop)Ú_refr„   Úcached_entrys   &$ r   Ú_evictÚ#get_buffered_stdout.<locals>._evictö   sF   € ÷ !–[Ü#3×#7Ñ#7¸	Ó#B�LØ#Ò/°LÀµOÀtÓ4KÜ(×,Ñ,¨Y¸Ô=÷ !—[—[’[ús   �=AÁA'	)ÚsysÚstdoutrP   r�   Úidrˆ   r   rh   rL   r‰   r   r   r   r   )r
   ÚbaseÚbase_idÚcachedÚbase_refÚwrapperÚcached_baserŒ   s   &       r   Úget_buffered_stdoutr—   Û   s  € ð Ò'‰6¬S¯Z©Z€DäˆtÐ,¨e×4Ò4Øˆä˜4× Ò Øˆä�‹h€Gç	ŽÜ!×%Ñ% gÓ.ˆØÒØ &ÑˆHØ(0Ò(<™(œ*À$ˆKØÒ ;Ó#6Ø—~—~�~Ø"÷ 
Šô !×$Ñ$ W¨dÕ3ØÒ$Ü ×$Ñ$ W¨dÔ3ä  Ó&ˆð	ð>¨'÷ >ô —{’{ 4Ó0ˆHð &.Ð$7Ô˜Ñ!Ø÷5 
Šøô. ô 	ØŠHð	ú÷/ 
�ˆús=   ÁAD0ÂD0Â*<D0Ã' DÄD0ÄD-Ä*D0Ä,D-Ä-D0Ä0E	r—   )N)Ú__conditional_annotations__rv   Ú
__future__r   r~   r   rŽ   r!   r   Útypingr   r   r7   rC   Ú	QueueItemr"   rˆ   r   Ú__annotations__r   r�   r—   Ú__all__)r˜   s   @r   Ú<module>rž      s|   øðô Då "ã 	Û Û 
Û Û ß "à�#�x •} h¨y¯©Õ&?Ð?Õ@€	à�nŠnÓ€Ø`bÐ Ð]Ó b÷p4ñ p4õf#÷"'ðT Ð2Ð
3‚r   