U
    #c+                     @   s   d dl Z d dlZd dlmZ d dlmZ d dlZd dlZd dl	m
Z
mZmZmZmZmZ d dlZG dd dZG dd dZG d	d
 d
ZG dd dZdd ZG dd dZdS )    N)given)numpy)assert_assert_equalassert_raisesassert_warnsHAS_REFCOUNTassert_raises_regexc                   @   sZ   e Zd Zdd Zdd Zejjdddd Zd	d
 Z	dd Z
dd Zdd Zdd ZdS )TestArrayReprc                 C   s$   t t jt jg}tt|d d S )Narray([nan, inf]))nparraynaninfr   reprselfx r   D/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_arrayprint.pytest_nan_inf   s    zTestArrayRepr.test_nan_infc                 C   s   G dd dt j}t ddg|}tt|d t ddgddgg|}tt|d t jd	d
gd|}tt|d d S )Nc                   @   s   e Zd ZdS )z(TestArrayRepr.test_subclass.<locals>.subN)__name__
__module____qualname__r   r   r   r   sub   s    r         zsub([1, 2])      zsub([[1, 2],
     [3, 4]])r   r   )a<i4dtypez<sub([[(1,), (1,)],
     [(1,), (1,)]], dtype=[('a', '<i4')]))r   ndarrayr   viewr   r   ones)r   r   Zx1dZx2dZxstructr   r   r   test_subclass   s    zTestArrayRepr.test_subclasszSee gh-10544reasonc                    sr   G  fdddt j  d d g}tt|d tt|d  d  d d gg}tt|d tt|d d S )Nc                       s&   e Zd Zdd Z fddZ  ZS )z/TestArrayRepr.test_object_subclass.<locals>.subc                 S   s   t || }|S Nr   Zasarrayr%   clsinpobjr   r   r   __new__*   s    z7TestArrayRepr.test_object_subclass.<locals>.sub.__new__c                    s   t  |}|S r*   super__getitem__r   indret	__class__r   r   r   r3   .   s    z;TestArrayRepr.test_object_subclass.<locals>.sub.__getitem__r   r   r   r0   r3   __classcell__r   r   r8   r   r   )   s   r   zsub([None, None], dtype=object)z[None None]z:sub([None, sub([None, None], dtype=object)], dtype=object)z&[None sub([None, None], dtype=object)])r   r$   r   r   strr   r   r;   r   test_object_subclass'   s    
