
    IR-e                        d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ  ej        d	ej        
                              dd          Z ej        dej        
                              dd          Zej                            d           G d d                      Zd Zej                            d           G d d                      Zej                            d           G d d                      Z G d d          Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z' G d# d$          Z(d% Z)d& Z*dS )'    )StringION)table)units)ascii)QTableTable)simple_table)consolei  dtyped               
table_typec                       e Zd Zd Zd ZdS )
TestMultiDc                    t          j        ddgddggt           j                  t          j        ddgdd	ggt           j                  t          j        d
dgddggt           j                  g} ||          }|                    d          }|g dk    sJ |                    dd          }|dt	          |           ddddddgk    sJ t
          j        j        }|j        rdnd}|	                                
                                d|j         d| ddt	          |           d| ddddddgk    sJ  ||g          }|                    d          }|g d k    sJ d!S )"z*Test printing with multidimensional column      
   r   r   r         (      r   2   <   T
show_dtype)z  col0     col1     col2  zint64[2] int64[2] int64[2]z-------- -------- --------z  1 .. 2   3 .. 4   5 .. 6z10 .. 20 30 .. 40 50 .. 60htmlr    <table id="table">?<thead><tr><th>col0</th><th>col1</th><th>col2</th></tr></thead>zK<thead><tr><th>int64[2]</th><th>int64[2]</th><th>int64[2]</th></tr></thead>z6<tr><td>1 .. 2</td><td>3 .. 4</td><td>5 .. 6</td></tr>z<<tr><td>10 .. 20</td><td>30 .. 40</td><td>50 .. 60</td></tr></table>masked=True  <div><i> length=2</i>	" class="</table></div>)z
   col0   z
int64[2,2]
----------z
   1 .. 20z
   3 .. 40z
   5 .. 60Nnparrayint64pformatidr   confdefault_notebook_table_classmasked_repr_html_
splitlines__name__selfr   arrtlinesnbclassr7   s          ?lib/python3.11/site-packages/astropy/table/tests/test_pprint.pytest_multidimzTestMultiD.test_multidim   s    Hq!fr2h'rx888Hq!fr2h'rx888Hq!fr2h'rx888

 JsOO		T	** 
 
 
 
 
 
 
 		t	55(r!uu(((MYDJ
 
 
 
 
 *9#$83}}))++Az*AAVAAA:r!uu::w:::MYDJ0
 
 
 
 
 Ju		T	** 
 
 
 
 
 
 
 
 
    c                    t          j        dgdggt           j                  t          j        dgdggt           j                  t          j        dgdggt           j                  g} ||          }|                    d	          }|g d
k    sJ |                    dd          }|dt	          |           ddddddgk    sJ t
          j        j        }|j        rdnd}|	                                
                                d|j         d| ddt	          |           d| ddddddgk    sJ  ||g          }|                    d	          }|g dk    sJ dS )z1Test printing with 'fake' multidimensional column)r   )r   r   )r   )r   )r   )r   Tr   )z    col0       col1       col2   z int64[1,1] int64[1,1] int64[1,1]z ---------- ---------- ----------z          1          3          5z         10         30         50r!   r#   r$   r%   zQ<thead><tr><th>int64[1,1]</th><th>int64[1,1]</th><th>int64[1,1]</th></tr></thead>z'<tr><td>1</td><td>3</td><td>5</td></tr>z*<tr><td>10</td><td>30</td><td>50</td></tr>r&   r'   r(   r)   r*   r+   r,   r-   )z    col0    zint64[2,1,1]------------z     1 .. 10z     3 .. 30z     5 .. 50Nr/   r;   s          rA   test_fake_multidimzTestMultiD.test_fake_multidimG   s    Htfug&bh777Htfug&bh777Htfug&bh777

 JsOO		T	** 
 
 
 
 
 
 
 		t	55(r!uu(((M_58
 
 
 
 
 *9#$83}}))++Az*AAVAAA:r!uu::w:::M_580
 
 
 
 
 Ju		T	** 
 
 
 
 
 
 
 
 
rC   N)r:   
__module____qualname__rB   rF    rC   rA   r   r      s3        /
 /
 /
b/
 /
 /
 /
 /
rC   r   c            	          t          j        dg          } t           j        j        }|                                                                 ddt          |            d| ddddd	d
dgk    sJ d S )N)z!<script>alert("gotcha");</script>r   r   z<div><i>Table length=3</i>r#   r,   r$   z%<thead><tr><th>col0</th></tr></thead>z&<thead><tr><th>str33</th></tr></thead>zI<tr><td>&lt;script&gt;alert(&quot;gotcha&quot;);&lt;/script&gt;</td></tr>z<tr><td>2</td></tr>z<tr><td>3</td></tr>r-   )r   r   r5   r6   r8   r9   r4   )r>   r@   s     rA   test_html_escapingrK   y   s    @ABBAj5G==??%%''$62a55667666/0S	, 	 	 	 	 	 	rC   c                   |    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zej        d             ZdS )
TestPprintc                      |t                     | _        d| j        d         _        d| j        d         _        d| j        d         _        d| j        d         _         |t                    | _        d S )Necol0z.6fcol1zkm**2z
kg s m**-2col19)BIG_WIDE_ARRtbformatunit	SMALL_ARRts)r<   r   s     rA   _setupzTestPprint._setup   sa    *\**!$!&& ,*Y''rC   c                      |            }|                                 }|dgk    sJ t          |          }|j        rdnd}|                                d|j         d| ddgk    sJ d S )Nz<No columns>r'   r(   <r*   z	length=0>)r3   reprr7   r9   r:   )r<   r   r>   r?   cr7   s         rA   test_empty_tablezTestPprint.test_empty_table   s    JLL		(((((GG#$83||~~7
#77f777"
 
 
 
 
 
 
rC   c                    |                      |           t          j        dt          j                                      dd          } ||                                          }t          j                    \  }}t          |          |k    sJ |dd         D ]#}|dz
  t          |          cxk     r|k    sn J $dS )zTry getting screen size but fail to defaults because testing doesn't
        have access to screen (fcntl.ioctl fails).
        i  r   r   r   Nr   )	rY   r0   arangefloat64reshaper3   r
   terminal_sizelen)r<   r   r=   r?   nlineswidthlines          rA   test_format0zTestPprint.test_format0   s     	JiBJ///77R@@
