o
    1ή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   G/tmp/pip-target-vg8gfxp4/lib/python/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       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   x1dx2d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                       &   e Zd Zdd Z fddZ  ZS )z/TestArrayRepr.test_object_subclass.<locals>.subc                 S      t || }|S Nr   asarrayr&   clsinpobjr   r   r   __new__*      z7TestArrayRepr.test_object_subclass.<locals>.sub.__new__c                       t  |}|S r0   super__getitem__r   indret	__class__r   r   r   r<   .      z;TestArrayRepr.test_object_subclass.<locals>.sub.__getitem__r   r   r   r7   r<   __classcell__r   r   rA   r   r   )       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   rE   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                       r.   )z2TestArrayRepr.test_0d_object_subclass.<locals>.subc                 S   r/   r0   r1   r3   r   r   r   r7   @   r8   z:TestArrayRepr.test_0d_object_subclass.<locals>.sub.__new__c                    r9   r0   r:   r=   r@   r   r   r<   D   rB   z>TestArrayRepr.test_0d_object_subclass.<locals>.sub.__getitem__rC   r   rE   rF   r   r   ?   rG   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.)r;   r<   
isinstancer&   )r   itemresult)DuckCounterrA   r   r   r<   f   s   
zFTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__getitem__c                 S   s   dddd |  dS )Nzeroonetwo)r   r   r   many)getrM   r   r   r   r   	to_stringl      zDTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.to_stringc                 S   s,   | j dkr	|  S ddd i}tj| |dS )Nr   allc                 S   s   |   S r0   )rV   r   r   r   r   <lambda>s       zTTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__str__.<locals>.<lambda>	formatter)shaperV   r   array2string)r   fmtr   r   r   __str__o   s   
zBTestArrayRepr.test_0d_object_subclass.<locals>.DuckCounter.__str__)r   r   r   r<   rV   ra   rD   r   )rO   rF   r   rO   e   s    rO      z[zero one two many many]rP   )r   r%   r   r   rH   aranger&   )r   r   ydcr   )rO   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   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)rg   )r   ri   r   r   r   test_containing_list   s   
z"TestArrayRepr.test_containing_listc                 C   s   t td d S )Ns   test)r   r   voidrU   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   	no_fieldsarr_no_fieldsr   r   r   test_fieldless_structured   s   
z'TestArrayRepr.test_fieldless_structuredN)r   r   r   r   r+   pytestmarkxfailrI   rf   rl   rm   ro   rs   r   r   r   r   r
      s    
>r
   c                   @      e Zd Zdd ZdS )TestComplexArrayc                    sv   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 }g d}t||D ]	\}}t|| q/d 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   )rH   r   r   )r{   cdt)dtypesr   r   r      s   ( )l[0.+0.j]r   r   [0.+1.j]r   r   [0.-1.j]r   r   	[0.+infj]r   r   	[0.-infj]r   r   	[0.+nanj]r   r   [1.+0.j]r   r   [1.+1.j]r   r   [1.-1.j]r   r   	[1.+infj]r   r   	[1.-infj]r   r   	[1.+nanj]r   r   	[-1.+0.j]r   r   	[-1.+1.j]r   r   	[-1.-1.j]r   r   
[-1.+infj]r   r   
[-1.-infj]r   r   
[-1.+nanj]r   r   	[inf+0.j]r   r   	[inf+1.j]r   r   	[inf-1.j]r   r   
[inf+infj]r   r   
[inf-infj]r   r   
[inf+nanj]r   r   
[-inf+0.j]r   r   
[-inf+1.j]r   r   
[-inf-1.j]r   r   [-inf+infj]r   r   [-inf-infj]r   r   [-inf+nanj]r   r   	[nan+0.j]r   r   	[nan+1.j]r   r   	[nan-1.j]r   r   
[nan+infj]r   r   
[nan-infj]r   r   
[nan+nanj]r   r   )r   r   r   	complex64cdoubleclongdoublezipr   )r   cvalsactualwantedresvalr   )r   r~   r   test_str   s   &zTestComplexArray.test_strN)r   r   r   r   r   r   r   r   rx          rx   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]r   z	[0
 1
 2]N)r   rc   r   r_   r   r!   r   r   r   