z"TestArrayRepr.test_object_subclassc                    s<  G fdddt jd}tt|d tt|d ddg}tt|d tt|d d }tt|d tt|d	 d }||d
< ||d
< tt|d tt|d d|d
< d }d |d
< tt|d tt|d	 G  fdddt j t d }tt|d tt|d d d S )Nc                       s&   e Zd Zdd Z fddZ  ZS )z2TestArrayRepr.test_0d_object_subclass.<locals>.subc                 S   s   t || }|S r*   r+   r,   r   r   r   r0   @   s    z:TestArrayRepr.test_0d_object_subclass.<locals>.sub.__new__c                    s   t  |}|S r*   r1   r4   r7   r   r   r3   D   s    z>TestArrayRepr.test_0d_object_subclass.<locals>.sub.__getitem__r9   r   r;   r<   r   r   ?   s   r   r   zsub(1)1zsub([1, 1])z[1 1]zsub(None, dtype=object)Noner   z<sub(sub(sub(..., dtype=object), dtype=object), dtype=object)z...r   z*sub(sub(None, dtype=object), dtype=object)c                       s.   e Zd Z fddZdd Zdd Z  ZS )z:TestArrayRepr.test_0d_object_subclass.<locals>.DuckCounterc                    s(   t  |}t| s$|d  }|S )N.)r2   r3   
isinstancer%   )r   itemresult)DuckCounterr8   r   r   r3   f   s    
zFTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__getitem__c                 S   s   dddd |  dS )NzeroZoneZtwo)r   r   r   many)getrB   r   r   r   r   	to_stringl   s    zDTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.to_stringc                 S   s0   | j dkr|  S ddd i}tj| |dS d S )Nr   allc                 S   s   |   S r*   )rI   r   r   r   r   <lambda>s       zTTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__str__.<locals>.<lambda>	formatter)shaperI   r   array2string)r   fmtr   r   r   __str__o   s    
zBTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__str__)r   r   r   r3   rI   rS   r:   r   )rD   r<   r   rD   e   s   rD      z[zero one two many many]rE   )r   r$   r   r   r=   aranger%   )r   r   ydcr   )rD   r   r   test_0d_object_subclass<   s4    	z%TestArrayRepr.test_0d_object_subclassc                 C   s   t d }||d< tt|d d|d< t d d g}||d< tt|d d|d< t d }t d }||d< ||d< tt|d d|d< d S )Nr   z-array(array(..., dtype=object), dtype=object)r   r   z5array([None, array(..., dtype=object)], dtype=object)zBarray(array(array(..., dtype=object), dtype=object), dtype=object)r   r   r   r   )r   Zarr0darr1dfirstsecondr   r   r   test_self_containingz   s(    


z"TestArrayRepr.test_self_containingc                 C   s6   t d d g}ddg|d< dg|d< tt|d d S )Nr   r   r   r   z.array([list([1, 2]), list([3])], dtype=object)rY   )r   rZ   r   r   r   test_containing_list   s    
z"TestArrayRepr.test_containing_listc                 C   s   t td d S )Ns   test)r   r   voidrH   r   r   r   test_void_scalar_recursion   s    z(TestArrayRepr.test_void_scalar_recursionc                 C   s*   t g }t jd|d}tt|d d S )Nr   r"   z!array([(), (), (), ()], dtype=[]))r   r#   emptyr   r   )r   Z	no_fieldsZarr_no_fieldsr   r   r   test_fieldless_structured   s    
z'TestArrayRepr.test_fieldless_structuredN)r   r   r   r   r'   pytestmarkZxfailr>   rX   r]   r^   r`   rb   r   r   r   r   r
      s   
>r
   c                   @   s   e Zd Zdd ZdS )TestComplexArrayc              l      sL  dddt jt j t jgfddD }t jt jt jg  f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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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'd(d(d(d)d)d)d*d*d*gl}t||D ]\}}t|| q2d S )+Nr   r   c                    s    g | ]} D ]}t ||qqS r   )complex).0rpip)rvalsr   r   
<listcomp>   s       z-TestComplexArray.test_str.<locals>.<listcomp>c                    s(   g | ] } D ]}t t|g|qqS r   )r=   r   r   )rh   cdt)dtypesr   r   rl      s       z[0.+0.j]z[0.+1.j]z[0.-1.j]z	[0.+infj]z	[0.-infj]z	[0.+nanj]z[1.+0.j]z[1.+1.j]z[1.-1.j]z	[1.+infj]z	[1.-infj]z	[1.+nanj]z	[-1.+0.j]z	[-1.+1.j]z	[-1.-1.j]z
[-1.+infj]z
[-1.-infj]z
[-1.+nanj]z	[inf+0.j]z	[inf+1.j]z	[inf-1.j]z
[inf+infj]z
[inf-infj]z
[inf+nanj]z
[-inf+0.j]z
[-inf+1.j]z
[-inf-1.j]z[-inf+infj]z[-inf-infj]z[-inf+nanj]z	[nan+0.j]z	[nan+1.j]z	[nan-1.j]z
[nan+infj]z
[nan-infj]z
[nan+nanj])r   r   r   Z	complex64ZcdoubleZclongdoublezipr   )r   Zcvalsactualwantedresvalr   )ro   rk   r   test_str   s                                                                            &zTestComplexArray.test_strN)r   r   r   ru   r   r   r   r   re      s   re   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eeeddd Zejje dddd Zd S )!TestArray2Stringc                 C   sN   t d}tt |dk tt j|ddddk tt j|dddk d	S )
zBasic test of array2string.r   z[0 1 2]r   1.13max_line_widthlegacyz[0 1
 2]ry   z	[0
 1
 2]N)r   rU   r   rQ   r   r    r   r   r   
test_basic   s    
zTestArray2String.test_basicc              	   C   s4   t td  tjtdddgd d W 5 Q R X d S )Nnonsenser   r   r   )r~   )r	   	TypeErrorr   rQ   r   rH   r   r   r   test_unexpected_kwarg   s    z&TestArray2String.test_unexpected_kwargc                 C   s  dd }t d}d}d}tt j|d|iddk tt j|d	|iddk tt j|dd
d iddk tt j|ddd id| tt j|ddd id| t d}tt j|ddd iddk tt j|ddd iddk t ddg}tt j|ddd iddk dS )z6Test custom format function for each element in array.c                 S   s,   t | dk rdS t | dk r$dS dS d S )Nr   .r   oO)r   absrK   r   r   r   _format_function   s
    z?TestArray2String.test_format_function.<locals>._format_functionr   z[0x0 0x1 0x2]z[0o0 0o1 0o2]rJ   rN   z[. o O]int_kindc                 S   s   d|  S )Nz%.4fr   rK   r   r   r   rL      rM   z7TestArray2String.test_format_function.<locals>.<lambda>z[0.0000 1.0000 2.0000]intc                 S   s   t | S r*   )hexrK   r   r   r   rL      rM   c                 S   s   t | S r*   )octrK   r   r   r   rL      rM         @
float_kindc                 S   s   d|  S Nz%.2fr   rK   r   r   r   rL      rM   z[0.00 1.00 2.00]floatc                 S   s   d|  S r   r   rK   r   r   r   rL      rM   abcdefZnumpystrc                 S   s   | d S Nr   r   )sr   r   r   rL     rM   z[abcabc defdef]N)r   rU   r   rQ   r   r   )r   r   r   Zx_hexZx_octr   r   r   r   test_format_function   s<    

z%TestArray2String.test_format_functionc              	   C   s  t dt jdfdt jdfg}t jddg|d}tt |d t jd	d
 zBt jddgd}|dd  	t 
d tt |td W 5 t jdd
 X tt |td t jdddgd}|dd  	t 
d tt |td t jddgfddgfgdgd}tt |d t jddgddggfddgddggfgdgd}tt |d  t jd!d"d}tt |d# d S )$Nname   Zgrades)r   )ZSarah)g       @      @)ZJohn)g      @r   r"   z([('Sarah', [8., 7.]) ('John', [6., 7.])]rw   rz   F
   )AzM8[s])rP   r#   rT   ZNaTz                [('1970-01-01T00:00:00',) ('1970-01-01T00:00:00',) ('1970-01-01T00:00:00',)
                 ('1970-01-01T00:00:00',) ('1970-01-01T00:00:00',) ('NaT',) ('NaT',)
                 ('NaT',) ('NaT',) ('NaT',)]a;              [('1970-01-01T00:00:00',) ('1970-01-01T00:00:00',)
             ('1970-01-01T00:00:00',) ('1970-01-01T00:00:00',)
             ('1970-01-01T00:00:00',) (                'NaT',)
             (                'NaT',) (                'NaT',)
             (                'NaT',) (                'NaT',)]i@ )r   zm8[s]z~            [(123456,) (123456,) (123456,) (123456,) (123456,) ( 'NaT',) ( 'NaT',)
             ( 'NaT',) ( 'NaT',) ( 'NaT',)]r   rf   {   )Bi4r   z[([  1,  -1],) ([123,   1],)]r   r   r      )r   r   r   z1[([[ 0,  1], [ 2,  3]],) ([[12,  0], [ 0,  0]],)])      ?g7 @r   zf8,f8,f8z(1., 2.12345679, 3.))r   r#   str_float64r   r   rQ   set_printoptionszerosfill
datetime64textwrapdedentfull)r   rn   r   r   Z
struct_intZstruct_2dintZarray_scalarr   r   r   test_structure_format  sN    
 
&
 z&TestArray2String.test_structure_formatc                 C   s   t jddddddddddd	d
ddddgddd}tt|d d tt|d d tt|d ttt|tt | ttt|d tt |d  d S )N   [   2   K      A   r      3   1   m   R   e   d   u1r"   ZV8r   z)void(b'\x1B\x5B\x32\x4B\x07\x41\x0A\x08')z#b'\x1B\x5B\x32\x4B\x07\x41\x0A\x08'zearray([b'\x1B\x5B\x32\x4B\x07\x41\x0A\x08',
       b'\x1B\x5B\x33\x31\x6D\x52\x65\x64'], dtype='|V8'))r   r   r%   r   r   r=   evalvarsr|   r   r   r   test_unstructured_void_repr=  s*           z,TestArray2String.test_unstructured_void_reprc                 C   s&   t dt}tt j|dddd d S )Nr   r   r   Z	edgeitems	thresholdz	[0 ... 0])r   r   r   r   rQ   )r   Zarrr   r   r   test_edgeitems_kwargI  s
    z%TestArray2String.test_edgeitems_kwargc                 C   s2   t d}d}tt|| d}tt|| d S )Ni  z#[   0    1    2 ...  998  999 1000]z0array([   0,    1,    2, ...,  998,  999, 1000]))r   rU   r   r=   r   r   r   ZstrAZreprAr   r   r   test_summarize_1dQ  s
    
z"TestArray2String.test_summarize_1dc                 C   s:   t ddd}d}tt|| d}tt|| d S )Ni  r   i  zJ[[   0    1    2 ...  498  499  500]
 [ 501  502  503 ...  999 1000 1001]]zdarray([[   0,    1,    2, ...,  498,  499,  500],
       [ 501,  502,  503, ...,  999, 1000, 1001]]))r   rU   reshaper   r=   r   r   r   r   r   test_summarize_2dY  s
    z"TestArray2String.test_summarize_2dc                 C   s  t dd}dd }t||dddd t||d	ddd t||d
ddd t||dd t||d	d t||d
d |d d d d f }t||dddd t||dddd t||dddd t||dd t||dd t||dd d S )N   r   c                 [   s   t j| fd|d|S )N )	separatorry   )r   rQ   )r    widthkwr   r   r   make_strf  s    z1TestArray2String.test_linewidth.<locals>.make_strr   rw   r   z[111111]r   rT   z
[1111
 11]z
[11111
 1]z
[111
 111]r   z[[[111111]]]	   z[[[11111
   1]]]z[[[111
   111]]]z[[[11
   11
   11]]])r   r   r   )r   r    r   br   r   r   test_linewidthc  s    zTestArray2String.test_linewidthc                 C   s:   t dg}tt j|ddd tt j|dddd d S )NZxxxxxrT   r{   z	['xxxxx']rw   rx   z
[ 'xxxxx'])r   r   r   rQ   r|   r   r   r   test_wide_element  s    z"TestArray2String.test_wide_elementc                 C   s   G dd d}t d | g| d gg}tt |d tt j|ddd tt|d G dd	 d	}t d | g| d gg}tt|d
 tt |dd d S )Nc                   @   s   e Zd Zdd ZdS )z7TestArray2String.test_multiline_repr.<locals>.MultiLinec                 S   s   dS )NzLine 1
Line 2r   rH   r   r   r   __repr__  s    z@TestArray2String.test_multiline_repr.<locals>.MultiLine.__repr__Nr   r   r   r   r   r   r   r   	MultiLine  s   r   z5[[None Line 1
       Line 2]
 [Line 1
  Line 2 None]]rT   r{   z4[[None
  Line 1
  Line 2]
 [Line 1
  Line 2
  None]]z`array([[None, Line 1
              Line 2],
       [Line 1
        Line 2, None]], dtype=object)c                   @   s   e Zd Zdd ZdS )z;TestArray2String.test_multiline_repr.<locals>.MultiLineLongc                 S   s   dS )Nz*Line 1
