U
    #cDV                     @   sN  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZ	d dl
mZmZmZmZ d dlmZmZmZmZ d dlmZ d dlZejje ddZd	d
 Zedd dd Zedd dd ZG dd dZG dd dZeG dd dZeG dd dZ dd Z!eG dd dZ"G dd dZ#G d d! d!Z$G d"d# d#Z%dS )$    NStringIO)mock)assert_assert_equalassert_raisesassert_raises_regex)_get_implementing_argsarray_function_dispatchverify_matching_signaturesARRAY_FUNCTION_ENABLED)picklez(__array_function__ dispatch not enabled.)reasonc                 O   s   t S NNotImplementedselfargskwargs r   C/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_overrides.py_return_not_implemented   s    r   c                 C   s   | fS r   r   arrayr   r   r   <lambda>       r   c                 C   s   dS 
Docstring.originalr   r   r   r   r   dispatched_one_arg   s    r    c                 C   s   | |fS r   r   Zarray1Zarray2r   r   r   r   "   r   c                 C   s   dS r   r   r!   r   r   r   dispatched_two_arg"   s    r"   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S )TestGetImplementingArgsc                 C   s|   t d}t|g}tt||g t||g}tt||g t|dg}tt||g td|g}tt||g d S )N   npr   r	   r   list)r   r   r   r   r   r   test_ndarray*   s    

z$TestGetImplementingArgs.test_ndarrayc                 C   s   G dd dt j}G dd dt j}t dt j}t d|}t d|}t||g}tt|||g t||g}tt|||g t||g}tt|||g d S )Nc                   @   s   e Zd ZeZdS )zDTestGetImplementingArgs.test_ndarray_subclasses.<locals>.OverrideSubN__name__
__module____qualname__r   __array_function__r   r   r   r   OverrideSub;   s   r.   c                   @   s   e Zd ZdS )zFTestGetImplementingArgs.test_ndarray_subclasses.<locals>.NoOverrideSubNr*   r+   r,   r   r   r   r   NoOverrideSub>   s   r0   r$   )r&   ndarrayr   viewr	   r   r'   )r   r.   r0   r   override_subno_override_subr   r   r   r   test_ndarray_subclasses9   s    z/TestGetImplementingArgs.test_ndarray_subclassesc                 C   s^   G dd d}t d}| }t||g}tt|||g t||g}tt|||g d S )Nc                   @   s   e Zd ZeZdS )zBTestGetImplementingArgs.test_ndarray_and_duck_array.<locals>.OtherNr)   r   r   r   r   OtherQ   s   r6   r$   r%   )r   r6   r   otherr   r   r   r   test_ndarray_and_duck_arrayO   s    
z3TestGetImplementingArgs.test_ndarray_and_duck_arrayc                 C   sx   G dd dt j}G dd d}t d}t d|}| }tt|||g|||g tt|||g|||g d S )Nc                   @   s   e Zd ZeZdS )zQTestGetImplementingArgs.test_ndarray_subclass_and_duck_array.<locals>.OverrideSubNr)   r   r   r   r   r.   _   s   r.   c                   @   s   e Zd ZeZdS )zKTestGetImplementingArgs.test_ndarray_subclass_and_duck_array.<locals>.OtherNr)   r   r   r   r   r6   b   s   r6   r$   )r&   r1   r   r2   r   r	   )r   r.   r6   r   Zsubarrayr7   r   r   r   $test_ndarray_subclass_and_duck_array]   s    
z<TestGetImplementingArgs.test_ndarray_subclass_and_duck_arrayc           	      C   s  G dd d}G dd d|}G dd d|}G dd d}| }| }| }| }t td	gg  t t|g|g t t|d	g|g t t|||g|g t t|||g||g t t||g||g t t||g||g t t|||g|||g t t|||g|||g d S )
Nc                   @   s   e Zd ZeZdS )z8TestGetImplementingArgs.test_many_duck_arrays.<locals>.ANr)   r   r   r   r   Ap   s   r:   c                   @   s   e Zd ZeZdS )z8TestGetImplementingArgs.test_many_duck_arrays.<locals>.BNr)   r   r   r   r   Bs   s   r;   c                   @   s   e Zd ZeZdS )z8TestGetImplementingArgs.test_many_duck_arrays.<locals>.CNr)   r   r   r   r   Cv   s   r<   c                   @   s   e Zd ZeZdS )z8TestGetImplementingArgs.test_many_duck_arrays.<locals>.DNr)   r   r   r   r   Dy   s   r=   r$   )r   r	   )	r   r:   r;   r<   r=   abcdr   r   r   test_many_duck_arraysn   s"    z-TestGetImplementingArgs.test_many_duck_arraysc              	      sr   t td  fddtdD }dd |D }t|d d }t||d d  ttd t| W 5 Q R X d S )N)r-   c                    s"   g | ]}t d t| tf qS )r:   )typestrobject).0i	namespacer   r   
<listcomp>   s     zETestGetImplementingArgs.test_too_many_duck_arrays.<locals>.<listcomp>!   c                 S   s   g | ]
}| qS r   r   rF   tr   r   r   rJ      s         zdistinct argument types)dictr   ranger	   r   r   	TypeError)r   typesZrelevant_argsactualr   rH   r   test_too_many_duck_arrays   s    
z1TestGetImplementingArgs.test_too_many_duck_arraysN)	r*   r+   r,   r(   r5   r8   r9   rB   rT   r   r   r   r   r#   (   s   r#   c                   @   s    e Zd Zedd Zdd ZdS )TestNDArrayArrayFunctionc           
   	   C   sb  G dd d}G dd dt j}G dd dt j}t dg}| }||}||}|jtt jf|dfi d	}t|d
 |jtt j|f||fi d	}t|tk |jtt j|f||fi d	}t|d
 |jtt j|f||fi d	}t|d
 t	t
