+
    "Ý³j;x  ã                   óÚ   € R t ^ RIt^ RIHt ^ RIHt ^ RIHtHtH	t	H
t
HtHtHtHtHt ^RIHt ^RIHt ^RIHt ^RIHt R	 R
 ltRR R lltR t] ! R R4      4       t ! R R4      tR# )z(Column layout helpers for LogBar output.N)Ú	dataclass©Úwraps)	ÚAnyÚCallableÚDictÚIterableÚListÚOptionalÚSequenceÚTupleÚUnion)Úiter_display_atoms)Ú
strip_ansi)Úvisible_length)Úterminal_sizec                ó<   € V ^8„  d   QhR\         R\        R\         /# )é   ÚtextÚtargetÚreturn©ÚstrÚint)Úformats   "ÚO/home/luca/screen-checking/.venv/lib/python3.14/site-packages/logbar/columns.pyÚ__annotate__r      s!   € ÷ /ñ /”sð /¤Cð /¬Cñ /ó    c                óN   € \        V 4      pW!8¼  d   V # V  RW,
          ,           2# )z@Pad text to a target rendered width while ignoring ANSI escapes.Ú )Ú_visible_length)r   r   Úcurrents   && r   Ú_pad_visibler"      s1   € ô ˜dÓ#€GØÔØˆØˆV�C˜6Õ+Õ,Ð-Ð.Ð.r   c                óH   € V ^8„  d   QhR\         R\        R\         R\         /# )r   r   r   Úplaceholderr   r   )r   s   "r   r   r      s(   € ÷ %ñ %”sð %¤Cð %´cð %Äcñ %r   c                ó2  € V^ 8:  d   R# \        V 4      pW18  d   V  RW,
          ,           2# W18X  d   V # . p^ p\        V4      pW8¼  d	   W,
          MTp\        V 4       FI  w  r‰p
V'       d   VP                  V	4       K!  WZ,           V8”  d    MVP                  V	4       WZ,          pKK  	  W8¼  d   VP                  V4       WV,          pRV 9   d   VP                  R4       WQ8  d   VP                  RW,
          ,          4       RP                  V4      # )zAPad or truncate `text` so its rendered width is exactly `target`.Ú r   Úz[0m)r    Ú_iter_display_atomsÚappendÚjoin)r   r   r$   r!   ÚresultÚwidthÚph_widthÚbudgetÚis_ansiÚtokenÚtoken_widths   &&&        r   Ú_fit_visibler2      s  € ð �„{Ùä˜dÓ#€GØÔØ�˜˜vÕ/Õ0Ð1Ð2Ð2ØÔØˆà€FØ€EÜ˜{Ó+€HØ"(Ô"4ˆVÖ¸&€Fä':¸4Ö'@Ñ#ˆ˜ßØ�M‰M˜%Ô ÙØÕ Ô'ÙØ�‰�eÔØÕŠñ (Að ÔØ�‰�kÔ"ØÕˆð �„~Ø�‰�iÔ à„~Ø�‰�c˜V�^Õ,Ô-à�7‰7�6‹?Ðr   c                ó0   a € \        S 4      V 3R l4       pV# )zBSerialize one `ColumnsPrinter` API call through its instance lock.c                 ó‚   <€ V P                   ;_uu_ 4        S! V .VO5/ VB uuR R R 4       #   + '       g   i     R # ; i©N)Ú_lock)ÚselfÚargsÚkwargsÚmethods   &*,€r   ÚwrapperÚ _columns_locked.<locals>.wrapperG   s*   ø€ à�Z�Z‹ZÙ˜$Ð0 Ò0¨Ñ0÷ �Z�Z‹Zús   –-­>	r   )r:   r;   s   f r   Ú_columns_lockedr=   D   s"   ø€ ô ˆ6ƒ]ô1ó ð1ð €Nr   c                   óJ   a € ] tR t^Ot o Rt^tRtV 3R lR ltV 3R ltRt	V t
R# )Ú
ColumnSpeczDDescribe one logical column, including span and optional width hint.Nc                ó   <€ V ^8„  d   QhRR/# ©r   r   N© )r   Ú__classdict__s   "€r   r   ÚColumnSpec.__annotate__W   s   ø€ ÷ ñ ˜tñ r   c                ó:   € V P                   ^8  d
   ^V n         R# R# )zCClamp invalid spans so downstream layout math always has >= 1 slot.N©Úspan©r7   s   &r   Ú__post_init__ÚColumnSpec.__post_init__W   s   € ð �9‰9�qŒ=ØˆDŽIñ r   c                ód   <€ V ^8„  d   Qh/ S[ ;R&   S[;R&   S[S[S[ S[3,          ,          ;R&   # )r   ÚlabelrG   r,   )r   r   r
   r   Úfloat)r   rC   s   "€r   r   rD   O   s8   ø‡ ‚ ñ �Jñ	 ñ
 �Mñ ñ ‘E™#™u˜*Õ%Õ&Ñ-ò r   rF   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rG   r,   rI   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©rC   s   @r   r?   r?   O   s%   ø‡ € áNð €DØ)-€E÷ð ÷ ƒ r   r?   c                   ó¢  a € ] tR t^^t o Rt ! R R4      tRWR^RRRR/V 3R lR	 llltV 3R
 lR lt]V 3R lR l4       t	]V 3R lR l4       t
]V 3R lR l4       t]RWV 3R lR ll4       t]V 3R lR l4       tV 3R lR lt]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R  lR! l4       t]V 3R" lR# l4       t]V 3R$ lR% l4       t]V 3R& lR' l4       t]V 3R( lR) l4       tV 3R* lR+ ltV 3R, lR- ltV 3R. lR/ ltV 3R0 lR1 ltV 3R2 lR3 ltV 3R4 lR5 ltV 3R6 lR7 ltV 3R8 lR9 lt V 3R: lR; lt!V 3R< lR= lt"V 3R> lR? lt#RWV 3R@ lRA llt$V 3RB lRC lt%V 3RD lRE lt&V 3RF lRG lt'V 3RH lRI lt(V 3RJ lRK lt)V 3RL lRM lt*V 3RN lRO lt+V 3RP lRQ lt,V 3RR lRS lt-RXV 3RT lRU llt.RVt/V t0R# )YÚColumnsPrinterz=Helper that formats rows into aligned columns using `LogBar`.c                   ó~   a € ] tR t^at o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )ÚColumnsPrinter._LevelProxyz;Expose level-specific helpers such as `cols.info.header()`.c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r   ÚprinterrX   Úlevelr   N©r   )r   rC   s   "€r   r   Ú'ColumnsPrinter._LevelProxy.__annotate__d   s#   ø€ ÷ 	 ñ 	 Ð$4ð 	 ¹Sð 	 ÀTñ 	 r   c                ó   € Wn         W n        R# )z2Bind one logging level to a `ColumnsPrinter` view.N)Ú_printerÚ_level)r7   r\   r]   s   &&&r   Ú__init__Ú#ColumnsPrinter._LevelProxy.__init__d   s   € ð $ŒMØŽKr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r   Úvaluesr   ©r   r   )r   rC   s   "€r   r   r_   j   s   ø€ ÷ 	Bñ 	B¡Cð 	B©Cñ 	Br   c                óN   € V P                   P                  V P                  V4      # )z2Render and emit a row for the bound logging level.)ra   Ú_log_valuesrb   ©r7   rg   s   &*r   Ú__call__Ú#ColumnsPrinter._LevelProxy.__call__j   s   € ð —=‘=×,Ñ,¨T¯[©[¸&ÓAÐAr   c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r   rg   r   Nr^   )r   rC   s   "€r   r   r_   o   s   ø€ ÷ 	@ñ 	@¡Cð 	@¨Dñ 	@r   c                óR   € V P                   P                  V P                  V4       R# )z1Update width calculations without printing a row.N)ra   Ú_simulate_valuesrb   rk   s   &*r   ÚsimulateÚ#ColumnsPrinter._LevelProxy.simulateo   s   € ð �M‰M×*Ñ*¨4¯;©;¸Ö?r   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r   rC   s   "€r   r   r_   t   s   ø€ ÷ 	:ñ 	:™Cñ 	:r   c                óL   € V P                   P                  V P                  4      # )z4Emit the header row and borders for the bound level.)ra   Ú_log_headerrb   rH   s   &r   ÚheaderÚ!ColumnsPrinter._LevelProxy.headert   s   € ð —=‘=×,Ñ,¨T¯[©[Ó9Ð9r   c                ó    <€ V ^8„  d   QhRS[ /# ru   rv   )r   rC   s   "€r   r   r_   y   s   ø€ ÷ 	!ñ 	!™Sñ 	!r   c                ó"   € V P                  4       # )z9Alias `header()` for compatibility with older call sites.)ry   rH   s   &r   ÚheadersÚ"ColumnsPrinter._LevelProxy.headersy   s   € ð —;‘;“=Ð r   )rb   ra   N)rN   rO   rP   rQ   rR   rc   rl   rr   ry   r}   rT   rU   rV   s   @r   Ú_LevelProxyrZ   a   s>   ø‡ € ÙI÷	 ð 	 ÷	Bð 	B÷
	@ð 	@÷
	:ð 	:÷
	!ö 	!r   r   NÚpaddingÚ