LooooooooooongestLine2
LongerLine 3r   rH   r   r   r   r     s    zDTestArray2String.test_multiline_repr.<locals>.MultiLineLong.__repr__Nr   r   r   r   r   MultiLineLong  s   r   zarray([[None, Line 1
              LooooooooooongestLine2
              LongerLine 3          ],
       [Line 1
        LooooooooooongestLine2
        LongerLine 3          , None]], dtype=object)   zarray([[None,
        Line 1
        LooooooooooongestLine2
        LongerLine 3          ],
       [Line 1
        LooooooooooongestLine2
        LongerLine 3          ,
        None]],
      dtype=object))r   r   r   rQ   r   Z
array_repr)r   r   r    r   r   r   r   test_multiline_repr  s0    		
z$TestArray2String.test_multiline_reprc                 C   sR   t jdtd}t d|d< t d|d< d |d< t d|d	< tt|d
 d S )Nr   r"   r   )r   r   r   )r   r   )r   r   )r   r   )r   r   a  array([[array([[1., 0.],
               [0., 1.]]), array([[1., 0., 0.],
                                  [0., 1., 0.],
                                  [0., 0., 1.]])],
       [None, array([[1.],
                     [1.],
                     [1.]])]], dtype=object))r   ra   objectZeyer&   r   r   r|   r   r   r   test_nested_array_repr  s    z'TestArray2String.test_nested_array_reprUc                 C   sT   t |||g}t|d | d|}t j|tt|d d d}t|| d S )Nr   z[{0!r} {0!r}
 {0!r}]r   r   r{   )r   r   r   formatrQ   lenr   )r   textr    Zexpected_reprrC   r   r   r   test_any_text  s
    