3''))-//5zzV#####2#J 	3 	3D2:D		2222U2222222	3 	3rC   c                 |    |                      |           | j                            dd          }|g dk    sJ dS )z2Basic test of formatting, unit header row included   r   	max_lines	max_widthz&    col0         col1    ...   col19  &    km2                  ... kg s / m2&------------ ----------- ... ---------&0.000000e+00    1.000000 ...      19.0&         ...         ... ...       ...&1.960000e+03 1961.000000 ...    1979.0&1.980000e+03 1981.000000 ...    1999.0Length = 100 rowsNrY   rT   r3   r<   r   r?   s      rA   test_format1zTestPprint.test_format1   [    J!r:: 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                 ~    |                      |           | j                            ddd          }|g dk    sJ dS )z2Basic test of formatting, unit header row excludedrk   r   Frm   rn   	show_unit)z#    col0         col1    ... col19 z#------------ ----------- ... ------z#0.000000e+00    1.000000 ...   19.0z#2.000000e+01   21.000000 ...   39.0z#         ...         ... ...    ...z#1.960000e+03 1961.000000 ... 1979.0z#1.980000e+03 1981.000000 ... 1999.0rv   Nrw   rx   s      rA   test_format2zTestPprint.test_format2   ]    J!rUKK 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                 ~    |                      |           | j                            ddd          }|g dk    sJ dS )zInclude the unit header rowrk   r   Tr|   ro   Nrw   rx   s      rA   test_format3zTestPprint.test_format3   s]    J!rTJJ 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                 ~    |                      |           | j                            ddd          }|g dk    sJ dS )z"Do not include the name header rowrk   r   F)rm   rn   	show_name)rp   rq   rr   z&2.000000e+01   21.000000 ...      39.0rs   rt   ru   rv   Nrw   rx   s      rA   test_format4zTestPprint.test_format4   r   rC   c                 |    |                      |           | j                            dd          }|g dk    sJ dS )zBasic table printr`   rl   zcol0 col1 col2z---- ---- ----z   0    1    2z   3    4    5z   6    7    8z   9   10   11z  12   13   14z  15   16   17NrY   rX   r3   rx   s      rA   test_noclipzTestPprint.test_noclip   s[    J";; 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                 |    |                      |           | j                            dd          }|g dk    sJ dS )zmax lines below hard limit of 8r   r`   rl   r   Nr   rx   s      rA   
test_clip1zTestPprint.test_clip1   rz   rC   c                     |                      |           | j                            dddd          }|g dk    sJ dS )z8max lines below hard limit of 8 and output longer than 8r   r`   T)rm   rn   r}   r    )z col0  col1  col2z                 zint64 int64 int64z----- ----- -----z    0     1     2z  ...   ...   ...z   15    16    17Length = 6 rowsNr   rx   s      rA   
test_clip2zTestPprint.test_clip2  si    J2$   
 
  	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c                 ~    |                      |           | j                            ddd          }|g dk    sJ dS )zUMax lines below hard limit of 8 and max width below hard limit
        of 10
        r   r   Tr|   )zcol0 ...z     ...z---- ...z   0 ...z ... ...z  12 ...z  15 ...r   Nr   rx   s      rA   
test_clip3zTestPprint.test_clip3  s_     	J!qDII 	
 	
 	
 	
 	
 	
 	
 	
 	
rC   c           	          |                      |           dD ]O}| j                            |d          }t          |          t	          dt          d|                    k    sJ PdS )zTest a range of max_lines)r   r   r   r   r      rk   r   e   f   g   h      F)rm   r}   rk   r   N)rY   rT   r3   re   maxmin)r<   r   rm   r?   s       rA   
test_clip4zTestPprint.test_clip4'  sr    JL 	= 	=IGOOi5OIIEu::QC(;(;!<!<<<<<<	= 	=rC   c                     |                      |           | j                                        }t          |          t          j        d         dz   k    sJ dS z)Test that all rows are printed by defaultr   r   N)rY   rT   pformat_allre   rS   shaperx   s      rA   test_pformat_allzTestPprint.test_pformat_all.  sQ    J##%%5zz\/2Q6666666rC   c                     |                      |           | j                                         |                                \  }}t	          |          t
          j        d         dz   k    sJ dS r   )rY   rT   
pprint_all
readouterrre   rS   r   )r<   r   capsysouterrs        rA   test_pprint_allzTestPprint.test_pprint_all5  si     	J&&((
c3xx<-a014444444rC   N)r:   rG   rH   rY   r^   ri   ry   r~   r   r   r   r   r   r   r   r   pytestfixturer   rI   rC   rA   rM   rM      s        ( ( (	
 	
 	

3 
3 
3
 
 

 
 

 
 
 
 
 

 
 

 
 

 
 
"
 
 
"= = =7 7 7 ^5 5 ^5 5 5rC   rM   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestFormatc                     |ddgddggd          }t          |d                   dk    sJ d	|d         _        t          |d                   d
k    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ t          j        t                    5  d|d         _        d d d            n# 1 swxY w Y   |d         j        dk    sJ d S )Nr   r   r   r   abnamesr   z a 
---
  1
  25.2f  a  
-----
 1.00
 2.00	{ %4.2f }z#   a    
--------
{ 1.00 }
{ 2.00 }%{0:}z a 
---
 %1
 %2	 {0:05d} z   a   
-------
 00001 
 00002 
%4.2f {0:}z   a   
-------
%4.2f 1
%4.2f 2fail)strrU   r   raises
ValueErrorr<   r   r>   s      rA   test_column_formatzTestFormat.test_column_formatA  s   JAA'z:::1S6{{22222 #1S6{{::::: $#1S6{{FFFFF  #1S6{{22222 $#1S6{{BBBBB %#1S6{{BBBBB ]:&& 	# 	#"AcFM	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#v},,,,,,s   D**D.1D.c                    ddl m} |                    dd          5   |t          j        d          gdg          }d|d         _        t          |d                                                   g d	k    sJ d
|d         _        t          |d                                                   g dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r5   rm   rk   r   r   r   r   ) a ---z %0 %1...%18z%19Length = 20 rowsr   )	    a    	---------z	 { 0.00 }	 { 1.00 }	      ...	{ 18.00 }z	{ 19.00 }r   )astropyr5   set_tempr0   ra   rU   r   r9   )r<   r   r5   r>   s       rA   !test_column_format_with_thresholdz,TestFormat.test_column_format_with_threshold_  sA         ]];** 	 	
BIbMM?3%888A#AcFMqv;;))++ 	0 	0 	0 	 	 	 	 (AcFMqv;;))++ 	0 	0 	0 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BCC	C	c                      |ddgddggd          }d |d         _         t          |d                   d	k    sJ t          |d                   d	k    sJ d S )
N      ?       @r   r   r   r   c                 &    t          | dz            S N      @r   xs    rA   <lambda>z4TestFormat.test_column_format_func.<locals>.<lambda>      #a#g,, rC   r    a 
---
3.0
6.0rU   r   r   s      rA   test_column_format_funcz"TestFormat.test_column_format_func{  ss    
 Jc
QF+:>>> /.#1S6{{222221S6{{2222222rC   c                      |ddgddggd          } G d d          } |            |d	         _         t          |d	                   d
k    sJ t          |d	                   d
k    sJ d S )Nr   r   r   r   r   r   c                       e Zd Zd ZdS )6TestFormat.test_column_format_callable.<locals>.formatc                 &    t          |dz            S r   r   r<   r   s     rA   __call__z?TestFormat.test_column_format_callable.<locals>.format.__call__      1s7||#rC   Nr:   rG   rH   r   rI   rC   rA   rU   r     #        $ $ $ $ $rC   rU   r   r   r   )r<   r   r>   rU   s       rA   test_column_format_callablez&TestFormat.test_column_format_callable  s    
 Jc
QF+:>>>	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ #1S6{{222221S6{{2222222rC   c                      |ddgddggd          }d }t          j        t                    5  ||d         _        d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   r   r   c                     d S NrI   r   s     rA   funczBTestFormat.test_column_format_func_wrong_number_args.<locals>.func      DrC   r   r   r   r   rU   )r<   r   r>   r   s       rA   )test_column_format_func_wrong_number_argsz4TestFormat.test_column_format_func_wrong_number_args  s    Jc
QF+:>>>	 	 	 ]:&& 	! 	! AcFM	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                     t          j        ddgddggd          g} ||dg          }d	 |d         _        g d
}t          |d                                                   |k    sJ d S )Nr   r   r   r   i8r   r   r   c                 &    t          | dz            S r   r   r   s    rA   r   z;TestFormat.test_column_format_func_multiD.<locals>.<lambda>  r   rC   )z     a      rE   z  3.0 .. 6.0z30.0 .. 60.0)r0   r1   rU   r   r9   )r<   r   r=   r>   outstrs        rA   test_column_format_func_multiDz)TestFormat.test_column_format_func_multiD  s    x!Q"b*$7778Js3%((( /.#
 
 
 1S6{{%%''6111111rC   c                      |ddgddggd          }t          j        t                    5  d |d         _        d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   r   r   c                     | dz  S )Nr   rI   r   s    rA   r   z<TestFormat.test_column_format_func_not_str.<locals>.<lambda>  s
    a!e rC   r   r   r   s      rA   test_column_format_func_not_strz*TestFormat.test_column_format_func_not_str  s    Jc
QF+:>>> ]:&& 	, 	,+OAcFM	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   A		AAc                 p    |dgdgdgdggd          }d|d         _         d	|d
         _         d|d         _         d|d         _         t          |d                   dk    sJ t          |d
                   dk    sJ t          |d                   dk    sJ t          |d                   dk    sJ d S )Nr   r   r   r   )long title along title blong title clong title dr   r[   r   ^r   >r   0=r   z&long title a
------------
1           z&long title b
------------
     2      z&long title c
------------
           3z&long title d
------------
000000000004r   r   s      rA   test_column_alignmentz TestFormat.test_column_alignment  s    JS1#sQC R
 
 
 $'. #&. #&. #'. 1^$%%)SSSSS1^$%%)SSSSS1^$%%)SSSSS1^$%%)SSSSSSSrC   N)r:   rG   rH   r   r   r   r   r   r   r   r   rI   rC   rA   r   r   ?  s        - - -<  8
3 
3 
33 3 3 ! ! !2 2 2, , ,T T T T TrC   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestFormatWithMaskedElementsc                    t          g dg dgdd          }g d|d         _        t          |d                   dk    sJ d	|d         _        t          |d                   d
k    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ d|d         _        t          |d                   dk    sJ d S )N)r   r   r   r   r   r   r   Tr   r7   TFTr   z a 
---
 --
  2
 --r   z  a  
-----
   --
 2.00
   --r   z,   a    
--------
      --
{ 2.00 }
      --r   z a 
---
 --
 %2
 --r   z'   a   
-------
     --
 00002 
     --r   z'   a   
-------
     --
%4.2f 2
     --)r   maskr   rU   r<   r>   s     rA   r   z/TestFormatWithMaskedElements.test_column_format  s#   999iii(
4HHH)))#1S6{{77777 #1S6{{AAAAA $#1S6{{PPPPP  #1S6{{77777 $#1S6{{KKKKK %#1S6{{KKKKKKKrC   c                    ddl m} |                    dd          5  t          t	          j        d          gdgd          }d	|d         _        d|d         j        d<   d|d         j        d
<   t          |d                   	                                g dk    sJ d|d         _        t          |d                   	                                g dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r   rm   rk   r   r   Tr   r   r`   )r   r    --r   r   r   r  r   r   )r   r   	       --r   r   r   r  r   )
r   r5   r   r   r0   ra   rU   r  r   r9   )r<   r5   r>   s      rA   .test_column_format_with_threshold_masked_tablezKTestFormatWithMaskedElements.test_column_format_with_threshold_masked_table  s_         ]];** 	 	ry}}ocU4@@@A#AcFM!AcFKN"AcFKOqv;;))++ 	0 	0 	0 	 	 	 	 (AcFMqv;;))++ 	0 	0 	0 	 	 	 	 	!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B?C**C.1C.c                     t          g dg dgdd          }g d|d         _        d |d         _        t          |d                   d	k    sJ t          |d                   d	k    sJ d S )
Nr   r   r   r   r   Tr   r  r   c                 &    t          | dz            S r   r   r   s    rA   r   zFTestFormatWithMaskedElements.test_column_format_func.<locals>.<lambda>  r   rC    a 
---
 --