width_hintÚterminal_size_providerc                óÐ   <€ V ^8„  d   QhRS[ RS[S[,          RS[RS[S[S[S[S[3,          ,          RS[ RS[. S[3,          RS[S[. S[S[S[3,          3,          ,          RR	/# )
r   Úloggerr}   r€   r�   Ú
level_enumÚlevel_max_length_providerr‚   r   N)	r   r
   r   r   r   r   rM   r   r   )r   rC   s   "€r   r   ÚColumnsPrinter.__annotate__~   s�   ø€ ÷ 'ñ 'áð'ñ ™(Õ#ð'ñ
 ð'ñ ™U¡3©©U ?Õ3Õ4ð'ñ ð'ñ $,¨B±¨GÕ#4ð'ñ !)©°"±e¹CÁ¸HµoÐ2EÕ)FÕ Gð'ð 
ñ'r   c               óš  € Wn         \        V^ 4      V n        . V n        . V n        . V n        . V n        RV n        V P                  V4      V n	        RV n
        WPn        W`n        T;'       g    \        V n        / V n        \         P"                  ! 4       V n        . V n        \)        4       V n        V'       d   V P-                  V4       R# R# )zCCreate a column printer bound to a logger and initial layout hints.FN)Ú_loggerÚmaxÚ_paddingÚ_columnsÚ_slot_widthsÚ_slot_paddingÚ_spec_startsÚ_last_was_borderÚ_parse_width_hintÚ_target_width_hintÚ_current_total_widthÚ_level_enumÚ_level_max_length_providerr   Ú_terminal_sizeÚ_level_proxiesÚ	threadingÚRLockr6   Ú_slot_min_widthsÚsetÚ_fixed_slotsÚ_set_columns)r7   r„   r}   r€   r�   r…   r†   r‚   s   &&&$$$$$r   rc   ÚColumnsPrinter.__init__~   s³   € ð ŒÜ˜G Q›ˆŒØ*,ˆŒØ')ˆÔØ(*ˆÔØ')ˆÔØ %ˆÔØ?C×?UÑ?UÐV`Ó?aˆÔØ37ˆÔ!Ø%ÔØ*CÔ'Ø4×EÐE¼ˆÔØEGˆÔÜ—_’_Ó&ˆŒ
Ø+-ˆÔÜ!$£ˆÔçØ×Ñ˜gÖ&ñ r   c                ó    <€ V ^8„  d   QhRS[ /# ru   ©r   )r   rC   s   "€r   r   r‡   Ÿ   s   ø€ ÷ 1ñ 1¡sñ 1r   c                ó"   € V P                  4       # )zFResolve the current level-prefix width from the logger at render time.)r•   rH   s   &r   Ú_get_level_max_lengthÚ$ColumnsPrinter._get_level_max_lengthŸ   s   € ð ×.Ñ.Ó0Ð0r   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ru   )r	   r   )r   rC   s   "€r   r   r‡   ¥   s   ø€ ÷ +ñ +™™S�	ñ +r   c                ó’   € V P                   ;_uu_ 4        \        V P                  4      uuRRR4       #   + '       g   i     R# ; i)z)Return a copy of the current slot widths.N)r6   Úlistr�   rH   s   &r   ÚwidthsÚColumnsPrinter.widths¤   s'   € ð �Z�Z‹ZÜ˜×)Ñ)Ó*÷ �Z�Z‹Zús	   •5µA	c                ó    <€ V ^8„  d   QhRS[ /# ru   r    )r   rC   s   "€r   r   r‡   ¬   s   ø€ ÷ !ñ !™ñ !r   c                ó€   € V P                   ;_uu_ 4        V P                  uuRRR4       #   + '       g   i     R# ; i)z7Return the configured horizontal padding per slot side.N)r6   r‹   rH   s   &r   r€   ÚColumnsPrinter.padding«   s    € ð �Z�Z‹ZØ—=‘=÷ �Z�Z‹Zús   •,¬=	c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ru   )r	   r?   )r   rC   s   "€r   r   r‡   ³   s   ø€ ÷ ]ñ ]™d¡:Õ.ñ ]r   c           
     óü   € V P                   ;_uu_ 4        V P                   Uu. uF.  p\        VP                  VP                  VP
                  4      NK0  	  upuuRRR4       # u upi   + '       g   i     R# ; i)z:Return a defensive copy of the logical column definitions.N)r6   rŒ   r?   rL   rG   r,   )r7   Úspecs   & r   Úcolumn_specsÚColumnsPrinter.column_specs²   sL   € ð �Z�Z‹ZØNRÏmÊmÓ\ÉmÀd”J˜tŸz™z¨4¯9©9°d·j±jÖAÉmÑ\÷ ŠZùÚ\÷ �ZˆZús   •A*¤4A%ÁA*Á%A*Á*A;	c                óJ   <€ V ^8„  d   QhRS[ S[S[S[S[3,          ,          /# )r   r,   )r
   r   r   r   rM   )r   rC   s   "€r   r   r‡   º   s$   ø€ ÷ :ñ :™8¡E©#©s±E¨/Õ$:Õ;ñ :r   c                óÈ   € Ve   \        R4      hV P                  e   V P                  # ^ pV P                  4       pV'       d
   V^,           pV P                  4       V,           # )z?Return the currently resolved table width including separators.zTColumnsPrinter.width no longer accepts arguments; use ColumnsPrinter.update instead.)Ú	TypeErrorr“   Ú_slot_countÚ_get_target_width)r7   r,   Úseparator_countÚ
slot_counts   &&  r   r,   ÚColumnsPrinter.width¹   sg   € ð ÒÜØfóð ð ×$Ñ$Ò0Ø×,Ñ,Ð,àˆØ×%Ñ%Ó'ˆ
ßØ(¨1�nˆOà×%Ñ%Ó'¨/Õ9Ð9r   c                óL   <€ V ^8„  d   QhRS[ S[S[ S[S[3,          3,          /# )r   Úupdates)r   r   r   )r   rC   s   "€r   r   r‡   Ì   s&   ø€ ÷ 'ñ '™d¡3©©S±#¨X­Ð#6Õ7ñ 'r   c                óø  a	€ V'       g   V # RpVP                  4        EF  w  o	p\        V	3R l\        V P                  4       4       R4      pVf   \	        RS	: 24      hV P                  V,          pVP
                  pVP                  pVP                  p\        V\        4      '       g   \        R4      hRV9   d    VR,          e   \        VR,          4      MRpRV9   d   \        ^\        VR,          4      4      pR	V9   d   V P                  VR	,          4      p\        WgVR
7      V P                  V&   RpEK"  	  V'       d1   V P!                  4        V P#                  4        V P%                  4        V # )z:Mutate existing columns by label and recompute the layout.Fc              3   óR   <"  € T F  w  rVP                   S8X  g   K  Vx € K  	  R # 5ir5   )rL   )Ú.0Úidxr®   rL   s   &  €r   Ú	<genexpr>Ú(ColumnsPrinter.update.<locals>.<genexpr>Ô   s&   øé € ÐdÑ4L¡y sÐPT×PZÑPZÐ^cÑPcŸsšsÓ4Lùs   ƒ'�
'NzUnknown column label: zEUpdate values must be dictionaries mapping attribute names to values.rL   r&   rG   r,   ©rL   rG   r,   T)ÚitemsÚnextÚ	enumeraterŒ   ÚKeyErrorrL   rG   r,   Ú
isinstanceÚdictr³   r   rŠ   r   r‘   r?   Ú_recompute_layoutÚ_apply_initial_widthsÚ_apply_header_widths)
r7   rº   ÚmodifiedÚattrsÚ
spec_indexr®   Ú	new_labelÚnew_spanÚ	new_widthrL   s
   &&       @r   ÚupdateÚColumnsPrinter.updateË   sF  ø€ ÷ ØˆKàˆØ#ŸM™MŸO‰LˆE�5ÜÔd´I¸d¿m¹mÔ4LÓdÐfjÓkˆJØÒ!ÜÐ!7¸±yÐAÓBÐBà—=‘= Õ,ˆDØŸ
™
ˆIØ—y‘yˆHØŸ
™
ˆIä˜e¤T×*Ò*ÜØ[óð ð ˜%ÔØ38¸µ>Ò3MœC  g¥Ô/ÐSU�	à˜ŒÜ˜q¤# e¨F¥mÓ"4Ó5�à˜%ÔØ ×2Ñ2°5¸µ>ÓB�	ä(2¸ÐYbÔ(cˆD�M‰M˜*Ñ%Ø‹Hñ3 ,÷6 Ø×"Ñ"Ô$Ø×&Ñ&Ô(Ø×%Ñ%Ô'àˆr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r]   r   rZ   r^   )r   rC   s   "€r   r   r‡   õ   s   ø€ ÷ *ñ *¡#ð *Ð*Fñ *r   c                óŒ   € WP                   9  d#   \        P                  W4      V P                   V&   V P                   V,          # )z-Cache and return the per-level helper object.)r—   rX   r   )r7   r]   s   &&r   Ú_level_proxyÚColumnsPrinter._level_proxyõ   s<   € ð ×+Ñ+Ô+Ü)7×)CÑ)CÀDÓ)PˆD×Ñ Ñ&Ø×"Ñ" 5Õ)Ð)r   c                ó   <€ V ^8„  d   QhRR/# ©r   r   rZ   rB   )r   rC   s   "€r   r   r‡   ý   ó   ø€ ÷ 9ñ 9Ð3ñ 9r   c                óL   € V P                  V P                  P                  4      # )z&Expose `DEBUG` column logging helpers.)rÕ   r”   ÚDEBUGrH   s   &r   ÚdebugÚColumnsPrinter.debugü   ó!   € ð × Ñ  ×!1Ñ!1×!7Ñ!7Ó8Ð8r   c                ó   <€ V ^8„  d   QhRR/# rØ   rB   )r   rC   s   "€r   r   r‡     ó   ø€ ÷ 8ñ 8Ð2ñ 8r   c                óL   € V P                  V P                  P                  4      # )z%Expose `INFO` column logging helpers.)rÕ   r”   ÚINFOrH   s   &r   ÚinfoÚColumnsPrinter.info  ó!   € ð × Ñ  ×!1Ñ!1×!6Ñ!6Ó7Ð7r   c                ó   <€ V ^8„  d   QhRR/# rØ   rB   )r   rC   s   "€r   r   r‡   	  rà   r   c                óL   € V P                  V P                  P                  4      # )z%Expose `WARN` column logging helpers.)rÕ   r”   ÚWARNrH   s   &r   ÚwarnÚColumnsPrinter.warn  rå   r   c                ó   <€ V ^8„  d   QhRR/# rØ   rB   )r   rC   s   "€r   r   r‡     rÙ   r   c                óL   € V P                  V P                  P                  4      # )z&Expose `ERROR` column logging helpers.)rÕ   r”   ÚERRORrH   s   &r   ÚerrorÚColumnsPrinter.error  rÞ   r   c                ó   <€ V ^8„  d   QhRR/# rØ   rB   )r   rC   s   "€r   r   r‡     s   ø€ ÷ <ñ <Ð6ñ <r   c                óL   € V P                  V P                  P                  4      # )z)Expose `CRITICAL` column logging helpers.)rÕ   r”   ÚCRITICALrH   s   &r   ÚcriticalÚColumnsPrinter.critical  s!   € ð × Ñ  ×!1Ñ!1×!:Ñ!:Ó;Ð;r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r]   r   rh   )r   rC   s   "€r   r   r‡     s   ø€ ÷ ñ ¡ð ©ñ r   c                óØ   € V P                   '       g   R# V P                  4        V P                  V4       V P                  4       pV P	                  W4       V P                  VRR7       V# )z7Emit the bordered header block for the current columns.r&   T©Úforce)rŒ   rÊ   Ú_emit_borderÚ_render_headerÚ
_print_row©r7   r]   Úrows   && r   rx   ÚColumnsPrinter._log_header  s\   € ð �}�}ˆ}Ùà×!Ñ!Ô#Ø×Ñ˜%Ô Ø×!Ñ!Ó#ˆØ�‰˜Ô#Ø×Ñ˜% tÐÔ,Øˆ
r   c                ó,   <€ V ^8„  d   QhRS[ RS[RS[/# )r   r]   rg   r   )r   r   r   )r   rC   s   "€r   r   r‡   )  s"   ø€ ÷ 	ñ 	¡ð 	©hð 	¹3ñ 	r   c                óÖ   € V P                  V4      pV P                  V4       V P                  V4       V P                  V4      pV P	                  W4       V P                  VRR7       V# )zCEmit one bordered row after updating column widths from the values.Tr÷   )Ú_prepare_valuesÚ_update_slot_widthsrù   Ú_render_rowrû   )r7   r]   rg   Úvalues_listrý   s   &&&  r   rj   ÚColumnsPrinter._log_values(  sd   € ð ×*Ñ*¨6Ó2ˆØ× Ñ  Ô-Ø×Ñ˜%Ô Ø×Ñ˜{Ó+ˆØ�‰˜Ô#Ø×Ñ˜% tÐÔ,Øˆ
r   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   r]   rg   r   N)r   r   )r   rC   s   "€r   r   r‡   5  s"   ø€ ÷ .ñ .¡cð .±8ð .Àñ .r   c                óJ   € V P                  V4      pV P                  V4       R# )z=Update width state as if a row were rendered, without output.N)r  r  )r7   r]   rg   r  s   &&& r   rq   ÚColumnsPrinter._simulate_values4  s"   € ð ×*Ñ*¨6Ó2ˆØ× Ñ  Ö-r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   r}   r   N)r   )r   rC   s   "€r   r   r‡   <  s   ø€ ÷ $ñ $¡Hð $°ñ $r   c                óº   € V Uu. uF  q P                  V4      NK  	  upV n        V P                  4        V P                  4        V P	                  4        R# u upi )z@Replace the logical column definitions and rebuild layout state.N)Ú_normalize_columnrŒ   rÈ   rÉ   rÊ   )r7   r}   Úentrys   && r   r�   ÚColumnsPrinter._set_columns;  sO   € ñ ELÓLÁG¸5×/Ñ/°Ö6ÁGÑLˆŒØ×ÑÔ Ø×"Ñ"Ô$Ø×!Ñ!Ö#ùò Ms   …Ac                ó    <€ V ^8„  d   QhRS[ /# ru   )r?   )r   rC   s   "€r   r   r‡   D  s   ø€ ÷ Qñ Q©*ñ Qr   c           	     óŽ  € \        V\        4      '       d&   VP                  pVP                  pVP                  pMê\        V\
        4      '       d�   \        VP                  R4      ;'       g    VP                  R4      ;'       g    R4      pVP                  R4      e   \        VP                  R^4      4      M^pV P                  VP                  R4      4      pMF\        V\        \        34      '       d   \        V4      p^pRpMVf   Rp^pRpM\        RV: 24      h\        V\        ^\        V4      4      VR7      # )	z1Coerce user input into a normalized `ColumnSpec`.rL   Únamer&   rG   Nr,   zPColumn definitions must be strings or dictionaries. Received unsupported entry: rÁ   )rÆ   r?   rL   rG   r,   rÇ   r   Úgetr   r‘   Úbytesr³   rŠ   )r7   r  rL   rG   r�   s   &&   r   r  Ú ColumnsPrinter._normalize_columnD  s  € ô �eœZ×(Ò(Ø—K‘KˆEØ—:‘:ˆDØŸ™‰JÜ˜œt×$Ò$Ü˜Ÿ	™	 'Ó*×EÐE¨e¯i©i¸Ó.?×EÐEÀ2ÓFˆEØ05·	±	¸&Ó0AÒ0M”3�u—y‘y ¨Ó+Ô,ÐSTˆDØ×/Ñ/°·	±	¸'Ó0BÓC‰JÜ˜¤¤U˜|×,Ò,Ü˜“JˆEØˆDØ‰JØŠ]ØˆEØˆDØ‰Jäð/Ø/4©ið9óð ô
  ¬C°´3°t³9Ó,=ÀZÔPÐPr   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   rC   s   "€r   r   r‡   _  s   ø€ ÷ "ñ " 4ñ "r   c                óà  € . p^ pV P                    F&  pVP                  V4       W#P                  ,          pK(  	  Wn        Tp\	        V P
                  4      V8  d?   V P
                  P                  ^ .V\	        V P
                  4      ,
          ,          4       M.\	        V P
                  4      V8”  d   V P
                  RV V n        \	        V P                  4      V8  dI   V P                  P                  V P                  .V\	        V P                  4      ,
          ,          4       M.\	        V P                  4      V8”  d   V P                  RV V n        \	        V P                  4      V8  d?   V P                  P                  ^.V\	        V P                  4      ,
          ,          4       M.\	        V P                  4      V8”  d   V P                  RV V n	        \        4       V n        R# )z<Rebuild slot bookkeeping after the column spec list changes.N)rŒ   r)   rG   r�   Úlenr�   ÚextendrŽ   r‹   rš   r›   rœ   )r7   Ústartsr¾   r®   r·   s   &    r   rÈ   Ú ColumnsPrinter._recompute_layout_  s�  € ð ˆØˆØ—M”MˆDØ�M‰M˜#ÔØ—9‘9ÕŠCñ "ð #ÔØˆ
äˆt× Ñ Ó! JÔ.Ø×Ñ×$Ñ$ a S¨J¼¸T×=NÑ=NÓ9OÕ,OÕ%PÕQÜ�×"Ñ"Ó# jÔ0Ø $× 1Ñ 1°+°:Ð >ˆDÔäˆt×!Ñ!Ó" ZÔ/Ø×Ñ×%Ñ% t§}¡} o¸ÄcÈ$×J\ÑJ\ÓF]Õ9]Õ&^Õ_Ü�×#Ñ#Ó$ zÔ1Ø!%×!3Ñ!3°K°ZÐ!@ˆDÔäˆt×$Ñ$Ó%¨
Ô2Ø×!Ñ!×(Ñ(¨!¨°
¼SÀ×AVÑAVÓ=WÕ0WÕ)XÕYÜ�×&Ñ&Ó'¨*Ô4Ø$(×$9Ñ$9¸+¸:Ð$FˆDÔ!ä›EˆÖr   c                óv   <€ V ^8„  d   QhRS[ S[S[S[S[3,          ,          RS[ S[S[S[3,          ,          /# )r   Úvaluer   )r
   r   r   r   rM   r   )r   rC   s   "€r   r   r‡   {  s=   ø€ ÷ "ñ "¡x±±c¹3Á°oÕ0FÕ'Gð "ÉHÑUZÑ[^Ñ`eÐ[eÕUfÕLgñ "r   c                óö  € Vf   R# \        V\        \        34      '       d   V^ 8:  d   R# R\        V4      3# \        V\        4      '       d‡   VP	                  4       pV'       g   R# VP                  4       pVR8X  d   R# VP                  R4      '       d$    \        VRR 4      R,          pT^ 8:  d   R# RT3#  \        V4      pT^ 8:  d   R# RT3# R#   \         d     R# i ; i  \         d     R# i ; i)	zANormalize width hints such as `fit`, percentages, or fixed chars.NÚcharsÚfitÚ%g      Y@Úpercent)r  g        éÿÿÿÿ)rÆ   r   rM   r   ÚstripÚlowerÚendswithÚ
ValueError)r7   r  ÚrawÚloweredÚratioÚnumerics   &&    r   r‘   Ú ColumnsPrinter._parse_width_hint{  sû   € ð Š=Ùä�eœc¤5˜\×*Ò*Ø˜ŒzÙØœU 5›\Ð*Ð*ä�eœS×!Ò!Ø—+‘+“-ˆCßÙØ—i‘i“kˆGØ˜%ÔØ#Ð#Ø�|‰|˜C× Ò ð Ü! # c r (›O¨eÕ3�Eð ˜A”:ÙØ! 5Ð)Ð)ðÜ ›*�ð ˜!Œ|ÙØ˜WÐ%Ð%áøô "ô  Úð ûô ô Úðús$   ÂC Â=C) ÃC&Ã%C&Ã)C8Ã7C8c                ó    <€ V ^8„  d   QhRS[ /# ru   r    )r   rC   s   "€r   r   r‡   Ÿ  s   ø€ ÷ Lñ L¡ñ Lr   c                óh  € V P                   '       g   ^ # \        R V P                    4       4      pV^ 8X  d   ^ # \        R V P                    4       4      pWP                  ^,          ,          pV^,           p\        ^ V\	        V P                   4      ,
          4      pW#,           V,           V,           # )z<Return the smallest bordered width that can fit the headers.c              3   ó8   "  € T F  qP                   x € K  	  R # 5ir5   rF   ©r½   r®   s   & r   r¿   Ú0ColumnsPrinter._minimal_width.<locals>.<genexpr>¤  s   é € Ð=©} tŸž«}ùs   ‚c              3   ó`   "  € T F$  p\        \        VP                  4      ^4      x € K&  	  R# 5i©é   N)rŠ   r    rL   r.  s   & r   r¿   r/  ¨  s#   é € ÐXÉ-À$œ#œo¨d¯j©jÓ9¸1×=Ð=Ë-ùs   ‚,.)rŒ   Úsumr‹   rŠ   r  )r7   r·   Úbase_labelsÚpadding_totalÚ
separatorsÚinter_column_gapss   &     r   Ú_minimal_widthÚColumnsPrinter._minimal_widthŸ  s‹   € ð �}�}ˆ}ÙÜÑ=¨t¯}ª}Ó=Ó=ˆ
Ø˜Œ?ÙäÑXÈ$Ï-Ê-ÓXÓXˆØ"§m¡m°aÕ&7Õ8ˆØ !•^ˆ
Ü  :´°D·M±MÓ0BÕ#BÓCÐØÕ*¨ZÕ7Ð:KÕKÐKr   c                ó    <€ V ^8„  d   QhRS[ /# ru   r    )r   rC   s   "€r   r   r‡   ®  s   ø€ ÷ &,ñ &,¡3ñ &,r   c                óf  € V P                   pV P                  4       w  r#V^ 8:  d   ^PpV P                  4       pV'       d
   V^,           M^ p\        ^ W P	                  4       ^,           ,
          4      pV'       d;   V^ ,          R8X  d   \        Wa^,          ,          4      pM\        V^,          4      pMTpV P                  4       pV^ 8:  d   Tp\        Wx4      pV'       d&   \        ^ W…,
          4      p	\        ^ Wu,
          4      p
MTp	Tp
\        W©4      p\        ^ We,
          4      p\        W¼4      # )z?Resolve the desired content width from hints and terminal size.r   )r’   r–   r´   rŠ   r¢   r   r8  Úmin)r7   ÚhintÚ	term_colsÚ_r·   r¶   Úavailable_totalÚtarget_totalÚminimal_totalÚminimal_cellsÚtarget_cellsÚdesiredÚcontent_budgets   &            r   rµ   Ú ColumnsPrinter._get_target_width®  s  € ð ×&Ñ&ˆØ×*Ñ*Ó,‰ˆ	Ø˜Œ>ØˆIà×%Ñ%Ó'ˆ
ß,6˜* qž.¸Aˆô ˜a ×.HÑ.HÓ.JÈQÕ.NÕ!OÓPˆçØ�A�w˜)Ô#Ü" ?¸!µWÕ#<Ó=‘ä" 4¨¥7›|‘à*ˆLà×+Ñ+Ó-ˆØ˜1ÔØ(ˆLä˜<Ó7ˆçÜ  =Õ#BÓCˆMÜ˜q ,Õ"@ÓA‰Là)ˆMØ'ˆLä�lÓ2ˆÜ˜Q Õ AÓBˆÜ�7Ó+Ð+r   c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   rC   s   "€r   r   r‡   Ö  s   ø€ ÷ =+ñ =+ tñ =+r   c                óP  a € S P                  4       pV^ 8X  d   R# ^.V,          S n        S P                  .V,          S n        S P	                  4       p\        S P                  4      p\        S P                  4       F\  w  rEVP                  f   K  VP                  ^ ,          R8X  d   K/  S P                  VP                  V4      pS P                  WF4       K^  	  \        V 3R l\        V4       4       4      p\        ;QJ d&    R S P                   4       F  '       g   K   RM	  RM! R S P                   4       4      pS P                  '       g	   V'       d   Tp	M\        Wr4      p	Wy8”  dB   W‘^,           ,           p
S P!                  V
4       \        V 3R l\        V4       4       4      p^ pM\#        ^ W—,
          4      p\        S P                  4       UUu. uF  w  rÅVP                  e   K  VNK  	  pppV'       ge   \        S P                  4       UUu. uFC  w  rÅVP                  e/   VP                  '       g   K'  VP                  ^ ,          R8w  g   KA  VNKE  	  pppV^ 8”  d|   RpV Fh  pV^ 8:  d    M`S P                  V,          pVP                  '       d   VP                  ^ ,          R8X  d   KK  S P%                  V^4       V^,          pRpKj  	  V'       d   K�   W!^,           ,           p
S P!                  V
4       S P'                  4        R# u uppi u uppi )zASeed slot widths from hints, then distribute any remaining space.Nr  c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir5   ©Ú_column_total_width©r½   r¾   r7   s   & €r   r¿   Ú7ColumnsPrinter._apply_initial_widths.<locals>.<genexpr>ë  s!   øé € ÐYÑEX¸c˜D×4Ñ4°S×9Ð9ÓEXùó   ƒ!c              3   ót   "  € T F.  qP                   ;'       d    VP                   ^ ,          R8H  x € K0  	  R# 5i)é    r   N)r,   r.  s   & r   r¿   rN  ì  s,   é € Ð^ÑP]ÈŸ*™*×CÐC¨¯©°A­¸)Ñ)CÔCÓP]ùs   ‚8™8TFc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir5   rK  rM  s   & €r   r¿   rN  ö  s!   øé € Ð]ÑI\À# × 8Ñ 8¸× =Ð =ÓI\ùrO  )r´   r�   r‹   rŽ   rµ   r  rŒ   rÄ   r,   Ú_resolve_width_hintÚ_configure_column_widthr3  ÚrangeÚanyr’   r<  Ú_clamp_total_widthrŠ   Ú_grow_columnÚ_update_current_total_width)r7   r·   Úmax_contentÚcolumn_countÚcol_idxr®   r   Úcurrent_totalÚhas_percentÚdesired_contentÚ
full_widthÚ	remainingr¾   Ú
expandableÚ
progresseds   f              r   rÉ   Ú$ColumnsPrinter._apply_initial_widthsÖ  sƒ  ø€ ð ×%Ñ%Ó'ˆ
Ø˜Œ?Ùà˜C *Õ,ˆÔØ"Ÿm™m˜_¨zÕ9ˆÔà×,Ñ,Ó.ˆÜ˜4Ÿ=™=Ó)ˆä& t§}¡}Ö5‰MˆGØ�z‰zÒ!ÙØ�z‰z˜!�} Ô%ÙØ×-Ñ-¨d¯j©j¸+ÓFˆFØ×(Ñ(¨Ö9ñ 6ô ÔYÄUÈ<ÔEXÓYÓYˆß“cÑ^ÐPT×P]ÒP]Ó^—c—c’cÑ^ÐPT×P]ÒP]Ó^Ó^ˆà×"×"Ð"§kØ)‰Oä! -Ó=ˆOàÔ*Ø(¸­NÕ;ˆJØ×#Ñ# JÔ/ÜÔ]ÌÈ|ÔI\Ó]Ó]ˆMØ‰Iä˜A˜Õ>Ó?ˆIä+4°T·]±]Ô+CÔZÑ+C™i˜cÀtÇzÁz—c�cÑ+Cˆ
ÑZßô "+¨4¯=©=Ô!9ôá!9‘I�CØ—:‘:Ò%¨$¯*­*ô à9=¿¹ÀA½È%Ñ9O÷ �Ù!9ð ñ ð ˜!ŒmØˆJÛ%�Ø ”>ÙØ—}‘} WÕ-�Ø—:—:�: $§*¡*¨Q¥-°5Ô"8ÙØ×!Ñ! '¨1Ô-Ø˜Q•�	Ø!’
ñ &÷ ‘:Øà °¥NÕ3ˆ
Ø×Ñ 
Ô+Ø×(Ñ(Ö*ùó1 [ùós   ÇLÇ3LÈ$L"ÉL"ÉL"c                ób   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[RS[ S[,          /# )r   r=  Útotal_widthr   )r
   r   r   rM   r   )r   rC   s   "€r   r   r‡     s8   ø€ ÷ $ñ $©±±s¹E°zÕ1BÕ(Cð $ÑRUð $ÑZbÑcfÕZgñ $r   c                ó®   € V'       g   R# V^ ,          R8X  d#   \        ^ \        W!^,          ,          4      4      # \        ^ \        V^,          4      4      # )z=Convert a parsed width hint into an absolute character width.Nr   )rŠ   r   )r7   r=  rf  s   &&&r   rS  Ú"ColumnsPrinter._resolve_width_hint  sD   € ÷ ÙØ��7�iÔÜ�qœ#˜k°­GÕ3Ó4Ó5Ð5Ü�1”c˜$˜q�'“lÓ#Ð#r   c                ó:   <€ V ^8„  d   QhRS[ RS[S[ ,          RR/# )r   r\  r   r   N)r   r
   )r   rC   s   "€r   r   r‡     s&   ø€ ÷ 'ñ '©sð '¹HÁS½Mð 'Èdñ 'r   c                óÂ  € V P                   V,          pV P                  V,          P                  pV^ 8:  d   R# \        V4       Uu. uF-  qSV,           \	        V P
                  4      8  g   K%  W5,           NK/  	  ppV'       g   R# V F!  p^ V P                  V&   ^V P
                  V&   K#  	  V P                  V4      pVe   W(8  d   TpW(,
          p	V	^ 8”  d>   V F5  pV P
                  V;;,          ^,          uu&   V	^,          p	V	^ 8:  g   K4   K@  	  KD  V F>  pV P
                  V,          V P                  V&   V P                  P                  V4       K@  	  R# u upi )zCApply an absolute width target across all slots in one column span.N)r�   rŒ   rG   rU  r  r�   rŽ   rL  rš   rœ   Úadd)
r7   r\  r   ÚstartrG   ÚoffsetÚslot_indicesr¾   Ú	min_widthÚextras
   &&&       r   rT  Ú&ColumnsPrinter._configure_column_width  s:  € ð ×!Ñ! 'Õ*ˆØ�}‰}˜WÕ%×*Ñ*ˆØ�1Œ9Ùä5:¸4´[Ól±[¨6ÈFÅNÔUXÐY]×YjÑYjÓUkÑDkœ˜Ÿ˜±[ˆÐlßÙãˆCØ&'ˆD×Ñ˜sÑ#Ø%&ˆD×Ñ˜cÓ"ñ  ð ×,Ñ,¨WÓ5ˆ	ØŠ>˜VÔ/ØˆFàÕ"ˆØ�aŒiÛ#�Ø×!Ñ! #×&¨!Õ+Ó&Ø˜•
�Ø˜A–:Úó	 $ó  ˆCØ)-×):Ñ):¸3Õ)?ˆD×!Ñ! #Ñ&Ø×Ñ×!Ñ! #Ö&ó  ùò) ms   Á"EÁ.Ec                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   r\  Úamountr   Nr    )r   rC   s   "€r   r   r‡   >  s"   ø€ ÷ ñ ¡Cð ±ð ¸ñ r   c                ó¢  € V^ 8:  d   R# V P                   V,          pV P                  V,          P                  p\        V4       Uu. uF-  qSV,           \	        V P
                  4      8  g   K%  W5,           NK/  	  ppV'       g   R# V^ 8”  d>   V F5  pV P
                  V;;,          ^,          uu&   V^,          pV^ 8:  g   K4   K@  	  KD  R# u upi )z<Expand a column span by distributing width across its slots.N)r�   rŒ   rG   rU  r  r�   )r7   r\  rs  rl  rG   rm  rn  r¾   s   &&&     r   rX  ÚColumnsPrinter._grow_column>  s±   € ð �QŒ;ÙØ×!Ñ! 'Õ*ˆØ�}‰}˜WÕ%×*Ñ*ˆÜ5:¸4´[Ól±[¨6ÈFÅNÔUXÐY]×YjÑYjÓUkÑDkœ˜Ÿ˜±[ˆÐlßÙØ�qŒjÛ#�Ø×!Ñ! #×&¨!Õ+Ó&Ø˜!•�Ø˜Q–;Úó	 $ñ ùò ms   Á"CÁ.Cc                ó&   <€ V ^8„  d   QhRS[ RS[ /# )r   r\  r   r    )r   rC   s   "€r   r   r‡   O  s   ø€ ÷ ñ ©3ð ±3ñ r   c                óz  € V P                   V,          pV P                  V,          P                  p^ p\        V4       F_  pW%,           pV\	        V P
                  4      8¼  d    M<W@P
                  V,          V P                  V,          ^,          ,           ,          pKa  	  V\        ^ V^,
          4      ,          pV# )z5Return the full rendered width of one logical column.)r�   rŒ   rG   rU  r  r�   rŽ   rŠ   )r7   r\  rl  rG   Útotalrm  Úslot_idxs   &&     r   rL  Ú"ColumnsPrinter._column_total_widthO  s�   € ð ×!Ñ! 'Õ*ˆØ�}‰}˜WÕ%×*Ñ*ˆØˆÜ˜D–kˆFØ•~ˆHØœ3˜t×0Ñ0Ó1Ô1ÙØ×&Ñ& xÕ0°D×4FÑ4FÀxÕ4PÐSTÕ4TÕUÕUŠEñ	 "ð
 	”�Q˜˜q�Ó!Õ!ˆØˆr   c                ó    <€ V ^8„  d   QhRS[ /# ru   r    )r   rC   s   "€r   r   r‡   ]  s   ø€ ÷ Fñ F¡3ñ Fr   c                ó†   € V P                  4       w  rV^ 8:  d   ^Pp\        ^ WP                  4       ^,           ,
          4      # )z@Return the maximum bordered row width that fits in the terminal.)r–   rŠ   r¢   )r7   r>  r?  s   &  r   Ú_row_width_budgetÚ ColumnsPrinter._row_width_budget]  s>   € ð ×*Ñ*Ó,‰ˆ	Ø˜Œ>ØˆIä�1�i×#=Ñ#=Ó#?À!Õ#CÕDÓEÐEr   c                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# )r   Ú	max_totalr   N)r
   r   )r   rC   s   "€r   r   r‡   f  s#   ø€ ÷ U+ñ U+©H±S­Mð U+ÀTñ U+r   c           
     ód  a aaa€ S P                  4       pV^ 8X  d   R# Vf   S P                  4       pV^ 8:  d   R# V^,           p\        V 3R l\        V4       4       4      p\	        ^ W,
          V,
          4      p\        S P
                  4      pWe8:  d   S P                  4        R# S P                  oWe8”  EdÛ   \        V4       Uu. uF&  pS P
                  V,          SV,          8”  g   K$  VNK(  	  ppV'       g   EM•\	        V 3R lV 4       4      o\        VV 3R lV 4       4      p	V Uu. uF0  pS P
                  V,          S8  g   K  S P
                  V,          NK2  	  p
p\	        VVV 3R lV 4       4      pV
P                  V4       \	        V
4      pSV,
          V	,          pWe,
          p\        WÞ4      pV^ 8:  d   MÐWù,          pWù,          pV F¢  pS P
                  V,          S8X  g   K  S P
                  V;;,          V,          uu&   V^ 8”  d)   S P
                  V;;,          ^,          uu&   V^,          pS P
                  V,          SV,          8  g   KŒ  SV,          S P
                  V&   K¤  	  \        S P
                  4      pEKá  We8”  Edv   W,
          V,
          p^ pV^ 8”  d%   \        S P                  V^V,          ,          4      p\        V4       F  pVS P                  V&   K  	  ^V,          V,          p\	        ^ W,
          V,
          4      pWR8  d%   \        V4       F  p^S P
                  V&   K  	  TpMÅWV,          o\        V4       Uu. uF0  p\	        ^\        S P
                  V,          S,          4      4      NK2  	  ppV\        V4      ,
          pV^ 8”  dD   \        VV 3R l\        V4       4       4      pVRV  F  w  ppVV;;,          ^,          uu&   K  	  VS n        \        S P
                  4      pS P                  4        R# u upi u upi u upi )zHReduce slot widths so the full bordered row does not exceed `max_total`.Nc              3   óX   <"  € T F  pSP                   V,          ^,          x € K!  	  R# 5i)r   N)rŽ   rM  s   & €r   r¿   Ú4ColumnsPrinter._clamp_total_width.<locals>.<genexpr>s  s&   øé € ÐWÑEV¸c˜T×/Ñ/°Õ4°q×8Ò8ÓEVùs   ƒ'*c              3   óJ   <"  € T F  pSP                   V,          x € K  	  R # 5ir5   ©r�   )r½   Úir7   s   & €r   r¿   rƒ  �  s   øé € Ð@±i°˜×)Ñ)¨!×,Ò,³iùs   ƒ #c              3   ó\   <"  € T F!  pSP                   V,          S8X  g   K  ^x € K#  	  R# 5ir1  r…  )r½   r†  Úmax_wr7   s   & €€r   r¿   rƒ  ‚  s%   øé € ÐR¡y !°D×4EÑ4EÀaÕ4HÈEÑ4QŸAšA£yùs   ƒ,¢
,c              3   ój   <"  € T F(  pSP                   V,          S8X  g   K  SV,          x € K*  	  R # 5ir5   r…  )r½   r†  rˆ  Ú
min_widthsr7   s   & €€€r   r¿   rƒ  „  s-   øé € Ð_±I¨qÀ×ARÑARÐSTÕAUÐY^ÑA^œ]˜Z¨Ÿ]š]³Iùs   ƒ3¢3c              3   ó¬   <"  € T FI  pSP                   V,          S,          \        SP                   V,          S,          4      ,
          V3x € KK  	  R # 5ir5   )r�   r   )r½   r¾   Úfactorr7   s   & €€r   r¿   rƒ  ¯  sP   øé € ð #ñ
 $5˜Cð "×.Ñ.¨sÕ3°fÕ<ÄÀD×DUÑDUÐVYÕDZÐ]cÕDcÓ@dÕdØõó $5ùs   ƒAA)r´   r}  r3  rU  rŠ   r�   rY  rš   r)   r<  r‹   rŽ   r   Úsorted)r7   r€  r·   r6  r5  rZ  rx  r†  Ú	reducibleÚ	count_maxÚnext_candidatesÚ
