
    Phh                     x   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 d dlmZ d dlZd Z ed       d	        Z ed
       d        Z G d d      Z G d d      Z G d d      Z G d d      Zd Z G d d      Z G d d      Z G d d      Z  G d d      Z!d Z"d Z#y)    NStringIO)mock)assert_assert_equalassert_raisesassert_raises_regex)_get_implementing_argsarray_function_dispatchverify_matching_signatures)picklec                     t         S NNotImplementedselfargskwargss      jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/core/tests/test_overrides.py_return_not_implementedr      s        c                     | fS r    arrays    r   <lambda>r      s    xr   c                      y
Docstring.originalr   r   s    r   dispatched_one_argr"           r   c                 
    | |fS r   r   array1array2s     r   r   r      s	    0@r   c                      yr   r   r%   s     r   dispatched_two_argr)      r#   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestGetImplementingArgsc                 D   t        j                  d      }t        |g      }t        t	        |      |g       t        ||g      }t        t	        |      |g       t        |dg      }t        t	        |      |g       t        d|g      }t        t	        |      |g       y )N   npr   r
   r   list)r   r   r   s      r   test_ndarrayz$TestGetImplementingArgs.test_ndarray%   s    %ug.T$Z%)%uen5T$Z%)%uaj1T$Z%)%q%j1T$Z%)r   c                 4    G d dt         j                        } G d dt         j                        }t        j                  d      j                  t         j                        }t        j                  d      j                  |      }t        j                  d      j                  |      }t	        ||g      }t        t        |      ||g       t	        ||g      }t        t        |      ||g       t	        ||g      }t        t        |      ||g       y )Nc                       e Zd ZeZy)DTestGetImplementingArgs.test_ndarray_subclasses.<locals>.OverrideSubN__name__
__module____qualname__r   __array_function__r   r   r   OverrideSubr4   6       !8r   r:   c                       e Zd Zy)FTestGetImplementingArgs.test_ndarray_subclasses.<locals>.NoOverrideSubNr6   r7   r8   r   r   r   NoOverrideSubr=   9       r   r?   r-   )r/   ndarrayr   viewr
   r   r0   )r   r:   r?   r   override_subno_override_subr   s          r   test_ndarray_subclassesz/TestGetImplementingArgs.test_ndarray_subclasses4   s    	9"** 	9	BJJ 	   ,xx{''4((1+**=9%ul&;<T$Z,!67%uo&>?T$Z/5!9:%?+-T$Z,!@Ar   c                      G d d      }t        j                  d      } |       }t        ||g      }t        t	        |      ||g       t        ||g      }t        t	        |      ||g       y )Nc                       e Zd ZeZy)BTestGetImplementingArgs.test_ndarray_and_duck_array.<locals>.OtherNr5   r   r   r   OtherrH   L   r;   r   rI   r-   r.   )r   rI   r   otherr   s        r   test_ndarray_and_duck_arrayz3TestGetImplementingArgs.test_ndarray_and_duck_arrayJ   sb    	9 	9 %uen5T$Z%0%uen5T$Z%0r   c                 6    G d dt         j                        } G d d      }t        j                  d      }t        j                  d      j                  |      } |       }t	        t        |||g      |||g       t	        t        |||g      |||g       y )Nc                       e Zd ZeZy)QTestGetImplementingArgs.test_ndarray_subclass_and_duck_array.<locals>.OverrideSubNr5   r   r   r   r:   rN   Z   r;   r   r:   c                       e Zd ZeZy)KTestGetImplementingArgs.test_ndarray_subclass_and_duck_array.<locals>.OtherNr5   r   r   r   rI   rP   ]   r;   r   rI   r-   )r/   rA   r   rB   r   r
   )r   r:   rI   r   subarrayrJ   s         r   $test_ndarray_subclass_and_duck_arrayz<TestGetImplementingArgs.test_ndarray_subclass_and_duck_arrayX   s    	9"** 	9	9 	9 88A;##K0+UHe,DEu-	/+UE8,DEu-	/r   c                 P    G d d      } G d d|      } G d d|      } G 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       y )
