U
    iâËdf  ã                   @   s6  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�r2e *¡  dS )<é    )ÚirÚbinding)ÚtypesÚ	datamodel)Útest_factory)ÚDataModelManager)ÚOpaqueModelNc                   @   s   e Zd ZejZdS )ÚTestBoolN)Ú__name__Ú
__module__Ú__qualname__r   ÚbooleanÚfe_type© r   r   úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_datamodel.pyr	   
   s   r	   c                   @   s   e Zd ZejZdS )ÚTestPyObjectN)r
   r   r   r   Zpyobjectr   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )ÚTestInt8N)r
   r   r   r   Zint8r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )Ú	TestInt16N)r
   r   r   r   Úint16r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )Ú	TestInt32N)r
   r   r   r   Úint32r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )Ú	TestInt64N)r
   r   r   r   Úint64r   r   r   r   r   r      s   r   c                   @   s   e Zd ZejZdS )Ú	TestUInt8N)r
   r   r   r   Úuint8r   r   r   r   r   r   "   s   r   c                   @   s   e Zd ZejZdS )Ú
TestUInt16N)r
   r   r   r   Zuint16r   r   r   r   r   r   &   s   r   c                   @   s   e Zd ZejZdS )Ú
TestUInt32N)r
   r   r   r   Zuint32r   r   r   r   r   r   *   s   r   c                   @   s   e Zd ZejZdS )Ú
TestUInt64N)r
   r   r   r   Zuint64r   r   r   r   r   r   .   s   r   c                   @   s   e Zd ZejZdS )Ú	TestFloatN)r
   r   r   r   Úfloat32r   r   r   r   r   r   2   s   r   c                   @   s   e Zd ZejZdS )Ú
TestDoubleN)r
   r   r   r   Zfloat64r   r   r   r   r   r    6   s   r    c                   @   s   e Zd ZejZdS )ÚTestComplexN)r
   r   r   r   Ú	complex64r   r   r   r   r   r!   :   s   r!   c                   @   s   e Zd ZejZdS )ÚTestDoubleComplexN)r
   r   r   r   Ú
complex128r   r   r   r   r   r#   >   s   r#   c                   @   s   e Zd Ze ej¡ZdS )ÚTestPointerOfInt32N)r
   r   r   r   ZCPointerr   r   r   r   r   r   r%   B   s   r%   c                   @   s   e Zd Ze ejd¡ZdS )ÚTestUniTupleOf2xInt32é   N©r
   r   r   r   ÚUniTupler   r   r   r   r   r   r&   F   s   r&   c                   @   s   e Zd Ze ejd¡ZdS )ÚTestUniTupleEmptyr   Nr(   r   r   r   r   r*   J   s   r*   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   r+   N   s   r+   c                   @   s   e Zd Ze g ¡ZdS )ÚTestTupleEmptyN)r
   r   r   r   r,   r   r   r   r   r   r-   R   s   r-   c                   @   s   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   s   r.   c                   @   s   e Zd Ze ejdd¡ZdS )ÚTest2DArrayOfComplex128r'   r0   N)r
   r   r   r   r2   r$   r   r   r   r   r   r3   Z   s   r3   c                   @   s   e Zd Ze ejdd¡ZdS )ÚTest0DArrayOfInt32r   r0   Nr1   r   r   r   r   r4   ^   s   r4   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.
        Ztest_arguments)Únamec                    s"   g | ]}t  ˆ  |¡ ¡ d ¡‘qS ©N)r   ÚConstantÚlookupZget_value_type)Ú.0Út©Údmmr   r   Ú