6.0
 --r   r  rU   r   r  s     rA   r   z4TestFormatWithMaskedElements.test_column_format_func  s    
 ???III.jNNN)))#..#1S6{{777771S6{{7777777rC   c                     t          g dg dgdd          }g d|d         _        d }||d         _        t          |d                   d	k    sJ t          |d                   d	k    sJ d S )
Nr	  r   r   Tr   r  r   c                 P    | t           j        j        u rdS t          | dz            S )Nz!!r   )r0   mar7   r   r   s    rA   format_funcz]TestFormatWithMaskedElements.test_column_format_func_with_special_masked.<locals>.format_func  s&    BEL  t1s7||#rC   z a 
---
 !!
6.0
 !!r  )r<   r>   r  s      rA   +test_column_format_func_with_special_maskedzHTestFormatWithMaskedElements.test_column_format_func_with_special_masked
  s    
 ???III.jNNN)))#	$ 	$ 	$ $#1S6{{777771S6{{7777777rC   c                    t          g dg dgdd          }g d|d         _         G d d	          } |            |d         _        t          |d                   d
k    sJ t          |d                   d
k    sJ d S )Nr	  r   r   Tr   r  r   c                       e Zd Zd ZdS )HTestFormatWithMaskedElements.test_column_format_callable.<locals>.formatc                 &    t          |dz            S r   r   r   s     rA   r   zQTestFormatWithMaskedElements.test_column_format_callable.<locals>.format.__call__'  r   rC   Nr   rI   rC   rA   rU   r  &  r   rC   rU   r  r  )r<   r>   rU   s      rA   r   z8TestFormatWithMaskedElements.test_column_format_callable  s    
 ???III.jNNN)))#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ #1S6{{777771S6{{7777777rC   c                 *   t          ddgddggdd          }ddg|d	         _        d
 }t          j        t                    5  ||d	         _        d d d            n# 1 swxY w Y   ddg|d	         _        t          |d	                   dk    sJ d S )Nr   r   r   r   r   Tr   Fr   c                     d S r   rI   r   s     rA   r   zTTestFormatWithMaskedElements.test_column_format_func_wrong_number_args.<locals>.func3  r   rC   z a 
