+
    iHàj­  ã                  óþ   a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 R.t]P                  ! 4       t/ tR]R&   / tR]R&   / tR	]R
&    ! R R4      t ! R R4      tR R lt]P*                  R R l4       tR# )aø  Thread-scoped stdout/stderr silencing for background worker threads.

``contextlib.redirect_stdout`` reassigns the *process-global* stream, so a daemon worker
silencing itself also silences every other thread (gateway event loop included). This
module installs a per-thread routing proxy as ``sys.stdout``/``sys.stderr``: silenced
threads write to a sink, everyone else passes through to the original stream. Installed
once, idempotently, and never uninstalled (that would race other threads mid-write).
)ÚannotationsN)ÚIteratorÚTextIOÚthread_scoped_silencezdict[str, _ThreadRoutingStream]Ú
_installedzdict[str, TextIO]Ú_sinkszdict[str, _RoutingState]Ú_routing_statesc                  ó&   € ] tR t^tRtR R ltRtR# )Ú_RoutingStatezCSilencing registry shared by every proxy generation for one stream.c               ó    € V ^8„  d   QhRRRR/# )é   Úsinkr   ÚreturnÚNone© )Úformats   "Ú?/home/ubuntu/.hermes/hermes-agent/agent/thread_scoped_output.pyÚ__annotate__Ú_RoutingState.__annotate__    s   € ÷ %ñ %˜Vð %¨ñ %ó    c                	óT   € Wn         / V n        \        P                  ! 4       V n        R # ©N)r   ÚsilencedÚ	threadingÚLockÚlock)Úselfr   s   &&r   Ú__init__Ú_RoutingState.__init__    s   € ØŒ	Ø(*ˆŒÜ—N’NÓ$ˆŽ	r   )r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__r   r   r   r
   r
      s   † ÙM÷%ñ %r   r
   c                  ó€   € ] tR t^&tRtR R ltR R ltR R ltR R	 ltR
 R lt	R t
R tR tR R ltR tR tRtR# )Ú_ThreadRoutingStreamz…``sys.stdout``/``sys.stderr`` stand-in routing writes per calling thread;
unknown attributes delegate to the current thread's target.c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úpassthroughr   Ústater
   r   r   r   )r   s   "r   r   Ú!_ThreadRoutingStream.__annotate__*   s!   € ÷ ñ  Fð °=ð ÀTñ r   c                	ó   € Wn         W n        R # r   ©Ú_passthroughÚ_state)r   r(   r)   s   &&&r   r   Ú_ThreadRoutingStream.__init__*   s   € Ø'ÔØŽr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r*   .   s   € ÷ qñ q˜ñ qr   c                	óÂ   € V P                   P                  P                  \        P                  ! 4       ^ 4      ^ 8”  d   V P                   P
                  # V P                  # ©é    )r.   r   Úgetr   Ú	get_identr   r-   ©r   s   &r   Ú_targetÚ_ThreadRoutingStream._target.   sG   € Ø#'§;¡;×#7Ñ#7×#;Ñ#;¼I×<OÒ<OÓ<QÐSTÓ#UÐXYÔ#Yˆt�{‰{×ÑÐpÐ_c×_pÑ_pÐpr   c               ó    € V ^8„  d   QhRRRR/# ©r   ÚidentÚintr   r   r   )r   s   "r   r   r*   1   s   € ÷ Qñ Q˜Sð Q Tñ Qr   c                	ó  € V P                   P                  ;_uu_ 4        V P                   P                  P                  V^ 4      ^,           V P                   P                  V&   RRR4       R#   + '       g   i     R# ; i©r3   N)r.   r   r   r4   )r   r;   s   &&r   ÚsilenceÚ_ThreadRoutingStream.silence1   sQ   € Ø�[‰[××ÓØ*.¯+©+×*>Ñ*>×*BÑ*BÀ5È!Ó*LÈqÕ*PˆD�K‰K× Ñ  Ñ'÷ ××Òús   ŸAA.Á.A?	c               ó    € V ^8„  d   QhRRRR/# r:   r   )r   s   "r   r   r*   5   s   € ÷ 6ñ 6˜sð 6 tñ 6r   c                	ób  € V P                   P                  ;_uu_ 4        V P                   P                  P                  V^ 4      ^,
          pV^ 8”  d   W P                   P                  V&   M&V P                   P                  P	                  VR4       RRR4       R#   + '       g   i     R# ; ir>   )r.   r   r   r4   Úpop)r   r;   Údepths   && r   Ú	unsilenceÚ_ThreadRoutingStream.unsilence5   su   € Ø�[‰[××ÓØ—K‘K×(Ñ(×,Ñ,¨U°AÓ6¸Õ:ˆEØ�qŒyØ.3—‘×$Ñ$ UÒ+à—‘×$Ñ$×(Ñ(¨°Ô5÷ ××Òús   ŸA4BÂB.	c               ó   € V ^8„  d   QhRR/# )r   ÚnameÚstrr   )r   s   "r   r   r*   =   s   € ÷ #ñ #˜Sñ #r   c                ón   €  \        V P                  4       V4      ! V!  #   \         d
    T! T!  u # i ; i)zaCall ``name`` on the current target; a dead target yields ``fallback(*args)`` instead of raising.)Úgetattrr7   Ú	Exception)r   rH   ÚfallbackÚargss   &&&*r   Ú_forwardÚ_ThreadRoutingStream._forward=   s8   € ð	#Ü˜4Ÿ<™<›>¨4Ô0°$Ñ7Ð7øÜô 	#Ù˜T‘?Ò"ð	#ús   ‚   4³4c                	ó*   € V P                  R R V4      # )Úwritec                óH   € \        V \        4      '       d   \        V 4      # ^ # r2   )Ú
