
    i
                     @    d dl mZ d Zd Zd
dZd Zd ZddZdd	Zy)    )defaultdictc                    | D ci c]  }|d }}t        |      t        |       k7  rt        d      	 t        t              }d}| D ]"  }||d||       }|rd}|j	                  |       $ |j                         D ]%  }t        |      dkD  s|D ]  }||xx   dz  cc<    ' |rnt| D cg c]
  }|d||     c}S c c}w c c}w )a  
    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         H/var/www/stems/demucs_env/lib/python3.12/site-packages/treetable/text.pyget_short_namesr      s     $))4tQw)G)
7|s5z!@AA
d# 	 DT.74=12FMM$		 
 nn& 	'F6{Q" 'DDMQ&M'	'   .33TD'$- 33# *" 4s   
B>,Cc                 H    t        d | j                  d      D        d      S )Nc              3   2   K   | ]  }t        |        y w)N)r   ).0lines     r   	<genexpr>ztext_width.<locals>.<genexpr>"   s     7dD	7s   
r   )default)maxsplit)texts    r   
text_widthr   !   s    7djj&67CC    c              #      K   | j                  dd|z        } | sd y t        dt        |       |      D ]  }| |||z      y w)N	  r   )replaceranger   )r   widthtabwidthindexs       r   wrapr(   %   sR     <<cHn-Dq#d)U+ (5''(s   AAc                     |dk(  r| j                  |      S |dk(  r| j                  |      S |dk(  r| j                  |      S t        d|       )N=<>zInvalid value for align )centerljustrjustr   )r   r%   	alignments      r   alignr1   .   sZ    C{{5!!	c	zz%  	c	zz%  3I;?@@r   c                 :    d| d}d}dj                  || |g      S )Nz[mz[0mr"   )join)r   colorcoderestores       r   colorizer8   9   s+    5'DG77D$())r   Nc                     | j                  d      }t        t        t        |            n|D cg c]  }t	        |      D ]  }|  }}}dj                  fd|D              S c c}}w )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   :   K   | ]  }t        |         yw))r%   r0   N)r1   )r   r   r0   r%   s     r   r   zwrap_align.<locals>.<genexpr>H   s$      I:>d%955Is   )r   r   mapr   r(   r4   )r   r%   r0   linesr   sub_lines    ``   r   
wrap_alignr>   ?   sw     JJtE$)MCC uE"'J$T58IJHXJXJEJ99 IBGI I I Ks   A.c                    | D cg c]#  }t        |d   j                  dd      d         % }}g }t        |  D ]  }|D cg c]  }|j                  d       }}t        t	        t         |            }t        ||      D 	
cg c]  \  }	}
|	d|
z  g|t        |	      z
  z  z    }}	}
g }t        | D ]"  }|j                  |j                  |             $ |j                  dj                  |              |S c c}w c c}w c c}
}	w )Nr   r   r   r!   )r   r   zipr   r;   r	   r4   )columns	separatorcolumnwidthsjoinedrowsrow
rows_linesheight	row_linesr%   
joined_rowr<   s                r   r4   r4   L   s   =DE6c&)//$*1-.EFEFW 
-156#ciio6
6Sj)* %(
F$;
 	5 u#i.)@AA

 
 
*% 	5EinnU34	5dii
+,
- M F 7
s   (C: C?"D)   )Nr+   )r"   )	collectionsr   r   r   r(   r1   r8   r>   r4    r   r   <module>rO      s.    #4:D(A*
Ir   