o
    if                     @   s:  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 d dlZG dd de ZG d	d
 d
e ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd de ZG dd  d e ZG d!d" d"e ZG d#d$ d$e ZG d%d& d&e ZG d'd( d(e ZG d)d* d*e ZG d+d, d,e Z G d-d. d.e Z!G d/d0 d0e Z"G d1d2 d2e Z#G d3d4 d4ej$Z%G d5d6 d6ej$Z&G d7d8 d8ej$Z'G d9d: d:ej$Z(e)d;kre*  dS dS )<    )irbinding)types	datamodel)test_factory)DataModelManager)OpaqueModelNc                   @      e Zd ZejZdS )TestBoolN)__name__
__module____qualname__r   booleanfe_type r   r   X/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/tests/test_datamodel.pyr
   
       
r
   c                   @   r	   )TestPyObjectN)r   r   r   r   pyobjectr   r   r   r   r   r      r   r   c                   @   r	   )TestInt8N)r   r   r   r   int8r   r   r   r   r   r      r   r   c                   @   r	   )	TestInt16N)r   r   r   r   int16r   r   r   r   r   r      r   r   c                   @   r	   )	TestInt32N)r   r   r   r   int32r   r   r   r   r   r      r   r   c                   @   r	   )	TestInt64N)r   r   r   r   int64r   r   r   r   r   r      r   r   c                   @   r	   )	TestUInt8N)r   r   r   r   uint8r   r   r   r   r   r   "   r   r   c                   @   r	   )
TestUInt16N)r   r   r   r   uint16r   r   r   r   r   r   &   r   r   c                   @   r	   )
TestUInt32N)r   r   r   r   uint32r   r   r   r   r   r!   *   r   r!   c                   @   r	   )
TestUInt64N)r   r   r   r   uint64r   r   r   r   r   r#   .   r   r#   c                   @   r	   )	TestFloatN)r   r   r   r   float32r   r   r   r   r   r%   2   r   r%   c                   @   r	   )
TestDoubleN)r   r   r   r   float64r   r   r   r   r   r'   6   r   r'   c                   @   r	   )TestComplexN)r   r   r   r   	complex64r   r   r   r   r   r)   :   r   r)   c                   @   r	   )TestDoubleComplexN)r   r   r   r   
complex128r   r   r   r   r   r+   >   r   r+   c                   @   s   e Zd ZeejZdS )TestPointerOfInt32N)r   r   r   r   CPointerr   r   r   r   r   r   r-   B   s    r-   c                   @      e Zd ZeejdZdS )TestUniTupleOf2xInt32   Nr   r   r   r   UniTupler   r   r   r   r   r   r0   F       r0   c                   @   r/   )TestUniTupleEmptyr   Nr2   r   r   r   r   r5   J   r4   r5   c                   @   s   e Zd ZeejejgZdS )TestTupleInt32Float32N)r   r   r   r   Tupler   r&   r   r   r   r   r   r6   N   s    r6   c                   @   s   e Zd Zeg ZdS )TestTupleEmptyN)r   r   r   r   r7   r   r   r   r   r   r8   R   s    r8   c                   @      e Zd ZeejddZdS )Test1DArrayOfInt32   CNr   r   r   r   Arrayr   r   r   r   r   r   r:   V       r:   c                   @   r9   )Test2DArrayOfComplex128r1   r<   N)r   r   r   r   r>   r,   r   r   r   r   r   r@   Z   r?   r@   c                   @   r9   )Test0DArrayOfInt32r   r<   Nr=   r   r   r   r   rA   ^   r?   rA   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestArgInfoc                    s  t j t  |}t }tt g }tj||dd}t }|	|
   fdd|D }|||}|||}	| t|	t| tdd |D }
| |
|j dd |D }dd |	D }| || ||dd tt|D  |  tt| d	S )
z
        Test round-tripping types *fe_args* through the default data model's
        argument conversion and unpacking logic.
        test_arguments)namec                    s"   g | ]}t  | d qS N)r   Constantlookupget_value_type).0tdmmr   r   
