U
    iâËd|;  ã                   @   sˆ  d Z ddlZddlZddlmZmZmZmZm	Z	 ddl
mZ ddlm  m  mZ ddlmZ ddlmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZm Z m!Z!m"Z" dd
l#m$Z$ ddl%m&Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-Z-ddddgZ.ej/ 0ee¡Z1G dd„ de-j2ƒZ3G dd„ de-j2ƒZ4G dd„ de-j2ƒZ5G dd„ de-j2ƒZ6G dd„ de+e-j2ƒZ7G dd„ de+e-j2ƒZ8e9dk�r„e- :¡  dS )z"
Unspecified error handling tests
é    N)ÚjitÚnjitÚtypedÚint64Útypes)Úerrors)Ú	structref)ÚoverloadÚ	intrinsicÚoverload_methodÚoverload_attribute)ÚCompilerBase)ÚTranslateByteCodeÚ	FixupArgsÚIRProcessing)ÚNopythonTypeInferenceÚDeadCodeEliminationÚNoPythonBackendÚNativeLowering)ÚPassManager)Ú_err_reasons)Úskip_parfors_unsupportedÚoverride_configÚSerialMixinÚskip_unless_scipyé   é   é   é   c                   @   s   e Zd Zdd„ ZdS )ÚTestErrorHandlingBeforeLoweringc              
   C   sT   dd„ }t tfD ]>}|  tj¡�}||ƒdƒ W 5 Q R X d}|  |t|jƒ¡ qd S )Nc                    s   | d ‰ ‡ fdd„}|S )z return the closure r   c                    s   | ˆ  S ©N© ©Úx©Úzr!   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_errorhandling.pyÚinner&   s    zmTestErrorHandlingBeforeLowering.test_unsupported_make_function_return_inner_func.<locals>.func.<locals>.innerr!   )r#   r'   r!   r$   r&   Úfunc"   s    z^TestErrorHandlingBeforeLowering.test_unsupported_make_function_return_inner_func.<locals>.funcr   z%Cannot capture the non-constant value)r   r   ÚassertRaisesr   ÚTypingErrorÚassertInÚstrÚ	exception)Úselfr(   ZpipelineÚraisesÚexpectedr!   r!   r&   Ú0test_unsupported_make_function_return_inner_func!   s    zPTestErrorHandlingBeforeLowering.test_unsupported_make_function_return_inner_funcN)Ú__name__Ú
__module__Ú__qualname__r1   r!   r!   r!   r&   r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestUnsupportedReportingc              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X d}|  |t|jƒ¡ d S )Nc                   S   s   t  dddg¡ d S )Nr   r   r   )ÚnpZ
asanyarrayr!   r!   r!   r&   r(   6   s    zFTestUnsupportedReporting.test_unsupported_numpy_function.<locals>.funcz4Use of unsupported NumPy function 'numpy.asanyarray'©r   r)   r   r*   r+   r,   r-   )r.   r(   r/   r0   r!   r!   r&   Útest_unsupported_numpy_function4   s    
z8TestUnsupportedReporting.test_unsupported_numpy_functionN)r2   r3   r4   r8   r!   r!   r!   r&   r5   2   s   r5   c                   @   sX   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	dd„ ƒZ
dd„ Zdd„ ZdS )ÚTestMiscErrorHandlingc                 C   s*   t dd„ ƒ}tjdgtjd�}||ƒ d S )Nc                 S   s   d|  S ©Né
   r!   r"   r!   r!   r&   ÚfnH   s    zHTestMiscErrorHandling.test_use_of_exception_for_flow_control.<locals>.fng      ð?)Zdtype)r   r6   ÚarrayZfloat64)r.   r<   Úar!   r!   r&   Ú&test_use_of_exception_for_flow_controlC   s    
