
    ^i
                     F    S SK Jr  S rS rS
S jrS rS rSS jrSS	 jrg)    )defaultdictc                    U  Vs0 s H  oS_M     nn[        U5      [        U 5      :w  a  [        S5      e [        [        5      nSnU  H&  nX1SX!       nU(       a  SnUR	                  U5        M(     UR                  5        H)  n[        U5      S:  d  M  U H  nX!==   S-  ss'   M     M+     U(       a  OM  U  Vs/ s H	  oSX!    PM     sn$ s  snf s  snf )z
Given an iterable names, return the shortest prefix for each element
so that all prefixes are different. All elements in names must be unique.

>>> get_short_names(['cat', 'castor', 'could', 'fire', 'first'])
['cat', 'cas', 'co', 'fire', 'firs']

   z%names must only contain unique valuesTNF)len
ValueErrorr   listappendvalues)namesnamelengthsbucketsvalidbuckets         K/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/treetable/text.pyget_short_namesr      s     $))54Qw5G)
7|s5z!@AA
d#D.7=12FMM$	 
 nn&F6{Q"DMQ&M # '   .33UT'- U33# *" 4s   C?Cc                 B    [        S U R                  S5       5       SS9$ )Nc              3   8   #    U  H  n[        U5      v   M     g 7f)N)r   ).0lines     r   	<genexpr>text_width.<locals>.<genexpr>"   s     7&6dD		&6s   
r   )default)maxsplit)texts    r   
text_widthr   !   s    7djj&67CC    c              #      #    U R                  SSU-  5      n U (       d  Sv   g [        S[        U 5      U5       H  nXX1-    v   M     g 7f)N	  r   )replaceranger   )r   widthtabwidthindexs       r   wrapr)   %   sH     <<cHn-Dq#d)U+'' ,s   AA
c                     US:X  a  U R                  U5      $ US:X  a  U R                  U5      $ US:X  a  U R                  U5      $ [        SU 35      e)N=<>zInvalid value for align )centerljustrjustr   )r   r&   	alignments      r   alignr2   .   sZ    C{{5!!	c	zz%  	c	zz%  3I;?@@r   c                 8    SU S3nSnSR                  X U/5      $ )Nz[mz[0mr#   )join)r   colorcoderestores       r   colorizer9   9   s)    5'DG77D())r   Nc                    ^^ U R                  S5      nTc  [        [        [        U5      5      OTmU VVs/ s H  n[	        UT5        H  oUPM     M     nnnSR                  UU4S jU 5       5      $ s  snnf )z
Return value justified to the given width, either
to the left if align is '<', to the right if it is '>' or centered
if it is '='.
r   c              3   :   >#    U  H  n[        UTTS 9v   M     g7f))r&   r1   N)r2   )r   r   r1   r&   s     r   r   wrap_align.<locals>.<genexpr>H   s      IBG$d%95%s   )r   r   mapr   r)   r5   )r   r&   r1   linesr   sub_lines    ``   r   
wrap_alignr@   ?   su     JJtE$)MCC uE"'J%$T58IHX8IX%EJ99 IBGI I I Ks   A5c                 (   U  Vs/ s H$  n[        US   R                  SS5      S   5      PM&     nn/ n[        U 6  H  nU Vs/ s H  ofR                  S5      PM     nn[        [	        [         U5      5      n[        Xs5       V	V
s/ s H  u  pU	SU
-  /U[        U	5      -
  -  -   PM     nn	n
/ n[        U6  H#  nUR                  UR                  U5      5        M%     UR                  SR                  U5      5        M     U$ s  snf s  snf s  sn
n	f )Nr   r   r   r"   )r   r   zipr   r=   r	   r5   )columns	separatorcolumnwidthsjoinedrowsrow
rows_linesheight	row_linesr&   
joined_rowr>   s                r   r5   r5   L   s	   =DEW6c&)//$*1-.WFEFW156#iio
6Sj)* %(
$;
$; 	 u#i.)@AA$; 	 
 
*%EinnU34 &dii
+,  M F 7
s   +DD	$D)   )Nr,   )r#   )	collectionsr   r   r   r)   r2   r9   r@   r5    r   r   <module>rQ      s.    #4:D(A*
Ir   