U
    e»{j‘‰  ã                   @   sf  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d¡Zejdejd
� dd¡Zej d¡G dd„ dƒƒZdd„ Zej d¡G dd„ dƒƒZej d¡G dd„ dƒƒZG dd„ dƒZdd„ Zdd„ Z dd „ Z!d!d"„ Z"d#d$„ Z#d%d&„ Z$d'd(„ Z%d)d*„ Z&d+d,„ Z'G d-d.„ d.ƒZ(d/d0„ Z)d1d2„ Z*dS )3é    )ÚStringION)Útable)Úunits)Úascii)ÚQTableÚTable)Úsimple_table)ÚconsoleiÐ  ©Údtypeéd   é   é   é   é   Ú
table_typec                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestMultiDc                 C   s>  t jddgddggt jd�t jddgdd	ggt jd�t jd
dgddggt jd�g}||ƒ}|jdd�}|dddddgks|t‚|jddd�}|dt|ƒ› d�dddddgks®t‚tjj}|j	rÀdnd}| 
¡  ¡ d|j› d |› d!�dt|ƒ› d"|› d�ddddd#gk�s
t‚||gƒ}|jdd�}|d$d%d&d'd(d)gk�s:t‚d*S )+z*Test printing with multidimensional columné   é   é
   r   r
   r   é   é   é(   é   r   é2   é<   T©Ú
show_dtypez  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ÚAssertionErrorÚidr   ÚconfÚdefault_notebook_table_classÚmaskedÚ_repr_html_Ú
splitlinesÚ__name__©Úselfr   ÚarrÚtÚlinesÚnbclassr5   © r?   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/table/tests/test_pprint.pyÚtest_multidim   sV    ýû
ú

ù

úzTestMultiD.test_multidimc                 C   s0  t jdgdggt jd�t jdgdggt jd�t jdgdggt jd�g}||ƒ}|jdd	�}|d
ddddgkspt‚|jddd�}|dt|ƒ› d�dddddgks¢t‚tjj}|j	r´dnd}| 
¡  ¡ d|j› d|› d�dt|ƒ› d|› d�dddddgksüt‚||gƒ}|jdd	�}|ddd d!d"d#gk�s,t‚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,   r9   r?   r?   r@   Útest_fake_multidimG   sV    ýû
ú

ù


úzTestMultiD.test_fake_multidimN)r8   Ú
__module__Ú__qualname__rA   rC   r?   r?   r?   r@   r      s   1r   c               	   C   sN   t  dg¡} t jj}|  ¡  ¡ ddt| ƒ› d|› d�dddd	d
dgksJt‚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   r3   r4   r6   r7   r2   r1   )r<   r>   r?   r?   r@   Útest_html_escapingy   s    
ørF   c                   @   s‚   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejdd„ ƒZdS )Ú
TestPprintc                 C   sH   |t ƒ| _d| jd _d| jd _d| jd _d| jd _|tƒ| _d S )NÚeÚcol0z.6fZcol1zkm**2z
kg s m**-2Zcol19)ÚBIG_WIDE_ARRÚtbÚformatÚunitÚ	SMALL_ARRÚts)r:   r   r?   r?   r@   Ú_setupŠ   s    
zTestPprint._setupc                 C   sZ   |ƒ }|  ¡ }|dgkst‚t|ƒ}|jr.dnd}| ¡ d|j› d|› d�dgksVt‚d S )Nz<No columns>r$   r%   ú<r'   z	length=0>)r0   r1   Úreprr5   r7   r8   )r:   r   r<   r=   Úcr5   r?   r?   r@   Útest_empty_table“   s    þzTestPprint.test_empty_tablec                 C   s‚   |   |¡ tjdtjd� dd¡}||ƒ ¡ }t ¡ \}}t|ƒ|ksJt	‚|dd… D ]&}|d t|ƒ  k rv|ksVn t	‚qVdS )z€Try getting screen size but fail to defaults because testing doesn't
        have access to screen (fcntl.ioctl fails).
        i   r
   r   r   Néÿÿÿÿr   )