zTestArray2String.test_any_textzPython lacks refcountsr(   c                 C   sZ   t   td}t|}t| t| t|}t   t   t	||k d S r   )
gcdisabler   rU   sysgetrefcountrQ   Zcollectenabler   )r   r    Zr1Zr2r   r   r   test_refcount  s    




zTestArray2String.test_refcountN)r   r   r   r}   r   r   r   r   r   r   r   r   r   r   r   r   hynpZ
from_dtyper   r#   r   rc   rd   Zskipifr   r   r   r   r   r   rv      s    	#8
:
rv   c                   @   s   e Zd 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dd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+TestPrintOptionsz.Test getting and setting global print options.c                 C   s   t  | _d S r*   )r   get_printoptionsoldoptsrH   r   r   r   setup_method  s    zTestPrintOptions.setup_methodc                 C   s   t jf | j d S r*   )r   r   r   rH   r   r   r   teardown_method  s    z TestPrintOptions.teardown_methodc                 C   s<   t dddg}tt|d t jdd tt|d d S )N      ?r   gރB?z+array([1.5       , 0.        , 1.23456789])r   	precisionzarray([1.5   , 0.    , 1.2346]))r   r   r   r   r   r   r   r   r   r}     s    zTestPrintOptions.test_basicc                 C   s   t jdd dgdfdgdfdgdfdgd	fd
gdfdgdfdgdfdgdfdddgdfdgdfdgdftddgdffD ]$\}}t |}tt|d|  qzd S )Nr   r           z0.g333333?g333333ӿz-0.gffffff?z1.r   z2.g      z-2.gGz.z-15.      Y@z100.g?rf   gq=
ף^@z  0.,  -1., 123.0iz-12gffffffz0.-1.jzarray([%s]))r   r   rg   r   r   r   )r   valuesstringr   r   r   r   test_precision_zero  s             
z$TestPrintOptions.test_precision_zeroc                 C   s0   t d}t jddd id tt|d d S )Nr   rJ   c                 S   s   t | d S Nr   r=   rK   r   r   r   rL     rM   z1TestPrintOptions.test_formatter.<locals>.<lambda>rN   array([-1, 0, 1])r   rU   r   r   r   r   r   r   r   test_formatter  s    
zTestPrintOptions.test_formatterc                 C   s  t d}t jddd id tt|d t jdd id tt|d t jdd	d id tt|d t jdd id tt|d t jdd
d id tt|d t jdd id tt|d t d}t jddd id tt|d t jdd id tt|d d S )Nr   rJ   c                 S   s   t | d S r   r   rK   r   r   r   rL     rM   z7TestPrintOptions.test_formatter_reset.<locals>.<lambda>rN   r   r   zarray([0, 1, 2])c                 S   s   t | d S r   r   rK   r   r   r   rL     rM   c                 S   s   t | d S r   r   rK   r   r   r   rL     rM   r   r   r   c                 S   s   t | d S r   r   rK   r   r   r   rL   "  rM   zarray([-1.0, 0.0, 1.0])r   zarray([0., 1., 2.])r   r   r   r   r   test_formatter_reset  s$    

