+
    "Ý³jrñ  ã                   ó,  a € Rˆ t{0 t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHt ^ RIHtHtHtHtHt ^RIHtHtHtHt ^RIHtHt ^RIHt ^RIHt ^R	IH t H!t!H"t" ^R
I#H$t$ Rs%^ s&]PN                  ! 4       t(]PN                  ! 4       t)Rs*Rs+]PN                  ! 4       t,R t-R R lt.R R lt/R R lt0Rs1Rs2] ^ k ^ s3Rs4R‰R R llt5R R lt6R‰R R llt7R R lt8R R lt9R R lt:RR/R  R! llt;R" R# lt<]'       d   ^R$I=H>t> RŠR% R& llt?R' t@]! R( R)7      tA]$! R*R+7      tB]AP‡                  ]APˆ                  ]B4       ]?! 4        R,tER- R. ltFR/ R0 ltGR1 R2 ltHR3 R4 ltIR5 R6 ltJR7 R8 ltKR9 R: ltLR; R< ltMR= R> ltNR‰R? R@ lltORARBRCRRDRBRER/RF RG lltPRH RI ltQRJ RK ltRRL RM ltS]P¨                  ! ]S4       R‰RN RO lltURP RQ ltVRR RS ltWR‹RT RU lltXRV RW ltYRX RY ltZRŒRZ R[ llt[R�R\ R] llt\R^ R_ lt]R` Ra lt^Rb Rc lt_Rd Re lt`Rf Rg ltaRhRiRjRkRlRmRnRoRpRoRqRr/tb ! Rs Rt]c]	4      td]e! Ru ]d 4       4      tfRvtgRh]gRj]gRl]gRn]gRp]g/thRw Rx ltiRy Rz ltjR{ R| ltkR} R~ ltl]! ^@R7      RŽR€ R� ll4       tm]dPÜ                  ]PÜ                  ]dPÞ                  ]PÞ                  ]dPà                  ]Pâ                  ]dPä                  ]Pä                  ]dPæ                  ]Pæ                  /ttRh]PÜ                  Rj]PÞ                  Rl]Pâ                  R‚]Pâ                  Rn]Pä                  Rp]Pæ                  Rƒ]Pæ                  R„]Pæ                  R…]Pê                  /	tv]PÜ                  ]dPÜ                  Pî                  ]PÞ                  ]dPÞ                  Pî                  ]Pâ                  ]dPà                  Pî                  ]Pä                  ]dPä                  Pî                  ]Pæ                  ]dPæ                  Pî                  /tx ! R† R‡]Pò                  4      tzR# )�é    N)ÚEnum)Ú	lru_cacheÚwraps)ÚIterableÚOptionalÚSequenceÚUnionÚTYPE_CHECKING)ÚRenderBackendStateÚ_env_flag_enabledÚrender_backend_stateÚterminal_size)Ú
ColumnSpecÚColumnsPrinter)Úget_buffered_stdout)ÚRenderCoordinator)Úansi_to_htmlÚ
strip_ansiÚvisible_length)Ú
LineRegionFc                 ó4   € \        \        P                  4      # )z=Return the stdout stream wrapper used by all renderer writes.)r   ÚsysÚstdout© ó    ÚN/home/luca/screen-checking/.venv/lib/python3.14/site-packages/logbar/logbar.pyÚ_stdout_streamr   '   s   € ô œsŸz™zÓ*Ð*r   c                ó0   € V ^8„  d   QhR\         R\        /# ©é   ÚdataÚreturn)ÚstrÚint)Úformats   "r   Ú__annotate__r&   -   s   € ÷ ñ ”ð œñ r   c                ó8   € \        4       pVP                  V 4      # )z,Write raw text to the shared stdout wrapper.)r   Úwrite)r!   Ústreams   & r   Ú_writer*   -   s   € ô Ó€FØ�<‰<˜ÓÐr   c                ó   € V ^8„  d   QhRR/# ©r    r"   Nr   )r%   s   "r   r&   r&   4   s   € ÷ ñ �tñ r   c                 óh   € \        4       p \        V RR4      p\        V4      '       d
   V! 4        R# R# )zAFlush the shared stdout wrapper when the backend exposes flush().ÚflushN)r   ÚgetattrÚcallable)r)   r.   s     r   Ú_flush_streamr1   4   s-   € ô Ó€FÜ�F˜G TÓ*€EÜ�‡‚ÙŽñ r   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   =   s   € ÷ $ñ $˜tñ $r   c                 ó~   € RV9  d   \        4       VR&   VP                  RR4       \        P                  ! V / VB  R# )zFPrint through the shared stdout wrapper with flush enabled by default.Úfiler.   TN)r   Ú
setdefaultÚbuiltinsÚprint)ÚargsÚkwargss   *,r   Ú_printr:   =   s9   € ð �VÔÜ'Ó)ˆˆv‰Ø
×Ñ�g˜tÔ$Ü‡N‚N�DÐ#˜FÔ#r   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r    Úcolumns_hintr"   )r   r$   r   )r%   s   "r   r&   r&   K   s   € ÷ ñ ´¼µð ÔI[ñ r   c                ór   a € \        4       pS e   V 3R lpM\        p\        \        P                  VVR7      # )zDCapture backend capabilities and size for the current stdout target.c                 ó$   <€ \        4       w  rSV3# )z?Reuse the live row count while forcing a caller-supplied width.©r   )Ú_Úlinesr<   s     €r   Ú_size_providerÚ5_current_render_backend_state.<locals>._size_providerQ   s   ø€ ô %“‰HˆAØ  %Ð(Ð(r   )r)   Úsize_providerÚnotebook)Ú _running_in_notebook_environmentr   r   r   r   )r<   rE   rB   s   f  r   Ú_current_render_backend_staterG   K   s9   ø€ ô 0Ó1€HàÒö	)ô 'ˆäÜ�z‰zØ$Øôð r   c                ó$   € V ^8„  d   QhR\         /# ©r    r"   ©Úbool)r%   s   "r   r&   r&   `   s   € ÷ /ñ /¬$ñ /r   c                 ó*  € \         P                  P                  RR4      P                  4       '       d   R# \         P                  P                  RR4      P                  4       '       d   R# \         P                  P                  R4      '       g&   \         P                  P                  R4      '       d   R#  ^ RIHp   T ! 4       pT'       g   R# \        TR	R
4      p\        TRR4      pTR8H  #   \         d     R# i ; i  \         d     R# i ; i)z9Best-effort detection for Jupyter-style REMOTE frontends.Ú!LOGBAR_DISABLE_NOTEBOOK_DETECTIONÚ FÚLOGBAR_FORCE_NOTEBOOK_MODETÚJPY_PARENT_PIDÚIPYKERNEL_PARENT_PID)Úget_ipythonÚ	__class__NÚ__name__ÚZMQInteractiveShell)ÚosÚenvironÚgetÚstripÚIPythonrR   Ú	Exceptionr/   )rR   ÚipÚshellÚ
shell_names       r   rF   rF   `   sÝ   € ô 
‡z�z‡~�~Ð9¸2Ó>×DÑD×FÒFÙä	‡z�z‡~�~Ð2°BÓ7×=Ñ=×?Ò?Ùä	‡z�z‡~�~Ð&×'Ò'¬2¯:©:¯>©>Ð:P×+QÒ+QÙðÝ'ðÙ‹]ˆ÷ Ùä�B˜ TÓ*€EÜ˜ 
¨BÓ/€JØÐ.Ñ.Ð.øô ô Úðûô
 ô Úðús$   Â:C1 ÃD Ã1D Ã?D ÄDÄDc                ó>   € V ^8„  d   QhR\         \        ,          RR/# )r    Úbackend_stater"   N)r   r   )r%   s   "r   r&   r&   ~   s%   € ÷ Hñ H¬HÔ5GÕ,Hð HÐTXñ Hr   c                óz  € \         ;_uu_ 4        \        '       d    RRR4       R# RsRRR4       V f    \        4       p V P                  '       g   R# \
        pVf    \        P                  4       pVP                  R4       R#   + '       g   i     Le; i  \         d     R# i ; i  \         d     R# i ; i)zHEmit a single INFO log when LogBar is running in a headless environment.NTz7LogBar: headless/CI mode; progress animations disabled.)	Ú_HEADLESS_LOG_LOCKÚ_HEADLESS_LOG_EMITTEDrG   r[   ÚheadlessÚloggerÚLogBarÚsharedÚinfo)r`   Úlogs   & r   Ú_log_headless_state_oncerj   ~   s¦   € ÷
 
Ö	ß Ó Ø÷ 
Ñ	ð !%Ð÷ 
ð
 Òð	Ü9Ó;ˆMð ×!×!Ð!Ùä
€CØ
‚{ð	Ü—-‘-“/ˆCð ‡H�HÐFÖG÷+ 
×	ûô ô 	Úð	ûô ô 	Úð	ús3   �B§B¶
B ÁB+ ÂB	ÂB(Â'B(Â+B:Â9B:c                ó$   € V ^8„  d   QhR\         /# rI   rJ   )r%   s   "r   r&   r&   ›   s   € ÷ !ñ !¬$ñ !r   c                 óT   €  \        4       p V P                  #   \         d     R# i ; i)z;Best-effort check for cursor positioning support on stdout.F)rG   r[   Úsupports_cursor©Ústates    r   Ú _stdout_supports_cursor_movementrp   ›   s1   € ðÜ-Ó/ˆð × Ñ Ð øô ô Úðúó   ‚
 ˜'¦'c                ó$   € V ^8„  d   QhR\         /# rI   rJ   )r%   s   "r   r&   r&   ¥   s   € ÷ ñ œtñ r   c                 óT   €  \        4       p V P                  #   \         d     R# i ; i)z9Best-effort check for raw ANSI styling support on stdout.F)rG   r[   Úsupports_ansirn   s    r   Ú_stdout_supports_ansiru   ¥   s1   € ðÜ-Ó/ˆð ×ÑÐøô ô Úðúrq   c                óF   € V ^8„  d   QhR\         \        ,          R\        /# )r    rA   r"   ©r   r#   rK   )r%   s   "r   r&   r&   ¯   s   € ÷ <ñ <¤(¬3¥-ð <´Dñ <r   c                ó  € \        4       '       g   R#  ^ RIHp T '       d   RP	                  T 4      MRp\        T4      pRTRR\        T4       R2/p \        pTf   T! TR
R
R7      pTf   R# TsMTP                  TR
R7       T '       g0    TP                  RRRR/R
R7        TP                  4        R	sR	s
^ sR
#   \         d     R# i ; i  \         d     L8i ; i  \         d     L8i ; i  \         d    R	s R# i ; i)z@Render the stack using IPython display machinery when available.F)ÚdisplayÚ
rN   z
text/plainz	text/htmlzj<pre style="margin:0; white-space:pre; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;">z</pre>NT)ÚrawÚ
display_id)r{   zp<pre style="margin:0; white-space:pre; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;"></pre>)rF   ÚIPython.displayry   r[   Újoinr   r   Ú_notebook_display_handleÚupdateÚcloseÚ_notebook_plain_last_lineÚ_notebook_plain_last_width)rA   ry   ÚtextÚ
plain_textÚpayloadÚhandles   &     r   Ú_notebook_render_stackrˆ   ¯   sF  € ô
 ,×-Ò-ÙðÝ+÷  %ˆ4�9‰9�UÔ¨"€DÜ˜DÓ!€Jà�jØðRä˜DÓ!Ð"Øðð€Gð!Ü)ˆØŠ>Ù˜W¨$¸4Ô@ˆFØŠ~ÙØ'-Ñ$à�M‰M˜' tˆMÔ,çðØ—‘à$ bØ#ðhðð ð ô 	ðØ—‘”ð (,Ð$Ø(,Ð%Ø)*Ð&ñ
 øôe ô ÚðûôJ ô Ùðûô ô Ùðûô
 ô Ø#'Ð Úðúsk   ”B> ÁC2 Á/C2 ÂC Â&C! Â6C2 Â>CÃCÃCÃC2 ÃCÃC2 Ã!C/Ã,C2 Ã.C/Ã/C2 Ã2DÄDÚstrip_stylesc                óJ   € V ^8„  d   QhR\         \        ,          R\        RR/# )r    rA   r‰   r"   Nrw   )r%   s   "r   r&   r&   î   s&   € ÷ -;ñ -;¬´#­ð -;Ìð -;ÐZ^ñ -;r   c               óª  € \         P                  \        Jd   \         P                  sRs^ sV'       d   V  Uu. uF  p\        V4      NK  	  p pV '       gE   \        e7   \        R4       \        R\        ,          4       \        R4       \        4        Rs^ sR# RP                  V 4      p\        V 4      ^8X  dX   \        V4      p\        V,
          p\        R4       \        V4       V^ 8”  d   \        RV,          4       \        4        VsVsR# \        R4       \        V4       \        4        V R,          s\        V R,          4      sR# u upi )zAFallback notebook-friendly rendering using carriage returns only.NÚÚ rz   éÿÿÿÿ)r   r   Ú_notebook_plain_streamr‚   rƒ   r   r*   r1   r~   Úlenr   )rA   r‰   ÚlineÚjoinedÚjoined_widthÚpads   &$    r   Ú_notebook_render_plain_stdoutr•   î   s  € ô ‡z�zÔ/Ó/Ü!$§¡ÐØ$(Ð!Ø%&Ð"çÙ.3Ó4©e d”˜DÖ!©eˆÐ4çÜ$Ò0Ü�4ŒLÜ�3Ô3Õ3Ô4Ü�4ŒLÜŒOØ$(Ð!Ø%&Ð"Ùà�Y‰Y�uÓ€Fä