rP   r-   ÚarangeÚfloat64Úreshaper0   r	   Úterminal_sizeÚlenr1   )r:   r   r;   r=   ÚnlinesÚwidthÚliner?   r?   r@   Útest_format0ž   s    
zTestPprint.test_format0c              	   C   s:   |   |¡ | jjddd�}|dddddd	d
dgks6t‚dS )z2Basic test of formatting, unit header row includedé   r   ©Ú	max_linesÚ	max_widthú&    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©rP   rK   r0   r1   ©r:   r   r=   r?   r?   r@   Útest_format1ª   s    
øzTestPprint.test_format1c              	   C   s<   |   |¡ | jjdddd�}|ddddd	d
ddgks8t‚dS )z2Basic test of formatting, unit header row excludedr_   r   F©ra   rb   Ú	show_unitz#    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.0rj   Nrk   rl   r?   r?   r@   Útest_format2¹   s    
øzTestPprint.test_format2c              	   C   s<   |   |¡ | jjdddd�}|ddddd	d
ddgks8t‚dS )zInclude the unit header rowr_   r   Trn   rc   rd   re   rf   rg   rh   ri   rj   Nrk   rl   r?   r?   r@   Útest_format3È   s    
øzTestPprint.test_format3c              	   C   s<   |   |¡ | jjdddd�}|ddddd	d
ddgks8t‚dS )z"Do not include the name header rowr_   r   F)ra   rb   Z	show_namerd   re   rf   z&2.000000e+01   21.000000 ...      39.0rg   rh   ri   rj   Nrk   rl   r?   r?   r@   Útest_format4Ø   s    
øzTestPprint.test_format4c              	   C   s:   |   |¡ | jjddd�}|ddddddd	d
gks6t‚dS )zBasic table printrU   r`   úcol0 col1 col2ú---- ---- ----ú   0    1    2ú   3    4    5ú   6    7    8ú   9   10   11ú  12   13   14ú  15   16   17N©rP   rO   r0   r1   rl   r?   r?   r@   Útest_noclipç   s    
øzTestPprint.test_noclipc              	   C   s:   |   |¡ | jjddd�}|dddddd	d
dgks6t‚dS )zmax lines below hard limit of 8r   rU   r`   rs   rt   ru   rv   rw   rx   ry   rz   Nr{   rl   r?   r?   r@   Ú
test_clip1ö   s    
øzTestPprint.test_clip1c              	   C   s>   |   |¡ | jjddddd�}|ddddd	d
ddgks:t‚dS )z8max lines below hard limit of 8 and output longer than 8r   rU   T)ra   rb   ro   r   z col0  col1  col2z                 zint64 int64 int64z----- ----- -----z    0     1     2z  ...   ...   ...z   15    16    17úLength = 6 rowsNr{   rl   r?   r?   r@   Ú
test_clip2  s"    
   ÿøzTestPprint.test_clip2c              	   C   s<   |   |¡ | jjdddd�}|ddddd	d
ddgks8t‚dS )zUMax lines below hard limit of 8 and max width below hard limit
        of 10
        r   r   Trn   zcol0 ...z     ...z---- ...z   0 ...z ... ...z  12 ...z  15 ...r~   Nr{   rl   r?   r?   r@   Ú
test_clip3  s    
øzTestPprint.test_clip3c                 C   sD   |   |¡ dD ]0}| jj|dd�}t|ƒtdtd|ƒƒkst‚qdS )zTest a range of max_lines)r   r   r   r   r   é   r_   r   ée   éf   ég   éh   é‚   F)ra   ro   r_   rƒ   N)rP   rK   r0   rZ   ÚmaxÚminr1   )r:   r   ra   r=   r?   r?   r@   Ú
test_clip4'  s    
zTestPprint.test_clip4c                 C   s2   |   |¡ | j ¡ }t|ƒtjd d ks.t‚dS ©z)Test that all rows are printed by defaultr   r   N)rP   rK   Úpformat_allrZ   rJ   Úshaper1   rl   r?   r?   r@   Útest_pformat_all.  s    