z<TestMiscErrorHandling.test_use_of_exception_for_flow_controlc              
   C   sP   dd„ }dd„ }||fD ]2}|   t¡�}|ƒ  W 5 Q R X |  dt|jƒ¡ qd S )Nc                   S   s   t dƒ‚d S )NÚtest_string©Ú	Exceptionr!   r!   r!   r&   Úfoo_commentedU   s    z_TestMiscErrorHandling.test_commented_func_definition_is_not_a_definition.<locals>.foo_commentedc                   S   s   t dƒ‚dS )z> def docstring containing def might match function definition!r@   NrA   r!   r!   r!   r&   Úfoo_docstringY   s    z_TestMiscErrorHandling.test_commented_func_definition_is_not_a_definition.<locals>.foo_docstringr@   )r)   rB   r+   r,   r-   )r.   rC   rD   r(   r/   r!   r!   r&   Ú2test_commented_func_definition_is_not_a_definitionO   s    zHTestMiscErrorHandling.test_commented_func_definition_is_not_a_definitionc              	   C   sd   G dd„ dt ƒ}t|d�dd„ ƒ}|  tj¡�}|tddgƒƒ W 5 Q R X d}|  |t|jƒ¡ d S )	Nc                   @   s   e Zd Zdd„ ZdS )zFTestMiscErrorHandling.test_use_of_ir_unknown_loc.<locals>.TestPipelinec                 S   sn   d}t |ƒ}| td¡ | td¡ | td¡ | td¡ | td¡ | td¡ | td¡ | 	¡  |gS )	NZbad_DCE_pipelinezanalyzing bytecodezfix up argszprocessing IRZDCEznopython frontendznative loweringznopython mode backend)
r   Zadd_passr   r   r   r   r   r   r   Úfinalize)r.   ÚnameÚpmr!   r!   r&   Údefine_pipelinesf   s    zWTestMiscErrorHandling.test_use_of_ir_unknown_loc.<locals>.TestPipeline.define_pipelinesN)r2   r3   r4   rI   r!   r!   r!   r&   ÚTestPipelinee   s   rJ   )Zpipeline_classc                 S   s   dS )Nr   r!   ©r>   r!   r!   r&   Úfv   s    z;TestMiscErrorHandling.test_use_of_ir_unknown_loc.<locals>.fr   r   z File "unknown location", line 0:)	r   r   r)   r   r*   Úiterr+   r,   r-   )r.   rJ   rL   r/   r0   r!   r!   r&   Útest_use_of_ir_unknown_locc   s    
z0TestMiscErrorHandling.test_use_of_ir_unknown_locc              	   C   sF   |   tj¡�}|ƒ  W 5 Q R X ddg}|D ]}|  |t|jƒ¡ q*d S )NzThe use of az'in globals, is not supported as globals)r)   r   r*   r+   r,   r-   )r.   r(   r/   r0   Úexr!   r!   r&   Úcheck_write_to_globals€   s
    z,TestMiscErrorHandling.check_write_to_globalsc                 C   s   t dd„ ƒ}|  |¡ d S )Nc                   S   s   dt d< d S ©Nr;   r   )Ú_global_listr!   r!   r!   r&   Úfoo‰   s    zMTestMiscErrorHandling.test_handling_of_write_to_reflected_global.<locals>.foo©r   rP   ©r.   rS   r!   r!   r&   Ú*test_handling_of_write_to_reflected_globalˆ   s    