ˆ5ƒz�Q„Ü% fÓ-ˆÜ(¨<Õ7ˆÜˆtŒÜˆvŒØ�Œ7Ü�3˜•9ÔÜŒØ$*Ð!Ø%1Ð"Ùô ˆ4„LÜ
ˆ6„NÜ„OØ % b¥	ÐÜ!/°°bµ	Ó!:Òùò? 5s   ¹Ec                ó8   € V ^8„  d   QhR\         P                  /# rI   )Ú	threadingÚRLock)r%   s   "r   r&   r&     s   € ÷ ñ ”Y—_‘_ñ r   c                 ó   € \         # )z@Provide access to the shared render lock used for stdout writes.)Ú_RENDER_LOCKr   r   r   Úrender_lockr›     s
   € ô Ðr   ©ÚProgressBarc                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   %  s   € ÷  ñ  ¸dñ  r   c                ó¦   € V f@   \         P                  pVP                  4        F  p\        W#4      \	        4       V&   K  	  R# V\	        4       V &   R# )zLMirror coordinator-owned state onto legacy module globals for compatibility.N)Ú_DEFAULT_RENDER_COORDINATORro   Úfield_namesr/   Úglobals)ÚnameÚvaluero   Ú
field_names   &&  r   Ú_sync_default_coordinator_stater¦   %  sE   € ð ‚|Ü+×1Ñ1ˆØ×+Ñ+Ö-ˆJÜ$+¨EÓ$>ŒG‹I�jÓ!ó .ð  Œ‹	�$‹r   c                 ó"   € \         P                  # )zGReturn the mutable state object backing the default render coordinator.)r    ro   r   r   r   Ú_coordinator_stater¨   0  s   € ô '×,Ñ,Ð,r   c                 ó   € \        W4      # ©N)r¦   )r£   r¤   s   &&r   Ú<lambda>r«   7  s
   € Ô(GÈÔ(Tr   )Úon_state_changeÚbottom)Úvertical_anchorgš™™™™™¹?c                ó$   € V ^8„  d   QhR\         /# rI   rJ   )r%   s   "r   r&   r&   ?  s   € ÷ Dñ Dœtñ Dr   c                 óØ   € \         P                  P                  \        \        P
                  ^ ,          4      4      P                  4       p R\         P                  9   ;'       g    RV 9   # )z:Best-effort detection for pytest-driven terminal sessions.ÚPYTEST_CURRENT_TESTÚpytest)rV   ÚpathÚbasenamer#   r   ÚargvÚlowerrW   )Úargv0s    r   Ú_running_under_pytestr¸   ?  sJ   € ô �G‰G×ÑœS¤§¡¨!¥Ó-Ó.×4Ñ4Ó6€EØ ¤B§J¡JÑ.×CÐC°(¸eÑ2CÐCr   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   F  s   € ÷ 6ñ 6°$ñ 6r   c                 ó:   € \         '       d   R# \        4        Rs R# )aÞ  Install framework-specific terminal handoff hooks when available.

The underlying problem is not pytest-specific: any framework that writes
directly to the terminal while LogBar still owns a bottom footer can land
output inside the footer footprint while the cursor is hidden and parked at
the stack anchor. Pytest is the concrete case we reproduced because it
prints `PASSED` and the warnings summary after the test body has already
returned, outside LogBar's normal log path.
NT)Ú*_EXTERNAL_TERMINAL_HANDOFF_HOOKS_INSTALLEDÚ(_install_pytest_terminal_handoff_adapterr   r   r   Ú(_install_external_terminal_handoff_hooksr½   F  s   € ÷ 2Ó1Ùä,Ô.Ø15Ò.r   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   Z  s   € ÷ @%ñ @%°$ñ @%r   c                 óì   aa€ \        4       '       g   R#  ^ RIHo  ^ RIHo R V3R llp R V3R llpR	 F  pV ! V4       K  	  V! R4       R#   \         d    Ro LCi ; i  \         d    Ro LOi ; i)
zGTeach pytest to hand the terminal back before it writes session output.N)ÚTerminalReporter)ÚTerminalWriterc                ó(   € V ^8„  d   QhR\         RR/# ©r    Úmethod_namer"   N©r#   )r%   s   "r   r&   Ú>_install_pytest_terminal_handoff_adapter.<locals>.__annotate__j  s   € ÷ 9ñ 9¤#ð 9¨$ñ 9r   c                 óÖ   <a€ Sf   R # \        SV R 4      o\        S4      '       d   \        SRR4      '       d   R # \        S4      V3R l4       p\        VRR4       \        SW4       R # )NÚ _logbar_terminal_handoff_wrappedFc                 ó†   <€ \        4       P                  ^ 8”  d    \        4        S! V .VO5/ VB #   \         d     Li ; i©r   ©r¨   Ú_last_drawn_progress_countÚ_shutdown_default_rendererr[   ©Úselfr8   r9   Úoriginals   &*,€r   Ú_wrappedÚP_install_pytest_terminal_handoff_adapter.<locals>._wrap_method.<locals>._wrappedq  sL   ø€ ô "Ó#×>Ñ>ÀÔBðÜ.Ô0ñ ˜DÐ2 4Ò2¨6Ñ2Ð2øô !ô Ùðúó   œ
2 ²A ¿A T©r/   r0   r   Úsetattr)rÄ   rÑ   rÐ   rÀ   s   & @€r   Ú_wrap_methodÚ>_install_pytest_terminal_handoff_adapter.<locals>._wrap_methodj  si   ù€ ØÒ#ÙÜÐ+¨[¸$Ó?ˆÜ˜×!Ò!¤W¨XÐ7YÐ[`×%aÒ%aÙä	ˆx‹ô
	3ó 