zTestPprint.test_pformat_allc                 C   s>   |   |¡ | j ¡  | ¡ \}}t|ƒtjd d ks:t‚dS rŠ   )rP   rK   Z
pprint_allZ
readouterrrZ   rJ   rŒ   r1   )r:   r   ZcapsysÚoutÚerrr?   r?   r@   Útest_pprint_all5  s    

zTestPprint.test_pprint_allN)r8   rD   rE   rP   rT   r^   rm   rp   rq   rr   r|   r}   r   r€   r‰   r�   ÚpytestZfixturer�   r?   r?   r?   r@   rG   ˆ   s   	rG   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )Ú
TestFormatc              	   C   sø   |ddgddggdd�}t |d ƒdks,t‚d	|d _t |d ƒd
ksJt‚d|d _t |d ƒdksht‚d|d _t |d ƒdks†t‚d|d _t |d ƒdks¤t‚d|d _t |d ƒdksÂt‚t t¡� d|d _W 5 Q R X |d jdksôt‚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)Ústrr1   rL   r‘   ÚraisesÚ
ValueError©r:   r   r<   r?   r?   r@   Útest_column_formatA  s    




zTestFormat.test_column_formatc              
   C   s¢   ddl m} | dd¡�€ |t d¡gdgd�}d|d _t|d ƒ ¡ d	d
ddddddgksbt‚d|d _t|d ƒ ¡ ddddddddgks”t‚W 5 Q R X d S )Nr   ©r3   ra   r_   r   r”   r–   r›   ú a ú---z %0ú %1ú...ú%18z%19úLength = 20 rowsrš   ú	    a    ú	---------z	 { 0.00 }ú	 { 1.00 }ú	      ...ú	{ 18.00 }z	{ 19.00 })	Úastropyr3   Úset_tempr-   rV   rL   rŸ   r7   r1   )r:   r   r3   r<   r?   r?   r@   Ú!test_column_format_with_threshold_  s2    
ø


øz,TestFormat.test_column_format_with_thresholdc                 C   sR   |ddgddggdd�}dd„ |d	 _ t|d	 ƒd
ks:t‚t|d	 ƒd
ksNt‚d S )Nç      ð?ç       @r   r   r“   r–   c                 S   s   t | d ƒS ©Nç      @©rŸ   ©Úxr?   r?   r@   Ú<lambda>ƒ  ó    z4TestFormat.test_column_format_func.<locals>.<lambda>r”   ú a 
---
3.0
6.0©rL   rŸ   r1   r¢   r?   r?   r@   Útest_column_format_func{  s    z"TestFormat.test_column_format_funcc                 C   s^   |ddgddggdd�}G dd„ dƒ}|ƒ |d	 _ t|d	 ƒd
ksFt‚t|d	 ƒd
ksZt‚d S )Nr³   r´   r   r   r“   r–   c                   @   s   e Zd Zdd„ ZdS )z6TestFormat.test_column_format_callable.<locals>.formatc                 S   s   t |d ƒS rµ   r·   ©r:   r¹   r?   r?   r@   Ú__call__�  s    z?TestFormat.test_column_format_callable.<locals>.format.__call__N©r8   rD   rE   rÀ   r?   r?   r?   r@   rL   �  s   rL   r”   r¼   r½   )r:   r   r<   rL   r?   r?   r@   Útest_column_format_callable‡  s
    z&TestFormat.test_column_format_callablec              	   C   sD   |ddgddggdd�}dd„ }t  t¡� ||d	 _W 5 Q R X d S )