z%TestPrintOptions.test_formatter_resetc                 C   s  t ttddd t ttddd t ttdtjd tjddgd}t t|d d	 t ttd
d d t ttddd d td}tj	ddd id t t|d t t|d t
ttjtdtd tjtdtdd tjtddd d S )Nu   café<U4u   array('café', dtype='<U4')testr   )r    r!   )r   r"   r   z([0, 0, 0],)z
2005-02-25.z*array('2005-02-25', dtype='datetime64[D]')10Yz!array(10, dtype='timedelta64[Y]')rJ   c                 S   s   dS )Nr   r   rK   r   r   r   rL   9  rM   z1TestPrintOptions.test_0d_arrays.<locals>.<lambda>rN   zarray(test)r?   r   )stylerw   )r   rz   r   )r   r=   r   r   r   r   r   r   Ztimedelta64r   r   DeprecationWarningrQ   )r   r    r   r   r   r   test_0d_arrays'  s.    
 zTestPrintOptions.test_0d_arraysc                 C   sR  t dddg}t dddg}t dddg}t dddg}tt|d tt|d	 ttt |d
 d ttt |d d tt|d tt|d ttt t jt jgd ttt t jt j gd t t jddg}t t jddg}t t jddg}t jdd tt|d tt|d tt|d d S )Nr          @r   g      $r         g      Yzarray([1., 2., 3.])zarray([  1.,   2., -10.])r   	array(1.)rf   zarray(-10.)zarray([100.,   2.,  -1.])zarray([-100.,    2.,    1.])r   zarray([ nan, -inf])i g8EGr?g8EGrg*4r   r   z%array([     inf, 1.00e+05, 1.12e+00])z(array([      inf,  1.00e+05, -1.12e+00])z+array([       inf,  1.12e+000, -1.00e+120]))r   r   r   r   r   r   r   )r   r   rV   zwr   r   r   test_float_spacingF  s&    z#TestPrintOptions.test_float_spacingc                 C   sr   t ttddgd t ttddgd t ttdgd t ttdd t ttdd d S )NTzarray([ True,  True])Fzarray([ True, False])zarray([ True])zarray(True)zarray(False))r   r   r   r   rH   r   r   r   test_bool_spacing^  s    z"TestPrintOptions.test_bool_spacingc                 C   s  t d}t dg}t jddgdd}tt|d ttt dd	 tt|d
 ttt dgd tt|d ttt ddgd t jdd tt|d ttt dd tt|d tt|d ttt ddgd t jdd tt|d ttt dd tt|d tt|d t jdd tt|d tt|d tt| d ttt dd ttt dgd  tt|d! ttt d"d#gd$ ttt jd%d& d S )'Ng      @g    VcA      ?      ?6sӭ?6sӭ?c16r"   zarray([0., 1., 2., 3.])r   r   zarray([1.234e+09])r   zarray([0.])7array([1.        +1.j        , 1.12345679+1.12345679j])g       zarray([ 0., -0.]) )signzarray([ 0.,  1.,  2.,  3.])z