ð
	3ô 	�Ð<¸dÔCÜÐ  +Ö8r   c                ó(   € V ^8„  d   QhR\         RR/# rÃ   rÅ   )r%   s   "r   r&   rÆ   �  s   € ÷ 7ñ 7¬ð 7°ñ 7r   c                 óÖ   <a€ Sf   R # \        SV R 4      o\        S4      '       d   \        SRR4      '       d   R # \        S4      V3R l4       p\        VRR4       \        SW4       R # )NrÈ   Fc                 ó†   <€ \        4       P                  ^ 8”  d    \        4        S! V .VO5/ VB #   \         d     Li ; irÊ   rË   rÎ   s   &*,€r   rÑ   ÚW_install_pytest_terminal_handoff_adapter.<locals>._wrap_writer_method.<locals>._wrapped‰  sL   ø€ ô
 "Ó#×>Ñ>ÀÔBðÜ.Ô0ñ ˜DÐ2 4Ò2¨6Ñ2Ð2øô !ô ÙðúrÓ   TrÔ   )rÄ   rÑ   rÐ   rÁ   s   & @€r   Ú_wrap_writer_methodÚE_install_pytest_terminal_handoff_adapter.<locals>._wrap_writer_method�  sg   ù€ ØÒ!Ùä˜>¨;¸Ó=ˆÜ˜×!Ò!¤W¨XÐ7YÐ[`×%aÒ%aÙä	ˆx‹ô		3ó 
ð		3ô 	�Ð<¸dÔCÜ� Ö6r   Ú	write_raw)r(   r‘   Ú
write_lineÚrewriteÚ	write_sep)r¸   Ú_pytest.terminalrÀ   r[   Ú_pytest._io.terminalwriterrÁ   )rÖ   rÜ   rÄ   rÀ   rÁ   s      @@r   r¼   r¼   Z  s€   ù€ ô !×"Ò"Ùð Ý5ðÝ=÷9ð 9÷.7ð 7ó. OˆÙ�[Ö!ñ Oá˜Ö$øôq ô  ØÒð ûô
 ô ØŠðús"   –A �A# ÁA ÁA Á#A3Á2A3c                ó4   € V ^8„  d   QhR\         R\         RR/# )r    Ú
line_countÚterminal_rowsr"   N©r$   )r%   s   "r   r&   r&   �  s!   € ÷ 2ñ 2¬ð 2¼Sð 2ÀTñ 2r   c                óž   € \        4       pV ^ 8:  d   RVn        RVn        R# V^ 8”  d   W8¼  d   RVn        RVn        R# RVn        RVn        R# )zFRecord whether the cursor is parked above the stack or on its top row.FNT)r¨   Ú_cursor_positioned_above_stackÚ_cursor_positioned_on_stack_top)rå   ræ   ro   s   && r   Ú_set_stack_cursor_anchorrë   �  sV   € ô Ó €Eà�Q„Ø/4ˆÔ,Ø05ˆÔ-Ùà�qÔ˜ZÔ8Ø/4ˆÔ,Ø04ˆÔ-Ùà+/€EÔ(Ø,1€EÖ)r   c                ó0   € V ^8„  d   QhR\         R\        /# )r    ræ   r"   )r$   rK   )r%   s   "r   r&   r&   °  s   € ÷ ñ ´3ð ¼4ñ r   c                óž   € \        4       pVP                  ^ 8:  d   R# V ^ 8:  d   R# VP                  V 8¬  ;'       d    VP                  '       * # )zCDecide whether fullscreen stacks must buffer logs until they clear.F)r¨   rÌ   ré   )ræ   ro   s   & r   Ú_should_defer_log_output_lockedrî   °  sS   € ô Ó €Eà×'Ñ'¨1Ô,Ùà˜ÔÙð 	×(Ñ(¨MÑ9÷ 	5ð 	5Ø×4Ñ4Ô4ðr   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   Á  s   € ÷ 
ñ 
 Tñ 
r   c            	     ó8  € \        4       p V P                  '       d	   \        f   R# \        V P                  4      p. V n        V FQ  w  r#\        P                  V\        \        P                  ! V4      4      4      p\        P                  VVVRR7       KS  	  R# )zEReplay log lines buffered while the stack occupied the full terminal.NF)Úallow_defer)
r¨   Ú_deferred_log_recordsre   ÚlistÚLOGGING_TO_LEVEL_LABELrX   r#   ÚloggingÚgetLevelNameÚ_emit_log_line_locked)ro   ÚpendingÚnormalized_levelÚstr_msgÚlevel_labels        r   Ú_flush_deferred_logs_lockedrü   Á  s�   € ô Ó €Eà×&×&Ð&¬&ª.Ùä�5×.Ñ.Ó/€GØ"$€EÔã%,Ñ!ÐÜ,×0Ñ0ØÜ”×$Ò$Ð%5Ó6Ó7ó
ˆô 	×$Ñ$ØØØØð	 	%ö 	
ó &-r   c                ó    € V ^8„  d   QhRRRR/# ©r    Úpbr�   r"   Nr   )r%   s   "r   r&   r&   Ù  s   € ÷ (ñ (˜Mð (¨dñ (r   c                ó¬   € \         ;_uu_ 4        \        P                  V 4       \        4        RRR4       \	        4        R#   + '       g   i     L; i)z@Register a progress bar so it participates in stacked rendering.N)Ú_STATE_LOCKr    Úattach_progress_barÚ _record_progress_activity_lockedÚ!_ensure_background_refresh_thread©rÿ   s   &r   r  r  Ù  s2   € ÷ 
ŽÜ#×7Ñ7¸Ô;Ü(Ô*÷ 
ô &Ö'÷ 
�ús   � AÁA	c                ó    € V ^8„  d   QhRRRR/# rþ   r   )r%   s   "r   r&   r&   â  s   € ÷ +ñ +˜Mð +¨dñ +r   c                óš   € \         ;_uu_ 4        \        P                  V 4       \        4        RRR4       R#   + '       g   i     R# ; i)zStop managing a progress bar.N)r  r    Údetach_progress_barr  r  s   &r   r  r  â  s)   € ÷ 
ŽÜ#×7Ñ7¸Ô;Ü(Ô*÷ 
��Šúó	   � 9¹A
	c                ó    € V ^8„  d   QhRRRR/# rþ   r   )r%   s   "r   r&   r&   ê  s   € ÷ +ñ + ð +°$ñ +r   c                óš   € \         ;_uu_ 4        \        P                  V 4       \        4        RRR4       R#   + '       g   i     R# ; i)z8Mark an attached progress bar for the next stack redraw.N)r  r    Úmark_progress_bar_dirtyr  r  s   &r   r  r  ê  s)   € ÷ 
ŽÜ#×;Ñ;¸BÔ?Ü(Ô*÷ 
��Šúr	  c                óJ   € V ^8„  d   QhR\         R\        \        ,          RR/# )r    Úvisibler`   r"   N©rK   r   r   )r%   s   "r   r&   r&   ò  s(   € ÷ .ñ .¬4ð .ÄÔI[Õ@\ð .Ðhlñ .r   c                ó"  € TpVf    \        4       pVe   VP                  '       g   R\        4       n        R# V '       * p\        4       pVP                  V8X  d   R# V '       d   RMRp\        VRR7       W4n        R#   \         d    Rp L{i ; i)zAToggle the terminal cursor visibility, avoiding redundant writes.NFú[?25hz[?25lrN   )Úend)rG   r[   rm   r¨   Ú_cursor_hiddenr:   )r  r`   ro   ÚhiddenÚcoordinator_stateÚcodes   &&    r   Ú_set_cursor_visibility_lockedr  ò  sŒ   € ð €EØ‚}ð	Ü1Ó3ˆEð ‚}˜E×1×1Ð1Ø.3ÔÓÔ+ÙàŒ[€FÜ*Ó,ÐØ×'Ñ'¨6Ô1Ùç!‰; {€DÜ
ˆ4�RÕØ'-Ö$øô ô 	ØŠEð	ús   ˆ
A> Á>BÂBÚshow_cursorTÚfor_log_outputÚflush_deferred_logsr`   c          
      ób   € V ^8„  d   QhR\         R\         R\         R\        \        ,          RR/# )r    r  r  r  r`   r"   Nr  )r%   s   "r   r&   r&   
  sI   € ÷ f&ñ f&äðf&ô ðf&ô ð	f&ô
 Ô.Õ/ðf&ð 
ñf&r   c                óF  € \        4       pVP                  pT;'       g    \        4       pV^ 8X  d2   V '       d   \        RVR7       V'       d   V'       g   \	        4        R# VP
                  '       dG   ^ Vn        RVn        . Vn        RVn        RVn	        RVn
        V'       d   V'       g   \	        4        R# VP                  pV'       g„   \        . 4      '       g   \        . VP                  R7       ^ Vn        RVn        . Vn        RVn        RVn	        RVn
        V '       d   \        RVR7       V'       d   V'       g   \	        4        R# V^ 8X  dU   RVn        . Vn        RVn        RVn	        RVn
        V '       d   \        RVR7       V'       d   V'       g   \	        4        R# . pVP                  '       d   VP                  R4       MXVP                  '       d   VP                  R4       M4VP                  R4       V^8”  d   VP                  RV^,
           R	24       VP                  R4       VP                  R
4       V'       d*   V^ 8”  d#   VP                  R4       VP                  R4       V'       d?   RP!                  V4      p	V'       d   V^ 8”  d
   V	R,          p	\#        V	4       \%        4        ^ Vn        RVn        . Vn        RVn        RVn	        RVn
        V '       d   \        RVR7       V'       d   V'       g   \	        4        R# R# R# )aM  Erase the active stack and reset all renderer bookkeeping.

`flush_deferred_logs` is normally enabled so fullscreen stacks replay any
buffered log lines after the footer clears. Shutdown paths disable it
because, during interpreter teardown, replaying deferred logs can create
fresh writes after we just released terminal ownership.
T©r`   NF©r‰   ú[1BrŒ   ú[ÚAú[Jz[1ArN   z[1S)r¨   rÌ   rG   r  rü   rd   Ú_last_rendered_terminal_sizeÚ_last_rendered_progress_linesré   rê   Ú_stack_redraw_invalidatedrm   rˆ   r•   rE   Úappendr~   r*   r1   )
r  r  r  r`   r  Úcountro   rm   Ú	sequencesÚbuffers
   $$$$      r   Ú_clear_progress_stack_lockedr*  
  s‘  € ô +Ó,ÐØ×8Ñ8€EØ×<Ð<Ô:Ó<€Eà�„zßÜ)¨$¸eÕDß§~Ü'Ô)Ùà‡~‡~€~Ø78ÐÔ4Ø9=ÐÔ6Ø:<ÐÔ7Ø;@ÐÔ8Ø<AÐÔ9Ø6;ÐÔ3ß§~Ü'Ô)Ùà×+Ñ+€OçÜ% b×)Ò)Ü)¨"¸5¿>¹>ÕJØ78ÐÔ4Ø9=ÐÔ6Ø:<ÐÔ7Ø;@ÐÔ8Ø<AÐÔ9Ø6;ÐÔ3ßÜ)¨$¸eÕDß§~Ü'Ô)Ùà�„zØ9=ÐÔ6Ø:<ÐÔ7Ø;@ÐÔ8Ø<AÐÔ9Ø6;ÐÔ3ßÜ)¨$¸eÕDß§~Ü'Ô)Ùà€Ið ×7×7Ð7Ø×Ñ˜Õ#Ø	×	:×	:Ð	:Ø×Ñ˜Õà×Ñ˜ÔØ�1Œ9Ø×Ñ˜u U¨Q¥Y K¨qÐ1Ô2à×Ñ�TÔØ×Ñ�XÔç˜% !œ)Ø×Ñ˜Ô#Ø×Ñ˜ÔçØ—‘˜Ó#ˆß˜e aœiØ�iÕˆFÜˆvŒÜŒà34ÐÔ0Ø59ÐÔ2Ø68ÐÔ3Ø7<ÐÔ4Ø8=ÐÔ5Ø27ÐÔ/ßÜ% d¸%Õ@ß§>Ü#Ö%ñ $2Ñr   c                ó0   € V ^8„  d   QhR\         R\        /# r   ©r#   rK   )r%   s   "r   r&   r&   s  s   € ÷  ñ  œsð  ¤tñ  r   c                óh  € V '       g   R# V P                  RRR7      pR F  p \        P                  ! W!4        R# 	  Rp \        P                  ! R\        P
                  4      p\        P                  ! W14        Ve    \        P                  ! V4       R# R#   \         d     K‹  i ; i  \         d     R# i ; i  \         d4     Te,    \        P                  ! T4       R#   \         d     R# i ; iR# i ; i  Te*    \        P                  ! T4       i   \         d     i i ; ii ; i)	al  Write raw ANSI directly to the terminal file descriptors when possible.

During late shutdown we observed that stdio wrappers can be partially torn
down even though the controlling terminal still exists. Writing straight to
the file descriptors, and finally `/dev/tty`, gives the cursor-restore
sequence a better chance to land than going through buffered stdout.
Tzutf-8Úignore)ÚerrorsNz/dev/ttyF)é   r    )ÚencoderV   r(   ÚOSErrorÚopenÚO_WRONLYr�   )r!   r†   ÚfdÚtty_fds   &   r   Ú_write_exit_sequencer7  s  s   € ÷ Ùà�k‰k˜'¨(ˆkÓ3€GÛˆð	Ü�HŠH�RÔ!Úñ ð €FðÜ—’˜¤R§[¡[Ó1ˆÜ
�Š�Ô!Øð ÒðÜ—’˜Ö ñ øô ô 	Úð	ûô ô Úðûô ô ØàÒðÜ—’˜Ö øÜô Úðúñ ðûð ÒðÜ—’˜Õ øÜô Ùðúð ús}   ¤BÁ;C ÂB/ ÂB,Â+B,Â/B>Â=B>ÃC?ÃD ÃC* Ã*C9Ã8C9Ã>C?Ã?D ÄD1ÄDÄD1ÄD-Ä*D1Ä,D-Ä-D1c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   –  s   € ÷ #-ñ #-¨ñ #-r   c                 ó8  € \        4       p V P                  p. pV^ 8”  dŸ   V P                  '       d   VP                  R4       MXV P                  '       d   VP                  R4       M4VP                  R4       V^8”  d   VP                  RV^,
           R24       VP                  R4       VP                  R4       VP                  R4       \        RP                  V4      4       ^ V n        RV n        . V n        R	V n        R	V n        R	V n	        R	V n
        R# )
a=  Clear the last known footer footprint without probing stdout again.

This uses only the last recorded stack geometry. It exists for teardown
scenarios where capability probes or normal stdout writes are no longer
trustworthy, but we still need to erase the leaked footer and show the
cursor before the process exits.
r  rŒ   r   r!  r"  r  rN   NF)r¨   rÌ   ré   r&  rê   r7  r~   r#  r$  r%  r  )r  r'  r(  s      r   Ú_clear_progress_stack_for_exitr:  –  s  € ô +Ó,ÐØ×8Ñ8€EØ€Iàˆq„yØ×;×;Ð;Ø×Ñ˜YÕ'Ø×>×>Ð>Ø×Ñ˜TÕ"à×Ñ˜TÔ"Ø�qŒyØ× Ñ  5¨°­¨°1Ð!5Ô6à×Ñ˜ÔØ×Ñ˜Ô"à×Ñ�[Ô!Ü˜Ÿ™ Ó+Ô,à34ÐÔ0Ø59ÐÔ2Ø68ÐÔ3Ø7<ÐÔ4Ø8=ÐÔ5Ø27ÐÔ/Ø',ÐÖ$r   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   ¼  s   € ÷ ;ñ ; Dñ ;r   c            	     óF  € . p RpRp \         ;_uu_ 4        \        ;_uu_ 4        \        4       p\        VP                  4      p \        VP                  4      p. Vn        VP                  P                  4        . Vn	        RVn
        RRR4        \        4       pVe#   VP                  '       d    \        RRVR7       M+V'       g   \        4       P                   ^ 8”  d   \        4        ^ sV  F+  p \%        VRR4       \%        VRR4       \%        VRR4       K-  	  RRR4       R#   + '       g   i     L©; i  \         d    Rp L°i ; i  \         d    \        4         Lzi ; i  \         d     Kˆ  i ; i  + '       g   i     R# ; i  \         d     R# i ; i)	a§  Best-effort process-exit cleanup for leaked footer renderables.

If a bar leaks past the end of a test or CLI command, LogBar can still own
the terminal when some other code starts printing. The concrete reproduction
was pytest emitting `PASSED` and its warnings summary above a live stacked
footer, leaving the cursor hidden and the terminal in a bad state until
`reset`. This shutdown path force-releases that ownership.
NFT)r  r  r`   Ú	_attachedÚ_attached_loggerÚ_last_rendered_linerN   )rš   r  r¨   ró   Ú_attached_progress_barsrK   r  Ú_dirty_progress_barsÚclearrò   Ú_refresh_threadrG   r[   rm   r*  r:  rÌ   Úlast_rendered_lengthrÕ   )Úattached_barsr`   Úcursor_was_hiddenr  Úbars        r   rÍ   rÍ   ¼  s~  € ð €MØ€MØÐð+ßŽ\ß–Ü$6Ó$8Ð!Ü $Ð%6×%NÑ%NÓ O�Ü$(Ð):×)IÑ)IÓ$JÐ!Ø<>Ð!Ô9Ø!×6Ñ6×<Ñ<Ô>Ø:<Ð!Ô7Ø48Ð!Ô1÷ ð%Ü =Ó ?�ð Ò(¨]×-J×-JÐ-Jð5ô 1Ø$(Ø,1Ø&3ö÷ #Ô&8Ó&:×&UÑ&UÐXYÔ&YÜ.Ô0à#$Ð ã$�ðÜ˜C ¨eÔ4Ü˜CÐ!3°TÔ:Ü˜CÐ!6¸Ö;ñ	 %÷E ‰\ß—ûô ô %Ø $’ð%ûô !ô 5ô 3Ö4ð5ûô !ô Úðú÷O �\ˆ\ûôR ô Úðús¸   ˆF –E=¥A$D*	Â	E=Â
D=ÂE=Â3EÃE=Ã
*E=Ã5'E+ÄE=Ä F Ä*D:Ä5E=Ä=EÅ
E=ÅEÅE=ÅE(Å%E=Å'E(Å(E=Å+E:	Å6E=Å9E:	Å:E=Å=F	ÆF ÆF ÆF ÆF c                óF   € V ^8„  d   QhR\         \        ,          R\        /# ©r    r`   r"   ©r   r   rK   )r%   s   "r   r&   r&   ý  s!   € ÷ ñ ¼(ÔCUÕ:Vð Ôbfñ r   c                óò   € \        4       pVP                  pV^ 8X  d   R# T pVf    \        4       pVe   VP                  '       g   R# VP
                  '       g   R# RVn        R#   \         d    Rp LDi ; i)zJWrite a log line above the active stack and force a full redraw afterward.FNT)r¨   rÌ   rG   r[   rm   ré   r%  )r`   r  r'  ro   s   &   r   Ú&_prepare_progress_stack_for_log_lockedrL  ý  s�   € ô +Ó,ÐØ×8Ñ8€EØ�„zÙà€EØ‚}ð	Ü1Ó3ˆEð ‚}˜E×1×1Ð1Ùà×;×;Ð;Ùð
 37ÐÔ/Ùøô ô 	ØŠEð	ús   §
