
    J/Ph                     "   d dl Z d dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ  G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    N)TestCasecaptured_stdout)njit	literally)types)tuple_setitembuild_full_slice_tuple)to_fixed_tupleempty_inferred)memcpy_region)dump_refcount)trailing_zerosleading_zeros)TypingErrorc                       e Zd ZdZd Zd ZdS )TestTupleIntrinsicz!Tests for numba.unsafe.tuple
    c                   
 t           d             }t          j        d           t          d          D ]5}t          j        dd          
t          
fdt          
          D                       }t          d t          
          D                       }t          t          t          |                              }t          j        |           t          |          }t          |          }t          j
        |          }||t          j
        |          <    ||||          \  }}	|                     ||           |                     |	t          |                     7d S )Nc                 \    | }t          ||          D ]\  }}t          |||          }| |fS N)zipr   )tupidxsvalsout_tupivs         b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_unsafe_intrinsics.pyfooz2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo   s?    GD$ 7 71'A66<    {         
   c                 :    g | ]}t          j        d           S )r   randomrandint).0r   ns     r   
<listcomp>z9TestTupleIntrinsic.test_tuple_setitem.<locals>.<listcomp>   s%    @@@!1--@@@r   c                 8    g | ]}t          j        d d          S )r#   r!   r%   )r(   r   s     r   r*   z9TestTupleIntrinsic.test_tuple_setitem.<locals>.<listcomp>   s$    CCCQ&.R00CCCr   )r   r&   seedranger'   tuplelistlenshufflenpasarrayassertEqual)selfr   _r   r   r   
expect_tup
expect_outgot_tupgot_outr)   s             @r   test_tuple_setitemz%TestTupleIntrinsic.test_tuple_setitem   s[   		  	  
	  	Cr 	9 	9Aq"%%A@@@@uQxx@@@AACCC%((CCCDDDc$ii(())DN4   ;;DsJJ//J+/Jrz$''("s3d33GWWj111WeJ&7&78888!	9 	9r   c           	         t           d             }t          dd          D ]}t          j                            t          j        |          dz             }t          d|dz             D ],}t          j                            | |||                     -|                     t                    5   |||dz              d d d            n# 1 swxY w Y   d S )Nc                 F    | t          t          |                             S r   )r	   r   )ar)   s     r   full_slice_arrayz=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_array.   s     +IaLL99::r   r"      )	r   r-   r2   r&   arangetestingassert_array_equalassertRaisesr   )r5   r?   r)   r>   r   s        r   test_slice_tuplez#TestTupleIntrinsic.test_slice_tuple-   s'   		; 	; 
	; q! 	+ 	+A	  1!122A1a!e__ I I
--a1A1A!Q1G1GHHHH"";// + +  AE***+ + + + + + + + + + + + + + +		+ 	+s   1CC	C	N)__name__
__module____qualname____doc__r;   rE    r   r   r   r      s<         9 9 96+ + + + +r   r   c                   $    e Zd ZdZd Zd Zd ZdS )TestNdarrayIntrinsicz#Tests for numba.unsafe.ndarray
    c           	      L   dt           fd            }t          j                            d           t	          d          D ]}t          j                            d          } ||          \  }}}}|                     |t          |d d                              |                     |t          |d d                              |                     |t          |d d                              |                     |d           |                     t                    5 } |t          j                            d                     d d d            n# 1 swxY w Y   | 	                    d	t          |j                             t           d
             }	|                     t                    5 } |	t          j                            d          d           d d d            n# 1 swxY w Y   d}