---
 --
 --)r   r  r   r   r   rU   r   )r<   r>   r   s      rA   r   zFTestFormatWithMaskedElements.test_column_format_func_wrong_number_args.  s    C:1v&jFFFUm#	 	 	 ]:&& 	! 	! AcFM	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Tl#1S6{{2222222s   AA"%A"c                 ~   t          j        ddgddggd          g}t          |dgd	          }d|d         j        d
<   d|d         j        d<   d |d         _        g d}t          |d                                                   |k    sJ t          |d                                                   |k    sJ d S )Nr   r   r   r   r   r   r   Tr   )r   r   )r   r   c                 &    t          | dz            S r   r   r   s    rA   r   zMTestFormatWithMaskedElements.test_column_format_func_multiD.<locals>.<lambda>C  r   rC   )z
    a     r.   z
 3.0 .. --z
30.0 .. --)r0   r1   r   r  rU   r   r9   )r<   r=   r>   r   s       rA   r   z;TestFormatWithMaskedElements.test_column_format_func_multiD=  s    x!Q"b*$7778#cU4000 #D #D..#
 
 
 1S6{{%%''611111S6{{%%''6111111rC   N)
r:   rG   rH   r   r  r   r  r   r   r   rI   rC   rA   r   r     s        L L L4  <
8 
8 
88 8 8&8 8 8"3 3 32 2 2 2 2rC   r   c                      t          j        ddgt           j                  } t          | gdg          }d|d         _        t          |d                   dk    sJ dS )	z
    Test for #148, that np.float32 cannot by itself be formatted as float,
    but has to be converted to a python float.
    r   r   r   r   r   r   r   N)r0   r1   float32r   rU   r   )datr>   s     rA   test_pprint_npfloat32r  N  sa    
 (C:RZ
0
0
0CseC5!!!AAcFMqv;;6666666rC   c                      t          dd          } d                                }t          j        | |gdg          }t	          j        |          }|d                                         g dk    sJ d	S )
z
    Test for #1346 and #4944. Make sure a bytestring (dtype=S<N>) in Python 3
    is printed correctly (without the "b" prefix like b'string').
    valzutf-8)encoding   bläh)colS10r   r"  )zcol ----z valr!  N)bytesencoder0   r1   r   r   r3   )r  blahr  r>   s       rA   test_pprint_py3_bytesr(  Y  s}    
 