<listcomp>r   s    z2TestArgInfo._test_as_arguments.<locals>.<listcomp>c                 S      g | ]}|j qS r   type)rI   vr   r   r   rM   z       c                 S   rN   r   rO   rI   ar   r   r   rM   }   rR   c                 S   rN   r   rO   rS   r   r   r   rM   ~   rR   c                 S   s   g | ]}d qS )zarg%ir   )rI   ir   r   r   rM      s    N)r   default_manager	ArgPackerr   ModuleFunctionTypeVoidTypeFunction	IRBuilderposition_at_endappend_basic_blockas_argumentsfrom_argumentsassertEquallentupleargument_typesassign_namesrangeret_voidllparse_assemblystr)selffe_argsfimodulefntyfunctionbuilderargsvaluesasargsvaltysexpect_types	got_typesr   rK   r   _test_as_argumentsd   s*   
zTestArgInfo._test_as_argumentsc                 C   s(   t jt t jddt jg}| | d S )Nr;   r<   )r   r   r>   r*   rx   rk   rl   r   r   r   test_int32_array_complex   s
   z$TestArgInfo.test_int32_array_complexc                 C   $   t t jddgd }| | d S )Nr;   r<   r1   r   r>   r   rx   ry   r   r   r   test_two_arrays      zTestArgInfo.test_two_arraysc                 C   r{   )Nr   r<   r1   r|   ry   r   r   r   test_two_0d_arrays   r~   zTestArgInfo.test_two_0d_arraysc                 C   s~   t t jdt t jdg}| | t t jdd}t |dt |dg}| | t t t jddg}| | d S )Nr1      r;   r<   )r   r3   r   rx   r>   )rk   rl   arrtyr   r   r   test_tuples   s   



zTestArgInfo.test_tuplesc                 C   s*   t t jdt dt jg}| | d S )Nr   r   )r   r3   r   r7   r   rx   ry   r   r   r   test_empty_tuples   s
   zTestArgInfo.test_empty_tuplesc                 C   s*   t jt t ddt jg}| | d S )Nr   r1   )r   r   r3   r7   r   rx   ry   r   r   r   test_nested_empty_tuples   s
   z$TestArgInfo.test_nested_empty_tuplesN)
r   r   r   rx   rz   r}   r   r   r   r   r   r   r   r   rB   b   s    %rB   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMemInfoc                 C   s   t j| _d S rE   )r   rV   rL   )rk   r   r   r   setUp   s   zTestMemInfo.setUpc                 C   s"   t j}| j| }| |  d S rE   )r   r   rL   assertFalsecontains_nrt_meminfork   tydmr   r   r   test_number   s   
zTestMemInfo.test_numberc                 C   s*   t jd d  }| j| }| |  d S rE   )r   r   rL   
assertTruer   r   r   r   r   
test_array   s   
zTestMemInfo.test_arrayc                 C   s,   t jt jdd}| j| }| |  d S Nr1   )dtypecount)r   r3   r   rL   r   r   r   r   r   r   test_tuple_of_number   s   
z TestMemInfo.test_tuple_of_numberc                 C   s4   t jt jd d  dd}| j| }| |  d S r   )r   r3   r   rL   r   r   r   r   r   r   test_tuple_of_array   s   
zTestMemInfo.test_tuple_of_arrayN)r   r   r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @      e Zd Zdd ZdS )TestMiscc                 C   sd   dd l }ddlm} |dd }|jd|jd|j}||}||| |j	||
d d S )Nr   )njitc                 S   s$   t | jd D ]}|| | |< qd S )Nr   )rf   shape)rT   brU   r   r   r   copy   s   z%TestMisc.test_issue2921.<locals>.copy   )r   )FTTTT)numpynumbar   aranger   viewbool_
zeros_liketestingassert_equalarray)rk   npr   r   r   rT   r   r   r   test_issue2921   s   


zTestMisc.test_issue2921N)r   r   r   r   r   r   r   r   r      s    r   c                   @   r   )TestDMMChainingc                 C   s$  t  }G dd dt}G dd dt}|tj| |tj| t  }G dd dt}|tj| ||}| |tj	| | 
|tj	| | |tj	| | |tj| | |tj| | |tj	| | t |tj W d    d S 1 sw   Y  d S )Nc                   @      e Zd ZdS )z/TestDMMChaining.test_basic.<locals>.int_handlerNr   r   r   r   r   r   r   int_handler       r   c                   @   r   )z1TestDMMChaining.test_basic.<locals>.float_handlerNr   r   r   r   r   float_handler   r   r   c                   @   r   )z3TestDMMChaining.test_basic.<locals>.new_int_handlerNr   r   r   r   r   new_int_handler   r   r   )r   r   registerr   IntegerFloatchainassertIsInstancerG   intpassertNotIsInstancer&   assertRaisesKeyError)rk   rL   r   r   	inter_dmmr   chained_dmmr   r   r   
test_basic   s$   
"zTestDMMChaining.test_basicN)r   r   r   r   r   r   r   r   r      s    r   __main__)+llvmliter   r   rh   
numba.corer   r   numba.core.datamodel.testingr   numba.core.datamodel.managerr   numba.core.datamodel.modelsr   unittestr
   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r+   r-   r0   r5   r6   r8   r:   r@   rA   TestCaserB   r   r   r   r   mainr   r   r   r   <module>   sF    P
$