d t ||f W 5 Q R X t ||f}	t ||f}t||	| t ||f}t||	| d S )Nc                   @   s   e Zd ZeZdS )z3TestNDArrayArrayFunction.test_method.<locals>.OtherNr)   r   r   r   r   r6      s   r6   c                   @   s   e Zd ZdS )z;TestNDArrayArrayFunction.test_method.<locals>.NoOverrideSubNr/   r   r   r   r   r0      s   r0   c                   @   s   e Zd ZeZdS )z9TestNDArrayArrayFunction.test_method.<locals>.OverrideSubNr)   r   r   r   r   r.      s   r.   r$   g      ?funcrR   r   r   r   no implementation found)r&   r1   r   r2   r-   r"   r   r   r   r   rQ   Zconcatenate)
r   r6   r0   r.   r   r7   r4   r3   resultexpectedr   r   r   test_method   sL    

 
 

z$TestNDArrayArrayFunction.test_methodc              	   C   sD   t d}dd }ttd |j|t jf|fi d W 5 Q R X d S )Nr$   c                 S   s   | S r   r   xr   r   r   r      r   z:TestNDArrayArrayFunction.test_no_wrapper.<locals>.<lambda>_implementationrV   )r&   r   r   AttributeErrorr-   r1   )r   r   rW   r   r   r   test_no_wrapper   s    
 z(TestNDArrayArrayFunction.test_no_wrapperN)r*   r+   r,   requires_array_functionr[   r`   r   r   r   r   rU      s   
/rU   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestArrayFunctionDispatchc                 C   s:   t dtjd D ]$}ttjt|d}t|tk qd S )N   r$   )protocol)rP   r   HIGHEST_PROTOCOLloadsdumpsr    r   )r   protoZroundtrippedr   r   r   test_pickle   s
    z%TestArrayFunctionDispatch.test_picklec                 C   s(   t tjd tjjdk r$t tjd d S )Nr    rc   r   )r   r    r*   sysflagsoptimize__doc__r   r   r   r   test_name_and_docstring   s    z1TestArrayFunctionDispatch.test_name_and_docstringc                 C   sj   G dd d}| }t |\}}}}}t||k t|t k tt||h t||fk t|i  d S )Nc                   @   s   e Zd Zdd ZdS )z9TestArrayFunctionDispatch.test_interface.<locals>.MyArrayc                 S   s   | ||||fS r   r   r   rW   rR   r   r   r   r   r   r-      s    zLTestArrayFunctionDispatch.test_interface.<locals>.MyArray.__array_function__Nr*   r+   r,   r-   r   r   r   r   MyArray   s   rr   )r    r   r   set)r   rr   r   objrW   rR   r   r   r   r   r   test_interface   s    z(TestArrayFunctionDispatch.test_interfacec              	   C   s6   G dd d}| }t td t| W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z?TestArrayFunctionDispatch.test_not_implemented.<locals>.MyArrayc                 S   s   t S r   r   rp   r   r   r   r-      s    zRTestArrayFunctionDispatch.test_not_implemented.<locals>.MyArray.__array_function__Nrq   r   r   r   r   rr      s   rr   rX   )r   rQ   r    r   rr   r   r   r   r   test_not_implemented   s    z.TestArrayFunctionDispatch.test_not_implementedN)r*   r+   r,   ri   ro   ru   rw   r   r   r   r   rb      s   rb   c                   @   s   e Zd Zdd Zdd ZdS )TestVerifyMatchingSignaturesc              	   C   s   t dd dd  t dddddd t dddddd tt t dd dd  W 5 Q R X tt t dd ddd W 5 Q R X tt t dd	ddd
d W 5 Q R X tt t dddddd W 5 Q R X d S )Nc                 S   s   dS Nr   r   r\   r   r   r   r     r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>c                 S   s   dS ry   r   r\   r   r   r   r     r   r$   c                 S   s   dS ry   r   r\   r   r   r   r     r   c                 S   s   dS ry   r   )r>   r   r   r   r     r   c                 S   s   dS ry   r   )r?   r   r   r   r     r   c                 S   s   dS ry   r   r\   r   r   r   r     r   c                 S   s   dS ry   r   r\   r   r   r   r   
  r   c                 S   s   dS ry   r   yr   r   r   r   
  r   c                 S   s   dS ry   r   r\   r   r   r   r     r   c                 S   s   dS ry   r   rz   r   r   r   r     r   )N)N)r$   )N)N)N)N)r$   )r$   )r   r   RuntimeErrorrn   r   r   r   test_verify_matching_signatures   s    


 
z<TestVerifyMatchingSignatures.test_verify_matching_signaturesc              	   C   sD   t t tdd dd }W 5 Q R X tdd dddd }d S )	Nc                 S   s   | fS r   r   r\   r   r   r   r     r   zKTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.<lambda>c                 S   s   d S r   r   rz   r   r   r   f  s    zDTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.fc                 S   s   | fS r   r   r\   r   r   r   r     r   F)verifyc                 S   s   d S r   r   rz   r   r   r   r~     s    )r   r|   r
   )r   r~   r   r   r   test_array_function_dispatch  s
    

z9TestVerifyMatchingSignatures.test_array_function_dispatchN)r*   r+   r,   r}   r   r   r   r   r   rx      s   rx   c                     s,   i  G  fddd fdd} | fS )z2Create a duck array type and implements functions.c                       s   e Zd Z fddZdS )z._new_duck_type_and_implements.<locals>.MyArrayc                    s4   | krt S tfdd|D s&t S  | ||S )Nc                 3   s   | ]}t | V  qd S r   )
issubclassrL   )rr   r   r   	<genexpr>#  s     zT_new_duck_type_and_implements.<locals>.MyArray.__array_function__.<locals>.<genexpr>)r   allrp   HANDLED_FUNCTIONSrr   r   r   r-      s
    zA_new_duck_type_and_implements.<locals>.MyArray.__array_function__Nrq   r   r   r   r   rr     s   rr   c                    s    fdd}|S )z/Register an __array_function__ implementations.c                    s   |  < | S r   r   )rW   )r   numpy_functionr   r   	decorator)  s    zD_new_duck_type_and_implements.<locals>.implements.<locals>.decoratorr   )r   r   )r   )r   r   
implements'  s    z1_new_duck_type_and_implements.<locals>.implementsr   )r   r   r   r   _new_duck_type_and_implements  s    r   c                   @   sF   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
dS )TestArrayFunctionImplementationc                 C   s<   t  \}}|tdd }ttdd tt| d d S )Nc                 S   s   dS )Nmyarrayr   r   r   r   r   _7  s    z7TestArrayFunctionImplementation.test_one_arg.<locals>._r$   r   r   )r   r    r   r   rr   r   r   r   r   r   test_one_arg4  s
    

z,TestArrayFunctionImplementation.test_one_argc              	   C   s   t  \}}tdddddd}||ddd}t|d	d t|d	d
dd
 t|| d tt || d
d W 5 Q R X || dd}t|d tt || dd W 5 Q R X d S )Nc                 S   s   | fS r   r   r   optionr   r   r   r   A  r   zDTestArrayFunctionImplementation.test_optional_args.<locals>.<lambda>defaultc                 S   s   |S r   r   r   r   r   r   func_with_optionA  s    zLTestArrayFunctionImplementation.test_optional_args.<locals>.func_with_optionr   c                 S   s   |S r   r   )r   
new_optionr   r   r   my_array_func_with_optionE  s    zUTestArrayFunctionImplementation.test_optional_args.<locals>.my_array_func_with_optionr$   extra)r   yes)r   no)N)r   )r   )r   r
   r   r   rQ   )r   rr   r   r   r   rY   r   r   r   test_optional_args>  s    



z2TestArrayFunctionImplementation.test_optional_argsc              	   C   sl   t  \}}tdd dddd }td}t|||k t|jd ttd ||  W 5 Q R X d S )	Nc                 S   s   | fS r   r   r   r   r   r   r   Z  r   zFTestArrayFunctionImplementation.test_not_implemented.<locals>.<lambda>Zmy)modulec                 S   s   | S r   r   r   r   r   r   rW   Z  s    zBTestArrayFunctionImplementation.test_not_implemented.<locals>.funcr$   z%no implementation found for 'my.func')	r   r
   r&   r   r   r   r+   r   rQ   )r   rr   r   rW   r   r   r   r   rw   W  s    


 z4TestArrayFunctionImplementation.test_not_implementedc              
   C   s   dd }t |dd }z|dd W n& tk
rL } z|}W 5 d }~X Y nX z|dd tdW n2 tk
r } z|j|jkstW 5 d }~X Y nX d S )Nc                   S   s   dS )Nr   r   r   r   r   r   _dispatcheri  s    zQTestArrayFunctionImplementation.test_signature_error_message.<locals>._dispatcherc                   S   s   d S r   r   r   r   r   r   rW   l  s    zJTestArrayFunctionImplementation.test_signature_error_message.<locals>.func   )Zbad_arg	must fail)r
   rQ   AssertionErrorr   )r   r   rW   eexpected_exceptionexcr   r   r   test_signature_error_messagef  s    

z<TestArrayFunctionImplementation.test_signature_error_messagevalue   zthis func is not replacedc              
      sj   t |  fdd}t|dd }z|  tdW n. t k
rd } z| ksTtW 5 d }~X Y nX d S )Nc                      s    d S r   r   r   errorr   r   
dispatcher  s    zITestArrayFunctionImplementation.test_dispatcher_error.<locals>.dispatcherc                   S   s   dS )Nr   r   r   r   r   r   rW     s    zCTestArrayFunctionImplementation.test_dispatcher_error.<locals>.funcr   )rQ   r
   r   )r   r   r   rW   r   r   r   r   test_dispatcher_error{  s    
z5TestArrayFunctionImplementation.test_dispatcher_errorN)r*   r+   r,   r   r   rw   r   pytestmarkparametrizer   r   r   r   r   r   1  s   
r   c                   @   s   e Zd Zdd ZdS )TestNDArrayMethodsc                 C   sB   G dd dt j}t d|}tt|d tt|d d S )Nc                   @   s   e Zd Zdd ZdS )z-TestNDArrayMethods.test_repr.<locals>.MyArrayc                  _   s   t S r   r   r   r   r   r   r   r-     s    z@TestNDArrayMethods.test_repr.<locals>.MyArray.__array_function__Nrq   r   r   r   r   rr     s   rr   r$   z
MyArray(1)1)r&   r1   r   r2   r   reprrD   rv   r   r   r   	test_repr  s    zTestNDArrayMethods.test_reprN)r*   r+   r,   r   r   r   r   r   r     s   r   c                   @   s@   e Zd Zdd Zdd Zedd Zedd Zed	d
 ZdS )TestNumPyFunctionsc                 C   sB   t tjjd t tjjjd t tjjjd t tjjjd d S )Nnumpyz
numpy.charz	numpy.fftznumpy.linalg)	r   r&   sumr+   charequalZfftZlinalgZsolvern   r   r   r   test_set_module  s    z"TestNumPyFunctions.test_set_modulec                 C   s   t tj}td|jk d S )Naxis)inspect	signaturer&   r   r   
parameters)r   r   r   r   r   test_inspect_sum  s    z#TestNumPyFunctions.test_inspect_sumc                 C   s2   t  \}}|tjdd }tt| d d S )Nc                 S   s   dS )Nr   r   r   r   r   r   r     s    z/TestNumPyFunctions.test_override_sum.<locals>._r   )r   r&   r   r   r   r   r   r   test_override_sum  s    

z$TestNumPyFunctions.test_override_sumc                 C   sf   G dd d}|t j|d}d|jj_t|}t|d |jjtj|f|fi  |jj	
  d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z=TestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxyc                 S   s
   || _ d S r   )r   )r   r   r   r   r   __init__  s    zFTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__init__c                 _   s   | j j||S r   )r   r-   r   r   r   r   r-     s    zPTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__array_function__c                 _   s   | j j||S r   )r   	__array__r   r   r   r   r     s    zGTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__array__N)r*   r+   r,   r   r-   r   r   r   r   r   
ArrayProxy  s   r   )specr$   )r   ZMockr   r-   Zreturn_valuer&   r   r   Zassert_called_once_withr   Zassert_not_called)r   r   proxyrY   r   r   r   test_sum_on_mock_array  s    


   z)TestNumPyFunctions.test_sum_on_mock_arrayc                 C   s6   G dd dt j}t d|}tt |d d S )Nc                       s$   e Zd Zdd Z fddZ  ZS )zFTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArrayc                 S   s   dS )Nsummedr   )r   r   outr   r   r   r     s    zJTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArray.sumc                    s   t  ||||S r   )superr-   rp   	__class__r   r   r-     s    zYTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArray.__array_function__)r*   r+   r,   r   r-   __classcell__r   r   r   r   rr     s   rr   r$   r   )r&   r1   r   r2   r   r   rv   r   r   r   "test_sum_forwarding_implementation  s    	z5TestNumPyFunctions.test_sum_forwarding_implementationN)	r*   r+   r,   r   r   ra   r   r   r   r   r   r   r   r     s   
	
r   c                   @   s  e Zd Zdd Zd>ddZdd Zedd	 Zd?edd@eddAeddBeddCeddDee	d
ddfddgddEeddFedddGeddHeddIeddJededdKeededdLed"ed#d$dMed&d' dNed)d' d*d+gd#d,gZejd-eejd.d/dged0d1 Zejd-eejd2d3d3gd4ged5d6 Zejd.d/dgd7d8 Zed9d: Zejd-ed;d< Zd=S )OTestArrayLikec                 C   s,   G dd d}|| _ G dd d}|| _d S )Nc                   @   s   e Zd ZdddZdd ZdS )z+TestArrayLike.setup_method.<locals>.MyArrayNc                 S   s
   || _ d S r   functionr   r   r   r   r   r     s    z4TestArrayLike.setup_method.<locals>.MyArray.__init__c                 S   sH   |t t|jkstzt | |j}W n tk
r<   t Y S X |||S r   )getattrr&   r*   r   r_   r   )r   rW   rR   r   r   my_funcr   r   r   r-     s    
z>TestArrayLike.setup_method.<locals>.MyArray.__array_function__)N)r*   r+   r,   r   r-   r   r   r   r   rr     s   
rr   c                   @   s   e Zd ZdddZdS )z:TestArrayLike.setup_method.<locals>.MyNoArrayFunctionArrayNc                 S   s
   || _ d S r   r   r   r   r   r   r     s    zCTestArrayLike.setup_method.<locals>.MyNoArrayFunctionArray.__init__)N)r*   r+   r,   r   r   r   r   r   MyNoArrayFunctionArray  s   r   )rr   r   )r   rr   r   r   r   r   setup_method  s    zTestArrayLike.setup_methodFc                    s     fdd}t  | d S )Nc                     s*   d|kst rd|krt t S )Nlikevalue_error)r   
ValueErrorr   r   	arr_classenable_value_errornamer   r   _definition  s    z-TestArrayLike.add_method.<locals>._definition)setattr)r   r   r   r   r   r   r   r   
add_method  s    zTestArrayLike.add_methodc                  O   s   | |fS r   r   r   r   r   r   	func_args  s    zTestArrayLike.func_argsc              	   C   s@   |  d| j | j }ttd tjd|d}W 5 Q R X d S )Nr   rX   r$   r   )r   rr   r   r   rQ   r&   asarray)r   ref
array_liker   r   r   test_array_like_not_implemented  s    
z-TestArrayLike.test_array_like_not_implementedr   )r$   r   
asanyarrayascontiguousarray)rc   r   asfortranarrayrequire   rc   r   r:   F)requirementsemptyfulloneszerosarange
frombuffers           )dtypefromiter
fromstringz1,2,)r   seploadtxtc                   C   s   t dS )Nz0 1
2 3r   r   r   r   r   r     r   zTestArrayLike.<lambda>
genfromtxtc                   C   s   t dS )Nz1,2.1r   r   r   r   r   r     r   )inti8)floatZf8)r   	delimiterzfunction, args, kwargs	numpy_refTc                 C   s   |  d| j |  || j tt|}t| j|}|dkrFtd}n
| j }tdd |D }|||d|i}	|dkrt|	tjksttdd |D }
||
|}|dkr|	d |		d t
|	| n t|	| jkst|	j|kstd S )	Nr   Tr$   c                 s   s    | ]}t |r| n|V  qd S r   callablerF   r>   r   r   r   r   )  s     z0TestArrayLike.test_array_like.<locals>.<genexpr>r   c                 s   s    | ]}t |r| n|V  qd S r   r   r   r   r   r   r   /  s     r   )r   rr   r   r&   r   tuplerC   r1   r   fillr   r   )r   r   r   r   r   np_funcr   r   	like_argsr   Znp_argsZnp_arrr   r   r   test_array_like  s&    




zTestArrayLike.test_array_liker   r$   r   c              	   C   sv   |  d| j |  || j tt|}|dkr8| j }tdd |D }ttd |||d|i W 5 Q R X d S )Nr   r   c                 s   s    | ]}t |r| n|V  qd S r   r   r   r   r   r   r   H  s     z<TestArrayLike.test_no_array_function_like.<locals>.<genexpr>z9The `like` argument must be an array-like that implementsr   )r   r   r   r&   r   r   r   rQ   )r   r   r   r   r   r   r   r   r   r   test_no_array_function_like<  s    

z)TestArrayLike.test_no_array_function_likec              	   C   s   |  d| j |  d| j |dkr0td}n
| j }tjd}t }tj	|d}|
| tj||d}|dkrt|tjksttj||d}t|| t|| n$t|| jkst|j| jjkstW 5 Q R X d S )Nr   fromfileTr$      Ztestfiler   )r   rr   r&   r   randomtempfileTemporaryDirectoryospathjoinZtofiler  rC   r1   r   r   r   )r   r   r   dataZtmpdirfnamer   Znp_resr   r   r   test_array_like_fromfileN  s"    



z&TestArrayLike.test_array_like_fromfilec              	   C   sD   | j d| jdd | j }tt tjdd|d W 5 Q R X d S )Nr   T)r   r$   )r   r   )r   rr   r   r   rQ   r&   )r   r   r   r   r   test_exception_handlingh  s    

z%TestArrayLike.test_exception_handlingc           	      C   s   |  d| j |  || j tt|}tdd |D }tdd |D }|||dd i}|||}|dkr|d |d t|| d S )Nr   c                 s   s    | ]}t |r| n|V  qd S r   r   r   r   r   r   r   x  s     z2TestArrayLike.test_like_as_none.<locals>.<genexpr>c                 s   s    | ]}t |r| n|V  qd S r   r   r   r   r   r   r   z  s     r   r   r$   )r   rr   r   r&   r   r   r   )	r   r   r   r   r   r   Zlike_args_expr   rZ   r   r   r   test_like_as_noner  s    



zTestArrayLike.test_like_as_noneN)F)r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r   )r*   r+   r,   r   r   r   ra   r   r&   r   Zreshaper   rP   Z_array_testsr   r   r   r  r  r  r  r  r   r   r   r   r     sR   

	











	r   )&r   rj   r  r  ior   Zunittestr   r   r&   Znumpy.testingr   r   r   r   Znumpy.core.overridesr	   r
   r   r   Znumpy.compatr   r   r   Zskipifra   r   r    r"   r#   rU   rb   rx   r   r   r   r   r   r   r   r   r   <module>   s>   



o='\;