Nr³   r´   r   r   r“   r–   c                 S   s   d S ©Nr?   r“   r?   r?   r@   Úfunc›  s    zBTestFormat.test_column_format_func_wrong_number_args.<locals>.funcr”   ©r‘   r    r¡   rL   )r:   r   r<   rÄ   r?   r?   r@   Ú)test_column_format_func_wrong_number_args—  s    z4TestFormat.test_column_format_func_wrong_number_argsc                 C   s`   t jddgddggdd�g}||dgd�}d	d
„ |d _ddddg}t|d ƒ ¡ |ks\t‚d S )Nr   r   r   r   Úi8r
   r”   r–   c                 S   s   t | d ƒS rµ   r·   r¸   r?   r?   r@   rº   ¦  r»   z;TestFormat.test_column_format_func_multiD.<locals>.<lambda>z     a      rB   z  3.0 .. 6.0z30.0 .. 60.0)r-   r.   rL   rŸ   r7   r1   )r:   r   r;   r<   Úoutstrr?   r?   r@   Útest_column_format_func_multiD¡  s    üz)TestFormat.test_column_format_func_multiDc              	   C   s@   |ddgddggdd�}t  t¡� dd„ |d	 _W 5 Q R X d S )
Nr³   r´   r   r   r“   r–   c                 S   s   | d S )Nr   r?   r¸   r?   r?   r@   rº   ´  r»   z<TestFormat.test_column_format_func_not_str.<locals>.<lambda>r”   rÅ   r¢   r?   r?   r@   Útest_column_format_func_not_str¯  s    z*TestFormat.test_column_format_func_not_strc                 C   s˜   |dgdgdgdggdd�}d|d _ d	|d
 _ d|d _ d|d _ t|d ƒdksXt‚t|d
 ƒdkslt‚t|d ƒdks€t‚t|d ƒdks”t‚d S )Nr   r   r   r   )úlong title aúlong title búlong title cúlong title dr–   rQ   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¢   r?   r?   r@   Útest_column_alignment¶  s    þ



z TestFormat.test_column_alignmentN)r8   rD   rE   r£   r²   r¾   rÂ   rÆ   rÉ   rÊ   rÒ   r?   r?   r?   r@   r’   ?  s   
r’   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestFormatWithMaskedElementsc                 C   sÜ   t dddgdddggddd�}dd	dg|d
 _t|d
 ƒdksBt‚d|d
 _t|d
 ƒdks`t‚d|d
 _t|d
 ƒdks~t‚d|d
 _t|d
 ƒdksœt‚d|d
 _t|d
 ƒdksºt‚d|d
 _t|d
 ƒdksØt‚d S )Nr   r   r   r   r   r“   T©r—   r5   Fr”   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Ÿ   r1   rL   ©r:   r<   r?   r?   r@   r£   Æ  s    




z/TestFormatWithMaskedElements.test_column_formatc              
   C   sÀ   ddl m} | dd¡�ž tt d¡gdgdd�}d	|d _d|d jd< d|d jd
< t|d ƒ 	¡ ddddddddgks€t
‚d|d _t|d ƒ 	¡ ddddddddgks²t
‚W 5 Q R X d S )Nr   r¤   ra   r_   r   r”   TrÔ   r›   rU   r¥   r¦   z --r§   r¨   r©   rª   rš   r«   r¬   z	       --r­   r®   r¯   )r°   r3   r±   r   r-   rV   rL   rÕ   rŸ   r7   r1   )r:   r3   r<   r?   r?   r@   Ú.test_column_format_with_threshold_masked_tableà  s6    
ø


øzKTestFormatWithMaskedElements.test_column_format_with_threshold_masked_tablec                 C   sh   t dddgdddggddd	�}dd
dg|d _dd„ |d _t|d ƒdksPt‚t|d ƒdksdt‚d S )Nr³   r´   r¶   r   r   r   r“   TrÔ   Fr”   c                 S   s   t | d ƒS rµ   r·   r¸   r?   r?   r@   rº     r»   zFTestFormatWithMaskedElements.test_column_format_func.<locals>.<lambda>ú a 
---
 --
6.0
 --©r   rÕ   rL   rŸ   r1   rÖ   r?   r?   r@   r¾   þ  s
    z4TestFormatWithMaskedElements.test_column_format_funcc                 C   sl   t dddgdddggddd	�}dd