isinstancerI   Úlen)Úds   &r   Ú<lambda>Ú,_ThreadRoutingStream.write.<locals>.<lambda>E   s   € ¼*ÀQÌ×:LÒ:L´°A³Ð0SÐRSÐ0Sr   ©rO   )r   Údatas   &&r   rR   Ú_ThreadRoutingStream.writeD   s   € Ø�}‰}˜WÑ&SÐUYÓZÐZr   c                	ó(   € V P                  R R 4      # )Úflushc                 ó   € R # r   r   r   r   r   rW   Ú,_ThreadRoutingStream.flush.<locals>.<lambda>H   s   € ©dr   rY   r6   s   &r   r]   Ú_ThreadRoutingStream.flushG   s   € Ø�}‰}˜W¡lÓ3Ð3r   c                	ó*   € V P                  R R V4      # )Ú
writelinesc                ó   € R # r   r   )Ú_ls   &r   rW   Ú1_ThreadRoutingStream.writelines.<locals>.<lambda>K   s   € ±dr   rY   )r   Úliness   &&r   rb   Ú_ThreadRoutingStream.writelinesJ   s   € Ø�}‰}˜\©?¸EÓBÐBr   c               ó   € V ^8„  d   QhRR/# )r   r   Úboolr   )r   s   "r   r   r*   M   s   € ÷ ñ ˜ñ r   c                	óv   €  \        V P                  4       P                  4       4      #   \         d     R # i ; i)F)ri   r7   ÚisattyrL   r6   s   &r   rk   Ú_ThreadRoutingStream.isattyM   s3   € ð	Ü˜Ÿ™›×-Ñ-Ó/Ó0Ð0øÜô 	Úð	ús   ‚&) ©8·8c                	ó>   € V P                  4       P                  4       # r   )r7   Úfilenor6   s   &r   rn   Ú_ThreadRoutingStream.filenoS   s   € Ø�|‰|‹~×$Ñ$Ó&Ð&r   c                	ó6   € \        V P                  4       V4      # r   )rK   r7   )r   rH   s   &&r   Ú__getattr__Ú _ThreadRoutingStream.__getattr__V   s   € Ü�t—|‘|“~ tÓ,Ð,r   r,   N)r   r    r!   r"   r#   r   r7   r?   rE   rO   rR   r]   rb   rk   rn   rq   r$   r   r   r   r&   r&   &   sC   † ñCõõqõQõ6õ#ò[ò4òCõò'ö-r   r&   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚattrrI   r(   r   r   r&   r   )r   s   "r   r   r   Z   s"   € ÷ ñ ˜Cð ¨fð Ð9Mñ r   c                óÄ  € \         ;_uu_ 4        \        P                  V 4      p\        \        V R4      p\        V\        4      '       d)   V\        V &   VP                  \        V &   VuuRRR4       # Ve   W2J d   VuuRRR4       # Ve   TMTp\        P                  V 4      pVe   VP                  '       d&   \        \        P                  RRR7      ;p\        V &   \        P                  V 4      pVe   VP                  VJd   \        V4      ;p\        V &   \        W4      ;p\        V &   \!        \        W4       VuuRRR4       #   + '       g   i     R# ; i)zGInstall (idempotently) a routing proxy as ``sys.<attr>`` and return it.NÚwzutf-8)Úencoding)Ú_install_lockr   r4   rK   ÚsysrT   r&   r.   r   r   ÚclosedÚopenÚosÚdevnullr   r
   Úsetattr)rt   r(   ÚproxyÚcurrentr   r)   s   &&    r   Ú_ensure_installedr�   Z   s  € ç	ŽÜ—‘˜tÓ$ˆÜœ#˜t TÓ*ˆÜ�gÔ3×4Ò4ð  'ŒJ�tÑØ$+§N¡NŒO˜DÑ!Ø÷ 