Nc                       e Zd ZeZy)8TestGetImplementingArgs.test_many_duck_arrays.<locals>.ANr5   r   r   r   ArU   k   r;   r   rV   c                       e Zd ZeZy)8TestGetImplementingArgs.test_many_duck_arrays.<locals>.BNr5   r   r   r   BrX   n   r;   r   rY   c                       e Zd ZeZy)8TestGetImplementingArgs.test_many_duck_arrays.<locals>.CNr5   r   r   r   Cr[   q   r;   r   r\   c                       e Zd ZeZy)8TestGetImplementingArgs.test_many_duck_arrays.<locals>.DNr5   r   r   r   Dr^   t   r;   r   r_   r-   )r   r
   )	r   rV   rY   r\   r_   abcds	            r   test_many_duck_arraysz-TestGetImplementingArgs.test_many_duck_arraysi   s"   	9 	9	9 	9	9 	9	9 	9 CCCC+QC0"5+QC01#6+QF3aS9+Q1I6<+Q1I6A?+QF3aV<+QF3aV<+Q1I6Aq	B+Q1I6Aq	Br   c           	      b   t        t              }t        d      D cg c]   }t        dt	        |      z   t
        f|      " }}|D cg c]	  } |        }}t        |d d       }t        ||d d        t        t        d      5  t        |       d d d        y c c}w c c}w # 1 sw Y   y xY w)N)r9   !   rV       zdistinct argument types)
dictr   rangetypestrobjectr
   r   r	   	TypeError)r   	namespaceitypestrelevant_argsactuals          r   test_too_many_duck_arraysz1TestGetImplementingArgs.test_too_many_duck_arrays   s    ,CD	CH9M9acCFlVIy99M&+,ee,'cr(:;V]3B/0 ,EF"=1 GF N,
 GFs   %B	B B%%B.N)	r6   r7   r8   r1   rE   rK   rR   rd   rt   r   r   r   r+   r+   #   s"    *B,1/"C:	2r   r+   c                       e Zd Zd Zd Zy)TestNDArrayArrayFunctionc                 (    G d d      } G d dt         j                        } G d dt         j                        }t        j                  dg      } |       }|j                  |      }|j                  |      }|j	                  t
        t         j                  f|dfi 	      }t        |d
       |j	                  t
        t         j                  |f||fi 	      }t        |t        u        |j	                  t
        t         j                  |f||fi 	      }t        |d
       |j	                  t
        t         j                  |f||fi 	      }t        |d
       t        t        d      5  t        j                  ||f       d d d        t        j                  ||f      }	t        j                  ||f      }t        ||	j                  |             t        j                  ||f      }t        ||	j                  |             y # 1 sw Y   xY w)Nc                       e Zd ZeZy)3TestNDArrayArrayFunction.test_method.<locals>.OtherNr5   r   r   r   rI   ry      r;   r   rI   c                       e Zd Zy);TestNDArrayArrayFunction.test_method.<locals>.NoOverrideSubNr>   r   r   r   r?   r{      r@   r   r?   c                       e Zd ZeZy)9TestNDArrayArrayFunction.test_method.<locals>.OverrideSubNr5   r   r   r   r:   r}      r;   r   r:   r-   g      ?funcrp   r   r   r!   no implementation found)r/   rA   r   rB   r9   r)   r   r   r   r	   rm   concatenate)
r   rI   r?   r:   r   rJ   rD   rC   resultexpecteds
             r   test_methodz$TestNDArrayArrayFunction.test_method   s   	9 	9	BJJ 		9"** 	9 !**]3zz+.))/A1305r{2 * G 	VZ())/A13U0C05u~b * J 	.()))/A13]0K05/G13 * 5 	VZ())/A13[0I05|/D13 * 5 	VZ( ,EFNNE5>* G >>5%.1 89VX]]=9: 56VX]];78 GFs   ,HHc                     t        j                  d      }d }t        t        d      5  |j	                  |t         j
                  f|fi        d d d        y # 1 sw Y   y xY w)Nr-   c                     | S r   r   xs    r   r   z:TestNDArrayArrayFunction.test_no_wrapper.<locals>.<lambda>   s    r   _implementationr~   )r/   r   r	   AttributeErrorr9   rA   )r   r   r   s      r   test_no_wrapperz(TestNDArrayArrayFunction.test_no_wrapper   sR      1BC$$$rzzm+0(2 % ? DCCs   &AA!N)r6   r7   r8   r   r   r   r   r   rv   rv      s    -9^?r   rv   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestArrayFunctionDispatchc                     t        dt        j                  dz         D ]A  }t        j                  t        j                  t
        |            }t        |t
        u        C y )N   r-   )protocol)ri   r   HIGHEST_PROTOCOLloadsdumpsr"   r   )r   protoroundtrippeds      r   test_picklez%TestArrayFunctionDispatch.test_pickle   sJ    1f559:E!<<LL!3eDFLL$667 ;r   c                     t        t        j                  d       t        j                  j
                  dk  rt        t        j                  d       y y )Nr"   r   r    )r   r"   r6   sysflagsoptimize__doc__r   s    r   test_name_and_docstringz1TestArrayFunctionDispatch.test_name_and_docstring   s<    '002FG99!+33\B "r   c                      G d d      } |       }t        |      \  }}}}}t        ||u        t        |t         u        t        t        |      |h       t        ||fk(         t        |i        y )Nc                       e Zd Zd Zy)9TestArrayFunctionDispatch.test_interface.<locals>.MyArrayc                     | ||||fS r   r   r   r   rp   r   r   s        r   r9   zLTestArrayFunctionDispatch.test_interface.<locals>.MyArray.__array_function__   s    dE488r   Nr6   r7   r8   r9   r   r   r   MyArrayr      s    9r   r   )r"   r   r   set)r   r   r!   objr   rp   r   r   s           r   test_interfacez(TestArrayFunctionDispatch.test_interface   sm    	9 	9 9+=h+G(dE4x **+SZ'+#$VR r   c                      G d d      } |       }t        t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zy)?TestArrayFunctionDispatch.test_not_implemented.<locals>.MyArrayc                     t         S r   r   r   s        r   r9   zRTestArrayFunctionDispatch.test_not_implemented.<locals>.MyArray.__array_function__       %%r   Nr   r   r   r   r   r          &r   r   r   )r	   rm   r"   r   r   r   s      r   test_not_implementedz.TestArrayFunctionDispatch.test_not_implemented   s5    	& 	& 	 ,EFu% GFFs	   7A c                      G d d      }t        j                  d      } |       }t        j                  ||      }t        |d       y )Nc                       e Zd Zd Zy)@TestArrayFunctionDispatch.test_where_dispatch.<locals>.DuckArrayc                      y)N