dg|d _dd„ }||d _t|d ƒdksTt‚t|d ƒdksht‚d S )Nr³   r´   r¶   r   r   r   r“   TrÔ   Fr”   c                 S   s    | t jjkrdS t| d ƒS d S )Nz!!r¶   )r-   Úmar5   rŸ   r¸   r?   r?   r@   Úformat_func  s    z]TestFormatWithMaskedElements.test_column_format_func_with_special_masked.<locals>.format_funcz a 
---
 !!
6.0
 !!rÙ   )r:   r<   rÛ   r?   r?   r@   Ú+test_column_format_func_with_special_masked
  s    
zHTestFormatWithMaskedElements.test_column_format_func_with_special_maskedc                 C   st   t dddgdddggddd	�}dd
dg|d _G dd„ dƒ}|ƒ |d _t|d ƒdks\t‚t|d ƒdkspt‚d S )Nr³   r´   r¶   r   r   r   r“   TrÔ   Fr”   c                   @   s   e Zd Zdd„ ZdS )zHTestFormatWithMaskedElements.test_column_format_callable.<locals>.formatc                 S   s   t |d ƒS rµ   r·   r¿   r?   r?   r@   rÀ   '  s    zQTestFormatWithMaskedElements.test_column_format_callable.<locals>.format.__call__NrÁ   r?   r?   r?   r@   rL   &  s   rL   rØ   rÙ   )r:   r<   rL   r?   r?   r@   rÂ     s    z8TestFormatWithMaskedElements.test_column_format_callablec              	   C   sv   t ddgddggddd�}ddg|d	 _d
d„ }t t¡� ||d	 _W 5 Q R X ddg|d	 _t|d	 ƒdksrt‚d S )Nr³   r´   r   r   r“   TrÔ   Fr”   c                 S   s   d S rÃ   r?   r“   r?   r?   r@   rÄ   3  s    zTTestFormatWithMaskedElements.test_column_format_func_wrong_number_args.<locals>.funcz a 
---
 --
 --)r   rÕ   r‘   r    r¡   rL   rŸ   r1   )r:   r<   rÄ   r?   r?   r@   rÆ   .  s    zFTestFormatWithMaskedElements.test_column_format_func_wrong_number_argsc                 C   s–   t jddgddggdd�g}t|dgdd	�}d|d jd
< d|d jd< dd„ |d _ddddg}t|d ƒ ¡ |kszt‚t|d ƒ ¡ |ks’t‚d S )Nr   r   r   r   rÇ   r
   r”   TrÔ   )r   r   )r   r   c                 S   s   t | d ƒS rµ   r·   r¸   r?   r?   r@   rº   C  r»   zMTestFormatWithMaskedElements.test_column_format_func_multiD.<locals>.<lambda>z
    a     r+   z
 3.0 .. --z
30.0 .. --)r-   r.   r   rÕ   rL   rŸ   r7   r1   )r:   r;   r<   rÈ   r?   r?   r@   rÉ   =  s    üz;TestFormatWithMaskedElements.test_column_format_func_multiDN)
r8   rD   rE   r£   r×   r¾   rÜ   rÂ   rÆ   rÉ   r?   r?   r?   r@   rÓ   Å  s   rÓ   c                  C   sF   t jddgt jd�} t| gdgd�}d|d _t|d ƒdksBt‚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)r-   r.   Úfloat32r   rL   rŸ   r1   )Údatr<   r?   r?   r@   Útest_pprint_npfloat32N  s    
rß   c                  C   sR   t ddd�} d ¡ }tj| |gdgd�}t |¡}|d  ¡ dd	d
dgksNt‚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)Úencodingu   blÃ¤h)ÚcolZS10r
   râ   zcol ú----z valN)ÚbytesÚencoder-   r.   r   r   r0   r1   )rà   ZblahrÞ   r<   r?   r?   r@   Útest_pprint_py3_bytesY  s
    