A& Á&A6Á5A6c                ó:   € V ^8„  d   QhR\         \        ,          /# )r    Úindexes)r   r$   )r%   s   "r   r&   r&     s   € ÷ ñ ¤X¬c¥]ñ r   c              #  ó–   "  € V '       g   R# V ^ ,          pTpV R,           F  pW2^,           8X  d   TpK  W3x € TpTpK  	  W3x € R# 5i)z8Group sorted row indexes into contiguous rewrite blocks.Nºr0  NNr   )rN  Ústartr  Úindexs   &   r   Ú_iter_contiguous_blocksrS    sY   é € ÷ Ùà�A�J€EØ
€CØ˜—�ˆØ˜!•GÔØˆCÙØˆjÒØˆØŠñ ð ˆ*Ôùs   ‚AA	c                ót   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\        R\        /# )r    rA   Úrow_indexesÚcursor_above_stackr"   )r   r#   r$   rK   )r%   s   "r   r&   r&   +  s8   € ÷ ñ Ü”C�=ðäœ#•ðô ð	ô
 	ñr   c               ó  € V'       g   R# V'       d   ^M^ p. p\        V4       FÒ  w  rVWS,           pV^ 8”  d   VP                  RV R24       \        WV^,           4       Ff  pVP                  R4       VP                  R4       VP                  W,          4       VP                  R4       W†8  g   KU  VP                  R4       Kh  	  WvV,
          ,           p	V	^ 8”  g   K½  VP                  RV	 R24       KÔ  	  RP                  V4      # )zCRewrite specific stack rows while keeping the cursor at the anchor.rN   r   ÚBrŒ   ú[2Kr  r!  )rS  r&  Úranger~   )
rA   rU  rV  Úbase_offsetr(  rQ  r  ÚoffsetrR  Úmove_ups
   &&$       r   Ú_rewrite_stack_rowsr^  +  sì   € ÷ Ùç)‘!¨q€KØ€Iä-¨kÖ:‰
ˆØÕ$ˆØ�AŒ:Ø×Ñ˜u V H¨AÐ.Ô/ä˜5¨¥'Ö*ˆEØ×Ñ˜TÔ"Ø×Ñ˜YÔ'Ø×Ñ˜U�\Ô*Ø×Ñ˜TÔ"ØŽ{Ø× Ñ  Ö+ñ +ð  %�KÕ(ˆØ�QŽ;Ø×Ñ˜u W I¨QÐ/Ö0ñ ;ð" �7‰7�9ÓÐr   c                óJ   € V ^8„  d   QhR\         R\        \        ,          RR/# )r    Ú	lock_heldr`   r"   Nr  )r%   s   "r   r&   r&   M  s-   € ÷ Fñ F¤Dð FÄÔJ\ÕA]ð FÐimñ Fr   c                ó    € V '       d   \        VR7       R# \        ;_uu_ 4        \        VR7       RRR4       R#   + '       g   i     R# ; i)z3Erase any rendered progress bars from the terminal.r  N)r*  rš   )r`  r`   s   &&r   Úclear_progress_stackrb  M  s(   € ÷ Ü$°=×AçŽ\Ü(°}ÕE÷ �\�\Š\ús	   ¥<¼A	c                ó2   € V ^8„  d   QhR\         R,          /# )r    r"   r�   )ró   )r%   s   "r   r&   r&   W  s   € ÷ Bñ Bœt MÕ2ñ Br   c                 ó„   € \         ;_uu_ 4        \        P                  4       uuRRR4       #   + '       g   i     R# ; i)zAReturn a snapshot of bars currently attached to the shared stack.N)r  r    Úactive_progress_barsr   r   r   Ú_active_progress_barsrf  W  s!   € ÷ 
ŽÜ*×?Ñ?ÓA÷ 
��‹ús   �.®?	c                ój   € V ^8„  d   QhR\         R\        R\        R\        R\        \        ,          /# )r    ÚcolumnsÚforceÚallow_repeatr`   r"   )r$   rK   r   r   r#   )r%   s   "r   r&   r&   ^  s@   € ÷ 
ñ 
äð
ô ð	
ô
 ð