Šð Ò Ó!1Ø÷ 
Šð ")Ò!4‘g¸+ˆÜ�z‰z˜$ÓˆØŠ<˜4Ÿ;Ÿ;˜;Ü"&¤r§z¡z°3ÀÔ"IÐIˆD”6˜$‘<Ü×#Ñ# DÓ)ˆØŠ=˜EŸJ™J¨dÓ2Ü,9¸$Ó,?Ð?ˆE”O DÑ)Ü#7¸Ó#KÐKˆ”
˜4Ñ Ü”�TÔ!Ø÷- 
��‹ús   �AEÁ4
EÂ	2EÂ<BEÅE	c               ó   € V ^8„  d   QhRR/# )r   r   zIterator[None]r   )r   s   "r   r   r   v   s   € ÷ 
#ñ 
#˜~ñ 
#r   c               #  ó°  "  € \         P                  ! 4       p \        R\        P                  ;'       g    \        P
                  4      \        R\        P                  ;'       g    \        P                  4      3pV F  pVP                  V 4       K  	   Rx € V F  pVP                  V 4       K  	  R#   T F  pTP                  T 4       K  	  i ; i5i)z<Silence ``stdout``/``stderr`` for the *current thread only*.ÚstdoutÚstderrN)
r   r5   r�   ry   Ú
__stdout__r„   Ú
__stderr__r…   r?   rE   )r;   Úproxiesr   s      r   r   r   u   s¶   é € ô ×ÒÓ!€EÜ  ¬3¯>©>×+GÐ+G¼S¿Z¹ZÓHÔJ[Ð\dÔfi×ftÑft÷  gCð  gCÔx{÷  yCñ  yCó  KDð  E€GÛˆØ�‰�eÖñ ð#ÛãˆEØ�O‰O˜EÖ"ó ø“WˆEØ�O‰O˜EÖ"ò üs$   ‚A#CÁ&0CÂB7 ÂCÂ7CÃC)Ú__conditional_annotations__r#   Ú
__future__r   Ú
contextlibr|   ry   r   Útypingr   r   Ú__all__r   rx   r   Ú__annotations__r   r   r
   r&   r�   Úcontextmanagerr   )r‰   s   @r   Ú<module>r�      sŠ   øðôõ #ã Û 	Û 
Û ß #à"Ð
#€à—’Ó €à.0€
Ð+Ó 0ð €ÐÓ Ø,.€Ð)Ó .÷%ñ %÷1-ñ 1-õhð6 ×Ñô
#ó ò
#r   