ræ   c               	   C   s¨   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d�} |  ¡ ddddgksdt‚t  | g¡}| ¡ |  ¡ ks„t‚t|ƒ 	¡ ddddddgks¤t‚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   ÚColumnr-   r/   rW   r0   r1   r   rR   r7   )rç   r<   r?   r?   r@   Útest_pprint_structurede  s2    þþúü

úrî   c                  C   sl   t  ddddg¡} tjddg| d�}t ¡ }dd	g|d
< ||d< d|d j_ddddg}| ¡ |ksht‚d S )N)ZparÚf8)rˆ   rï   )r2   Úi4)rì   ZU4)g][*ÊÀó?iìÿÿÿr   Úbar)g´äñ´ü°(@gÚ¬ú\mE@é!   Zfoor
   r   r   r”   rS   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 )	r-   r   r   rí   r   ÚinforL   r‹   r1   )r   rS   r<   Úexpr?   r?   r@   Ú"test_pprint_structured_with_formatƒ  s"    þûürõ   c                  C   s$   t  ddg¡} t| ƒ d¡s t‚dS )zhRegression test for #2213, making sure a nameless column can be printed
    using None as the name.
    r³   r´   ÚNoneN)r   rí   rŸ   Ú
startswithr1   )râ   r?   r?   r@   Útest_pprint_nameless_col™  s    rø   c                  C   sº   t jddgt jd�} t| gdgd�}|jdd�}|dt|ƒ› d	�d
dddgksRt‚|jddd�}|dt|ƒ› d�d
dddgks‚t‚|jdddgd�}|dt|ƒ› d�d
dddgks¶t‚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   Z
tableclassz" class="table-striped">r   z" class="table table-striped">N)r-   r.   rÝ   r   r0   r2   r1   )rÞ   r<   r=   r?   r?   r@   Ú	test_html¡  s4    û
û
ûrù   c               	   C   sœ  t ddd�} |  ¡ ddddgks$t‚d| d	 _|  ¡ ddd
dgksFt‚ddddg}dddgdfD ]}|| j|d�ks`t‚q`| jdd�ddddgks–t‚| jdd�ddddgks²t‚| jddgd�ddddgksÒt‚t ddd�} | jdd�ddddgksút‚| jdd�ddddgk�st‚| jdd�dddd gk�s6t‚td!d"gd#dggd$d%gd&�}d'|d$ _| ¡ d(d)d*d+gk�svt‚|jd,d�d(d)d-d.gk�s”t‚|jd d,gd�d(d)d/d0gk�s¶t‚d1| d	 _| jdd�ddd2d3gk�sÞt‚t t¡� | jd4gd� W 5 Q R X t t¡� | jd5d� W 5 Q R X t t¡� | j	d5d� W 5 Q R X |  	¡  t t¡� | j	dddgd� W 5 Q R X t t¡� | j	d6d� W 5 Q R X d S )7Nr   ZiS)Úkindsz a   b ú--- ---z  1   bz  2   crQ   r”   z1     bz2     cz 1   b z 2   c rÏ   )rÏ   rÏ   )Úalignz1   b  z2   c  rÑ   z001 00bz002 00cz1    b z2    c z^^z^1^ ^b^z^2^ ^c^z^>z^^1 ^^bz^^2 ^^cz^<z1^^ b^^z2^^ c^^r³   r´   r   Zcolumn1Zcolumn2r–   z#^.2fzcolumn1 column2z------- -------z##1.00#       1z##2.00#       2z!<z1.00!!! 1!!!!!!z2.00!!! 2!!!!!!z##1.00# 1!!!!!!z##2.00# 2!!!!!!z+dz+01 00bz+02 00crž   r   zx=)
r   r0   r1   rL   r   r‘   r    r¡   Ú	TypeErrorÚpprint)r<   Ztpfrü   Út1r?   r?   r@   Ú
test_alignÂ  s¸    ü

ü

ü

ü
ü
	
ü

ü
ü
ü
üü