overriddenr   )r   ufuncmethodinputsr   s        r   r9   zSTestArrayFunctionDispatch.test_where_dispatch.<locals>.DuckArray.__array_function__   s    #r   Nr   r   r   r   	DuckArrayr      s    $r   r   r-   )wherer   )r/   r   stdr   )r   r   r   
duck_arrayr   s        r   test_where_dispatchz-TestArrayFunctionDispatch.test_where_dispatch   s<    	$ 	$ [
Z0V\*r   N)r6   r7   r8   r   r   r   r   r   r   r   r   r   r      s    8C
!&+r   r   c                       e Zd Zd Zd Zy)TestVerifyMatchingSignaturesc                    t        d d        t        dddd       t        dddd       t        t              5  t        d d        d d d        t        t              5  t        d	 dd
       d d d        t        t              5  t        dddd       d d d        t        t              5  t        dddd       d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   JxY w# 1 sw Y   y xY w)Nc                      yNr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    Qr   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    !r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    !r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    Ar   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    qr   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    r   c                      yr   r   )r`   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>      r   c                      yr   r   )ra   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    ar   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  r   r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    1r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    ar   c                      yr   r   ys    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    1r   c                      yr   r   r   s    r   r   zNTestVerifyMatchingSignatures.test_verify_matching_signatures.<locals>.<lambda>  s    !r   r   r-   )r   r   RuntimeErrorr   s    r   test_verify_matching_signaturesz<TestVerifyMatchingSignatures.test_verify_matching_signatures  s    ";<"#35EF"=2BC<(&{K@ )<(&{4DE )<(&'79IJ )<(&}mD )( )(((((((s/   C$CC%3C1CC"%C.1C:c                     t        t              5  t        d       d        }d d d        t        d d      d        }y # 1 sw Y   xY w)Nc                     | fS r   r   r   s    r   r   zKTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.<lambda>  s    tr   c                      y r   r   r   s    r   fzDTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.f  s    r   c                     | fS r   r   r   s    r   r   zKTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.<lambda>  s    A4r   F)verifyc                      y r   r   r   s    r   r   zDTestVerifyMatchingSignatures.test_array_function_dispatch.<locals>.f      r   )r   r   r   )r   r   s     r   test_array_function_dispatchz9TestVerifyMatchingSignatures.test_array_function_dispatch  sJ    <($^4 5 ) 