(
(
(C>>D
(C;~&6
7
7
7CCAU8!B!B!BBBBBBBrC   c            
         t          j        ddddgffddddgffgd	d
t          j        fddt          j        fdt          j        dfgfg          } |                                 g dk    sJ t          j        | g          }|                                |                                 k    sJ t          |                                          g dk    sJ d S )Nr   g      ?g?g333333?r   g      @g@g@suifp0p1)r   )namer   )z  su [i, f[p0, p1]]   z----------------------z(1, (1.5, [1.6, 1.7]))z(2, (2.5, [2.6, 2.7])))z<Table length=2>z      su [i, f[p0, p1]]       z(int64, (float64, float64[2]))z------------------------------z        (1, (1.5, [1.6, 1.7]))z        (2, (2.5, [2.6, 2.7])))	r   Columnr0   r2   rb   r3   r   r\   r9   )r*  r>   s     rA   test_pprint_structuredr1  e  s   	sCj!"sCj!"	
 "(OD"*%bj$'?@A


 

 

B ::<<        	RDA99;;"**,,&&&&77 $ $ $      rC   c                      t          j        g d          } t          j        ddg|           }t          j                    }ddg|d<   ||d<   d	|d         j        _        g d
}|                                |k    sJ d S )N))parf8)r   r4  )r4   i4)r/  U4)g][*?ir   bar)g(@gڬ\mE@!   foor   r   r   r   r]   z({par:6.2f} {min:5.1f} {id:03d} {name:4s})z a  c [par, min, id, name]z--- ----------------------z  1    1.23 -20.0 003 bar z  2   12.35   4.6 033 foo )r0   r   r   r0  r   inforU   r   )r   r]   r>   exps       rA   "test_pprint_structured_with_formatr<    s    HQQQRRE&*	
 	 	 	A 	AVAcFAcFCAcFK  C ==??c!!!!!!rC   c                  z    t          j        ddg          } t          |                               d          sJ dS )zhRegression test for #2213, making sure a nameless column can be printed
    using None as the name.
    r   r   NoneN)r   r0  r   
