
    ܙd                         d dl Z d dlZd dlmZmZ d dlmZ d dlZd dl	m
Z
 d Z G d deej                  Z G d d	eej                  Zed
k    r ej                     dS dS )    N)njit	vectorize)MemoryLeakMixin)dufuncc                     | |z   S N )a0a1s     @lib/python3.11/site-packages/numba/tests/npyufunc/test_dufunc.pypyuaddr      s    7N    c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
TestDUFuncc                 J    t          j        |t          d                    S )NT)nopython)targetoptions)r   DUFuncdict)selfpyfuncs     r   nopython_dufunczTestDUFunc.nopython_dufunc   s"    }V43F3F3FGGGGr   c           	         |                      t                    }|                     |j                   d|_        |                     |j                   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                    5   |t          j	        ddd          t          j	        ddd                     d d d            d S # 1 swxY w Y   d S )NTFr      
      )
r   r   assertFalse_frozen
assertTrueassertRaises
ValueError	TypeErrornplinspacer   duadds     r   test_frozenzTestDUFunc.test_frozen   s\   $$V,,'''&&&z** 	" 	"!EM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"y)) 	< 	<E"+a"%%r{1Qr':':;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s$   0BBB)5C++C/2C/c                     |                      t                    }|                     t          dd           |dd                     d S )Nr   r   )r   r   assertEqualr%   s     r   test_scalarzTestDUFunc.test_scalar   sC    $$V,,!eeAajj11111r   c                    |                      t                    t          fd            }t          j        ddd          }|d d         }|dd          }t          j        d          } ||||           t          j                            ||z   |           |                    d          }|                    d          }t          j        d          } ||||           t          j                            ||z   |           |d d         }	t          j        d          }
 |||	|
           t          j                            ||	z   |
           d S )Nc                 "     | ||           d S r   r	   )r
   r   o0r&   s      r   npmaddz(TestDUFunc.test_npm_call.<locals>.npmadd%   s    E"b"r   r   ffffff?   r   r      r2   )	r   r   r   r#   r$   zerostestingassert_array_equalreshape)r   r.   XX0X1out0Y0Y1out1Y2out2r&   s              @r   test_npm_callzTestDUFunc.test_npm_call"   sR   $$V,,		 	 	 	 
	K#b!!ssVrssVx||r2t

%%b2gt444ZZZZxr2t

%%b2gt444Vxr2t

%%b2gt44444r   c                 z   |                      t                    t          fd            }t          j        ddd          }|d d         }|dd          } |||          }t          j                            ||z   |           |                    d          }|                    d          } |||          }t          j                            ||z   |           |d d         }	 |||	          }
t          j                            ||	z   |
            |dd	          }|                     |d
           d S )Nc                      | |          S r   r	   )r
   r   r&   s     r   r.   z8TestDUFunc.test_npm_call_implicit_output.<locals>.npmadd;   s    5R== r   r   r/   r0   r   r1   r2   g      ?g       @g      @)	r   r   r   r#   r$   r4   r5   r6   r)   )r   r.   r7   r8   r9   r:   r;   r<   r=   r>   r?   out3r&   s               @r   test_npm_call_implicit_outputz(TestDUFunc.test_npm_call_implicit_output8   sA   $$V,,		! 	! 	! 	! 
	!K#b!!ssVrssVvb"~~

%%b2gt444ZZZZvb"~~

%%b2gt444Vvb"~~

%%b2gt444vb}}r"""""r   c                 @   |                      t                    }|                     |j        d           |                     |j        d           |                     |j        |j        |j        z              |                     |j        d           |                     |j        g            |                     |j        d             |dd           |                     |j        d           |                     |j        t          |j                             d S )Nr   r   r   )
r   r   r)   ninnoutnargsntypestypesidentitylenr%   s     r   test_ufunc_propszTestDUFunc.test_ufunc_propsM   s    $$V,,A&&&Q'''ei%*&<===q)))b)))...aq)))s5;'7'788888r   N)	__name__
__module____qualname__r   r'   r*   r@   rD   rM   r	   r   r   r   r      sq        H H H< < <2 2 25 5 5,# # #*
9 
9 
9 
9 
9r   r   c                        e Zd Zd Zd Zd ZdS )TestDUFuncPicklingc                 X   t          j        |          }t          j        |           d          }|                     d|           |                     ||           t
          fd            } |d          }|                     d|           |                     ||           d S )N{   c                      |           S r   r	   )xrebuilts    r   fooz%TestDUFuncPickling.check.<locals>.fooe   s    71::r   iA  )pickledumpsloadsr)   assertIsInstancer   )r   identresult_typebufrrX   rW   s         @r   checkzTestDUFuncPickling.check[   s    l5!!,s## GCLLa   a--- 
	 	 	 	 
	 CHHa   a-----r   c                 v    t           d             }|                     |t          t          j        f           d S )Nc                     | S r   r	   x1s    r   r]   z3TestDUFuncPickling.test_unrestricted.<locals>.identn       Ir   r^   )r   ra   intr#   integerr   r]   s     r   test_unrestrictedz$TestDUFuncPickling.test_unrestrictedm   s@    		 	 
	 	

5sBJ&7
88888r   c                 p    t          dg          d             }|                     |t                     d S )Nzfloat64(float64)c                     | S r   r	   rd   s    r   r]   z1TestDUFuncPickling.test_restricted.<locals>.identu   rf   r   rg   )r   ra   floatrj   s     r   test_restrictedz"TestDUFuncPickling.test_restrictedt   sF    	&'	(	(	 	 
)	(	 	

5e
,,,,,r   N)rN   rO   rP   ra   rk   ro   r	   r   r   rR   rR   Z   sA        . . .$9 9 9- - - - -r   rR   __main__)rY   numpyr#   numbar   r   numba.tests.supportr   unittestnumba.np.ufuncr   r   TestCaser   rR   rN   mainr	   r   r   <module>rx      s         ! ! ! ! ! ! ! ! / / / / / /  ! ! ! ! ! !  H9 H9 H9 H9 H9("3 H9 H9 H9V- - - - -(*; - - -D zHMOOOOO r   