test_basic   s   
zTestArray2String.test_basicc                 C   sH   t td tjtg dd d W d    d S 1 sw   Y  d S )Nnonsense)r   r   r   )r   )r	   	TypeErrorr   r_   r   rU   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 )Nr   .r   oO)r   absrY   r   r   r   _format_function   s
   z?TestArray2String.test_format_function.<locals>._format_functionr   z[0x0 0x1 0x2]z[0o0 0o1 0o2]rX   r\   z[. o O]int_kindc                 S      d|  S )Nz%.4fr   rY   r   r   r   rZ      r[   z7TestArray2String.test_format_function.<locals>.<lambda>z[0.0000 1.0000 2.0000]intc                 S      t | S r0   )hexrY   r   r   r   rZ      r[   c                 S   r   r0   )octrY   r   r   r   rZ      r[         @
float_kindc                 S   r   Nz%.2fr   rY   r   r   r   rZ      r[   z[0.00 1.00 2.00]floatc                 S   r   r   r   rY   r   r   r   rZ      r[   abcdefnumpystrc                 S   s   | d S Nr   r   )sr   r   r   rZ     r[   z[abcabc defdef]N)r   rc   r   r_   r   r   )r   r   r   x_hex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
 z't jddgd}|dd  	t 
d tt |td W t jdd
 nt jdd
 w 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   grades)r   )Sarah)g       @      @)John)g      @r   r#   z([('Sarah', [8., 7.]) ('John', [6., 7.])]r   r   
   )AzM8[s])r^   r$   rb   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',)]Fa;              [('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   ry   {   )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   r_   set_printoptionszerosfill
datetime64textwrapdedentfull)r   r   r   r   
struct_intstruct_2dintarray_scalarr   r   r   test_structure_format  sL   
 
&
z&TestArray2String.test_structure_formatc                 C   s   t jg d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      r   r   3   1   m   R   e   d   u1r#   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   rH   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   	edgeitems	thresholdz	[0 ... 0])r   r   r   r   r_   )r   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   rc   r   rH   r   r   r   strA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   rc   reshaper   rH   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 )	separatorr   )r   r_   )r!   widthkwr   r   r   make_strf  rW   z1TestArray2String.test_linewidth.<locals>.make_strr   r   r   z[111111]r   rb   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 )Nxxxxxrb   r   z	['xxxxx']r   r   z
[ 'xxxxx'])r   r   r   r_   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                   @   rw   )z7TestArray2String.test_multiline_repr.<locals>.MultiLinec                 S      dS )NzLine 1
Line 2r   rU   r   r   r   __repr__     z@TestArray2String.test_multiline_repr.<locals>.MultiLine.__repr__Nr   r   r   r  r   r   r   r   	MultiLine  r   r  z5[[None Line 1
       Line 2]
 [Line 1
  Line 2 None]]rb   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                   @   rw   )z;TestArray2String.test_multiline_repr.<locals>.MultiLineLongc                 S   r  )Nz*Line 1
LooooooooooongestLine2
LongerLine 3r   rU   r   r   r   r    r  zDTestArray2String.test_multiline_repr.<locals>.MultiLineLong.__repr__Nr  r   r   r   r   MultiLineLong  r   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   r_   r   
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   rp   object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   formatr_   lenr   )r   textr!   expected_reprrN   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   rc   sysgetrefcountr_   collectenabler   )r   r!   r1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   hynp
from_dtyper   r$   r)  rt   ru   skipifr   r2  r   r   r   r   r      s"    	#8
:
r   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 r0   )r   get_printoptionsoldoptsrU   r   r   r   setup_method  s   zTestPrintOptions.setup_methodc                 C   s   t jdi | j d S )Nr   )r   r   r8  rU   r   r   r   teardown_method  s   z TestPrintOptions.teardown_methodc                 C   s:   t g d}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g ddfdgdfdgdftddgdffD ]\}}t |}tt|d|  q<d 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?ry   gq=
ף^@z  0.,  -1., 123.0iz-12gffffffz0.-1.jzarray([%s]))r   r   rz   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   rX   c                 S      t | d S Nr   rH   rY   r   r   r   rZ     r   z1TestPrintOptions.test_formatter.<locals>.<lambda>r\   array([-1, 0, 1])r   rc   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   rX   c                 S   rD  rE  rF  rY   r   r   r   rZ     r   z7TestPrintOptions.test_formatter_reset.<locals>.<lambda>r\   rG  r   zarray([0, 1, 2])c                 S   rD  rE  rF  rY   r   r   r   rZ     r   c                 S   rD  rE  rF  rY   r   r   r   rZ     r   r   r   r   c                 S   rD  rE  rF  rY   r   r   r   rZ   "  r   zarray([-1.0, 0.0, 1.0])r   zarray([0., 1., 2.])rH  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]')rX   c                 S   r  )NrL  r   rY   r   r   r   rZ   9  s    z1TestPrintOptions.test_0d_arrays.<locals>.<lambda>r\   zarray(test)rJ   r   )styler   )rO  r   r   )r   rH   r   r   r   r   r   r   timedelta64r   r   DeprecationWarningr_   )r   r!   r   r   r   r   test_0d_arrays'  s,   