!	>	 
?	 )(s   A  A	N)r6   r7   r8   r   r   r   r   r   r   r     s    E
r   r   c                  6    i  G fdd      fd} | fS )z2Create a duck array type and implements functions.c                       e Zd Z fdZy)._new_duck_type_and_implements.<locals>.MyArrayc                 b    |vrt         S t        fd|D              st         S  |   |i |S )Nc              3   6   K   | ]  }t        |        y wr   )
issubclass).0rq   r   s     r   	<genexpr>zT_new_duck_type_and_implements.<locals>.MyArray.__array_function__.<locals>.<genexpr>(  s     =u!z!W-us   )r   all)r   r   rp   r   r   HANDLED_FUNCTIONSr   s        r   r9   zA_new_duck_type_and_implements.<locals>.MyArray.__array_function__%  s>    ,,%%=u==%%*$T*D;F;;r   Nr   )r   r   s   r   r   r   $  s    	<r   r   c                       fd}|S )z/Register an __array_function__ implementations.c                     | <   | S r   r   )r   r   numpy_functions    r   	decoratorzD_new_duck_type_and_implements.<locals>.implements.<locals>.decorator.  s    04n-Kr   r   )r   r   r   s   ` r   
implementsz1_new_duck_type_and_implements.<locals>.implements,  s    	 r   r   )r   r   r   s    @@r   _new_duck_type_and_implementsr      s%    < < Z  r   c                       e Zd Zd Zd Zd Zej                  j                  dg d      d        Z	d Z
ej                  j                  dd	d
g      d        Zd Zej                  j                  dd ddddddg      d        Zd Zd Zy)TestArrayFunctionImplementationc                     t               \  }} |t              d        }t        t        d      d       t        t         |             d       y )Nc                      y)Nmyarrayr   r   s    r   _z7TestArrayFunctionImplementation.test_one_arg.<locals>._;  s    r   r-   r!   r   )r   r"   r   r   r   r   r   s       r   test_one_argz,TestArrayFunctionImplementation.test_one_arg8  sK    ;=	&	'	 
(	 	'*J7'	2I>r   c                    t               \  }}t        dd      dd       } ||      dd       }t         |d      d       t         |dd      d       t         | |             d       t        t              5   | |       d       d d d         | |       d	
      }t        |d	       t        t              5   | |       d
       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nc                     | fS r   r   r   options     r   r   zDTestArrayFunctionImplementation.test_optional_args.<locals>.<lambda>E  s    UHr   defaultc                     |S r   r   r   s     r   func_with_optionzLTestArrayFunctionImplementation.test_optional_args.<locals>.func_with_optionE  s    Mr   r   c                     |S r   r   )r   
new_options     r   my_array_func_with_optionzUTestArrayFunctionImplementation.test_optional_args.<locals>.my_array_func_with_optionI  s    r   r-   extra)r   yes)r   nor   )r   )r   )r   r   r   r   rm   )r   r   r   r   r   r   s         r   test_optional_argsz2TestArrayFunctionImplementation.test_optional_argsB  s    ;=	 !D	E	 
F	 
$	%	 
&	
 	%a()4%a8'B%gi0)<9%WYw7 & +79GVU#9%WY48 &% &% &%s   =C?C$C!$C-c                 &   t               \  }}t        d d      d        }t        j                  d      }t	         ||      |u        t        |j                  d       t        t        d      5   | |              d d d        y # 1 sw Y   y xY w)Nc                     | fS r   r   r   s    r   r   zFTestArrayFunctionImplementation.test_not_implemented.<locals>.<lambda>^  s    xr   my)modulec                     | S r   r   r   s    r   r   zBTestArrayFunctionImplementation.test_not_implemented.<locals>.func^  s    Lr   r-   z%no implementation found for 'my.func')	r   r   r/   r   r   r   r7   r	   rm   )r   r   r   r   r   s        r   r   z4TestArrayFunctionImplementation.test_not_implemented[  s    ;=	 !7	E	 
F	 Uu$%T__d+ BDOD D Ds   0BBname)r   meanasarrayc                     t        t        |      }	  |        j                  d   j	                  | d      sJ y # t        $ r}|}Y d }~4d }~ww xY w)Nr   z())getattrr/   rm   r   
startswith)r   r	  r   eexcs        r   #test_signature_error_message_simplezCTestArrayFunctionImplementation.test_signature_error_message_simplej  sS    r4 	F xx{%%bk222  	C	s   = 	AAAc                 r   d }t        |      d        }	 |j                  d       	  |d       t        d      # t        $ r}|}Y d }~%d }~ww xY w# t        $ rX}|j                  d   j                  d      rt        j                  d       |j                  j                  k(  sJ Y d }~y d }~ww xY w)	Nc                       y)Nr   r   r   r   r   _dispatcherzQTestArrayFunctionImplementation.test_signature_error_message.<locals>._dispatcherx  s    r   c                       y r   r   r   r   r   r   zJTestArrayFunctionImplementation.test_signature_error_message.<locals>.func{  r   r      )bad_arg	must failr   r  zBPython version is not using __qualname__ for TypeError formatting.)r   r   rm   AssertionErrorr   r  pytestskip)r   r  r   r  expected_exceptionr  s         r   test_signature_error_messagez<TestArrayFunctionImplementation.test_signature_error_messageu  s    	 
!	-	 
.		#   +
	7O --  	#!"	#  	7xx{%%m4  4 5 88166666	7s-   = A 	AAA	B6AB11B6value   zthis func is not replacedc                     t        |      fd}t        |      d        }	  |        t        d      # t         $ r}|u sJ Y d }~y d }~ww xY w)Nc                       r   r   )errors   r   
dispatcherzITestArrayFunctionImplementation.test_dispatcher_error.<locals>.dispatcher  s    Kr   c                       yNr  r   r   r   r   r   zCTestArrayFunctionImplementation.test_dispatcher_error.<locals>.func  s    r   r  )rm   r   r  )r   r  r#  r   r  r"  s        @r   test_dispatcher_errorz5TestArrayFunctionImplementation.test_dispatcher_error  s^     % 	 
!	,	 
-		 F -- 	 %<<	 s   6 	AA

Ac                     t         }t        |      t        |j                        k(  sJ t        |      j	                  d      d   }t        |j                        j	                  d      d   }||k(  sJ y )Nzat r   )r)   rk   r   reprsplit)r   r   
repr_no_idrepr_no_id_impls       r   test_propertiesz/TestArrayFunctionImplementation.test_properties  sk    !4yC 4 45555$Z%%e,Q/
t334::5A!D_,,,r   r   c                      yr   r   )r   r   s     r   r   z(TestArrayFunctionImplementation.<lambda>  s    r   Nc                      yr   r   likes    r   r   z(TestArrayFunctionImplementation.<lambda>  s    ar   r  r0  r`   c                      yr   r   r1  s     r   r   z(TestArrayFunctionImplementation.<lambda>  s    ar   c                     t        j                  t              5   t               |       d d d        y # 1 sw Y   y xY wr   )r  raisesr   r   )r   r   s     r   test_bad_like_sigz1TestArrayFunctionImplementation.test_bad_like_sig  s*     ]]<(%#%d+ )((s   4=c                    d dd} t               |      }t        j                  t              5   |        d d d        t        j                  t              5   |d       d d d        y # 1 sw Y   5xY w# 1 sw Y   y xY w)Nr/  c                      y r   r   r/  s    r   r   zCTestArrayFunctionImplementation.test_bad_like_passing.<locals>.func  s    r   r  )r   r  r4  rm   )r   r   func_with_likes      r   test_bad_like_passingz5TestArrayFunctionImplementation.test_bad_like_passing  s_     	 30248]]9% &]]9%$ &% &%%%s   A,
A8,A58Bc                     g }t        d      D ]"  } G d d      }|j                   |              $ d }t        |      d        }t        j                  t
        d      5   ||  d d d        y # 1 sw Y   y xY w)N(   c                       e Zd Zd Zy)ATestArrayFunctionImplementation.test_too_many_args.<locals>.MyArrc                     t         S r   r   r   s      r   r9   zTTestArrayFunctionImplementation.test_too_many_args.<locals>.MyArr.__array_function__  s    ))r   Nr   r   r   r   MyArrr=    s    *r   r?  c                      | S r   r   r   s    r   	_dispatchzETestArrayFunctionImplementation.test_too_many_args.<locals>._dispatch  s    Kr   c                       y r   r   rA  s    r   r   z@TestArrayFunctionImplementation.test_too_many_args.<locals>.func  r   r   zmaximum numbermatch)ri   appendr   r  r4  rm   )r   objsro   r?  rB  r   s         r   test_too_many_argsz2TestArrayFunctionImplementation.test_too_many_args  sq    rA* * KK  	 