array( 1.)zarray([ 1.234e+09])z9array([ 1.        +1.j        ,  1.12345679+1.12345679j])+zarray([+0., +1., +2., +3.])z
array(+1.)zarray([+1.234e+09])z9array([+1.        +1.j        , +1.12345679+1.12345679j])rw   r   zarray([  1.23400000e+09])zarray([ -1.23400000e+09])z
array(1.0)zarray([ 0.])z9array([ 1.00000000+1.j        ,  1.12345679+1.12345679j])r   r   z[ -1.  10.]T)Zwrongarg)	r   rU   r   r   r   r   r=   r   r   )r   r    r   rm   r   r   r   test_sign_spacingj  sJ    
z"TestPrintOptions.test_sign_spacingc                 C   s   t tjddgdd d S )Ng     @g?f2r"   )r   r   r   rH   r   r   r   test_float_overflow_nowarn  s    z+TestPrintOptions.test_float_overflow_nowarnc                 C   s2   t jddd}tt|d tt|d d d S )Nr   z<f,<fr"   zAarray([(1., 1.), (1., 1.)], dtype=[('f0', '<f4'), ('f1', '<f4')])r   z(1., 1.))r   r&   r   r   r|   r   r   r   test_sign_spacing_structured  s
    z-TestPrintOptions.test_sign_spacing_structuredc                 C   s  t jddddddddd	d