zTestPrintOptions.test_0d_arraysc                 C   sJ  t g d}t g d}t g d}t g d}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 )N)r          @r   )r   rS  g      $)r?  rS        )g      YrS  r   zarray([1., 2., 3.])zarray([  1.,   2., -10.])r   	array(1.)ry   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   rd   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   rU   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   rU  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])r   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])rT  r   z[ -1.  10.]T)wrongarg)	r   rc   r   r   r   r   rH   r   r   )r   r!   r  r   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   rU   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   sx  t jg dt jd}t jg d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 g d}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|d tt|d tt|d  tt|d d d d! tt|d" ttt 	d#d$ tt|d% t jdd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,}tt t j|dd| d S )-N)
g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   rZ  r[  r\  c                 S   s   g | ]}d  |qS )z1e{})r%  )r{   ir   r   r   r         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])maxprecr   )rj  r=  znarray([0.2918821 , 0.50641726, 0.28487506, 0.43429653, 0.73265384,
       0.34595033, 0.08620728, 0.39112753])rb   z/array([1.e+00, 1.e+05, 1.e+10, 1.e+15, 1.e+20])r]  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)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   float16r   rc   ranger   r   r   r   fromhexr_   )r   r   rd   rV  r   rW  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 )
Nr   r   g|ӭ?z1.12345678912r   z	(1+nan*j)Fz1.1234567891234568z(1+nanj))r   r   r   rH   r   
complex128rz   r   rU   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 )Nr   r   i'  z$[   0    1    2 ..., 9997 9998 9999]Fz#[   0    1    2 ... 9997 9998 9999])r   r   r   rH   rc   rU   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@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)rK  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   rc   r   r   r'   r%  )r   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   
fill_value   rv  zN            array([2, 2, 2,
                   2, 2, 2,
                   2])r   rw  r   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{  rv  zK            [2 2 2 2 2 2 2 2
             2 2 2 2 2 2 2 2
             2 2]r   r~  z>            [2 2 2 2 2 2 2 2 2
             2 2 2 2 2 2 2 2 2])r   r   r   r   rH   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.]]]])r   r   z            array([[[ 0, ...,  2],
                    ..., 
                    [ 6, ...,  8]],

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

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


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

                    ..., 
                    [[ 0.]]]]))	r   r   rc   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  rJ      1r<  r;  )r   
ValueErrorr   r   r   r   rU   r   r   r   test_bad_args  s
   zTestPrintOptions.test_bad_argsN)r   r   r   __doc__r9  r:  r   rC  rI  rJ  rR  rX  rY  rb  rd  re  rr  rt  ru  rz  r  r  r  r  r   r   r   r   r6    s,    
)_%Fr6  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   sN   t jdd tt dgd }W d    n1 sw   Y  t|d d S )Nr   r<  rS  r   z[0.67])r   printoptionsrH   r   r   )r   r   r   r   r   test_ctx_mgr  s   zTestContextManager.test_ctx_mgrc                 C   sX   t  }t j|d d |d d d W d    n1 sw   Y  tt  | d S )Nr=  r   rw  r   r=  rw  )r   r7  r  r   r   optsr   r   r   test_ctx_mgr_restores  s   
z(TestContextManager.test_ctx_mgr_restoresc                 C   sV   t  }zt jddd t1 sw   Y  W n	 ty!   Y nw tt  | d S )Nr      r  )r   r7  r  r  r   r  r   r   r   test_ctx_mgr_exceptions  s   z*TestContextManager.test_ctx_mgr_exceptionsc                    s\   ddi}t jdi |}|  W d    n1 sw   Y  t fdd|D | d S )Nr=  r   c                    s   i | ]}| | qS r   r   )r{   k
saved_optsr   r   
<dictcomp>  rg  z;TestContextManager.test_ctx_mgr_as_smth.<locals>.<dictcomp>r   )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  r  r   r   r   r   r    s
    
r  )r,  r*  
hypothesisr   hypothesis.extrar   r3  rt   r   numpy.testingr   r   r   r   r   r	   r   r
   rx   r   r6  r  r  r   r   r   r   <module>   s(      /  #   5