!	+	 
,	 ]]9,<=$K >==s   "A11A:r   )r6   r7   r8   r   r  r   r  markparametrizer  r  r&  r,  r5  r9  rH  r   r   r   r   r   6  s    ?92 [[V%GH3 I376 [[Ws,G&HI  J "- [[V1'&
 
,
,
	%r   r   c                       e Zd Zd Zy)TestNDArrayMethodsc                      G d dt         j                        }t        j                  d      j                  |      }t	        t        |      d       t	        t        |      d       y )Nc                       e Zd Zd Zy)-TestNDArrayMethods.test_repr.<locals>.MyArrayc                      t         S r   r   r   r   s     r   r9   z@TestNDArrayMethods.test_repr.<locals>.MyArray.__array_function__  r   r   Nr   r   r   r   r   rO    r   r   r   r-   z
MyArray(1)1)r/   rA   r   rB   r   r(  rk   r   s      r   	test_reprzTestNDArrayMethods.test_repr  sH    	&bjj 	&   )T%[,/SZ%r   N)r6   r7   r8   rS  r   r   r   rL  rL    s    
&r   rL  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestNumPyFunctionsc                 `   t        t        j                  j                  d       t        t        j                  j
                  j                  d       t        t        j                  j                  j                  d       t        t        j                  j                  j                  d       y )Nnumpyz
numpy.charz	numpy.fftznumpy.linalg)	r   r/   sumr7   charequalfftlinalgsolver   s    r   test_set_modulez"TestNumPyFunctions.test_set_module  s^    RVV&&0RWW]]--|<RVVZZ**K8RYY__//@r   c                 x    t        j                  t        j                        }t	        d|j
                  v        y )Naxis)inspect	signaturer/   rX  r   
parameters)r   rb  s     r   test_inspect_sumz#TestNumPyFunctions.test_inspect_sum  s)    %%bff-	).../r   c                     t               \  }} |t        j                        d        }t        t        j                   |             d       y )Nc                      y)Nr  r   r   s    r   r   z/TestNumPyFunctions.test_override_sum.<locals>._  s    r   r  )r   r/   rX  r   r   s       r   test_override_sumz$TestNumPyFunctions.test_override_sum  sA    ;=	BFF		 
	 	RVVGI&.r   c                     G d d      } |t        j                  |            }d|j                  j                  _        t        j                  |      }t        |d       |j                  j                  j                  t
        j                  |f|fi        |j                  j                  j                          y )Nc                       e Zd Zd Zd Zd Zy)=TestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxyc                     || _         y r   )r  )r   r  s     r   __init__zFTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__init__  s	    "
r   c                 :     | j                   j                  |i |S r   )r  r9   r   s      r   r9   zPTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__array_function__   s    4tzz44dEfEEr   c                 :     | j                   j                  |i |S r   )r  	__array__r   s      r   ro  zGTestNumPyFunctions.test_sum_on_mock_array.<locals>.ArrayProxy.__array__  s    +tzz++T<V<<r   N)r6   r7   r8   rl  r9   ro  r   r   r   
ArrayProxyrj    s    #F=r   rp  )specr-   )r   Mockr  r9   return_valuer/   rX  r   assert_called_once_withro  assert_not_called)r   rp  proxyr   s       r   test_sum_on_mock_arrayz)TestNumPyFunctions.test_sum_on_mock_array  s    	= 	= 499*5667&&3VQ&&>>FFZME8R	1//1r   c                      G d dt         j                        }t        j                  d      j                  |      }t	        t        j
                  |      d       y )Nc                   $     e Zd Zd Z fdZ xZS )FTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArrayc                      y)Nsummedr   )r   r`  outs      r   rX  zJTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArray.sum  s    r   c                 (    t         |   ||||      S r   )superr9   )r   r   rp   r   r   	__class__s        r   r9   zYTestNumPyFunctions.test_sum_forwarding_implementation.<locals>.MyArray.__array_function__  s    w1$tVLLr   )r6   r7   r8   rX  r9   __classcell__)r  s   @r   r   rz    s     M Mr   r   r-   r|  )r/   rA   r   rB   r   rX  r   s      r   "test_sum_forwarding_implementationz5TestNumPyFunctions.test_sum_forwarding_implementation  s@    	Mbjj 	M   )RVVE]H-r   N)r6   r7   r8   r^  rd  rg  rw  r  r   r   r   rU  rU    s    A0/2(.r   rU  c                      e Zd Zd Zd4dZd Zd Zdg ed      dg ed      d	g ed      d
