
    |hv                         S SK rS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr   " S S\5      r " S S	\5      r\S
:X  a  \
R                  " 5         gg)    N)
namedtuple)cuda)TypingError)skip_on_cudasimunittestCUDATestCasec                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestCudaArrayArg	   c                 R  ^ [         R                  " SSSS9S 5       m[         R                  " S5      U4S j5       n[        R                  " S[        R                  S9n[        R
                  " U5      nUS	   " X#5        U R                  [        R                  " X#:H  5      5        g )
Nzdouble(double[:],int64)T)deviceinlinec                 
    X   $ )N )acs     a/home/james-whalen/.local/lib/python3.13/site-packages/numba/cuda/tests/cudapy/test_array_args.pydevice_function8TestCudaArrayArg.test_array_ary.<locals>.device_function   s	    4K    zvoid(double[:],double[:])c                 F   > [         R                  " S5      nT" X5      X'   g N   )r   grid)xyir   s      r   kernel/TestCudaArrayArg.test_array_ary.<locals>.kernel   s    		!A"1(ADr   
   dtype)r    r   )r   jitnparangedouble
zeros_like
assertTrueall)selfr   r   r   r   s       @r   test_array_aryTestCudaArrayArg.test_array_ary
   s    	+D	F	 
G	 
-	.	) 
/	) IIb		*MM!uaqv'r   c                    [         R                  S 5       nSn[        R                  " [	        U5      [        R
                  S9nUS   " X25        [        [	        U5      5       H  nU R                  X4   X$   5        M     g )Nc                 4    US   U S'   US   U S'   US   U S'   g )Nr   r      r   rr   s     r   f)TestCudaArrayArg.test_unituple.<locals>.f   s)    Q4AaDQ4AaDQ4AaDr   )r   r/      r!   r   r   )r   r#   r$   zeroslenint64rangeassertEqual)r*   r2   r   r1   r   s        r   test_unitupleTestCudaArrayArg.test_unituple   sh    		 
	
 HHSV288,	$s1vAQT14( r   c           	         [         R                  S 5       nSn[        R                  " [	        U5      S-  [        R
                  S9n[        R                  " [	        U5      S-  [        R                  S9nUS   " X4U5        [        [	        U5      5       H  nU R                  X5   X%   5        M     [        [	        U5      5       H%  nU R                  XE   X%[	        U5      -      5        M'     g )Nc                 d    US   U S'   US   U S'   US   U S'   US   US'   US   US'   US   US'   g Nr   r   r/   r4         r   r1r2r   s      r   r2   &TestCudaArrayArg.test_tuple.<locals>.f)   sP    aDBqEaDBqEaDBqEaDBqEaDBqEaDBqEr   )r   r/   r4   g      @g      @g      @r/   r!   r5   )	r   r#   r$   r6   r7   r8   float64r9   r:   )r*   r2   r   rC   rD   r   s         r   
test_tupleTestCudaArrayArg.test_tuple(   s    		 
	 %XXc!fk2XXc!fk4	$s2wARUAD)   s2wARUA#b'kN3  r   c                 D   [         R                  S 5       n[        SS5      nU" SS5      n[        R                  " [        U5      [        R                  S9nUS   " XC5        U R                  US   UR                  5        U R                  US   UR                  5        g )	Nc                 @    UR                   U S'   UR                  U S'   g Nr   r   r   r   r0   s     r   r2   .TestCudaArrayArg.test_namedunituple.<locals>.f>   s    33AaD33AaDr   PointrL   r   r/   r!   r5   r   )
r   r#   r   r$   r6   r7   r8   r:   r   r   )r*   r2   rN   r   r1   s        r   test_namedunituple#TestCudaArrayArg.test_namedunituple=   s    		 
	 7J/!QKHHSV288,	$1qss#1qss#r   c                    [         R                  S 5       n[        SS5      nU" SSS5      n[        R                  " S[        R
                  S9n[        R                  " S[        R                  S9nUS   " XEU5        U R                  US	   UR                  5        U R                  US   UR                  5        U R                  US	   UR                  5        g )
Nc                 ^    UR                   U S'   UR                  U S'   UR                  US'   g rK   r   r   r1   rB   s      r   r2   +TestCudaArrayArg.test_namedtuple.<locals>.fL   s)    CCBqECCBqECCBqEr   rN   rS   r   r/   gS@r!   r5   r   )r   r#   r   r$   r6   r8   rF   r:   r   r   r1   )r*   r2   rN   r   rC   rD   s         r   test_namedtuple TestCudaArrayArg.test_namedtupleK   s    		 
	
 7O4!QXXarxx(XXarzz*	$A$A$A$r   c                     [         R                  S 5       n[        5       n[        R                  " S[        R
                  S9nUS   " X25        U R                  US   S5        g )Nc                      [        U5      U S'   g )Nr   r7   r0   s     r   r2   ,TestCudaArrayArg.test_empty_tuple.<locals>.f]   s    q6AaDr   r   r!   r5   r   )r   r#   tupler$   onesr8   r:   r*   r2   r   r1   s       r   test_empty_tuple!TestCudaArrayArg.test_empty_tuple\   sT    		 
	 GGGARXX&	$1q!r   c                     [         R                  S 5       nSn[        R                  " S[        R                  S9nUS   " X25        U R                  US   S5        U R                  US   S5        g )	Nc                 B    [        U5      U S'   [        US   5      U S'   g rK   rY   r0   s     r   r2   6TestCudaArrayArg.test_tuple_of_empty_tuples.<locals>.fh   s     q6AaDqt9AaDr   )r   r   r   r/   r!   r5   r   r4   r   r   r#   r$   r\   r8   r:   r]   s       r   test_tuple_of_empty_tuples+TestCudaArrayArg.test_tuple_of_empty_tuplesg   sf    		 
	 GGARXX&	$1q!1q!r   c                 
   [         R                  S 5       nSn[        R                  " S[        R                  S9nUS   " X25        U R                  US   S5        U R                  US   S5        U R                  US	   S	5        U R                  US   S5        U R                  US
   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        U R                  US   S5        g )Nc                     [        U5      U S'   [        US   5      U S'   [        US   5      U S'   [        US   5      U S'   US   S   U S'   US   S   U S'   US   S   U S'   US   S   U S'   US   S   U S	'   g )
Nr   r   r/   r4   r@   rA            rY   r0   s     r   r2   0TestCudaArrayArg.test_tuple_of_tuples.<locals>.fu   s    q6AaDqt9AaDqt9AaDqt9AaDQ47AaDQ47AaDQ47AaDQ47AaDQ47AaDr   )r   )rA   rh   )rj   r   r    r   r!   r5   r   r4   r   r/   r@   rA   rh   rj   ri   r    rc   r]   s       r   test_tuple_of_tuples%TestCudaArrayArg.test_tuple_of_tuplest   s    			 
		 %GGARXX&	$1q!1q!1q!1q!1q!1q!1q!1q!1r"r   c                    [         R                  S 5       nSn[        R                  " S[        R                  S9nUS   " X25        U R                  US   S5        U R                  US   S	5        U R                  US   S
5        U R                  US	   S5        U R                  US   S5        U R                  US   S5        g )Nc                     [        U5      U S'   [        US   5      U S'   US   S   U S'   US   S   U S'   US   S   U S'   US   U S'   g r?   rY   r0   s     r   r2   <TestCudaArrayArg.test_tuple_of_tuples_and_scalars.<locals>.f   s`    q6AaDqt9AaDQ47AaDQ47AaDQ47AaDQ4AaDr   ))rh   rA   r@   ri   r   r!   r5   r   r/   r   r4   rh   rA   r@   ri   rc   r]   s       r    test_tuple_of_tuples_and_scalars1TestCudaArrayArg.test_tuple_of_tuples_and_scalars   s    		 
	 GGARXX&	$1q!1q!1q!1q!1q!1q!r   c                     [         R                  S 5       nSn[        R                  " U5      n[        R                  " U5      nUS-  nX4U4nUSU4   " U5        [        R
                  R                  X4U-   5        g )Nc                     [         R                  " S5      nU[        U S   5      :  a  U S   U   U S   U   -   U S   U'   g g )Nr   r   r/   )r   r   r7   )r   r   s     r   r2   0TestCudaArrayArg.test_tuple_of_arrays.<locals>.f   sE    		!A3qt9}A$q'AaDG+!Q r   r    r4   r   )r   r#   r$   r6   	ones_liketestingassert_equal)r*   r2   Nx0x1x2r   s          r   test_tuple_of_arrays%TestCudaArrayArg.test_tuple_of_arrays   sq    		, 
	,
 XXa[\\"!VRL	!Q$



G,r   c                    [         R                  S 5       n[        R                  " S[        R                  S9nSU-  SS4n[        R
                  " S[        R                  S9nUS   " XC5        U R                  US   S5        U R                  US	   S5        U R                  US   S5        U R                  US
   S5        U R                  US   S
5        g )Nc                 l    US   S   U S'   US   S   U S'   US   U S'   US   S   U S'   US   S   U S'   g )Nr   r   r/   r4   r@   r   r0   s     r   r2   <TestCudaArrayArg.test_tuple_of_array_scalar_tuple.<locals>.f   sS    Q47AaDQ47AaDQ4AaDQ47AaDQ47AaDr   r/   r!   r    )r@   r4   rA   r5   r   r   r4   r@   )r   r#   r$   r%   r8   r6   r:   )r*   r2   zr   r1   s        r    test_tuple_of_array_scalar_tuple1TestCudaArrayArg.test_tuple_of_array_scalar_tuple   s    		 
	 IIarxx(UBHHQbhh'	$1q!1q!1r"1q!1q!r   r   N)__name__
__module____qualname____firstlineno__r+   r;   rG   rO   rU   r^   rd   rl   rq   r}   r   __static_attributes__r   r   r   r
   r
   	   s9    ( )4*$%"	""#6"*- "r   r
   c                   0    \ rS rSr\" S5      S 5       rSrg)TestDatetimeIssues   zTyping not used on cudasimc                 &   [         R                  S 5       n[        R                  " SSS9nU R	                  [
        5       nUS   " U5        S S S 5        WR                  R                  S   nSnU R                  XT5        g ! , (       d  f       N;= f)Nc                     U S-   $ r   r   )r   s    r   r2   1TestDatetimeIssues.test_10y_issue_9585.<locals>.f   s    q5Lr   2010zdatetime64[10Y]r!   r5   r   z(Unsupported array dtype: datetime64[10Y])	r   r#   r$   arrayassertRaisesr   	exceptionargsassertIn)r*   r2   arremessageunsupported_types         r   test_10y_issue_9585&TestDatetimeIssues.test_10y_issue_9585   s}    		 
	 hhv%67{+qdGCL , ++""1%E&0 ,+s   B
Br   N)r   r   r   r   r   r   r   r   r   r   r   r      s     121 31r   r   __main__)numpyr$   collectionsr   numbar   numba.core.errorsr   numba.cuda.testingr   r   r   r
   r   r   mainr   r   r   <module>r      sJ     "  ) F F}"| }"@1 1, zMMO r   