
    df                     (   d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 	 d dl
Z
e
j                  Zi ddd	d
dddddddddddddddddddddd d!d"d#d$d%d&dd&Zd' Zd( Z	 	 d-d)Zd* Zd.d+Zd, Zy# e$ r d ZY Vw xY w)/    )absolute_import)print_functionN)range)inputc                 0    t        |       t        |       z  S N)sumlen)vs    Y/mounts/lovelace/software/anaconda3/envs/py312/lib/python3.12/site-packages/ete3/utils.py<lambda>r   4   s    SVCF]     wrz
[1;37;41mwoz
[1;37;43mwmz
[1;37;45mwbz
[1;37;46mbwz
[1;37;40mlbluez[1;34mlredz[1;31mlgreenz[1;32myellowz[1;33mcyanz[36mbluez[34mgreenz[32morangez[33mredz[31mmagentaz[35mwhitez[0mc                 .    t         |   | t         d    S r   )SHELL_COLORS)stringcolors     r   r"   r"   N   s    "5)6<3EFFr   c                 0    t        j                  dd|       S )Nz\033\[[^m]+m )resubr!   s    r   clear_colorr(   Q   s    66/2v..r   c                    d }t        |t              r+t        t        | d               D 	ci c]  }	|	||	   
 }
}	d}n|dk(  r(t        t        | d               D 	ci c]  }	|	| }
}	d}n|sQt        t        | d               D 	ci c].  }	|	t	        | D cg c]  } |t        ||	                c}      0 }
}	}nZt        t        | d               D 	ci c]8  }	|	t        |t	        | D cg c]  } |t        ||	                c}            : }
}	}|rSd}|}|rT|sRt        j                  |
      D ]2  \  }}t	        | |||               |
|<   |s!t        |
|   |      |
|<   4 nd}| |   }|rat        |
j                               dt        |
      dz
  z  z   }t        d|z         t        |j                  |             t        d|z         |rd}g }d	gt        |      z  }t        |      D ]  \  }}|
|   }|}t        t        |            }	 |j                  d
      }t        |dz   |      }|j!                  d
dd      }|r. ||      |kD  r#|dk(  r|d|dz
   dz   }n|dk(  r||d ||<   |d| }|j%                  |      }|j'                  |        t        dj)                  |             t+        |      t+        d	g      z
  sS|rE|dk(  r@t        dj)                  t        t        |            D cg c]
  }d|
|   z   c}             |dz  }	 | |   }n|}d}|r|s|r|dk(  s|rAt        dj)                  t        t        |            D cg c]
  }d|
|   z   c}             n@t        dj)                  t        t        |            D cg c]
  }d|
|   z   c}             |ryyc c}	w c c}	w c c}w c c}}	w c c}w c c}}	w # t"        $ r Y w xY wc c}w # t,        $ r d}Y w xY wc c}w c c}w )ao   Prints a matrix of data as a human readable table. Matrix
    should be a list of lists containing any type of values that can
    be converted into text strings.

    Two different column adjustment methods are supported through
    the *wrap_style* argument:

       wrap: it will wrap values to fit max_col_width (by extending cell height)
       cut: it will strip values to max_col_width

    If the *wrap* argument is set to False, column widths are set to fit all
    values in each column.

    This code is free software. Updates can be found at
    https://gist.github.com/jhcepas/5884168


    # print_table([[3,2, {"whatever":1, "bla":[1,2]}], [5,"this is a test
             of wrapping text
  with the new function",777], [1,1,1]],
    #            header=[ "This is column number 1", "Column number 2", "col3"],
    #            wrap=True, max_col_width=15, wrap_style='wrap',
    #            row_line=True, fix_col_width=True)


    # This is column  | Column number 2 | col3
    # number 1        |                 |
    # =============== | =============== | ===============
    # 3               | 2               | {'bla': [1, 2],
    #                 |                 |  'whatever': 1}
    # --------------- | --------------- | ---------------
    # 5               | this is a test  | 777
    #                 |              of |
    #                 |  wrapping text  |
    #                 |   with the new  |
    #                 | function        |
    # --------------- | --------------- | ---------------
    # 1               | 1               | 1
    # =============== | =============== | ===============

    c                 *    t        t        |             S r   )r
   r(   r'   s    r   safelenzprint_table.<locals>.safelen}   s    ;v&''r   r   T      -Fr$   
 cutN+wrapz | =)
isinstancelistr   r
   maxstrminsix	iteritemsr	   valuesprintcenter	enumerater(   indexreplace
ValueErrorljustappendjoinset
IndexError)itemsheaderr4   max_col_width
wrap_stylerow_linefix_col_widthtitler+   ic2maxwecurrent_itemrowcolmaxwtable_widthis_extrar=   
extra_linevalcwidth
wrap_width	newline_is                           r   print_tabler^   T   s   R( -&/4Sq]/CD!!]1%%DD	$	,1#eAh-,@Aq!]"AAGLSQVWXQY]G[\!!Se<'#ad),<==\\ "'s58}!57 S,OAWS1Y-?,O(PQQ 7 7  ]]62 B	T!$s(<=s"%fSk="AF3KB
 L!&--/*aVQ.?@c;ell;'(c;
T#c(]
!# 	HCC[FJc#h'C0IIdO	 !1j9
kk$Q/z1&mz!|,S0C6)&)*+&6JsOkz*C))F#CMM#%	& 	ejj !:bT*,",ejjU3s8_!Nc#fSk/!NOPALL) CHHf9JejjU3s8_!Nc#fSk/!NOPejjU3z?=S!Uc#fSk/!UVWQ ; E B =\,O 7>    "O   "O!Usq   N?
OOO	2	OO.O	OOO/!O4 PP
	OO	O,+O,4PPc                     d}t         j                  j                  |      s+t        |       }t         j                  j                  |      s+|S )Nr$   )ospathexistsr   )textfnames     r   ask_filenamere      s7    EggnnU#d ggnnU#Lr   c                     d}|s|D cg c]  }|j                          }}||vrFt        | ddj                  |      d      }|dk(  r
|dk\  r||   }|s|j                         }||vrF|S c c}w )z Asks for a keyborad answer Nz [,]r$   r   )lowerr   rF   )r!   valid_valuesdefaultcase_sensitiver   values         r   askrn      s    A3?@%@@
<
vchh|&<>?7wzW%A	A <
 H As   A.c                       fd}|S )Nc                      t        j                          } | i |}t        dj                  t        j                          |z
  d       |S )Nz    seconds)timer>   __name__)argskargst1rfs       r   a_wrapper_accepting_argumentsz-timeit.<locals>.a_wrapper_accepting_arguments   s?    YY[tufajj$))+"2I>r    )rx   ry   s   ` r   timeitr{      s    
 )(r   )NT   r4   FFN)r,   F)
__future__r   r   r%   rr   r`   r;   	six.movesr   r   numpymeanImportErrorr    r"   r(   r^   re   rn   r{   rz   r   r   <module>r      sD  N ' % 	  	 
   ::D// 	/ 	/	
 	/ \ L l l J J Z j 
: z  Y!" 	)#*G/ >@NRrXh)Q  #"D#s   B BB