g
t jd}t jddddddddgt jd}t jdt jdd }t jddgdd}t jdd tdD t jd}t dddg}t jdd  tt|d! tt|d" tt|d# tt|d$ tt|d% tt|d& t jd'd(d) tt|d! tt|d* tt|d# tt|d d d+ d, tt|d% tt|d- t jd.d/d) tt|d0 tt|d1 tt|d2 tt|d d d+ d3 tt|d4 ttt 	d5d6 tt|d7 t jd.d(d) tt|d8 t jd9d(d) tt|d: tt|d; tt|d< tt|d d d+ d, tt|d% tt|d= t j
d>}tt t j|dd | d S )?NgOe?g/$?gsh|??goŏ1?g1%?g߿yq}?gHP?gM?gQI?gΈ?r"   g:@2?g4?gjId;?gB?gwq?gx$?g?g;?r   r   r   r  r  c                 S   s   g | ]}d  |qS )z1e{})r   )rh   ir   r   r   rl     s     z3TestPrintOptions.test_floatmode.<locals>.<listcomp>   gGz(@r   gr%4xYunique)	floatmodezarray([0.6104  , 0.922   , 0.457   , 0.0906  , 0.3733  , 0.007244,
       0.5933  , 0.947   , 0.2383  , 0.4226  ], dtype=float16)zarray([0.2918820979355541 , 0.5064172631089138 , 0.2848750619642916 ,
       0.4342965294660567 , 0.7326538397312751 , 0.3459503329096204 ,
       0.0862072768214508 , 0.39112753029631175])z4array([0. , 0.1, 0.2, 0.3, 0.4, 0.5], dtype=float16)zarray([1.e+00, 1.e+01, 1.e+02, 1.e+03, 1.e+04, 1.e+05, 1.e+06, 1.e+07,
       1.e+08, 1.e+09, 1.e+10, 1.e+11, 1.e+12, 1.e+13, 1.e+14, 1.e+15,
       1.e+16, 1.e+17, 1.e+18, 1.e+19, 1.e+20, 1.e+21, 1.e+22, 1.e+23,
       1.e+24])z+array([1.234e+001, 1.000e+002, 1.000e+123])z;array([1.         +1.j         , 1.123456789+1.123456789j])Zmaxprecr   )r  r   znarray([0.2918821 , 0.50641726, 0.28487506, 0.43429653, 0.73265384,
       0.34595033, 0.08620728, 0.39112753])rT   z/array([1.e+00, 1.e+05, 1.e+10, 1.e+15, 1.e+20])r  Zfixedr   zmarray([0.6104, 0.9219, 0.4570, 0.0906, 0.3733, 0.0072, 0.5933, 0.9468,
       0.2383, 0.4226], dtype=float16)zGarray([0.2919, 0.5064, 0.2849, 0.4343, 0.7327, 0.3460, 0.0862, 0.3911])zFarray([0.0000, 0.1000, 0.2000, 0.3000, 0.3999, 0.5000], dtype=float16)zCarray([1.0000e+00, 1.0000e+05, 1.0000e+10, 1.0000e+15, 1.0000e+20])z.array([1.2340e+001, 1.0000e+002, 1.0000e+123])r   zarray([0.0000, 0.0000, 0.0000])z'array([1.0000+1.0000j, 1.1235+1.1235j])zearray([0.00000000, 0.09997559, 0.19995117, 0.30004883, 0.39990234,
       0.50000000], dtype=float16)Zmaxprec_equalzarray([0.610352, 0.921875, 0.457031, 0.090576, 0.373291, 0.007244,
       0.593262, 0.946777, 0.238281, 0.422607], dtype=float16)znarray([0.29188210, 0.50641726, 0.28487506, 0.43429653, 0.73265384,
       0.34595033, 0.08620728, 0.39112753])z4array([0.0, 0.1, 0.2, 0.3, 0.4, 0.5], dtype=float16)z7array([1.00000000+1.00000000j, 1.12345679+1.12345679j])z-1p-97)r   r   Zfloat16r   rU   ranger   r   r   r   fromhexrQ   )r   r   rV   r   rm   r   Zwpr    r   r   r   test_floatmode  s          zTestPrintOptions.test_floatmodec                 C   s|   t jdd ttt dd ttt tdt jd t jdd ttt dd ttt tdt jd	 d S )
Nrw   r   g|ӭ?z1.12345678912r   z	(1+nan*j)Fz1.1234567891234568z(1+nanj))r   r   r   r=   r   Z
complex128rg   r   rH   r   r   r   test_legacy_mode_scalars  s    z)TestPrintOptions.test_legacy_mode_scalarsc                 C   sD   t jdd ttt dd t jdd ttt dd d S )Nrw   r   i'  z$[   0    1    2 ..., 9997 9998 9999]Fz#[   0    1    2 ... 9997 9998 9999])r   r   r   r=   rU   rH   r   r   r   test_legacy_stray_comma	  s    z(TestPrintOptions.test_legacy_stray_commac                 C   s   t jdd ttt jddddd ttt jddddtd	 d
}ttt jd|dd| ttt jd|dtd| d S )Nr   	linewidthr   g      4@Zf4r"   zHarray([10., 11., 12., 13., 14., 15., 16., 17., 18., 19.], dtype=float32)g      7@zu            array([10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22.],
                  dtype=float32)r   r   z"array(['1', '1', '1'], dtype='{}')r   zm            array(['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'],
                  dtype='{}'))	r   r   r   r   rU   r   r   r&   r   )r   Zstypr   r   r   test_dtype_linewidth_wrapping  s     z.TestPrintOptions.test_dtype_linewidth_wrappingc                 C   s   t jddd}t jdd tt|td t jddd tt|td	 t jd