z@TestMiscErrorHandling.test_handling_of_write_to_reflected_globalc                 C   s   t dd„ ƒ}|  |¡ d S )Nc                   S   s   dt d< d S rQ   )Ú_global_dictr!   r!   r!   r&   rS   �   s    zNTestMiscErrorHandling.test_handling_of_write_to_typed_dict_global.<locals>.foorT   rU   r!   r!   r&   Ú+test_handling_of_write_to_typed_dict_global�   s    
zATestMiscErrorHandling.test_handling_of_write_to_typed_dict_globalc              	   C   sJ   t dd�dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X d}|  |t|jƒ¡ d S )NT)Úparallelc                  S   s   t dƒD ]} qd S r:   )Zprange)Úir!   r!   r&   rS   ˜   s    zPTestMiscErrorHandling.test_handling_forgotten_numba_internal_import.<locals>.foozC'prange' looks like a Numba internal function, has it been importedr7   )r.   rS   r/   r0   r!   r!   r&   Ú-test_handling_forgotten_numba_internal_import–   s    
zCTestMiscErrorHandling.test_handling_forgotten_numba_internal_importc              
   C   sX   dd„ }d}t dd�tfD ]8}|  tj¡�}||ƒƒ  W 5 Q R X |  |t|jƒ¡ qd S )Nc                   S   s   dd„ t dƒD ƒ d S )Nc                 s   s   | ]
}|V  qd S r    r!   )Ú.0r#   r!   r!   r&   Ú	<genexpr>¦   s     zdTestMiscErrorHandling.test_handling_unsupported_generator_expression.<locals>.foo.<locals>.<genexpr>r;   )Úranger!   r!   r!   r&   rS   ¥   s    zQTestMiscErrorHandling.test_handling_unsupported_generator_expression.<locals>.fooz-The use of yield in a closure is unsupported.T)Zforceobj)r   r   r)   r   ZUnsupportedErrorr+   r,   r-   )r.   rS   r0   Údecr/   r!   r!   r&   Ú.test_handling_unsupported_generator_expression¤   s    zDTestMiscErrorHandling.test_handling_unsupported_generator_expressionc              	   C   sD   t dd„ ƒ}d}|  tj¡�}|ƒ  W 5 Q R X |  |t|jƒ¡ d S )Nc                   S   s   t S r    rK   r!   r!   r!   r&   rS   °   s    zCTestMiscErrorHandling.test_handling_undefined_variable.<locals>.fooz"NameError: name 'a' is not definedr7   )r.   rS   r0   r/   r!   r!   r&   Ú test_handling_undefined_variable¯   s    
z6TestMiscErrorHandling.test_handling_undefined_variableN)r2   r3   r4   r?   rE   rN   rP   rV   rX   r   r[   r`   ra   r!   r!   r!   r&   r9   A   s   
r9   c                   @   s†   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Ze ejd¡dd„ ƒZdd„ ZdS )ÚTestErrorMessagesc              	      s€   d‰dd„ ‰ t ˆ ƒ‡fdd„ƒ}t‡ fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  td  	¡ d	 |¡ |  ˆ|¡ d S )
NZspecific_reasonc                   S   s   d S r    r!   r!   r!   r!   r&   rS   Á   s    z2TestErrorMessages.test_specific_error.<locals>.fooc                      s   t  ˆ ¡‚d S r    )r   ÚNumbaValueErrorr!   )Úgiven_reasonr!   r&   Úol_fooÄ   s    z5TestErrorMessages.test_specific_error.<locals>.ol_fooc                      s
   ˆ ƒ  d S r    r!   r!   ©rS   r!   r&   Úcall_fooÈ   s    z7TestErrorMessages.test_specific_error.<locals>.call_fooÚspecific_errorr   )
r	   r   r)   r   r*   r,   r-   r+   Úerror_reasonsÚ
splitlines©r.   re   rg   r/   Úexcstrr!   )rS   rd   r&   Útest_specific_error½   s    
z%TestErrorMessages.test_specific_errorc              	      s`   dd„ ‰ t ˆ ƒdd„ ƒ}t‡ fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nc                   S   s   d S r    r!   r!   r!   r!   r&   rS   Õ   s    z2TestErrorMessages.test_no_match_error.<locals>.fooc                   S   s   d S r    r!   r!   r!   r!   r&   re   Ø   s    z5TestErrorMessages.test_no_match_error.<locals>.ol_fooc                      s
   ˆ ƒ  d S r    r!   r!   rf   r!   r&   rg   Ü   s    z7TestErrorMessages.test_no_match_error.<locals>.call_foozNo match)r	   r   r)   r   r*   r,   r-   r+   rk   r!   rf   r&   Útest_no_match_errorÓ   s    

z%TestErrorMessages.test_no_match_errorc              	   C   s~   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  td  ¡ d |¡ t	j
 ddd¡}d|› d	�}|  | |¡|¡ d