min_at_maxÚnext_wÚ	availableÚneedÚreduce_totalÚper_slotrp  r¾   ÚroomÚnew_padÚscaledÚleftoverÚfracsr?  rŒ  rˆ  rŠ  s   f&                       @@@r   rW  Ú!ColumnsPrinter._clamp_total_widthf  s¦  û€ ð ×%Ñ%Ó'ˆ
Ø˜Œ?ÙàÒØ×.Ñ.Ó0ˆIØ˜Œ>Ùà !•^ˆ
ÜÔWÄUÈ:ÔEVÓWÓWˆÜ˜!˜YÕ3°mÕCÓDˆÜ�D×%Ñ%Ó&ˆØÔØ×,Ñ,Ô.Ùà×*Ñ*ˆ
àÕ!Ü$)¨*Ô$5Ó^Ñ$5˜q¸×9JÑ9JÈ1Õ9MÐPZÐ[\ÕP]Ñ9]Ÿ˜Ñ$5ˆIÐ^ßÙäÔ@±iÓ@Ó@ˆEÜÕR¡yÓRÓRˆIÙ=FÓg¹Y¸È$×J[ÑJ[Ð\]ÕJ^ÐafÑJfÔ3˜t×0Ñ0°×3Ð3¹YˆOÐgÜÖ_±IÓ_Ó_ˆJØ×"Ñ" :Ô.Ü˜Ó)ˆFà �¨9Õ4ˆIØÕ&ˆDÜ˜yÓ/ˆLØ˜qÔ Øà#Õ0ˆHØ Õ,ˆEÛ �Ø×$Ñ$ SÕ)¨UÖ2Ø×%Ñ% c×*¨hÕ6Ó*Ø˜q”yØ×)Ñ)¨#×.°!Õ3Ó.Ø �
˜Ø×(Ñ(¨Õ-°
¸3µÖ?Ø1;¸Cµ˜×)Ñ)¨#Ó.ñ !ô ˜×)Ñ)Ó*‹EàÕàÕ)¨JÕ6ˆDØˆGØ�aŒxÜ˜dŸm™m¨T°a¸*µnÕ-EÓF�Ü˜ZÖ(�Ø*1�×"Ñ" 3Ó'ñ )ð  �K¨*Õ4ˆMÜ˜a Õ!7¸-Õ!GÓHˆKàÔ'Ü  Ö,�CØ-.�D×%Ñ% cÓ*ñ -à"‘à$Õ,�ÜRWÐXbÔRcÓdÑRcÈ3œ#˜a¤ T×%6Ñ%6°sÕ%;¸fÕ%DÓ!EÖFÑRc�ÐdØ&¬¨V«Õ4�Ø˜a”<Ü"õ #ô
 $)¨Ô#4ó#ó �Eð #(¨	¨Ó"2™˜˜3Ø˜sŸ qÕ(�ñ #3à$*�Ô!Ü˜D×-Ñ-Ó.�à×(Ñ(Ö*ùò} _ùò hùòR es   Ã!P#Ã.P#Ä/P(ÅP(Í!6P-c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   rC   s   "€r   r   r‡   ½  s   ø€ ÷ 	Eñ 	E¨Tñ 	Er   c                óÒ   a € S P                  4       pV^ 8X  d
   ^ S n        R# \        V 3R l\        \	        S P
                  4      4       4       4      pW!^,           ,           S n        R# )zAStore the full bordered width implied by the current slot widths.Nc              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5ir5   rK  rM  s   & €r   r¿   Ú=ColumnsPrinter._update_current_total_width.<locals>.<genexpr>Å  s!   øé € Ð_ÑE^¸c˜D×4Ñ4°S×9Ð9ÓE^ùrO  )r´   r“   r3  rU  r  rŒ   )r7   r·   r]  s   f  r   rY  Ú*ColumnsPrinter._update_current_total_width½  sR   ø€ ð ×%Ñ%Ó'ˆ