g ed      dg ed      dg e ej                  d      j                  dd      fddg      dg ed      dg edd      dg ed      dg ed      dg ed      dg ede
      dg e ed      e
      dg ede
d       d!g ed"       d#g ed$ d%d&gd'      gZej                  j                  d(e      ej                  j                  d)d*dg      d+               Zej                  j                  d(e      ej                  j                  d,d-d-gd.g      d/               Zej                  j                  d)d*dg      d0        Zd1 Zej                  j                  d(e      d2        Zy3)5TestArrayLikec                 H     G d d      }|| _          G d d      }|| _        y )Nc                       e Zd ZddZd Zy)+TestArrayLike.setup_method.<locals>.MyArrayNc                     || _         y r   functionr   r  s     r   rl  z4TestArrayLike.setup_method.<locals>.MyArray.__init__  	     (r   c                     |t        t        |j                        u sJ 	 t        | |j                        } ||i |S # t        $ r	 t        cY S w xY wr   )r  r/   r6   r   r   )r   r   rp   r   r   my_funcs         r   r9   z>TestArrayLike.setup_method.<locals>.MyArray.__array_function__"  sY    wr4==9999*%dDMM:G /// & *))*s   > AAr   )r6   r7   r8   rl  r9   r   r   r   r   r    s    )0r   r   c                       e Zd ZddZy):TestArrayLike.setup_method.<locals>.MyNoArrayFunctionArrayNc                     || _         y r   r  r  s     r   rl  zCTestArrayLike.setup_method.<locals>.MyNoArrayFunctionArray.__init__-  r  r   r   )r6   r7   r8   rl  r   r   r   MyNoArrayFunctionArrayr  ,  s    )r   r  )r   r  )r   r   r  s      r   setup_methodzTestArrayLike.setup_method  s)    
	0 
	0 	) 	) '=#r   Fc                 2    fd}t        |       y )Nc                  L    d|vsJ r