S )z¨ Checks that the reported source location for an overload is the
        overload implementation source, not the actual function source from the
        target library.c                   S   s   t j d¡ d S )NÚchars)r6   ZlinalgZsvdr!   r!   r!   r&   rS   ì   s    zDTestErrorMessages.test_error_function_source_is_correct.<locals>.foorh   r   Únumbar6   z	linalg.pyz'Overload in function 'svd_impl': File: ú:N)r   r)   r   r*   r,   r-   r+   ri   rj   ÚosÚpathÚjoinÚformat)r.   rS   r/   rl   Úexpected_filer0   r!   r!   r&   Ú%test_error_function_source_is_correctæ   s    

z7TestErrorMessages.test_error_function_source_is_correctc              	   C   sP   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ |  d|¡ d S )Nc                   S   s   dd S )Nr>   r   r!   r!   r!   r!   r&   rS   û   s    z<TestErrorMessages.test_concrete_template_source.<locals>.foozOverload of function 'add'ú	No match.©r   r)   r   r*   r,   r-   r+   ©r.   rS   r/   rl   r!   r!   r&   Útest_concrete_template_sourceù   s    

z/TestErrorMessages.test_concrete_template_sourcec              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nc                   S   s   t dƒS ©Nr   )Úlenr!   r!   r!   r&   rS     s    z<TestErrorMessages.test_abstract_template_source.<locals>.foozOverload of function 'len'ry   rz   r!   r!   r&   Útest_abstract_template_source	  s    

z/TestErrorMessages.test_abstract_template_sourcec              	   C   sD   t dd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nc                   S   s
   t  d ¡S r    )r6   Zangler!   r!   r!   r&   rS     s    z<TestErrorMessages.test_callable_template_source.<locals>.fooz6No implementation of function Function(<function anglery   rz   r!   r!   r&   Útest_callable_template_source  s    

ÿz/TestErrorMessages.test_callable_template_sourcec              	      sš   dd„ ‰ t ˆ ƒdd„ ƒ}t‡ fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ tj	 
dd	d
¡}d|› d�}|  | |¡|¡ |  d|¡ d S )Nc                 S   s   d S r    r!   r"   r!   r!   r&   Úbar$  s    zDTestErrorMessages.test_overloadfunction_template_source.<locals>.barc                 S   s   d S r    r!   r"   r!   r!   r&   Úol_bar'  s    zGTestErrorMessages.test_overloadfunction_template_source.<locals>.ol_barc                      s   ˆ dƒS r|   r!   r!   ©r€   r!   r&   rS   +  s    zDTestErrorMessages.test_overloadfunction_template_source.<locals>.fooz
<numerous>rp   Útestsztest_errorhandling.pyz"Overload of function 'bar': File: rq   rx   )r	   r   r)   r   r*   r,   r-   ZassertNotInrr   rs   rt   r+   ru   )r.   r�   rS   r/   rl   rv   Zexpected_olr!   r‚   r&   Ú%test_overloadfunction_template_source"  s    


ÿz7TestErrorMessages.test_overloadfunction_template_sourcec              	      s’   d‰ d‰t ‡ ‡fdd„ƒ‰t‡fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  td  	¡ d |¡ |  ˆ |¡ |  ˆ|¡ |  d	|¡ d S )
Nzx must be literalzarray.ndim must be 1c                    sF   t |tjƒst ˆ ¡‚|jdkr*t ˆ¡‚t ||¡}dd„ }||fS )Nr   c                 S   s   d S r    r!   )ÚcontextZbuilderÚ	signatureÚargsr!   r!   r&   ÚcodegenK  s    zSTestErrorMessages.test_intrinsic_template_source.<locals>.myintrin.<locals>.codegen)Ú
isinstancer   ZIntegerLiteralr   ZRequireLiteralValueÚndimrc   Zintp)Z	typingctxr#   ÚarrÚsigrˆ   )Úgiven_reason1Úgiven_reason2r!   r&   ÚmyintrinA  s    


zBTestErrorMessages.test_intrinsic_template_source.<locals>.myintrinc                     s   t  d¡} ˆ d| ƒ d S )N)r   r   r   )r6   Zzeros)r‹   )r�   r!   r&   Úcall_intrinO  s    
zETestErrorMessages.test_intrinsic_template_source.<locals>.call_intrinrh   r   zIntrinsic in function)
r
   r   r)   r   r*   r,   r-   r+   ri   rj   )r.   r�   r/   rl   r!   )r�   rŽ   r�   r&   Útest_intrinsic_template_source<  s    