startswith)r"  s    rA   test_pprint_nameless_colr@    s=     ,Sz
"
"Cs88v&&&&&&&rC   c                     t          j        ddgt           j                  } t          | gdg          }|                    d          }|dt          |           d	d
dddgk    sJ |                    dd          }|dt          |           dd
dddgk    sJ |                    dddg          }|dt          |           dd
dddgk    sJ dS )zTest HTML printingr   r   r   r   r   T)r"   r#   r$   z"<thead><tr><th>a</th></tr></thead>z<tr><td>1.0</td></tr>z<tr><td>2.0</td></tr>r&   ztable-striped)r"   
tableclassz" class="table-striped">r   z" class="table table-striped">N)r0   r1   r  r   r3   r4   )r  r>   r?   s      rA   	test_htmlrC    s6   
(C:RZ
0
0
0CseC5!!!AII4I  E$2a55$$$,     II4OI<<E:2a55:::,     II4Wo,FIGGE@2a55@@@,      rC   c                     t          dd          } |                                 g dk    sJ d| d         _        |                                 g dk    sJ g d}d	d	d	gd
fD ]}||                     |          k    sJ |                     d          g dk    sJ |                     d          g dk    sJ |                     dd	g          g dk    sJ t          dd          } |                     d          g dk    sJ |                     d          g dk    sJ |                     d          g dk    sJ t          ddgddggddg          }d|d         _        |                                g dk    sJ |                    d          g dk    sJ |                    d dg          g d k    sJ d!| d         _        |                     d          g d"k    sJ t	          j        t                    5  |                     d#g           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     d$           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     d$           d d d            n# 1 swxY w Y   |                                  t	          j        t                    5  |                     g d%           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     d&           d d d            d S # 1 swxY w Y   d S )'Nr   iS)kinds) a   b --- ---z  1   bz  2   cr[   r   )rG  rH  z1     bz2     c)rG  rH  z 1   b z 2   c r   )r   r   )align)rG  rH  z1   b  z2   c  r   )rG  rH  z001 00bz002 00c)rG  rH  z1    b z2    c z^^)rG  rH  z^1^ ^b^z^2^ ^c^z^>)rG  rH  z^^1 ^^bz^^2 ^^cz^<)rG  rH  z1^^ b^^z2^^ c^^r   r   r   column1column2r   z#^.2f)column1 column2------- -------z##1.00#       1z##2.00#       2z!<)rL  rM  z1.00!!! 1!!!!!!z2.00!!! 2!!!!!!)rL  rM  z##1.00# 1!!!!!!z##2.00# 2!!!!!!z+d)rG  rH  z+01 00bz+02 00cr   r   )r[   r[   r[   zx=)	r	   r3   rU   r   r   r   r   	TypeErrorpprint)r>   tpfrI  t1s       rA   
test_alignrR    s   Qd###A99;;        AcFM99;;        7
6
6CSz:. - -aiiei,,,,,,,9939 $ $ $     9949   % % %     99C:9&& + + +     	Qd###A9949   % % %     9949   % % %     9949   % % %     
c
QF#Iy+A	B	B	BB"ByM::<<        ::D:!! & & &     ::T4L:)) . . .     AcFM9949   % % %     
z	"	" " "				!!!" " " " " " " " " " " " " " " 
y	!	!  				               
y	!	!  	q               HHJJJ	z	"	" ( (	'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
z	"	"  	t                 sZ   H00H47H4I77I;>I;J>>KK6LL"L?M##M'*M'c                      t          ddgt          j        z  g          } d| d         _        |                                  t          |           }|                                 dS )zBTest for #5802 (fix for #5800 where format_func key is not unique)r   r   z%frP   N)r   umrU   r3   r   )r>   qts     rA   test_auto_format_funcrW  :  sP    1v|nAAfIIIKKK	BJJLLLLLrC   c                  `    t          dgg          } |                                 g dk    sJ dS )z
    Test printing a bytestring column with a value that fails
    decoding to utf-8 and gets replaced by U+FFFD.  See
    https://docs.python.org/3/library/codecs.html#codecs.replace_errors
    s   Z)rP   r$  u     Z�N)r   r3   )r>   s    rA   test_decode_replacerY  D  sM     	zlA99;;         rC   c                   4   e Zd ZdZd Zej                            dd          d             Zd Z	d Z