dd}t jddd tt|td t jddd tt|td d S )Nr   r   Z
fill_value   r  zN            array([2, 2, 2,
                   2, 2, 2,
                   2])rw   r  rz   z;            array([2, 2, 2,
                   2, 2, 2, 2])r      FzQ            array([2, 2, 2,
                   2, 2, 2,
                   2, 2])z>            array([2, 2, 2, 2,
                   2, 2, 2, 2]))r   r   r   r   r   r   r   r|   r   r   r   test_linewidth_repr  s,    z$TestPrintOptions.test_linewidth_reprc                 C   sT   t jddd}t jdd tt|td t jddd tt|td d S )	Nr  r   r  r  zK            [2 2 2 2 2 2 2 2
             2 2 2 2 2 2 2 2
             2 2]rw   r  z>            [2 2 2 2 2 2 2 2 2
             2 2 2 2 2 2 2 2 2])r   r   r   r   r=   r   r   r|   r   r   r   test_linewidth_strD  s    z#TestPrintOptions.test_linewidth_strc                 C   s   t jddd t dd}tt|td t d}tt|td t jdd	 tt|td
 tt|td d S )Nr   r   r   )r   r   r   z            array([[[ 0, ...,  2],
                    ...,
                    [ 6, ...,  8]],

                   ...,

                   [[18, ..., 20],
                    ...,
                    [24, ..., 26]]]))r   r   r   r   z            array([[[[0.]],

                    ...,

                    [[0.]]],


                   ...,


                   [[[0.]],

                    ...,

                    [[0.]]]])rw   r   z            array([[[ 0, ...,  2],
                    ..., 
                    [ 6, ...,  8]],

                   ..., 
                   [[18, ..., 20],
                    ..., 
                    [24, ..., 26]]])z            array([[[[ 0.]],

                    ..., 
                    [[ 0.]]],


                   ..., 
                   [[[ 0.]],

                    ..., 
                    [[ 0.]]]]))	r   r   rU   r   r   r   r   r   r   )r   r    r   r   r   r   test_edgeitemsV  s(    
zTestPrintOptions.test_edgeitemsc                 C   sX   t ttjtdd t ttjdd t ttjdd t ttjdd t ttjdd d S )Nr   )r   r?      1r   r   )r   
ValueErrorr   r   r   r   rH   r   r   r   test_bad_args  s
    zTestPrintOptions.test_bad_argsN)r   r   r   __doc__r   r   r}   r   r   r   r   r   r   r  r	  r
  r  r  r  r  r  r  r  r   r   r   r   r   r     s*   
)_%Fr   c                  C   s&   d} t jdgtd}tt||  d S )Nu   array(['é'], dtype=object)   ér"   )r   r   r   r   r   )expectedr   r   r   r   test_unicode_object_array  s    r$  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestContextManagerc              	   C   s:   t jdd tt dgd }W 5 Q R X t|d d S )Nr   r   r   r   z[0.67])r   printoptionsr=   r   r   )r   r   r   r   r   test_ctx_mgr  s    zTestContextManager.test_ctx_mgrc              	   C   sD   t  }t j|d d |d d d W 5 Q R X tt  | d S )Nr   r   r  r   r   r  )r   r   r&  r   r   optsr   r   r   test_ctx_mgr_restores  s    

z(TestContextManager.test_ctx_mgr_restoresc              	   C   sR   t  }z"t jddd
 tW 5 Q R X W n tk
r>   Y nX tt  | d S )Nr      r(  )r   r   r&  r  r   r)  r   r   r   test_ctx_mgr_exceptions  s    z*TestContextManager.test_ctx_mgr_exceptionsc              	      sD   ddi}t jf |}|  W 5 Q R X t fdd|D | d S )Nr   r   c                    s   i | ]}| | qS r   r   )rh   kZ
saved_optsr   r   
<dictcomp>  s      z;TestContextManager.test_ctx_mgr_as_smth.<locals>.<dictcomp>)r   r&  copyr   )r   r*  ctxr   r/  r   test_ctx_mgr_as_smth  s    z'TestContextManager.test_ctx_mgr_as_smthN)r   r   r   r'  r+  r-  r3  r   r   r   r   r%    s   
r%  )r   r   Z
hypothesisr   Zhypothesis.extrar   r   rc   r   Znumpy.testingr   r   r   r   r   r	   r   r
   re   rv   r   r$  r%  r   r   r   r   <module>   s&     /  #   5