| 	                    |
t          |j                             d S )Nr@   c                     t          | d          }t          | d          }t          |           }t          | d          }||||fS )Nr"   )length   r   r
   )arrayr>   bcdconsts        r   r   z5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.fooB   sP    uQ///Aua((Aue,,Aua((AaA:r   r    r#   r"   rP   rJ   r"   rP   zNot supported on array.ndim=2c                 "    t          | |          S r   rQ   )rR   rO   s     r   tuple_with_lengthzCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_length]   s    !%000r   z$*length* argument must be a constant)r   r2   r&   r,   r-   r4   r.   rD   r   assertInstr	exception)r5   r   r6   arrr>   rS   rT   rU   raisesrY   	expectmsgrV   s              @r   test_to_fixed_tuplez(TestNdarrayIntrinsic.test_to_fixed_tuple?   s   		 	 	 	 
	 		sr 		$ 		$A)""1%%CSJAq!QQc"1"g///Qc"1"g///Qc"1"g///Q#### {++ 	*vC	  (()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*5&*++	- 	- 	- 
	1 	1 
	1 {++ 	6vbi..q111555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6:	iV%5!6!677777s$   ')EE #E 9*G//G36G3c                     t           d             } |            }t          j        dgdz            }t          j                            ||           d S )Nc                  v    t          d          } d}t          t          |                     D ]
}|dz   | |<   | S N)r#   g?rP   )r   r-   r0   Sr>   r   s      r   funcz;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.funcg   sC    u%%AA3q66]]  1u!Hr   @r#   r   r2   r3   rB   rC   r5   rf   gotexpects       r   test_issue_3586_variant1z-TestNdarrayIntrinsic.test_issue_3586_variant1f   [    		 	 
	 dffSEBJ''

%%c622222r   c                     t           d             } |            }t          j        dgdz            }t          j                            ||           d S )Nc                  f    t          d          } d}t          | j                  D ]
}|dz   | |<   | S rc   )r   r-   sizerd   s      r   rf   z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funct   s?    u%%AA16]]  1u!Hr   rg   r#   rh   ri   s       r   test_issue_3586_variant2z-TestNdarrayIntrinsic.test_issue_3586_variant2s   rm   r   N)rF   rG   rH   rI   r`   rl   rq   rJ   r   r   rL   rL   <   sL         %8 %8 %8N3 3 33 3 3 3 3r   rL   c                       e Zd ZdZd ZdS )TestBytesIntrinsicz!Tests for numba.unsafe.bytes
    c                    t           d             }t          j        dt          j                  }t          j        dt          j                  } ||d|dd           g d}t          j                            ||           d S )Nc                 V    t          | j        j        ||j        j        ||d           d S )Nr"   )r   ctypesdata)dst	dst_indexsrc	src_indexnbytess        r   r   z2TestBytesIntrinsic.test_memcpy_region.<locals>.foo   s:     #*/9*/9faA A A A Ar   r#   )dtype   r"      )