Ø˜Œ?Ø()ˆDÔ%ÙäÔ_ÄUÌ3ÈtÏ}É}ÓK]ÔE^Ó_Ó_ˆØ$1À!µ^Õ$DˆÖ!r   c                ó    <€ V ^8„  d   QhRS[ /# ru   r    )r   rC   s   "€r   r   r‡   È  s   ø€ ÷ &ñ &™Sñ &r   c                ó,   € \        V P                  4      # )z:Return the number of physical slots in the current layout.)r  r�   rH   s   &r   r´   ÚColumnsPrinter._slot_countÈ  s   € ô �4×$Ñ$Ó%Ð%r   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úcountr   Nr    )r   rC   s   "€r   r   r‡   Í  s   ø€ ÷ $ñ $¡3ð $¨4ñ $r   c                óÔ  € WP                  4       8:  d   R# V P                  '       g-   \        V4       Uu. uF  p\        R^R7      NK  	  upV n        M^WP                  4       ,
          pV P                  R,          p\        VP                  VP
                  V,           R7      V P                  R&   V P                  4        V P                  4        V P                  4        R# u upi )z<Grow the layout so incoming rows have enough physical slots.Nr&   )rL   rG   r!  )	r´   rŒ   rU  r?   rL   rG   rÈ   rÉ   rÊ   )r7   r¦  r?  rp  Úlasts   &&   r   Ú_ensure_slotsÚColumnsPrinter._ensure_slotsÍ  s«   € ð ×$Ñ$Ó&Ô&Ùà�}�}ˆ}ÜCHÈÄ<ÓPÁ<¸aœZ¨b°q×9Á<ÑPˆD�Mà×,Ñ,Ó.Õ.ˆEØ—=‘= Õ$ˆDÜ *°·±À$Ç)Á)ÈeÕBSÔ TˆD�M‰M˜"Ñà×ÑÔ Ø×"Ñ"Ô$Ø×!Ñ!Ö#ùò Qs   ¶C%c                ó   <€ V ^8„  d   QhRR/# rA   rB   )r   rC   s   "€r   r   r‡   Þ  s   ø€ ÷ $"ñ $" dñ $"r   c                ó  € V P                   '       g   R# \        V P                   V P                  4       EF¶  w  rVP                  pV^ 8:  d   K  V\	        V P
                  4      8¼  d   K7  W P                  9   d   KI  ^ p\        V4       F_  pW%,           pV\	        V P
                  4      8¼  d    M<W@P
                  V,          V P                  V,          ^,          ,           ,          pKa  	  V\        ^ V^,
          4      ,          p\        VP                  4      pV P                  V,          pW#,           ^,
          p	V	\	        V P                  4      8  d   V P                  V	,          MV P                  p
\        ^ WH,
          V
,
          4      pW·8  g   EKe  W{,
          pV P
                  V;;,          V,          uu&   \        V P                  V,          V4      V P                  V&   EK¹  	  V P                  4        R# )z7Ensure each header label fits within its spanned slots.N)rŒ   Úzipr�   rG   r  r�   rœ   rU  rŽ   rŠ   r    rL   r‹   rš   rW  )r7   r®   rl  rG   Útotal_slot_widthrm  r¾   Ú	label_lenÚleft_padÚright_indexÚ	right_padÚinner_widthÚdeficits   &            r   rÊ   Ú#ColumnsPrinter._apply_header_widthsÞ  s™  € ð �}�}ˆ}Ùä˜tŸ}™}¨d×.?Ñ.?×@‰KˆDØ—9‘9ˆDØ�qŒyÙØœ˜D×-Ñ-Ó.Ô.ÙØ×)Ñ)Ô)Ùà ÐÜ ž+�Ø•n�Øœ#˜d×/Ñ/Ó0Ô0ÙØ ×$5Ñ$5°cÕ$:¸d×>PÑ>PÐQTÕ>UÐXYÕ>YÕ$ZÕZÒ ñ	 &ð ¤ A t¨a¥xÓ 0Õ0ÐÜ'¨¯
©
Ó3ˆIà×)Ñ)¨%Õ0ˆHØ�,¨Õ*ˆKØ;FÌÈT×M_ÑM_ÓI`Ô;`˜×*Ñ*¨;Ö7Ðfj×fsÑfsˆIä˜aÐ!1Õ!<¸yÕ!HÓIˆKà×&Ø#Õ1�Ø×!Ñ! %×(¨GÕ3Ó(Ü/2°4×3HÑ3HÈÕ3OÐQZÓ/[�×%Ñ% eÔ,ñ9 Að< 	×ÑÖ!r   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# rf   )r   r	   r   )r   rC   s   "€r   r   r‡     s   ø€ ÷ 
ñ 
¡hð 
±4¹µ9ñ 
r   c                ó  € V Uu. uF  p\        V4      NK  	  ppV P                  \        V4      4       V P                  4       p\        V4      V8  d,   VP	                  R.V\        V4      ,
          ,          4       V# VRV pV# u upi )z@Normalize row values to strings and match the active slot count.r&   N)r   r©  r  r´   r  )r7   rg   r  r  r·   s   &&   r   r  ÚColumnsPrinter._prepare_values  sŠ   € ñ 06Ó6©v e”s˜5–z©vˆÐ6Ø×Ñœ3˜{Ó+Ô,Ø×%Ñ%Ó'ˆ