ô &ð
ô Œc…]ñ
r   c               ó¬   €  V ! VVVVVP                   R7      #   \         d0   p\        T4      pRT9  d	   RT9  d   h T ! TTTR7      u Rp?# Rp?ii ; i)zDCall a bar's render resolver while tolerating older call signatures.)ri  rj  r`   Ústyle_enabledr`   rl  )ri  rj  N)Úsupports_stylingÚ	TypeErrorr#   )Úresolve_renderedrh  ri  rj  r`   ÚexcÚmessages   &&$$$  r   Ú_call_resolve_rendered_linerr  ^  sl   € ð
ÙØØØ%Ø'Ø'×8Ñ8ô
ð 	
øô ô 
Ü�c“(ˆØ 'Ô)¨oÀWÔ.LØÙØØØ%ô
õ 	
ûð	
ús   ‚ ™A¤$AÁAÁAc                ó‚   € V ^8„  d   QhR\         \        ,          R\         \        ,          R\         \        ,          RR/# )r    Úprecomputedr<   r`   r"   N)r   Údictr$   r   )r%   s   "r   r&   r&   {  sD   € ÷ m'ñ m'Üœ$•ðm'äœ3•-ðm'ô Ô.Õ/ðm'ð 
ñ	m'r   c                ó  € \        4       pT;'       g    \        V4      pVP                  '       dI   \        4       p\        ;_uu_ 4        VP
                  P                  V4       RRR4       \        4        R# VP                  pVP                  p\        4       pVP                  '       d.   V'       g&   V '       g   VP                  ^ 8X  d   \        4        R# \        ;_uu_ 4        \        VP
                  4      pRRR4       . p	. p
VP                  \        ^ \        V4      4      \        ^ \        V4      4      38g  pV EFC  p\!        VRR4      '       d   V	P#                  V4       K*  RpV e   V P%                  V4      pVfÞ    \!        VRR4      p\'        \!        VRR4      4      pT;'       g.    VX9   ;'       g!    VP(                  '       * ;'       g    V'       * pV'       g    VP(                  '       d   VP(                  pMa\+        V4      '       d9   \-        TTTT;'       g    VX9   VR7      pVf   VP(                  ;'       g    RpMVP/                  V4      pMWÜn        T
P#                  T;'       g    R4       EKF  	  V	'       d6   \        ;_uu_ 4        V	 F  p\2        P5                  V4       K  	  RRR4       \6        P9                  V
4       \2        P;                  VVVP<                  R7      p
VP                  pV'       g©   \?        V
4      pV'       g!   \A        W¤PB                  R	7       \E        4        \        ;_uu_ 4        VP
                  P                  V4       RRR4       ^ Vn        RVn        . Vn#        RVn$        RVn%        RVn&        \O        R
VR7       \        4        R# \        ^ \        V4      4      p\        ^ \        V4      4      pVP                  p\Q        VPF                  4      p. pV^ 8„  ;'       dh    VPH                  ;'       g    VPJ                  ;'       d@    VPL                  '       * ;'       d'    V'       * ;'       d    \S        V4      \S        V
4      8H  pV^ 8„  ;'       d^    VPH                  ;'       g    VPJ                  ;'       d6    \S        V4      \S        V
4      8H  ;'       d    VPL                  ;'       g    TpV
'       Ed   V'       dû   \U        \W        VV
4      4       UUUu. uF  w  pw  ppVV8w  g   K  VNK  	  ppppV'       d,   \Y        \[        V
VVPH                  R7      4       \E        4        \S        V
4      Vn        VV3Vn        \Q        V
4      Vn#        \]        \S        V
4      V4       RVn&        \O        RVR7       \        ;_uu_ 4        VP
                  P                  V4       RRR4       \        4        R# V
'       dß   V'       d×   \Y        \[        V
\Q        \_        \S        V
4      4      4      VPH                  R7      4       \E        4        \S        V
4      Vn        VV3Vn        \Q        V
4      Vn#        \]        \S        V
4      V4       RVn&        \O        RVR7       \        ;_uu_ 4        VP
                  P                  V4       RRR4       \        4        R# V'       d    VPH                  '       d   VP#                  R4       MXVPJ                  '       d   VP#                  R4       M4VP#                  R4       V^8”  d   VP#                  RV^,
           R24       VP#                  R4       VP#                  R4       MVP#                  R4       V
'       g�   V'       d   \Y        RPa                  V4      4       \E        4        ^ Vn        VV3Vn        . Vn#        RVn$        RVn&        \O        R
VR7       \        ;_uu_ 4        VP
                  P                  V4       RRR4       \        4        R# \U        V
4       FR  w  ppVP#                  R4       VP#                  V4       V\S        V
4      ^,
          8  g   KA  VP#                  R4       KT  	  VP#                  R4       \S        V
4      p V^ 8”  d-   \S        V
4      V8¼  d   \        ^ \S        V
4      ^,
          4      p V ^ 8”  d   VP#                  RV  R24       \Y        RPa                  V4      4       \E        4        \S        V
4      Vn        VV3Vn        \Q        V
4      Vn#        \]        \S        V
4      V4       RVn&        \O        RVR7       \        ;_uu_ 4        VP
                  P                  V4       RRR4       \        4        R#   + '       g   i     E	LW; i  + '       g   i     ELÒ; i  \0         d    TP(                  ;'       g    Rp EL”i ; i  + '       g   i     ELL; i  + '       g   i     EL°; iu upppi   + '       g   i     EL^; i  + '       g   i     ELŒ; i  + '       g   i     ELD; i  + '       g   i     L×; i)z;Render the attached stack using diff redraws when possible.NÚclosedFÚ_resolve_rendered_lineÚ_logbar_dirty_tracked©ri  rj  r`   rN   )rh  rA   rl  r  Tr  )rV  r  rŒ   r   r!  r"  rz   )1r¨   rG   rd   rf  r  rA  Údifference_updater  rh  rA   rm   rÌ   Úsetr#  Úmaxr$   r/   r&  rX   rK   r?  r0   rr  Ú_render_snapshotr[   r    r  Ú_ROOT_STACK_REGIONÚ	set_linesÚcompose_root_linesrm  rˆ   r•   rE   r1   r$  ré   rê   r%  r  ró   r�   Ú	enumerateÚzipr*   r^  rë   rZ  r~   )!rt  r<   r`   r  ro   Úbarsrh  ÚrowsÚ
dirty_barsÚ	to_removerA   Úsize_changedrÿ   Úrenderedro  Údirty_trackedÚshould_refreshrm   ÚhandledÚterminal_columnsræ   Úprevious_countÚprevious_linesr(  Úcan_diff_redrawÚcan_rewrite_full_footprintrR  Úold_lineÚnew_lineÚchanged_indexesÚidxr‘   r]  s!   &&&                              r   Ú_render_progress_stack_lockedr–  {  s­  € ô +Ó,ÐØ×HÐHÔ:¸<ÓH€Eà‡~‡~€~Ü$Ó&ˆßŽ[Ø×2Ñ2×DÑDÀTÔJ÷ ä(Ô*Ùà�m‰m€GØ�;‰;€Dä Ó"€Dà××ÐßßØ×8Ñ8¸AÔ=ä(Ô*Ùç	ŽÜÐ*×?Ñ?Ó@ˆ
÷ 
à€IØ€EØ$×AÑAÄcÈ!ÌSÐQXË\ÓFZÔ\_Ð`aÔcfÐgkÓclÓ\mÐEnÑn€LäˆÜ�2�x ×'Ò'Ø×Ñ˜RÔ ÙàˆØÒ"Ø"—‘ rÓ*ˆHàÒð8Ü#*¨2Ð/GÈÓ#NÐ Ü $¤W¨RÐ1HÈ%Ó%PÓ Q�à ÷ )ð )Ø˜ZÑ'÷)ð )à×1Ñ1Ô1÷)ð )ð )Ô(ð	 ÷ &¨"×*@×*@Ð*@Ø!×5Ñ5‘HÜÐ.×/Ò/Ü:Ø(ØØ*Ø&2×&FÐ&F°b¸JÑ6FØ&+ô �Hð  Ò'Ø#%×#9Ñ#9×#?Ð#?¸R˜øà!×2Ñ2°7Ó;‘Hð &.Ô"à�‰�X—^�^ ×$ñM ÷P ßŽ[Û�Ü+×?Ñ?ÀÖCñ  ÷ ô × Ñ  Ô'Ü'×:Ñ:ØØØ×,Ñ,ð ;ó €Eð ×+Ñ+€OçÜ(¨Ó/ˆßÜ)¨%¿n¹nÕMÜŒOßŽ[Ø×2Ñ2×DÑDÀTÔJ÷ à78ÐÔ4Ø9=ÐÔ6Ø:<ÐÔ7Ø;@ÐÔ8Ø<AÐÔ9Ø6;ÐÔ3Ü% d¸%Õ@Ü(Ô*Ùä˜1œc '›lÓ+ÐÜ˜œ3˜t›9Ó%€Mà&×AÑA€NÜÐ+×IÑIÓJ€NØ€Ið 	˜Ñ÷ 	.ð 	.à×<Ñ<÷ Að AØ ×@Ñ@÷	.ð 	.ð
 "×;Ñ;Ô;÷	.ð 	.ð Ô÷	.ð 	.ô �Ó¤3 u£:Ñ-ð ð 	˜Ñ÷ 	Jð 	Jà×<Ñ<÷ Að AØ ×@Ñ@÷	Jð 	Jô
 �Ó¤3 u£:Ñ-÷	Jð 	Jð ×8Ñ8×HÐH¸Lð ÷ €u—ô 6?¼sÀ>ÐSXÓ?YÔ5Zõ
Ù5ZÑ1�eÑ1˜h¨Ø˜8Ñ#÷ ˆEÑ5Zð 	ò 
÷
 ÜÜ#ØØ#Ø'8×'WÑ'Wôôô ŒOä7:¸5³zÐÔ4Ø:JÈMÐ9ZÐÔ6Ü:>¸u»+ÐÔ7Ü ¤ U£¨]Ô;Ø6;ÐÔ3Ü% e¸5ÕAßŽ[Ø×2Ñ2×DÑDÀTÔJ÷ ä(Ô*Ùç×+ô 	ÜØÜ”Uœ3˜u›:Ó&Ó'Ø#4×#SÑ#Sôô	
ô 	Œä7:¸5³zÐÔ4Ø:JÈMÐ9ZÐÔ6Ü:>¸u»+ÐÔ7Ü ¤ U£¨]Ô;Ø6;ÐÔ3Ü% e¸5ÕAßŽ[Ø×2Ñ2×DÑDÀTÔJ÷ ä(Ô*ÙçØ×;×;Ð;Ø×Ñ˜YÕ'Ø×>×>Ð>Ø×Ñ˜TÕ"à×Ñ˜TÔ"Ø Ô!Ø× Ñ  5¨¸!Õ);Ð(<¸AÐ!>Ô?Ø×Ñ˜ÔØ×Ñ˜Õ"à×Ñ˜ÔçßÜ�2—7‘7˜9Ó%Ô&ÜŒØ78ÐÔ4Ø:JÈMÐ9ZÐÔ6Ø:<ÐÔ7Ø;@ÐÔ8Ø6;ÐÔ3Ü% d¸%Õ@ßŽ[Ø×2Ñ2×DÑDÀTÔJ÷ ä(Ô*Ùä˜uÖ%‰	ˆˆTØ×Ñ˜ÔØ×Ñ˜ÔØ”�U“˜a•ÖØ×Ñ˜TÖ"ñ	 &ð ×Ñ�TÔÜ�%‹j€GØ�qÔœS ›Z¨=Ô8Ü�aœ˜U› a�Ó(ˆØ�„{Ø×Ñ˜5  	¨Ð+Ô,ä
ˆ2�7‰7�9ÓÔÜ„OÜ36°u³:ÐÔ0Ø6FÈÐ5VÐÔ2Ü6:¸5³kÐÔ3ÜœS ›Z¨Ô7Ø27ÐÔ/Ü! %°uÕ=ß	ŽØ×.Ñ.×@Ñ@ÀÔF÷ 
ä$Ö&÷C �[ˆ[ú÷$ 
�ˆûôN ô 8Ø×1Ñ1×7Ð7°R“ð8ú÷ �[ˆ[ú÷$ �[ˆ[üôR
÷* �[ˆ[ú÷. �[ˆ[ú÷: �[ˆ[ú÷4 
�ús´   Á
f4Ã)gÆ
8gÇgÇgÇ,gÇ>gÈ!gÈ-"gÉgÉgÊ"hÍhÔh,Ô%h,×h3Ú(iàiæi/æ4g	çg	çhç:hè hèh	èh)	è3i	éi	éi,	é/i?	c          
      óŽ   € V ^8„  d   QhR\         R\        \        ,          R\        \        ,          R\        \        ,          RR/# )r    r`  rt  r<   r`   r"   N)rK   r   ru  r$   r   )r%   s   "r   r&   r&   k  sO   € ÷ {ñ {Üð{äœ$•ð{ô œ3•-ð{ô Ô.Õ/ð	{ð
 
ñ{r   c                ó¤   € V '       d   \        WVR7       R# \        ;_uu_ 4        \        WVR7       RRR4       R#   + '       g   i     R# ; i)z@Redraw all attached progress bars respecting their attach order.©rt  r<   r`   N)r–  rš   )r`  rt  r<   r`   s   &&&&r   Úrender_progress_stackrš  k  s.   € ÷ Ü%°+Ðhu×vçŽ\Ü)°kÐlyÕz÷ �\�\Š\ús	   ¦>¾A	c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   z  s   € ÷ >ñ >¨$ñ >r   c                 óJ   € \         P                  ! 4       \        4       n        R# )z1Update the last-seen progress activity timestamp.N)ÚtimeÚ	monotonicr¨   Ú_last_active_drawr   r   r   r  r  z  s   € ô .2¯^ª^Ó-=ÔÓÖ*r   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   €  s   € ÷ +ñ + 4ñ +r   c                 óp   € \         ;_uu_ 4        \        4        RRR4       R#   + '       g   i     R# ; i)z@Thread-safe wrapper for bumping the progress activity timestamp.N)r  r  r   r   r   Ú_record_progress_activityr¢  €  s   € ÷ 
ŽÜ(Ô*÷ 
��Šús   �$¤5	c                óJ   € V ^8„  d   QhR\         R\        R,          R\        /# )r    ro   r„  r�   r"   )r   r   rK   )r%   s   "r   r&   r&   ‡  s(   € ÷ ñ Ô);ð Ä8ÈMÕCZð Ô_cñ r   c                óÊ   € V P                   '       d   R# V P                  '       g   V P                  '       d   R# V F"  p\        \	        VRR4      4      '       g   K!   R# 	  R# )zBReturn whether the background worker should wake for current bars.FTÚ_tick_background_refreshN)rd   rm   rE   r0   r/   )ro   r„  rÿ   s   && r   Ú_should_refresh_in_backgroundr¦  ‡  sN   € ð ‡~‡~€~Ùà××Ð §§ ÙãˆÜ”G˜BÐ :¸DÓA×BÔBÚñ ñ r   c                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   —  s   € ÷ ?#ñ ?# $ñ ?#r   c            	     ó
  €  \         P                  ! \        4       \        ;_uu_ 4        \	        \        4       P                  4      p RRR4       X '       g   KY   \        4       p\        P                  RR7      '       g   K‚   \        4       pT'       g    \        P                  4        K¬  \        Y4      '       g    \        P                  4        KÔ  \         P                  ! 4       p/ pT F‰  p\        TRR4      p\!        T4      '       d   T! T4      '       g   K1  \        TRR4      p\!        T4      '       g   KQ  \#        TTP$                  RRTR7      pTe   TMTP&                  ;'       g    RYE&   K‹  	  TP(                  ;'       d.    \        4       P*                  TP$                  TP,                  38g  p	T'       g!   T	'       g    \        P                  4        EKã  \/        T;'       g    RTP$                  TR	7        \        P                  4        EK    + '       g   i     ELß; i  \         d     EK@  i ; i  \         d     \        P                  4        EKg  i ; i  \        P                  4        i ; i)
zABackground loop that advances time-based renderables and resizes.TNF)Úblockingr¥  rx  rz  rN   r™  )r�  ÚsleepÚ_REFRESH_INTERVAL_SECONDSr  rK   r¨   r@  rG   r[   rš   Úacquirerf  Úreleaser¦  rž  r/   r0   rr  rh  r?  rm   r#  rA   r–  )
Úhas_progressro   r„  Únowrt  rÿ   Útickro  r‰  rˆ  s
             r   Ú_progress_refresh_workerr±  —  s  € ð Ü�
Š
Ô,Ô-çŽ[ÜÔ 2Ó 4× LÑ LÓMˆL÷ ÷ Ùð	Ü1Ó3ˆEô ×#Ñ#¨UÐ#×3Ò3Ùð+	#Ü(Ó*ˆDßØôP × Ñ Ö"ôM 1°×=Ò=ØôJ × Ñ Ö"ôG —.’.Ó"ˆCØˆKÛ�Ü˜rÐ#=¸tÓD�Ü —~’~©T°#¯YªYÙô $+¨2Ð/GÈÓ#NÐ ÜÐ,×-Ô-Ü:Ø(ØŸ™Ø"Ø%)Ø&+ô �Hð 3;Ò2F¡hÈR×McÑMc×MiÐMiÐgi�K“Oñ! ð& ×%Ñ%÷ fð fÜ&Ó(×EÑEÈ%Ï-É-ÐY^×YdÑYdÐIeÑeð ÷ §|Øô × Ñ ×"ô *Ø'×/Ð/¨4Ø"Ÿ]™]Ø#öô × Ñ ×"÷s �[ˆ[ûô ô 	Ûð	ûô\ ô 	Øä× Ñ ×"ð	ûô × Ñ Õ"úsx   ªHÁ
H2 ÂI Â-I ÃAI ÄI Ä?2I Å2I Æ5I ÇI Ç$I Ç2I ÈH/	È2IÉIÉI)ÉI, É(I)É)I, É,Jc                ó   € V ^8„  d   QhRR/# r,   r   )r%   s   "r   r&   r&   Ù  s   € ÷ ñ ¨4ñ r   c                 ó¦  €  \        4       P                  '       d   R#  \        ;_uu_ 4        \	        4       p V P
                  e,   V P
                  P                  4       '       d    RRR4       R# \        P                  ! \        RRR7      pWn        VP                  4        RRR4       R#   \         d     Lœi ; i  + '       g   i     R# ; i)z6Start the shared renderer refresh worker exactly once.Nzlogbar-progress-refreshT)Útargetr£   Údaemon)rG   rd   r[   r  r¨   rC  Úis_aliver—   ÚThreadr±  rQ  )ro   Úthreads     r   r  r  Ù  s¨   € ðÜ(Ó*×3×3Ð3Ùð 4÷
 
ŽÜ"Ó$ˆØ× Ñ Ò,°×1FÑ1F×1OÑ1O×1QÒ1QØ÷ 
‰ô
 ×!Ò!Ü+Ø*Øô
ˆð
 !'ÔØ�‰Œ÷ 
‰øô ô Ùðú÷ 
�ˆús(   ‚B. ­8B?Á&B?Á13B?Â.B<Â;B<Â?C	ÚDEBUGz[36mÚINFOz[32mÚWARNz[33mÚERRORz[31mÚCRITÚRESETz[0mc                   ó.   € ] tR tRtRtRtRtRtRtRt	Rt
R	# )
ÚLEVELiù  z9Canonical LogBar level labels used for output formatting.r¹  r»  rº  r¼  r½  r   N)rT   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¹  r»  rº  r¼  ÚCRITICALÚ__static_attributes__r   r   r   rÀ  rÀ  ù  s   † ÙCà€EØ€DØ€DØ€EØ„Hr   rÀ  c              #   óL   "  € T F  p\        VP                  4      x € K  	  R # 5irª   )r�   r¤   )Ú.0Úlevels   & r   Ú	<genexpr>rÊ    s   é € Ð;±U¨E”s˜5Ÿ;™;×'Ð'³Uùs   ‚"$u   â—¼c                ó$   € V ^8„  d   QhR\         /# rI   rJ   )r%   s   "r   r&   r&     s   € ÷ Añ A¤ñ Ar   c                 óH   € \        R4      '       d   R# \        R4      '       * # )zFReturn whether the colored symbol prefix should be enabled by default.ÚLOGBAR_FORCE_SYMBOL_PREFIXTÚLOGBAR_DISABLE_SYMBOL_PREFIX)r   r   r   r   Ú_symbol_prefix_defaultrÏ    s"   € ô Ð5×6Ò6ÙÜ Ð!?Ó@Ô@Ð@r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# ©r    rû   Úuse_symbol_prefixr"   r,  )r%   s   "r   r&   r&     s!   € ÷ ñ ¤ð ¼ð Äñ r   c                óJ   € V'       d   \         P                  V \        4      # V # )zGResolve the printable token for a level (colored symbol or text label).)ÚLEVEL_SYMBOLSrX   ÚDEFAULT_LEVEL_SYMBOL)rû   rÒ  s   &&r   Ú_level_displayrÖ    s!   € ÷ Ü× Ñ  Ô.BÓCÐCØÐr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# rÑ  )r#   rK   r$   )r%   s   "r   r&   r&     s!   € ÷ 0ñ 0œcð 0´dð 0¼sñ 0r   c                óv   € \        W4      p\        V4      pV'       d   \        ^V4      # \        \        V4      # )zIReturn the visible width of a log-level prefix before the trailing space.)rÖ  r   r}  ÚLEVEL_MAX_LENGTH)rû   rÒ  ry   Údisplay_widths   &&  r   Ú_level_widthrÛ    s6   € ô ˜[Ó<€GÜ" 7Ó+€MßÜ�1�mÓ$Ð$ÜÔ Ó/Ð/r   c                ó0   € V ^8„  d   QhR\         R\        /# )r    rÒ  r"   )rK   r$   )r%   s   "r   r&   r&   )  s   € ÷ ñ ¬ð ´#ñ r   c                óz   € V '       d/   \        ^\        R \        P                  4        4       4      4      # \        # )zDReturn the widest prefix a table must reserve across all log levels.c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irª   )r   )rÈ  Úss   & r   rÊ  Ú$_level_max_length.<locals>.<genexpr>-  s   é € ÐLÑ5K°œ.¨×+Ð+Ó5Kùó   ‚)r}  rÔ  ÚvaluesrÙ  )rÒ  s   &r   Ú_level_max_lengthrã  )  s.   € ÷ Ü�1”cÑL´]×5IÑ5IÔ5KÓLÓLÓMÐMÜÐr   )Úmaxsizec                óH   € V ^8„  d   QhR\         R\        R\        R\         /# )r    rû   rt   rÒ  r"   r,  )r%   s   "r   r&   r&   2  s/   € ÷ @ñ @œsð @´4ð @ÌDð @Ô]`ñ @r   c                ó  € \        W4      p\        W4      p\        V4      pRWE,
          ,          pV'       g   V V R2# V'       d   \        R,          M\        R,          p\        P	                  W4      pV V \        R,           V R2# )zDBuild and cache the colored symbol or colored text log-level prefix.r�   rº  r¾  )rÖ  rÛ  r   ÚCOLORSrX   )	rû   rt   rÒ  ry   Úlevel_widthrÚ  Úlevel_paddingÚdefault_colorÚcolors	   &&&      r   Ú_level_prefixrì  1  s‚   € ô ˜[Ó<€GÜ˜{Ó>€KÜ" 7Ó+€MØ˜;Õ6Õ7€MçØ�˜=˜/¨Ð+Ð+÷ '8”F˜6–N¼VÀG½_€MÜ�J‰J�{Ó2€EØˆW�W�Iœf W�oÐ.¨}¨o¸QÐ?Ð?r   ÚWARNINGrÅ  ÚFATALÚNOTSETc                   óž  a a€ ] tR tRt oRt]P                  t]P                  t]P                  t]P                  t
]P                  t	]P                  t]P                  t]P                  t]! 4       tRt]R4V3R lR ll4       tRR/V3R lR	 lltR5RRR
RR^/V3R lR llltV3R lR lt ! R R4      t ! R R4      t ! R R4      t ! R R4      t ! R R4      tV 3R ltR6V3R lR lltV3R lR  ltV3R! lR" ltV3R# lV 3R$ lltR7V3R% lR& llt R'RR(RR)^/V3R* lR+ llt!R, t"R-RR.R/V3R/ lR0 llt#V3R1 lR2 lt$R3t%Vt&V ;t'# )8rf   i_  zCLogger subclass that multiplexes normal logs with live renderables.iè  c                ó0   <€ V ^8„  d   QhRS[ S[,          /# )r    Úoverride_logger)r   rK   )r%   Ú__classdict__s   "€r   r&   ÚLogBar.__annotate__p  s   ø€ ÷ *ñ *¡X©d¥^ñ *r   c                ó  € \        4        RpRp\        ;_uu_ 4        \        e   \        pM¨RpV'       g   \        P                  ! 4       p\        P
                  ! \        4        \        P                  ! R4      sV'       g   Ve   \        P
                  ! V4       R\        n        \        P                  \        P                  4       Rp\        pRRR4       Vf   \        P                  ! R4      pV'       d&   \        ;_uu_ 4        \        RRRR7       RRR4       \        4        \        4        V#   T'       g   Te   \        P
                  ! T4       i i i ; i  + '       g   i     L–; i  + '       g   i     Lb; i)z/Return the process-wide shared LogBar instance.FNÚlogbarTrN   rz   ©r  r.   )r½   r  re   rõ   ÚgetLoggerClassÚsetLoggerClassrf   Ú	getLoggerÚ	propagateÚsetLevelrº  rš   r:   r  rj   )Úclsrò  Úcreated_loggerÚshared_loggerÚoriginal_logger_clss   &&   r   rg   ÚLogBar.sharedn  s  € ô 	1Ô2àˆØˆçŽ[ÜÒ!Ü &‘à&*Ð#ç&Ü*1×*@Ò*@Ó*BÐ'ä×&Ò&¤vÔ.ðDÜ$×.Ò.¨xÓ8�Fç*Ð/BÒ/NÜ×.Ò.Ð/BÔCà#(”Ô Ü—‘¤§¡Ô-Ø!%�Ü &�÷' ð* Ò Ü#×-Ò-¨hÓ7ˆMçß–ä�r˜t¨4Õ0÷ ô 	*Ô+ä Ô"àÐø÷) +Ð/BÒ/NÜ×.Ò.Ð/BÕCð 0O˜?ú÷ �[ú÷2 —ús5   �E#·/E#Á'D:Á=AE#ÄE6Ä:&E Å E#Å#E3	Å6F	Úoutput_intervalNc                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r    Úiterabler  )r   r   r$   )r%   ró  s   "€r   r&   rô  �  s#   ø€ ÷ _ñ _™8ð _¹Á#½ñ _r   c               ó@   € ^ RI Hp V! WVR7      P                  V 4      # )zBCreate and attach a determinate progress bar owned by this logger.rœ   )Úownerr  )Úlogbar.progressr�   Úattach)rÏ   r  r  r�   s   &&$ r   rÿ   Ú	LogBar.pb�  s    € õ 	0á˜8ÀÔQ×XÑXÐY]Ó^Ð^r   Úintervalg      à?Útail_lengthc                óB   <€ V ^8„  d   QhRS[ RS[S[,          RS[RS[/# )r    Útitler  r
  r  )r#   r   r$   Úfloat)r%   ró  s   "€r   r&   rô  ¤  s7   ø€ ÷  ñ  áð ñ "¡#�ð	 ñ
 ð ñ ñ r   c               óz   € ^ RI Hp V! V VVVR7      pV'       d   VP                  V4       VP                  V 4      # )z3Create and attach an indeterminate rolling spinner.)ÚRollingProgressBar)r  r  r
  r  )r  r  r  r  )rÏ   r  r  r
  r  r  rG  s   &&$$$  r   ÚspinnerÚLogBar.spinner¤  s=   € õ 	7á ØØ+ØØ#ô	