ür   c                  C   s:   t ddgtj gƒ} d| d _|  ¡  t| ƒ}| ¡  dS )zBTest for #5802 (fix for #5800 where format_func key is not unique)r   r   z%frI   N)r   ÚuÚmrL   r0   r   )r<   Zqtr?   r?   r@   Útest_auto_format_func:  s
    
r  c                  C   s&   t dggƒ} |  ¡ dddgks"t‚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ðrI   rã   u     Zï¿½N)r   r0   r1   )r<   r?   r?   r@   Útest_decode_replaceD  s    ýr  c                   @   sÜ   e Zd ZdZdd„ Zej dd¡dd„ ƒZdd	„ Z	d
d„ Z
ej dd¡ej ddddgf¡dd„ ƒƒZej dd¡ej ddddgdf¡dd„ ƒƒZej dd¡dd„ ƒZej dd¡dd„ ƒZdd„ Zdd„ Zdd„ ZdS )ÚTestColumnsShowHidez$Tests of show and hide table columnsc                 C   s   t dddd�| _d S )Nr   r   rè   )ÚsizeÚcolsrú   )r   r<   )r:   r?   r?   r@   Úsetup_methodU  s    z TestColumnsShowHide.setup_methodÚattr)Úpprint_exclude_namesÚpprint_include_namesc                 C   sX   | j }ttt|ƒƒd|› d�ks$t‚t||ƒ}t|ƒd|› d�ksFt‚|ƒ d ksTt‚d S )Nz<PprintIncludeExclude name=z default=None>z value=None>)r<   rR   Úgetattrr   r1   )r:   r	  r<   Út_show_hider?   r?   r@   Ú
test_basicX  s    
ÿÿ
zTestColumnsShowHide.test_basicc                 C   sB   | j }d|_d|_|dd… }| ¡ dks.t‚| ¡ dks>t‚d S )Nr”   r•   r   r   ©r”   ©r•   )r<   r  r
  r1   ©r:   r<   Út2r?   r?   r@   Ú
test_slicef  s    zTestColumnsShowHide.test_slicec                 C   sŠ   | j }d|_d|_| ¡ }| ¡ dks*t‚| ¡ dks:t‚d|_d|_| ¡ dksVt‚| ¡ dksft‚| ¡ dksvt‚| ¡ dks†t‚d S )	Nr”   r•   r  r  rS   Úd)rS   )r  )r<   r  r
  Úcopyr1   r  r?   r?   r@   Ú	test_copyn  s    zTestColumnsShowHide.test_copyÚvalueÚzr”   c              	   C   s  | j }t||ƒ}t|tƒr |fnt|ƒ}| |¡�* |ƒ |ksBt‚|jd ||iksXt‚W 5 Q R X |ƒ d kspt‚|ji ks~t‚t|||ƒ |ƒ |ks˜t‚| d ¡ |ƒ d ks°t‚| |¡ |ƒ |ksÈt‚| d ¡�" |ƒ d ksât‚|ji ksðt‚W 5 Q R X |ƒ |k�s
t‚d S )NZ__attributes__)	r<   r  Ú
isinstancerŸ   ÚtupleÚsetr1   ÚmetaÚsetattr©r:   r	  r  r<   r  rô   r?   r?   r@   Útest_setting~  s$    
 

z TestColumnsShowHide.test_setting)r”   r  c              	   C   sÚ   | j }t||ƒ}t|tƒr |fnt|ƒ}| |¡ |ƒ |ks@t‚| |¡ |ƒ |ksXt‚| |¡ |ƒ d kspt‚| |¡ | d¡ |ƒ |dkr”d ndksžt‚| ddg¡ t	j
td|› �d�� | d¡ W 5 Q R X d S )Nr  r  r”   z	x not in )Úmatch)r¹   r  )r<   r  r  rŸ   r  Úaddr1   Úremover  r‘   r    r¡   r  r?   r?   r@   Útest_add_remove¡  s    