z0TestErrorMessages.test_intrinsic_template_sourcec              	   C   sX   t tjdƒdd„ ƒ}tdd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  	d|¡ d S )NÚ
isnonsensec                 S   s   d S r    r!   ©r.   r!   r!   r&   Úol_unicode_isnonsense`  s    zTTestErrorMessages.test_overloadmethod_template_source.<locals>.ol_unicode_isnonsensec                   S   s   d  ¡  d S ©NÚabc©r’   r!   r!   r!   r&   rS   d  s    zBTestErrorMessages.test_overloadmethod_template_source.<locals>.fooú,Overload of function 'ol_unicode_isnonsense')
r   r   ÚUnicodeTyper   r)   r   r*   r,   r-   r+   ©r.   r”   rS   r/   rl   r!   r!   r&   Ú#test_overloadmethod_template_source]  s    



z5TestErrorMessages.test_overloadmethod_template_sourcec              	   C   sX   t tjdƒdd„ ƒ}tdd„ ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  	d|¡ d S )Nr’   c                 S   s   d S r    r!   r“   r!   r!   r&   r”   q  s    zWTestErrorMessages.test_overloadattribute_template_source.<locals>.ol_unicode_isnonsensec                   S   s
   dj  d S r•   r—   r!   r!   r!   r&   rS   u  s    zETestErrorMessages.test_overloadattribute_template_source.<locals>.foor˜   )
r   r   r™   r   r)   r   r*   r,   r-   r+   rš   r!   r!   r&   Ú&test_overloadattribute_template_sourcen  s    



z8TestErrorMessages.test_overloadattribute_template_sourcec              	      sT   ddl m‰  t‡ fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|jƒ}|  d|¡ d S )Nr   ©Úc_cosc                      s   ˆ dƒ d S ©Nr>   r!   r!   r�   r!   r&   rS   ‚  s    zMTestErrorMessages.test_external_function_pointer_template_source.<locals>.fooú.Type Restricted Function in function 'unknown')	Znumba.tests.ctypes_usecasesrž   r   r)   r   r*   r,   r-   r+   rz   r!   r�   r&   Ú.test_external_function_pointer_template_source  s    
z@TestErrorMessages.test_external_function_pointer_template_sourcezCFFI not supportedc              	      sb   ddl m} | ¡  |j‰ t‡ fdd„ƒ}|  tj¡�}|ƒ  W 5 Q R X t|j	ƒ}|  
d|¡ d S )Nr   )Úcffi_usecasesc                      s   ˆ dƒ d S rŸ   r!   r!   ©r(   r!   r&   rS   ’  s    zITestErrorMessages.test_cffi_function_pointer_template_source.<locals>.foor    )Znumba.testsr¢   ÚinitZcffi_cosr   r)   r   r*   r,   r-   r+   )r.   ÚmodrS   r/   rl   r!   r£   r&   Ú*test_cffi_function_pointer_template_sourceŒ  s    
z<TestErrorMessages.test_cffi_function_pointer_template_sourcec              	   C   sz   t jG dd„ dtjƒƒ}G dd„ dt jƒ}t  ||ddg¡ |  tj¡�}|ddd	� W 5 Q R X t	|j
ƒ}|  d
|¡ d S )Nc                   @   s   e Zd ZdS )z;TestErrorMessages.test_missing_source.<locals>.ParticleTypeN)r2   r3   r4   r!   r!   r!   r&   ÚParticleTypež  s   r§   c                   @   s   e Zd Zdd„ ZdS )z7TestErrorMessages.test_missing_source.<locals>.Particlec                 S   s   t j | |¡S r    )r   ÚStructRefProxyÚ__new__)ÚclsÚposÚmassr!   r!   r&   r©   £  s    z?TestErrorMessages.test_missing_source.<locals>.Particle.__new__N)r2   r3   r4   r©   r!   r!   r!   r&   ÚParticle¢  s   r­   r«   r¬   r   r   )r«   r¬   z#missing a required argument: 'mass')r   Úregisterr   Z	StructRefr¨   Zdefine_proxyr)   r   r*   r,   r-   r+   )r.   r§   r­   r/   rl   r!   r!   r&   Útest_missing_sourceœ  s    
z%TestErrorMessages.test_missing_sourceN)r2   r3   r4   rm   rn   r   rw   r{   r~   r   r„   r‘   r›   rœ   r¡   ÚunittestZ
skipUnlessÚcffi_supportZ	SUPPORTEDr¦   r¯   r!   r!   r!   r&   rb   »   s   
!
rb   c                   @   s   e Zd Zdd„ ZdS )Ú"TestDeveloperSpecificErrorMessagesc              
   C   s\   dd„ }t ddƒ�* |  tj¡�}tdƒ|ƒ W 5 Q R X W 5 Q R X t|jƒ}|  d|¡ d S )Nc                 S   s   |   d¡ d S )Néÿÿÿÿ)Úmaxr"   r!   r!   r&   rS   ´  s    zPTestDeveloperSpecificErrorMessages.test_bound_function_error_string.<locals>.fooZDEVELOPER_MODEr   zvoid(int64[:,:])ztoo many positional arguments)r   r)   r   r*   r   r,   r-   r+   rz   r!   r!   r&   Ú test_bound_function_error_string²  s     
zCTestDeveloperSpecificErrorMessages.test_bound_function_error_stringN)r2   r3   r4   rµ   r!   r!   r!   r&   r²   °  s   r²   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestCapturedErrorHandlingzjChecks that the way errors are captured changes depending on the env
    var "NUMBA_CAPTURED_ERRORS".
    c                    sŽ   dd„ ‰ t ˆ ƒdd„ ƒ}dtfdtjffD ]^\}}td|ƒ�F |  |¡�}tdƒ‡ fd	d
„ƒ}W 5 Q R X d}|  |t|j	ƒ¡ W 5 Q R X q*d S )Nc                 S   s   d S r    r!   r"   r!   r!   r&   r€   Æ  s    z=TestCapturedErrorHandling.test_error_in_overload.<locals>.barc                 S   s   | j  dd„ }|S )Nc                 S   s   d S r    r!   r"   r!   r!   r&   ÚimplÍ  s    zNTestCapturedErrorHandling.test_error_in_overload.<locals>.ol_bar.<locals>.impl)Zsome_invalid_attr)r#   r·   r!   r!   r&   r�   É  s    z@TestCapturedErrorHandling.test_error_in_overload.<locals>.ol_barÚ	new_styleZ	old_styleZCAPTURED_ERRORSzvoid(int64)c                    s   ˆ | ƒ d S r    r!   r"   r‚   r!   r&   rS   Õ  s    z=TestCapturedErrorHandling.test_error_in_overload.<locals>.fooz+object has no attribute 'some_invalid_attr')
r	   ÚAttributeErrorr   r*   r   r)   r   r+   r,   r-   )r.   r�   ÚstyleZ	err_classr/   rS   r0   r!   r‚   r&   Útest_error_in_overloadÄ  s    
ÿz0TestCapturedErrorHandling.test_error_in_overloadN)r2   r3   r4   Ú__doc__r»   r!   r!   r!   r&   r¶   ¿  s   r¶   Ú__main__);r¼   Únumpyr6   rr   rp   r   r   r   r   r   Z
numba.corer   Znumba.core.typing.cffi_utilsÚcoreÚtypingZ
cffi_utilsr±   Znumba.experimentalr   Znumba.extendingr	   r
   r   r   Znumba.core.compilerr   Znumba.core.untyped_passesr   r   r   Znumba.core.typed_passesr   r   r   r   Znumba.core.compiler_machineryr   Znumba.core.types.functionsr   ri   Znumba.tests.supportr   r   r   r   r°   rR   ÚDictÚemptyrW   ZTestCaser   r5   r9   rb   r²   r¶   r2   Úmainr!   r!   r!   r&   Ú<module>   s2   z v