ˆ÷ Ø�I‰I�eÔØ�z‰z˜$ÓÐr   c                ó    <€ V ^8„  d   QhRS[ /# rI   rJ   )r%   ró  s   "€r   r&   rô  º  s   ø€ ÷ ñ ¡$ñ r   c                óf  € \        V4      pV P                  ;_uu_ 4        W P                  9   d    RRR4       R# \        V P                  4      V P                  8”  d   V P                  P                  4        V P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)z9Track deduplicated messages for the `.once(...)` helpers.NFT)ÚhashÚ_history_lockÚhistoryr�   Úhistory_limitrB  Úadd)rÏ   ÚmsgÚhs   && r   Úhistory_addÚLogBar.history_addº  s�   € ô �‹Iˆà××ÓØ—L‘LÔ Ø÷  Ñô �4—<‘<Ó  4×#5Ñ#5Ô5Ø—‘×"Ñ"Ô$à�L‰L×Ñ˜QÔ÷  ñ ÷  Öñ ús    B¼ABÂB0	c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚLogBar.critical_clsiÊ  zBProxy object that preserves legacy `log.critical.once(...)` calls.c                ó   € Wn         R# ©z-Bind the proxy to its owning logger instance.N©re   ©rÏ   re   s   &&r   Ú__init__ÚLogBar.critical_cls.__init__Í  ó	   € ð !ŽKr   c                ód   € V P                   P                  V4      '       d   V ! V.VO5/ VB  R# R# ©z5Emit the message only if it has not been seen before.N©re   r  ©rÏ   r  r8   r9   s   &&*,r   ÚonceÚLogBar.critical_cls.onceÒ  ó0   € ð �{‰{×&Ñ& s×+Ò+Ù�SÐ*˜4Ò* 6Ô*ñ ,r   c                ód   € V P                   P                  ! \        P                  V.VO5/ VB  R# )z8Dispatch a critical message through the logger pipeline.N)re   Ú_processrÀ  rÅ  r*  s   &&*,r   Ú__call__ÚLogBar.critical_cls.__call__Ø  s&   € ð �K‰K× Ò ¤§¡°ÐF°tÒF¸vÔFr   r"  N©
rT   rÁ  rÂ  rÃ  rÄ  r$  r+  r0  rÆ  Ú__classdictcell__©ró  s   @r   Úcritical_clsr  Ê  s   ø‡ € ÙPò	!ò
	+÷	Gð 	Gr   r5  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚLogBar.warn_clsiÝ  z>Proxy object that preserves legacy `log.warn.once(...)` calls.c                ó   € Wn         R# r!  r"  r#  s   &&r   r$  ÚLogBar.warn_cls.__init__à  r&  r   c                ód   € V P                   P                  V4      '       d   V ! V.VO5/ VB  R# R# r(  r)  r*  s   &&*,r   r+  ÚLogBar.warn_cls.onceå  r-  r   c                ód   € V P                   P                  ! \        P                  V.VO5/ VB  R# )z7Dispatch a warning message through the logger pipeline.N)re   r/  rÀ  r»  r*  s   &&*,r   r0  ÚLogBar.warn_cls.__call__ë  ó&   € ð �K‰K× Ò ¤§¡¨SÐB°4ÒB¸6ÔBr   r"  Nr2  r4  s   @r   Úwarn_clsr7  Ý  ó   ø‡ € ÙLò	!ò
	+÷	Cð 	Cr   r?  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚLogBar.debug_clsið  z?Proxy object that preserves legacy `log.debug.once(...)` calls.c                ó   € Wn         R# r!  r"  r#  s   &&r   r$  ÚLogBar.debug_cls.__init__ó  r&  r   c                ód   € V P                   P                  V4      '       d   V ! V.VO5/ VB  R# R# r(  r)  r*  s   &&*,r   r+  ÚLogBar.debug_cls.onceø  r-  r   c                ód   € V P                   P                  ! \        P                  V.VO5/ VB  R# )z5Dispatch a debug message through the logger pipeline.N)re   r/  rÀ  r¹  r*  s   &&*,r   r0  ÚLogBar.debug_cls.__call__þ  ó&   € ð �K‰K× Ò ¤§¡¨cÐC°DÒC¸FÔCr   r"  Nr2  r4  s   @r   Ú	debug_clsrB  ð  ó   ø‡ € ÙMò	!ò
	+÷	Dð 	Dr   rJ  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚLogBar.info_clsi  z>Proxy object that preserves legacy `log.info.once(...)` calls.c                ó   € Wn         R# r!  r"  r#  s   &&r   r$  ÚLogBar.info_cls.__init__  r&  r   c                ód   € V P                   P                  V4      '       d   V ! V.VO5/ VB  R# R# r(  r)  r*  s   &&*,r   r+  ÚLogBar.info_cls.once  r-  r   c                ód   € V P                   P                  ! \        P                  V.VO5/ VB  R# )z5Dispatch an info message through the logger pipeline.N)re   r/  rÀ  rº  r*  s   &&*,r   r0  ÚLogBar.info_cls.__call__  r>  r   r"  Nr2  r4  s   @r   Úinfo_clsrM    r@  r   rT  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚLogBar.error_clsi  z?Proxy object that preserves legacy `log.error.once(...)` calls.c                ó   € Wn         R# r!  r"  r#  s   &&r   r$  ÚLogBar.error_cls.__init__  r&  r   c                ód   € V P                   P                  V4      '       d   V ! V.VO5/ VB  R# R# r(  r)  r*  s   &&*,r   r+  ÚLogBar.error_cls.once  r-  r   c                ód   € V P                   P                  ! \        P                  V.VO5/ VB  R# )z6Dispatch an error message through the logger pipeline.N)re   r/  rÀ  r¼  r*  s   &&*,r   r0  ÚLogBar.error_cls.__call__$  rI  r   r"  Nr2  r4  s   @r   Ú	error_clsrV    rK  r   r]  c                ó&  <€ \         SV `  V4       V P                  V n        V P                  V n        V P                  V n        V P                  V n	        V P                  V n        V P                  V R7      V n        V P                  V R7      V n        V P                  V R7      V n        V P!                  V R7      V n        V P#                  V R7      V n
        \%        4       V n        \(        P*                  ! 4       V n        \/        4       V n        R# )z;Initialize the logger and install the legacy level proxies.r"  N)Úsuperr$  ÚwarningÚ_warningÚdebugÚ_debugrh   Ú_infoÚerrorÚ_errorÚcriticalÚ	_criticalr?  ÚwarnrJ  rT  r]  r5  r|  r  r—   ÚLockr  rÏ  Ú_symbol_prefix)rÏ   r£   rS   s   &&€r   r$  ÚLogBar.__init__)  sÉ   ø€ ô 	‰Ñ˜ÔØŸ™ˆŒØ—j‘jˆŒØ—Y‘YˆŒ
Ø—j‘jˆŒØŸ™ˆŒà—M‘M¨�MÓ.ˆŒ	Ø—^‘^¨4�^Ó0ˆŒ
Ø—M‘M¨�MÓ.ˆŒ	Ø—^‘^¨4�^Ó0ˆŒ
Ø×)Ñ)°Ð)Ó6ˆŒä“uˆŒÜ&Ÿ^š^Ó-ˆÔÜ4Ó6ˆÖr   Tc                ó$   <€ V ^8„  d   QhRS[ RR/# )r    Úenabledr"   rf   rJ   )r%   ró  s   "€r   r&   rô  =  s   ø€ ÷ ñ ©ð ¸ñ r   c                ó&   € \        V4      V n        V # )zCEnable or disable colored symbol prefixes in favor of colored text.)rK   rk  )rÏ   rn  s   &&r   Úset_symbol_prefixÚLogBar.set_symbol_prefix=  s   € ô # 7›mˆÔØˆr   c                ó@   <€ V ^8„  d   QhRS[ S[S[S[3,          RS[/# )r    rÉ  r"   ©r	   rÀ  r$   r#   )r%   ró  s   "€r   r&   rô  C  s&   ø€ ÷ 
ñ 
¡e©E±3¹¨OÕ&<ð 
Áñ 
r   c                óð  € \        V\        4      '       d   \        V,          # \        V\        4      '       d   V# \        V\        4      '       dœ   VP                  4       P                  4       pV'       g   \        R4      hV\        9   d   \        V,          # TpVP                  R4      '       d
   VR,          pVP                  4       '       d   \        V4      # \        RV: 24      h\        R4      h)z=Normalize enum, string, or numeric levels to stdlib integers.zLog level must not be empty.rP  zUnknown log level: z8Log level must be a LEVEL enum, integer, or string name.)Ú+Ú-)Ú
isinstancerÀ  ÚLEVEL_TO_LOGGINGr$   r#   rY   ÚupperÚ
ValueErrorÚLEVEL_NAME_TO_LOGGINGÚ
startswithÚisdigitrn  )rÏ   rÉ  Ú
normalizedÚnumerics   &&  r   Ú_normalize_levelÚLogBar._normalize_levelC  sË   € ô �eœU×#Ò#Ü# EÕ*Ð*ä�eœS×!Ò!ØˆLä�eœS×!Ò!ØŸ™›×,Ñ,Ó.ˆJßÜ Ð!?Ó@Ð@àÔ2Ô2Ü,¨ZÕ8Ð8à ˆGØ×$Ñ$ Z×0Ò0Ø$ R�.�à�‰× Ò Ü˜:“Ð&äÐ2°5±)Ð<Ó=Ð=äØFó
ð 	
r   c                óF   <€ V ^8„  d   QhRS[ S[S[S[3,          RS[RS[/# )r    rÉ  rù   r"   rs  )r%   ró  s   "€r   r&   rô  a  s.   ø€ ÷ 
ñ 
¡%©©s±C¨Õ"8ð 
ÉCð 
ÑTWñ 
r   c                óª  € \        V\        4      '       d   VP                  # \        V\        4      '       dj   VP	                  4       P                  4       pVR9   d   \        P                  P                  # VR9   d   \        P                  P                  # VR9   d   V# \        P                  V\        \        P                  ! V4      4      4      # )z:Resolve the display label used in the rendered log prefix.)rí  r»  )rÅ  rî  r½  )r¹  rº  r¼  )rw  rÀ  r¤   r#   rY   ry  r»  rÅ  rô   rX   rõ   rö   )rÏ   rÉ  rù   r~  s   &&& r   Ú_level_labelÚLogBar._level_labela  s§   € ô �eœU×#Ò#Ø—;‘;Ðä�eœS×!Ò!ØŸ™›×,Ñ,Ó.ˆJØÐ0Ô0Ü—z‘z×'Ñ'Ð'ØÐ:Ô:Ü—~‘~×+Ñ+Ð+ØÐ7Ô7Ø!Ð!ä%×)Ñ)ØÜ”×$Ò$Ð%5Ó6Ó7ó
ð 	
r   c                ó>   <€ V ^8„  d   QhRS[ S[S[S[3,          RR/# )r    rÉ  r"   Nrs  )r%   ró  s   "€r   r&   rô  u  s&   ø€ ÷ 7ñ 7™e¡E©3± OÕ4ð 7¸ñ 7r   c                óD   <€ \         SV `  V P                  V4      4       R# )zASet the per-instance minimum output threshold for LogBar methods.N)r_  rü  r€  )rÏ   rÉ  rS   s   &&€r   rü  ÚLogBar.setLevelu  s   ø€ ô 	‰Ñ˜×.Ñ.¨uÓ5Ö6r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# rI  rJ  )r%   ró  s   "€r   r&   rô  z  s"   ø€ ÷ .ñ .±HÑ=OÕ4Pð .Ñ\`ñ .r   c                ó^   € V P                   '       g   R# Vf   \        4       pVP                  # )zLReturn whether this logger should reserve/use a one-character symbol prefix.F)rk  rG   Úsupports_symbols)rÏ   r`   s   &&r   Ú_resolve_symbol_prefixÚLogBar._resolve_symbol_prefixz  s-   € ð ×"×"Ð"ÙØÒ Ü9Ó;ˆMØ×-Ñ-Ð-r   ÚcolsÚwidthÚpaddingc                óf   <€ V ^8„  d   QhRS[ S[,          RS[ S[S[S[S[3,          ,          RS[/# )r    rŽ  r�  r�  )r   r   r	   r#   r$   r  )r%   ró  s   "€r   r&   rô  ƒ  s=   ø€ ÷ 
ñ 
¡h©xÕ&8ð 
ÉÑQVÑWZÑ\_ÑafÐWfÕQgÕHhð 
Ñz}ñ 
r   c          
     óÈ  a € RpVeG   \        V\        \        34      '       d   V.pMœ\        V\        4      '       d   \	        V4      pMzV.pMvV'       do   \        V4      ^8X  dT   \        V^ ,          \        4      '       d7   \        V^ ,          \        \        34      '       g   \	        V^ ,          4      pM\	        V4      pR V 3R llp\        S VVV\        VR R7      # )z>Return a column-aware helper that keeps column widths aligned.Nc                ó$   € V ^8„  d   QhR\         /# rI   rç   )r%   s   "r   r&   Ú$LogBar.columns.<locals>.__annotate__•  s   € ÷ 	Dñ 	D¬Cñ 	Dr   c                 ó6   <€ \        S P                  4       4      # )z@Resolve the current prefix width from the logger at render time.)rã  rŒ  )rÏ   s   €r   Ú_level_max_length_providerÚ2LogBar.columns.<locals>._level_max_length_provider•  s   ø€ ô % T×%@Ñ%@Ó%BÓCÐCr   c                  ó   € \        4       # rª   r?   r   r   r   r«   Ú LogBar.columns.<locals>.<lambda>¡  s   € ¬=¬?r   )re   Úheadersr�  Ú
width_hintÚ
level_enumÚlevel_max_length_providerÚterminal_size_provider)rw  r#   Úbytesr   ró   r�   r   rÀ  )rÏ   rŽ  r�  r�  rš  Úheader_defsr–  s   f$$$*  r   rh  ÚLogBar.columnsƒ  sÅ   ø€ ð +/ˆàÒÜ˜$¤¤e ×-Ò-Ø#˜f‘Ü˜D¤(×+Ò+Ü" 4›j‘à#˜f‘ßÜ�7‹|˜qÔ ¤Z°¸µ
¼H×%EÒ%EÌjÐY`ÐabÕYcÔfiÔkpÐeq×NrÒNrÜ" 7¨1¥:Ó.‘ä" 7›m�÷	Dð 	Dô
 ØØØØÜØ&@Ù#:ô
ð 	
r   c                ó’  € V'       g   \        V4      # \        V4      p. pR pTp V! Wc4      w  rxVP                  V4       V'       d   W8R pV'       g   M:V^ ,          p	\        V	\         4      '       d   RV	9   d   VP	                  ^ 4      pKj   V'       d   VP                  R V 4       4       RP                  R V 4       4      # )zEFormat a log message while gracefully handling extra positional args.c                ó  € \        V \        4      '       g   \        V 4      ^ 3# V'       g   \        V 4      ^ 3# \        V4      ^8X  d0   \        V^ ,          \        4      '       d    W^ ,          ,          ^3# \        \        V4      ^ R4       F  p\        VRV 4      p W,          V3u # 	  \        V 4      ^ 3#   \        \
        \        3 d    \        T 4      ^ 3u # i ; i  \        \
        \        3 d     Ko  i ; i)zDConsume the longest prefix of args that satisfies one format string.NrŽ   )	rw  r#   r�   ru  rn  rz  ÚKeyErrorrZ  Útuple)ÚfmtÚ	availabler  Úsubsets   &&  r   Úconsume_formatÚ.LogBar._format_message.<locals>.consume_format¬  sî   € ô ˜c¤3×'Ò'Ü˜3“x �{Ð"çÜ˜3“x �{Ð"ä�9‹~ Ô"¤z°)¸Aµ,Ä×'EÒ'Eð'Ø¨1¥Õ-¨qÐ0Ð0ô œS ›^¨Q°Ö3�Ü˜y¨¨#˜Ó/�ðØ�<¨Ð,Ò,ñ 4ô �s“8˜Q�;Ðøô "¤:¬xÐ8ô 'Ü˜s›8 Q˜;Ò&ð'ûô "¤:¬xÐ8ô Úðús$   Á'B; Â 	C$Â;#C!Ã C!Ã$C>Ã=C>NÚ%c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irª   rÅ   )rÈ  Úargs   & r   rÊ  Ú)LogBar._format_message.<locals>.<genexpr>Ö  s   é € Ð7©Y cœ˜SŸ˜«Yùrá  r�   c              3   ó8   "  € T F  q'       g   K  Vx € K  	  R # 5irª   r   )rÈ  Úparts   & r   rÊ  r®  Ø  s   é € Ð7© ³$Ÿš«ùs   ‚	�
)r#   ró   r&  rw  ÚpopÚextendr~   )
rÏ   r  r8   Ú	remainingÚpartsr©  ÚcurrentÚ	formattedÚconsumedÚnext_candidates
   &&&       r   Ú_format_messageÚLogBar._format_message¤  s²   € çÜ�s“8ˆOä˜“Jˆ	Øˆò	ð0 ˆØÙ"0°Ó"DÑˆIØ�L‰L˜Ô#ßØ% iÐ0�	çØà& q�\ˆNÜ˜.¬#×.Ò.°3¸.Ô3HØ#Ÿ-™-¨Ó*�ÙàçØ�L‰LÑ7©YÓ7Ô7à�x‰xÑ7©Ó7Ó7Ð7r   rñ   r`   c                óL   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[S[,          RR/# )r    rù   rû   rú   rñ   r`   r"   N)r$   r#   rK   r   r   )r%   ró  s   "€r   r&   rô  Ú  sU   ø€ ÷ <Cñ <Cáð<Cñ ð<Cñ ð	<Cñ ð<Cñ  Ñ 2Õ3ð<Cð 
ñ<Cr   c               ó„  € \        4       pT;'       g    \        4       pVP                  pVP                  pV P	                  V4      p	\        W)4      p
\        ;_uu_ 4        \        pRRR4       \        V4      pV
^,           V,           pV^ 8”  d1   \        ^ Wz,
          ^,
          V,
          4      pV RV,           2pTpM,Tp\        ^ XV,
          4      pV'       d   V RV,           2MTpV'       d0   \        V4      '       d   VP                  P                  W34       R# \        RRVR7       \        W%P                  V	4      pVP                  '       d   RMRp\!        RV V V 2R	RR
7       \        ;_uu_ 4        VsRRR4       \#        VR7       R#   + '       g   i     EL<; i  + '       g   i     L2; i)z=Emit one log line while preserving any active progress stack.Nr�   FT)r  r  r`   rY  rN   rŒ   rz   r÷  r  )r¨   rG   rh  rA   rŒ  rÛ  r  rD  r   r}  rî   rò   r&  r*  rì  rt   r:   r–  )rÏ   rù   rû   rú   rñ   r`   r  rh  ræ   rÒ  rè  Úprevious_render_lengthÚmessage_widthÚline_lengthÚpadding_neededÚrendered_messageÚprintable_lengthÚexcess_paddingÚprefixÚ
clear_lines   &&&&$$              r   r÷   ÚLogBar._emit_log_line_lockedÚ  s›  € ô /Ó0Ðð &×HÐHÔ)FÓ)HˆØ×'Ñ'ˆØ%×+Ñ+ˆØ ×7Ñ7¸ÓFÐÜ" ;ÓBˆçŽ[Ü%9Ð"÷ ô ' wÓ/ˆØ! A•o¨Õ5ˆà�QŒ;ô !  GÕ$9¸AÕ$=ÀÕ$MÓNˆNØ") ¨3°Õ+?Ð*@ÐAÐØ&Ñà*ÐÜ  Ð$:Ð=MÕ$MÓNˆNßES ' ¨3°Õ+?Ð*@ÑAÐY`ÐçÔ:¸=×IÒIØ×3Ñ3×:Ñ:Ð<LÐ;VÔWÙô
 	%ØØØ'õ	
ô ˜{×,GÑ,GÐIZÓ[ˆð #0×"=×"=Ð"=‘YÀ2ˆ
Ü��J�< ˜xÐ(8Ð'9Ð:ÀÈDÕQçŽ[Ø#3Ð ÷ ô 	&°M×B÷Q �[ˆ[ú÷J �[ús   Á!FÆF/ÆF,	Æ/F?	c                ó:   <€ V ^8„  d   QhRS[ S[S[S[3,          /# )r    rÉ  rs  )r%   ró  s   "€r   r&   rô    s   ø€ ÷ ñ ™e¡E©3± OÕ4ñ r   c           
     ó¶  € V P                  V4      pV P                  V4      '       g   R# V P                  W4      pV P                  W#4      p\        ;_uu_ 4        \        4       pVP                  p	\        4       P                  '       d   \        V	4      '       g   \        4        V P                  VVVRVR7       RRR4       R#   + '       g   i     R# ; i)z:Shared implementation for all public logging entry points.NT)rñ   r`   )r€  ÚisEnabledForr„  r¹  rš   rG   rA   r¨   rò   rî   rü   r÷   )
rÏ   rÉ  r  r8   r9   rù   rû   rú   r`   ræ   s
   &&&*,     r   r/  ÚLogBar._process  s±   € ð  ×0Ñ0°Ó7ÐØ× Ñ Ð!1×2Ò2Ùà×'Ñ'¨Ó@ˆØ×&Ñ& sÓ1ˆçŽ\Ü9Ó;ˆMØ)×/Ñ/ˆMÜ!Ó#×9×9Ð9ÔBaÐbo×BpÒBpÜ+Ô-à×&Ñ&Ø ØØØ Ø+ð 'ô ÷ �\�\Š\ús   ÁA"CÃC	)rh  rc  rf  r  rd  rk  ra  rg  rb  re  r  rh   ri  ©F)rN   )Trª   )(rT   rÁ  rÂ  rÃ  rÄ  rõ   rï  r¹  rº  rí  r»  r¼  rÅ  rî  r|  r  r  Úclassmethodrg   rÿ   r  r  r5  r?  rJ  rT  r]  r$  rp  r€  r„  rü  rŒ  rh  r¹  r÷   r/  rÆ  r3  Ú__classcell__)rS   ró  s   @@r   rf   rf   _  s�  ù‡ € ÙMà�^‰^€FØ�M‰M€EØ�<‰<€DØ�?‰?€DØ�o‰o€GØ�M‰M€EØ×Ñ€HØ×Ñ€Eá‹e€GØ€Mà÷*ñ *ó ð*ðZ_È÷ _ò _ñ ð *.ð	 ð
 ð ð ÷ ó  ÷,ð ÷ Gñ G÷&Cñ C÷&Dñ D÷&Cñ C÷&Dñ Dõ&7÷(ò ÷
ð 
÷<
ð 
÷(7ó 7÷
.ò .ð
¸4ð 
Ðkoð 
ð  AB÷ 
ò 
òB48ðl<Cð !ð<Cð 7;÷<Cò <C÷|÷ ð r   rf   c                óV   € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r    r‚   )Ú__conditional_annotations__r   r#   )r%   s   "r   r&   r&      s   € ‡�÷@ 0Ò /œ8¤C�=Ñ /òA r   rª   )NN)FN)NNN)FNNNrË  )|rÏ  Úatexitr6   rõ   rV   r   r—   r�  Úenumr   Ú	functoolsr   r   Útypingr   r   r   r	   r
   Úterminalr   r   r   r   rh  r   r   r)  r   Úcoordinatorr   Údrawingr   r   r   Úregionr   re   rD  r˜   r  rš   r»   rc   rb   r   r*   r1   r:   r   r‚   rƒ   r�   rG   rF   rj   rp   ru   rˆ   r•   r›   Úprogressr�   r¦   r¨   r    r  Úregister_regionÚroot_region_idr«  r¸   r½   r¼   rë   rî   rü   r  r  r  r  r*  r7  r:  rÍ   ÚregisterrL  rS  r^  rb  rf  rr  r–  rš  r  r¢  r¦  r±  r  rç  r#   rÀ  r}  rÙ  rÕ  rÔ  rÏ  rÖ  rÛ  rã  rì  r¹  rº  r»  rí  r¼  rÅ  rx  rï  r{  r¤   rô   ÚLoggerrf   r&   )rÏ  s   @r   Ú<module>rÝ     sÝ  øð÷ €Û Û Û 	Û 
Û Û Ý ß &ß EÕ E÷ó ÷ 0Ý 'Ý *ß =Ñ =Ý ð 
€ØÐ à�oŠoÓ€Ø�ŠÓ €Ø-2Ð *ØÐ Ø—_’_Ó&Ð ò+õõõ$ð  Ð Ø+/Ð Ó /ØÐ ØÐ ÷õ*/÷<Hõ:!õõ<ð~-;ÐPU÷ -;õ^÷
 Ý%÷ ò-ñ 0ÙTôÐ ñ  °Ô9Ð Ø × +Ñ +Ð,G×,VÑ,VÐXjÔ kÙ Ô !ØÐ õDõ6õ(@%õF2õ&õ"
õ0(õ+õ+÷.ð0f&àðf&ð !ðf&ð !%ð	f&ð
 37÷f&õR õF#-õL;ð| ‡‚Ð*Ô +÷õ8õ$÷DFõBõ
÷:m'÷`{õ>õ+õõ ?#õDð0 ˆZØ
ˆJØ
ˆJØˆZØ
ˆJØˆYð
€ôˆC�ô ñ Ñ;±UÓ;Ó;Ð àÐ ð Ð!Ø
Ð Ø
Ð ØÐ!Ø
Ð ð€õAõõ0õñ �2Ôö@ó ð@ð$ 
‡K�K�—‘Ø	‡J�J�—‘Ø	‡J�J�—‘Ø	‡K�K�—‘Ø	‡N�N�G×$Ñ$ðÐ ð ˆW�]‰]Ø
ˆG�L‰LØ
ˆG�O‰OØˆw�‰ØˆW�]‰]Ø
ˆG×ÑØ�× Ñ ØˆW×ÑØˆg�n‰nð
Ð ð ‡M�M�5—;‘;×$Ñ$Ø‡L�L�%—*‘*×"Ñ"Ø‡O�O�U—Z‘Z×%Ñ%Ø‡M�M�5—;‘;×$Ñ$Ø×Ñ�e—n‘n×*Ñ*ðÐ ôOˆW�^‰^ö Or   