Üˆ{Ó˜jÔ(Ø×Ñ ˜t z´C¸Ó4DÕ'DÕEÔFð Ðð & k zÐ2ˆKØÐùò 7s   …Bc                ó4   <€ V ^8„  d   QhRS[ S[,          RR/# ro   ©r   r   )r   rC   s   "€r   r   r‡     s   ø€ ÷ "ñ "©(±3­-ð "¸Dñ "r   c                ó  € \        V4       Fe  w  r#V\        V P                  4      8¼  d    MHW P                  9   d   K3  \	        V4      pW@P                  V,          8”  g   KW  W@P                  V&   Kg  	  V P                  4        R# )z:Grow slot widths to accommodate the rendered value widths.N)rÄ   r  r�   rœ   r    rW  )r7   rg   r¾   r  r!   s   &&   r   r  Ú"ColumnsPrinter._update_slot_widths  sq   € ô $ FÖ+‰JˆCØ”c˜$×+Ñ+Ó,Ô,ÙØ×'Ñ'Ô'ÙÜ% eÓ,ˆGØ×*Ñ*¨3Õ/Ö/Ø)0×!Ñ! #Ó&ñ ,ð 	×ÑÖ!r   c                ó    <€ V ^8„  d   QhRS[ /# ru   rv   )r   rC   s   "€r   r   r‡     s   ø€ ÷ +ñ +¡ñ +r   c                óª  € . p\        V P                  4       EF  w  r#\        ^VP                  4      pV P                  V,          pV P                  V4      pV\        V P                  4      8  d   V P                  V,          MV P                  pWT,           ^,
          pV\        V P                  4      8  d   V P                  V,          MV P                  p	\        ^ Wg,
          V	,
          4      p
RV,          pRV	,          p\        VP                  V
4      pVP                  V V V 24       EK  	  RRP                  V4      ,           R,           # )z=Build the visible header row with current widths and padding.r   Ú|)rÄ   rŒ   rŠ   rG   r�   rL  r  rŽ   r‹   r2   rL   r)   r*   )r7   Úcellsr¾   r®   rG   rl  rf  Úleft_pad_valr±  Úright_pad_valr³  Úpad_leftÚ	pad_rightÚcontents   &             r   rú   ÚColumnsPrinter._render_header  s  € ð ˆä" 4§=¡=×1‰IˆCÜ�q˜$Ÿ)™)Ó$ˆDØ×%Ñ% cÕ*ˆEØ×2Ñ2°3Ó7ˆKà8=ÄÀD×DVÑDVÓ@WÔ8W˜4×-Ñ-¨eÖ4Ð]a×]jÑ]jˆLØ�,¨Õ*ˆKØ?JÌSÐQU×QcÑQcÓMdÔ?d˜D×.Ñ.¨{Ö;Ðjn×jwÑjwˆMä˜a Õ!;¸mÕ!KÓLˆKØ˜\Õ)ˆHØ˜mÕ+ˆIÜ" 4§:¡:¨{Ó;ˆGØ�L‰L˜H˜: g Y¨y¨kÐ:×;ñ 2ð �S—X‘X˜e“_Õ$ sÕ*Ð*r   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# rf   rº  )r   rC   s   "€r   r   r‡   4  s   ø€ ÷ +ñ +¡(©3¥-ð +±Cñ +r   c                ó8  € V Uu. uF  p\        V4      NK  	  ppV P                  4       p. p\        V4       F¼  pV\        V4      8  d	   W6,          MRpV\        V P                  4      8  d   V P                  V,          pM\        V4      pV\        V P                  4      8  d   V P                  V,          MV P                  p	RV	,          p
\        Wx4      pV
 V V
 2pVP                  V4       K¾  	  RRP                  V4      ,           R,           # u upi )z:Build one bordered data row using the current slot widths.r&   r   r¿  )r   r´   rU  r  r�   r    rŽ   r‹   r2   r)   r*   )r7   rg   r  r  r·   rÀ  r¾   r   r,   Ú	pad_widthÚpadÚpadded_textÚcells   &&           r   r  ÚColumnsPrinter._render_row4  sü   € ñ 06Ó6©v e”s˜5–z©vˆÐ6Ø×%Ñ%Ó'ˆ
àˆÜ˜Ö$ˆCØ'*¬S°Ó-=Ô'=�;Ö#À2ˆDØ”S˜×*Ñ*Ó+Ô+Ø×)Ñ)¨#Õ.‘ä'¨Ó-�Ø36¼¸T×=OÑ=OÓ9PÔ3P˜×*Ñ*¨3Ö/ÐVZ×VcÑVcˆIØ˜	•/ˆCÜ& tÓ3ˆKØ�U˜;˜-¨ uÐ-ˆDØ�L‰L˜Öñ %ð �S—X‘X˜e“_Õ$ sÕ*Ð*ùò! 7s   …Dc                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   r]   rý   r   Nrh   )r   rC   s   "€r   r   r‡   I  s"   ø€ ÷ *ñ *¡ð *©#ð *°$ñ *r   c                óJ   € RV n         V P                  P                  W4       R# )z/Send a fully rendered row to the owning logger.FN)r�   r‰   Ú_processrü   s   &&&r   rû   ÚColumnsPrinter._print_rowI  s   € ð !&ˆÔØ�‰×Ñ˜eÖ)r   c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r   r]   rø   r   N)r   Úbool)r   rC   s   "€r   r   r‡   O  s"   ø€ ÷ %ñ %¡#ð %©dð %¸tñ %r   c                ó  € V P                   '       g   R# V'       g   V P                  '       d   R# . p\        V P                   4       Fy  w  rE\        ^V4      pV P                  pV\        V P                  4      8  d   \        ^ V P                  V,          4      pVP                  RWg^,          ,           ,          4       K{  	  RRP                  V4      ,           R,           pV P                  P                  W4       RV n        R# )z;Emit the top or bottom border, coalescing repeated borders.NÚ-Ú+T)r�   r�   rÄ   rŠ   r‹   r  rŽ   r)   r*   r‰   rÐ  )	r7   r]   rø   Úsegmentsr¾   r,   Úbaser€   Úborders	   &&&      r   rù   ÚColumnsPrinter._emit_borderO  sÊ   € ð × × Ð Ùç˜×.×.Ð.ÙàˆÜ# D×$5Ñ$5Ö6‰JˆCÜ�q˜%“=ˆDØ—m‘mˆGØ”S˜×+Ñ+Ó,Ô,Ü˜a ×!3Ñ!3°CÕ!8Ó9�Ø�O‰O˜C 4°Q­;Õ#7Õ8Ö9ñ 7ð �s—x‘x Ó)Õ)¨CÕ/ˆØ�‰×Ñ˜eÔ,Ø $ˆÖr   )rŒ   r“   rœ   r�   r”   r•   r—   r6   r‰   r‹   rš   rŽ   r�   r�   r’   r–   r5   )F)1rN   rO   rP   rQ   rR   r   rc   r¢   Úpropertyr§   r€   r¯   r=   r,   rÑ   rÕ   rÜ   rã   ré   rî   ró   rx   rj   rq   r�   r  rÈ   r‘   r8  rµ   rÉ   rS  rT  rX  rL  r}  rW  rY  r´   r©  rÊ   r  r  rú   r  rû   rù   rT   rU   rV   s   @r   rX   rX   ^   sb  ø‡ € ÙG÷!ñ !ñ:'ð
 ð'ð 8<ð'ð KO÷'ó '÷B1ð 1ð
 ÷+ó ð+ð ÷!ó ð!ð ÷]ó ð]ð ÷:ñ :ó ð:ð" ÷'ó ð'÷R*ð *ð ÷9ó ð9ð
 ÷8ó ð8ð
 ÷8ó ð8ð
 ÷9ó ð9ð
 ÷<ó ð<ð
 ÷ó ðð ÷	ó ð	ð ÷.ó ð.ð ÷$ó ð$÷Qð Q÷6"ð "÷8"ð "÷HLð L÷&,ð &,÷P=+ð =+÷~$ð $÷'ð '÷@ð ÷"ð ÷Fð F÷U+ò U+÷n	Eð 	E÷&ð &÷
$ð $÷"$"ð $"÷L
ð 
÷"ð "÷+ð +÷,+ð +÷**ð *÷%÷ %ð %r   rX   )z...)rR   r˜   Údataclassesr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   r   r   Údrawingr   r(   r   Ú_strip_ansir   r    Úterminalr   r"   r2   r=   r?   rX   rB   r   r   Ú<module>râ     s]   ðñ /ã Ý !Ý ß X× XÕ Xå >Ý .Ý 6Ý #õ/÷%òPð ÷ð ó ð÷D%ó D%r   