z#TestColumnsShowHide.test_add_removec                 C   s<   | j }t||ƒ}| ddg¡ | dd¡ |ƒ dks8t‚d S )Nr”   r•   Úaa)r$  r•   )r<   r  r  Zrename_columnr1   ©r:   r	  r<   Zt_hide_showr?   r?   r@   Útest_renameÁ  s
    
zTestColumnsShowHide.test_renamec                 C   s6   | j }t||ƒ}| ddg¡ |d= |ƒ dks2t‚d S )Nr”   r•   r  )r<   r  r  r1   r%  r?   r?   r@   Útest_removeÉ  s
    
zTestColumnsShowHide.test_removec                 C   sf   | j }ddg|_ddg|_tƒ }tj||dd� tj| ¡ dd�}| ¡ dksRt‚| ¡ dksbt‚d S )	Nr”   Úyr•   r  Zecsv)rL   )r”   r(  )r•   r  )	r<   r
  r  r   r   ÚwriteÚreadÚgetvaluer1   )r:   r<   rŽ   r  r?   r?   r@   Útest_serializationÑ  s    

z&TestColumnsShowHide.test_serializationc              
   C   s"  | j }dddg}|j ddg¡� | ¡ }W 5 Q R X ||ks@t‚|j ddg¡� | ¡ }W 5 Q R X ||kspt‚|j ddg¡� | ¡ }W 5 Q R X ||ks t‚|j ddg¡� | ¡ }W 5 Q R X ||ksÐt‚|j dddg¡�( |j dg¡� | ¡ }W 5 Q R X W 5 Q R X ||k�st‚dS )	zHTest that pprint_include/exclude_names actually changes the print outputz b   d rû   z  2   4r”   rS   r•   r  N)r<   r
  r  r‹   r1   r  ©r:   r<   rô   rŽ   r?   r?   r@   Útest_outputß  s,    ýÿzTestColumnsShowHide.test_outputc              
   C   sÔ   | j }d|d< d|d< dddg}|j d¡� | ¡ }W 5 Q R X ||ksLt‚d	d
dg}|j d¡�& |j d¡� | ¡ }W 5 Q R X W 5 Q R X ||ksšt‚dddg}|j d¡� | ¡ }W 5 Q R X ||ksÐt‚dS )zATest that pprint_include/exclude_names works with globs (fnmatch)r   Za2r   Za23z a   a2 a23z--- --- ---z  1   1   2za*z a   a2rû   z  1   1za??z a   b   c   d   a2z--- --- --- --- ---z  1   2   3   4   1N)r<   r  r  r‹   r1   r
  r-  r?   r?   r@   Útest_output_globs  s0    ýýýz%TestColumnsShowHide.test_output_globsN)r8   rD   rE   Ú__doc__r  r‘   ÚmarkZparametrizer  r  r  r  r#  r&  r'  r,  r.  r/  r?   r?   r?   r@   r  R  s&   
!

"r  c                  C   s6   t ddgddggd�} dddd	g}|  ¡ |ks2t‚d
S )z+Newlines and tabs are escaped in table reprr”   zb 
 c 	 
 dr¹   zy
)Úrowszcol0      col1     z---- --------------z   a b \n c \t \n dz   x            y\nN)r   r‹   r1   ©r<   rô   r?   r?   r@   Útest_embedded_newline_tab&  s    þÿür4  c                  C   sL   t ƒ } ddg| d< tjdtjd�| d< ddddd	g}| jd
d�|ksHt‚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   r-   ZonesrW   r‹   r1   r3  r?   r?   r@   Útest_multidims_with_zero_dim7  s    ûr5  )+Úior   Únumpyr-   r‘   r°   r   r   r  Z
astropy.ior   Zastropy.tabler   r   Zastropy.table.table_helpersr   Zastropy.utilsr	   rV   rW   rX   rJ   r/   rN   r1  Zusefixturesr   rF   rG   r’   rÓ   rß   ræ   rî   rõ   rø   rù   r   r  r  r  r4  r5  r?   r?   r?   r@   Ú<module>   sD   
d
 7
  
!x
 U