<listcomp>r   s   ÿz2TestArgInfo._test_as_arguments.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   ©Útype)r:   Úvr   r   r   r>   z   s     c                 S   s   g | ]
}|j ‘qS r   r?   ©r:   Úar   r   r   r>   }   s     c                 S   s   g | ]
}|j ‘qS r   r?   rB   r   r   r   r>   ~   s     c                 S   s   g | ]}d ‘qS )zarg%ir   )r:   Úir   r   r   r>   ƒ   s     N)r   Údefault_managerZ	ArgPackerr   ÚModuleÚFunctionTypeZVoidTypeÚFunctionZ	IRBuilderZposition_at_endZappend_basic_blockZas_argumentsZfrom_argumentsÚassertEqualÚlenÚtupleZargument_typesZassign_namesÚrangeZret_voidÚllZparse_assemblyÚstr)ÚselfÚfe_argsÚfiÚmoduleZfntyÚfunctionZbuilderÚargsÚvaluesZasargsZvaltysZexpect_typesZ	got_typesr   r<   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/   r0   )r   r   r2   r"   rV   ©rO   rP   r   r   r   Útest_int32_array_complex‰   s
    þz$TestArgInfo.test_int32_array_complexc                 C   s$   t  t jdd¡gd }|  |¡ d S )Nr/   r0   r'   ©r   r2   r   rV   rW   r   r   r   Útest_two_arrays�   s    zTestArgInfo.test_two_arraysc                 C   s$   t  t jdd¡gd }|  |¡ d S )Nr   r0   r'   rY   rW   r   r   r   Útest_two_0d_arrays“   s    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 )Nr'   é   r/   r0   )r   r)   r   rV   r2   )rO   rP   Z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   r)   r   r,   r   rV   rW   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   r'   )r   r   r)   r,   r   rV   rW   r   r   r   Útest_nested_empty_tuples«   s
    þz$TestArgInfo.test_nested_empty_tuplesN)
r
   r   r   rV   rX   rZ   r[   r]   r^   r_   r   r   r   r   r5   b   s   %r5   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 r7   )r   rE   r=   )rO   r   r   r   ÚsetUp³   s    zTestMemInfo.setUpc                 C   s"   t j}| j| }|  | ¡ ¡ d S r7   )r   r   r=   ÚassertFalseÚcontains_nrt_meminfo©rO   ÚtyÚdmr   r   r   Útest_number¶   s    
zTestMemInfo.test_numberc                 C   s*   t jd d … }| j| }|  | ¡ ¡ d S r7   )r   r   r=   Ú
assertTruerc   rd   r   r   r   Ú
test_array»   s    
zTestMemInfo.test_arrayc                 C   s,   t jt jdd�}| j| }|  | ¡ ¡ d S ©Nr'   )ÚdtypeÚcount)r   r)   r   r=   rb   rc   rd   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 rj   )r   r)   r   r=   rh   rc   rd   r   r   r   Útest_tuple_of_arrayÅ   s    
zTestMemInfo.test_tuple_of_arrayN)r
   r   r   ra   rg   ri   rm   rn   r   r   r   r   r`   ²   s
   r`   c                   @   s   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   )rL   Úshape)rC   ÚbrD   r   r   r   ÚcopyÑ   s    z%TestMisc.test_issue2921.<locals>.copyé   )rk   )FTTTT)ÚnumpyZnumbarp   Zaranger   ÚviewZbool_Z
zeros_likeÚtestingZassert_equalÚarray)rO   Únprp   rs   rr   rC   r   r   r   Útest_issue2921Í   s    


zTestMisc.test_issue2921N)r
   r   r   rz   r   r   r   r   ro   Ë   s   ro   c                   @   s   e Zd Zdd„ ZdS )Ú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 5 Q R X d S )Nc                   @   s   e Zd ZdS )z/TestDMMChaining.test_basic.<locals>.int_handlerN©r
   r   r   r   r   r   r   Úint_handlerà   s   r}   c                   @   s   e Zd ZdS )z1TestDMMChaining.test_basic.<locals>.float_handlerNr|   r   r   r   r   Úfloat_handlerã   s   r~   c                   @   s   e Zd ZdS )z3TestDMMChaining.test_basic.<locals>.new_int_handlerNr|   r   r   r   r   Únew_int_handlerë   s   r   )r   r   Úregisterr   ÚIntegerÚFloatÚchainZassertIsInstancer9   ZintpZassertNotIsInstancer   ÚassertRaisesÚKeyError)rO   r=   r}   r~   Z	inter_dmmr   Zchained_dmmr   r   r   Ú
test_basicÝ   s"    
zTestDMMChaining.test_basicN)r
   r   r   r†   r   r   r   r   r{   Ü   s   r{   Ú__main__)+Zllvmliter   r   rM   Z
numba.corer   r   Znumba.core.datamodel.testingr   Znumba.core.datamodel.managerr   Znumba.core.datamodel.modelsr   Zunittestr	   r   r   r   r   r   r   r   r   r   r   r    r!   r#   r%   r&   r*   r+   r-   r.   r3   r4   ZTestCaser5   r`   ro   r{   r
   Úmainr   r   r   r   Ú<module>   sB   P$