r   r   r   r   r"   rP   r@   r~   r   r   )r   r2   zerosint8rA   rB   rC   )r5   r   rU   sexpecteds        r   test_memcpy_regionz%TestBytesIntrinsic.test_memcpy_region   s    		A 	A 
	A
 HRrw'''Ib((( 	Aq!Q111

%%a22222r   N)rF   rG   rH   rI   r   rJ   r   r   rs   rs      s-         3 3 3 3 3r   rs   c                       e Zd Zd ZdS )TestRefCountc                    t           d             }t                      5 } |             d d d            n# 1 swxY w Y   |                                }d}t          j        d d d         }t          j                            |gdz            }|                     |                    |          |           |                     |                    |          |           d S )Nc                  r    t          j        d          } | | f}t          |            t          |           d S )Nr#   )r2   onesr   )r>   rS   s     r   use_dump_refcountz:TestRefCount.test_dump_refcount.<locals>.use_dump_refcount   s:    AAA!!r   zdump refct of {}r"   rP   )	r   r   getvaluer   float64Tuple
from_typesrZ   format)r5   r   streamoutputpatarytytuptys          r   test_dump_refcountzTestRefCount.test_dump_refcount   s   		 	 
	  	 &	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  "" ccc"&&w{33cjj''000cjj''00000s   6::N)rF   rG   rH   r   rJ   r   r   r   r      s#        1 1 1 1 1r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestZeroCountsc           
      J   t          d           }t          d           }g d}t          j        D ]}|                      | |d                     | |d                    cxk    o
|j        k    nc            t          |j                  D ]C} |d|z            }|                      ||           ||          z   dz   |j                   D|D ]U}|                      | ||                    d           |                      | ||dz                       d           Vt          j        D ]e}|                      | |d                     | |d                    cxk    o
|j        k    nc            t          |j        dz
            D ]} |d|z            }|                      ||           ||          z   dz   |j                   |                      ||           d           |                      ||           ||                      |D ]o}|j	        |cxk    r|j
        k    sn |                      | ||                    d           |                      | ||dz                       d           pgd S )Nc                      t          |           S r   )r   xs    r   <lambda>z0TestZeroCounts.test_zero_count.<locals>.<lambda>   s    M!,, r   c                      t          |           S r   )r   r   s    r   r   z0TestZeroCounts.test_zero_count.<locals>.<lambda>   s    N1-- r   )rP   *   ~      r   rP   r"   )r   r   unsigned_domain
assertTruebitwidthr-   r4   assertGreatersigned_domainminvalmaxval)r5   lztzevensTr   valr)   s           r   test_zero_countzTestZeroCounts.test_zero_count   s   ,,----..!!!& 	2 	2AOOBBqqttHH11Q44>>>>AJ>>>>???1:&& D DaQii  C22c77!2Q!6
CCCC 2 2""22aadd88Q///  AAa!eHHq11112 $ 	2 	2AOOBBqqttHH11Q44>>>>AJ>>>>???1:>** 4 4aQii  C22c77!2Q!6
CCC  SD1---  C""cT((3333 2 2x100000000""22aadd88Q///  AAa!eHHq1111	2	2 	2r   c                     t          fd          j        t          d t          j                  }t          |t                    D ]}                     t                    5 }  |d                     d d d            n# 1 swxY w Y    	                    d
                    |          t          |j                              fd} |dd            |d	d
           d S )Nc                       |  S r   rJ   )r   rf   s    r   r   z0TestZeroCounts.check_error_msg.<locals>.<lambda>   s    a r   c                 8    t          | t          j                   S r   )
isinstancer   Integerr   s    r   r   z0TestZeroCounts.check_error_msg.<locals>.<lambda>   s    *Q666 r   )keyrP   z;{} is only defined for integers, but value passed was '{}'.c                                          t          t          f          5 } |   d d d            n# 1 swxY w Y                       d                              t          |j                             d S )Nz{}() )rD   r   	TypeErrorrZ   r   r[   r\   )argsstringecfunc	func_namer5   s      r   checkz-TestZeroCounts.check_error_msg.<locals>.check   s    ""K#;<< t              MMy))AK      s   599rW   z-takes 2 positional arguments but 3 were givenrJ   z&missing 1 required positional argument)r   _namefilterr   number_domainsortedr[   rD   r   rZ   r   r\   )r5   rf   unsupported_typestypr   r   r   r   s   ``    @@r   check_error_msgzTestZeroCounts.check_error_msg   sd   (((())J	"668K
 
 +555 	 	C"";// 1cc!ff              MMM	3''AK     	 	 	 	 	 	 	 	fEFFFb:;;;;;s   +BB	B	c                 :    |                      t                     d S r   )r   r   r5   s    r   test_trailing_zeros_errorz(TestZeroCounts.test_trailing_zeros_error   s    ^,,,,,r   c                 :    |                      t                     d S r   )r   r   r   s    r   test_leading_zeros_errorz'TestZeroCounts.test_leading_zeros_error   s    ]+++++r   N)rF   rG   rH   r   r   r   r   rJ   r   r   r   r      sP        2 2 28< < <8- - -, , , , ,r   r   )r&   numpyr2   numba.tests.supportr   r   numbar   r   
numba.corer   numba.cpython.unsafe.tupler   r	   numba.np.unsafe.ndarrayr
   r   numba.core.unsafe.bytesr   numba.core.unsafe.refcountr   numba.cpython.unsafe.numbersr   r   numba.core.errorsr   r   rL   rs   r   r   rJ   r   r   <module>r      s        9 9 9 9 9 9 9 9 ! ! ! ! ! ! ! !       L L L L L L L L B B B B B B B B 1 1 1 1 1 1 4 4 4 4 4 4 F F F F F F F F ) ) ) ) ) )*+ *+ *+ *+ *+ *+ *+ *+ZB3 B3 B3 B3 B38 B3 B3 B3J3 3 3 3 3 3 3 3(1 1 1 1 18 1 1 1,=, =, =, =, =,X =, =, =, =, =,r   