ej                            dd          ej                            dd	d
d	gf          d                         Zej                            dd          ej                            dd	d
d	gdf          d                         Zej                            dd          d             Zej                            dd          d             Zd Zd Zd ZdS )TestColumnsShowHidez$Tests of show and hide table columnsc                 4    t          ddd          | _        d S )Nr   r   r+  )sizecolsrF  )r	   r>   )r<   s    rA   setup_methodz TestColumnsShowHide.setup_methodU  s    11C888rC   attr)pprint_exclude_namespprint_include_namesc                     | j         }t          t          t          |                    d| dk    sJ t          ||          }t          |          d| dk    sJ  |            J d S )Nz<PprintIncludeExclude name=z default=None>z value=None>)r>   r\   getattrr   )r<   r`  r>   t_show_hides       rA   
test_basiczTestColumnsShowHide.test_basicX  s    F%%&&ATAAAB B B B a&&K  $T$$T$T$TTTTT {}}$$$$$rC   c                     | j         }d|_        d|_        |dd         }|                                dk    sJ |                                dk    sJ d S )Nr   r   r   r   r   r   )r>   rb  ra  r<   r>   t2s      rA   
test_slicezTestColumnsShowHide.test_slicef  sf    F!$!$qsV&&((F2222&&((F222222rC   c                    | j         }d|_        d|_        |                                }|                                dk    sJ |                                dk    sJ d|_        d|_        |                                dk    sJ |                                dk    sJ |                                dk    sJ |                                dk    sJ d S )	Nr   r   rh  ri  r]   d)r]   )rn  )r>   rb  ra  copyrj  s      rA   	test_copyzTestColumnsShowHide.test_copyn  s    F!$!$VVXX&&((F2222&&((F2222"%"%%%''61111%%''61111&&((F2222&&((F222222rC   valuezr   c                    | j         }t          ||          }t          |t                    r|fnt	          |          }|                    |          5   |            |k    sJ |j        d         ||ik    sJ 	 d d d            n# 1 swxY w Y    |            J |j        i k    sJ t          |||            |            |k    sJ |                    d             |            J |                    |            |            |k    sJ |                    d           5   |            J |j        i k    sJ 	 d d d            n# 1 swxY w Y    |            |k    sJ d S )N__attributes__)r>   rd  
isinstancer   tuplesetmetasetattrr<   r`  rq  r>   re  r;  s         rA   test_settingz TestColumnsShowHide.test_setting~  s&    Fa&& %UC00BuhheEll __U## 	; 	;;==C''''6*+c{:::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; {}}$$$ v|||| 	4{}}#### 	{}}$$$ 	{}}####__T"" 	  	 ;==(((6R<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  {}}######s$   &BBB'EEE)r   rr  c                    | j         }t          ||          }t          |t                    r|fnt	          |          }|                    |            |            |k    sJ |                    |            |            |k    sJ |                    |            |            J |                    |           |                    d            |            |dk    rd ndk    sJ |                    ddg           t          j	        t          d|           5  |                    d           d d d            d S # 1 swxY w Y   d S )Nrr  rh  r   z	x not in )match)r   rr  )r>   rd  ru  r   rv  addremoverw  r   r   r   rz  s         rA   test_add_removez#TestColumnsShowHide.test_add_remove  s    Fa&& %UC00BuhheEll 	{}}#### 	{}}#### 	5!!!{}}$$$ 	3{}}#6BBBB 	c
###]:-?-?-?@@@ 	+ 	+z***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   !EEEc                     | j         }t          ||          }|                    ddg           |                    dd            |            dk    sJ d S )Nr   r   aa)r  r   )r>   rd  rw  rename_columnr<   r`  r>   t_hide_shows       rA   test_renamezTestColumnsShowHide.test_rename  s_    Fa&&c
###	T"""{}}++++++rC   c                     | j         }t          ||          }|                    ddg           |d=  |            dk    sJ d S )Nr   r   ri  )r>   rd  rw  r  s       rA   test_removezTestColumnsShowHide.test_remove  sR    Fa&&c
###cF{}}&&&&&&rC   c                 :   | j         }ddg|_        ddg|_        t                      }t	          j        ||d           t	          j        |                                d          }|                                dk    sJ |                                dk    sJ d S )	Nr   yr   rr  ecsv)rU   )r   r  )r   rr  )r>   ra  rb  r   r   writereadgetvalue)r<   r>   r   rk  s       rA   test_serializationz&TestColumnsShowHide.test_serialization  s     F"%s"%sjjAs6****Zv666&&((J6666&&((J666666rC   c                    | j         }g d}|j                            ddg          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ |j                            ddg          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ |j                            ddg          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ |j                            ddg          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ |j                            g d          5  |j                            dg          5  |                                }ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ||k    sJ dS )zHTest that pprint_include/exclude_names actually changes the print output)z b   d rH  z  2   4r   r]   Nr   rn  )r   r]   rn  )r>   ra  rw  r   rb  r<   r>   r;  r   s       rA   test_outputzTestColumnsShowHide.test_output  sJ   F
 
 
 #''c