d|v rt          t                    S )Nr0  value_error)
ValueErrorr  )r   r   	arr_classenable_value_errorr	  s     r   _definitionz-TestArrayLike.add_method.<locals>._definition3  s3    '''!mv&=  WY566r   )setattr)r   r	  r  r  r  s    ``` r   
add_methodzTestArrayLike.add_method2  s    	7 		4-r   c                  
    | |fS r   r   rQ  s     r   	func_argszTestArrayLike.func_args=  s    V|r   c                     | j                  d| j                         | j                  j                         }t        t        d      5  t        j                  d|      }d d d        y # 1 sw Y   y xY w)Nr   r   r-   r/  )r  r   r   r	   rm   r/   r  )r   ref
array_likes      r   test_array_like_not_implementedz-TestArrayLike.test_array_like_not_implemented@  sN    .ll  " ,EFAC0J GFFs   A((A1r   r   r  
asanyarrayascontiguousarray)r   r  asfortranarrayrequire   r   r  rV   F)requirementsemptyfulloneszerosarange
frombuffers           )dtypefromiter
fromstringz1,2,)r  seploadtxtc                      t        d      S )Nz0 1
2 3r   r   r   r   r   zTestArrayLike.<lambda>X  s	    x
';r   
genfromtxtc                      t        d      S )Nz1,2.1r   r   r   r   r   zTestArrayLike.<lambda>Y  s	    (7*;r   )inti8)floatf8)r  	delimiterzfunction, args, kwargs	numpy_refTc                    | j                  d| j                         | j                  || j                         t        t        |      }t        | j                  |      }|du rt        j                  d      }n| j                  j	                         }t        d |D              } ||i |d|i}	|du rkt        |	      t        j                  u sJ t        d |D              }
 ||
i |}|dk(  r"|j                  d       |	j                  d       t        |	|       y t        |	      | j                  u sJ |	j                  |u sJ y )Nr   Tr-   c              3   D   K   | ]  }t        |      r |       n|  y wr   callabler   r`   s     r   r   z0TestArrayLike.test_array_like.<locals>.<genexpr>k       BT!!#!3T    r0  c              3   D   K   | ]  }t        |      r |       n|  y wr   r  r  s     r   r   z0TestArrayLike.test_array_like.<locals>.<genexpr>q  s     Dt!8A;ACA5tr  r  )r  r   r  r/   r   tuplerj   rA   fillr   r  )r   r  r   r   r  np_funcr  r  	like_argsr  np_argsnp_arrs               r   test_array_likezTestArrayLike.test_array_like^  s#    	.$,,/"h'$,,1((1+C,,$$&CBTBB	i<6<<

#rzz111DtDDGg00F 7"A"V,
#t||333&&'111r   r  r-   r  c                 X   | j                  d| j                         | j                  || j                         t        t        |      }|dk(  r| j                  j	                         }t        d |D              }t        t        d      5   ||i |d|i d d d        y # 1 sw Y   y xY w)Nr   r  c              3   D   K   | ]  }t        |      r |       n|  y wr   r  r  s     r   r   z<TestArrayLike.test_no_array_function_like.<locals>.<genexpr>  r  r  z9The `like` argument must be an array-like that implementsr0  )r  r  r  r/   r   r  r	   rm   )r   r  r   r   r  r  r  s          r   test_no_array_function_likez)TestArrayLike.test_no_array_function_like~  s     	!<!<=$"="=>"h' **--335CBTBB	 KMY3&3s3M M Ms   
B  B)c                    | j                  d| j                         | j                  d| j                         |du rt        j                  d      }n| j                  j                         }t        j                  j	                  d      }t        j                         5 }t        j                  j                  |d      }|j                  |       t        j                  ||      }|du rMt        |      t        j                  u sJ t        j                  ||      }t        ||       t        ||       n=t        |      | j                  u sJ |j                  | j                  j                  u sJ d d d        y # 1 sw Y   y xY w)Nr   fromfileTr-      testfiler/  )r  r   r/   r   randomtempfileTemporaryDirectoryospathjointofiler  rj   rA   r   r  )r   r  r  datatmpdirfnamer  np_ress           r   test_array_like_fromfilez&TestArrayLike.test_array_like_fromfile  s#   .
DLL1((1+C,,$$&Cyy"((*fGGLL4EKKU5JD J'2::555U5VT*Z0J'4<<777!**dll.C.CCCC +**s    CF  F	c                     | j                  d| j                  d       | j                  j                         }t        t              5  t        j                  dd|       d d d        y # 1 sw Y   y xY w)Nr   T)r  r-   )r  r0  )r  r   r   r   rm   r/   )r   r  s     r   test_exception_handlingz%TestArrayLike.test_exception_handling  sN    $Gll  "9%HHQDs3 &%%s   A**A3c                 j   | j                  d| j                         | j                  || j                         t        t        |      }t	        d |D              }t	        d |D              } ||i |dd i} ||i |}|dk(  r"|j                  d       |j                  d       t        ||       y )Nr   c              3   D   K   | ]  }t        |      r |       n|  y wr   r  r  s     r   r   z2TestArrayLike.test_like_as_none.<locals>.<genexpr>  r  r  c              3   D   K   | ]  }t        |      r |       n|  y wr   r  r  s     r   r   z2TestArrayLike.test_like_as_none.<locals>.<genexpr>  s     FAXa[aca7r  r0  r  r-   )r  r   r  r/   r  r  r   )	r   r  r   r   r  r  like_args_expr  r   s	            r   test_like_as_nonezTestArrayLike.test_like_as_none  s    .$,,/"h'BTBB	FFFi=6==
M4V4wOOAMM!Z*r   N)F)r6   r7   r8   r  r  r  r  r/   r  reshaper  ri   _array_testsr  rI  rJ  r  r  r  r  r  r   r   r   r  r    sF   =*	.1 
#9T?#	%Yt_%	(	$(	1y01	.If-.	 	9Y			! 4 4Q :<-0#J8 	9	#9T?#	%)D!$%	")D/"	#9T?#	!IaL!	:	+S9:	5ia45	=	%s<=	=Y;<=	 	2	";)6(H,/1 	2#L, [[5|D[[[4-82 9 E2< [[5|D[[UQ-E$FG4 H E4 [[[4-8D 9D24 [[5|D+ E+r   r  c                     t        t        j                        t        j                  j                  j
                  u sJ  G d d      }  |        }|j                  dg      dk(  sJ |j                         dk(  sJ t        j                  t        d      5  |j                          d d d        t        j                  j                  ||       } |       dk(  sJ t        j                  j                  d |       } |dg      dk(  sJ t        j                  j                  |       }t        j                  t        d      5   |        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                   r    e Zd Zd Z eej                        Zej                  Z e	ej                        Z
y)#test_function_like.<locals>.MyClassc                 ,    t        j                  d      S r%  )r/   r  r   s    r   ro  z-test_function_like.<locals>.MyClass.__array__  s    99Q<r   N)r6   r7   r8   ro  staticmethodr/   r
  func1func2classmethodfunc3r   r   r   MyClassr    s.    	  RWW%BGG$r   r  
   r-   zunsupported operand typerD  )rj   r/   r
  core_multiarray_umath_ArrayFunctionDispatcherr  r  r  r4  rm   r  __get__)r  mbounds      r   test_function_liker    s   =BGG55NNNNN% % 		A77B4=B779>>	y(B	C		 
D
 GGOOAw'E7a<<GGOOD'*E";"GGOOG$E	y(B	C 
D	C 
D	C 
D	Cs   EE"E"E+c                      dd l dd lfd}  | t        j                        }t        j                  ddg       |ddg      k(  sJ y )Nr   c                     j                  | j                  | j                  | j                  | j                  | j
                        }j                  ||       }| j                  |_        |S )N)r	  argdefsclosure)FunctionType__code____globals__r6   __defaults____closure__update_wrapper__kwdefaults__)r   g	functoolsrp   s     r   
_copy_funcz1test_scipy_trapz_support_shim.<locals>._copy_func  s]    qzz1==qzz$%NNAMM  K$$Q*++r   r-   r   )rp   r  r/   trapz)r	  	trapezoidr  rp   s     @@r   test_scipy_trapz_support_shimr    sD    
  288$I88QFy!Q0000r   )$ra  r   r  r  ior   unittestr   rW  r/   numpy.testingr   r   r   r	   numpy.core.overridesr
   r   r   numpy.compatr   r  r   r"   r)   r+   rv   r   r   r   r   rL  rU  r  r  r  r   r   r   <module>r     s     
 	    ? ?      
 /0 1
 @A B
l2 l2^9? 9?x1+ 1+h <!,[ [~& &5. 5.pf+ f+R@1r   