33 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz#''c
33 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz#''c
33 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz#''c
33 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz
 #''88 	" 	"!:P:T:TE;
 ;
 	" 	" --//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" czzzzzzs}   A		AA8BB BC))C-0C-D99D= D=(F<F%F<%F)	)F<,F)	-F<<G G c                 x   | j         }d|d<   d|d<   g d}|j                            d          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ g d}|j                            d          5  |j                            d	          5  |                                }ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ||k    sJ g d
}|j                            d	          5  |                                }ddd           n# 1 swxY w Y   ||k    sJ dS )zATest that pprint_include/exclude_names works with globs (fnmatch)r   a2r   a23)z a   a2 a23z--- --- ---z  1   1   2za*N)z a   a2rH  z  1   1za??)z a   b   c   d   a2z--- --- --- --- ---z  1   2   3   4   1)r>   rb  rw  r   ra  r  s       rA   test_output_globsz%TestColumnsShowHide.test_output_globs  sU   F$%
 
 

 #''-- 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz
 
 

 #''-- 	" 	"q/E/I/I%/P/P 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzz
 
 

 #''.. 	" 	"--//C	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"czzzzzzsY   AAACB>2C>C	CC	CCCD''D+.D+N)r:   rG   rH   __doc__r_  r   markparametrizerf  rl  rp  r{  r  r  r  r  r  r  rI   rC   rA   r[  r[  R  s       ..9 9 9 [V%UVV% % WV%3 3 33 3 3  [V%UVV[WsS#J&788$ $ 98 WV$B [V%UVV[WsS#J
&CDD+ + ED WV+< [V%UVV, , WV, [V%UVV' ' WV'7 7 7     D" " " " "rC   r[  c                  n    t          ddgddgg          } g d}|                                 |k    sJ dS )z+Newlines and tabs are escaped in table reprr   zb 
 c 	 
 dr   zy
)rows)zcol0      col1     z---- --------------z   a b \n c \t \n dz   x            y\nN)r   r   r>   r;  s     rA   test_embedded_newline_tabr  &  s]    "#%L
	 	 	A  C ==??c!!!!!!rC   c                      t                      } ddg| d<   t          j        dt          j                  | d<   g d}|                     d          |k    sJ dS )	z8Test of fix for #13836 when a zero-dim column is presentr   r   )r   r   r   )r   r   )z a        b      zstr1 float64[0,1]z---- ------------z   a             z   b             Tr   N)r   r0   onesrb   r   r  s     rA   test_multidims_with_zero_dimr  7  sj    A3ZAcFW9BJ777AcF  C ==D=))S000000rC   )+ior   numpyr0   r   r   r   r   rT  
astropy.ior   astropy.tabler   r   astropy.table.table_helpersr	   astropy.utilsr
   ra   rb   rc   rS   r2   rW   r  usefixturesr   rK   rM   r   r   r  r(  r1  r<  r@  rC  rR  rW  rY  r[  r  r  rI   rC   rA   <module>r     s
                                ' ' ' ' ' ' ' ' 4 4 4 4 4 4 ! ! ! ! ! !ryRZ00088bAABIb)))11!Q77	 &&a
 a
 a
 a
 a
 a
 a
 '&a
H   &&s5 s5 s5 s5 s5 s5 s5 '&s5l &&BT BT BT BT BT BT BT '&BTJF2 F2 F2 F2 F2 F2 F2 F2R7 7 7	C 	C 	C  <" " ",' ' '  Bu u up    Q Q Q Q Q Q Q Qh" " ""1 1 1 1 1rC   