o
    i;^                     @   s  d dl Z d dlmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d d	lmZmZmZmZm Z m!Z!m"Z" d dl#Z#d dl$Z$d dl%Z%G d
d de&Z'dd Z(dd Z)dd Z*dd Z+dd Z,ee(Z-dd Z.dd Z/dd Z0dd Z1dd Z2d d! Z3d"d# Z4G d$d% d%eZ5G d&d' d'eeZ6G d(d) d)eeZ7G d*d+ d+ee%jZ8G d,d- d-ee%jZ9G d.d/ d/ee%jZ:G d0d1 d1ee%jZ;e<d2kre%=  dS dS )3    N)StringIO)njit	vectorizetypeof)utilstypestypingircompilercpucgutils)CompilerFlags)
cpu_target)MemoryLeakMixinTestCasetemp_directorycreate_temp_module)overloadmodelslower_builtinregister_modelmake_attribute_wrappertype_callabletypeof_implc                       s   e Zd Z fddZ  ZS )	Namespacec                    s    || v r| | S t t| |S N)superr   __getattr__)sk	__class__ k/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_array_exprs.pyr      s    zNamespace.__getattr__)__name__
__module____qualname__r   __classcell__r$   r$   r"   r%   r      s    r   c                 C      | | | S r   r$   axyr$   r$   r%   axy       r/   c                 C   r*   r   r$   r+   r$   r$   r%   ax2#   r0   r1   c                 C   s&   | |d d|  |  d  d|   S )N       @g      @      ?r$   AsBsCsr$   r$   r%   pos_root&   s   &r8   c                 C   s2   d|  }d| | }|d | }| |d  | S )Nr2   r3   r$   r5   r6   r7   Z_2AsZ_4AsCsZ
_Bs2_4AsCsr$   r$   r%   neg_root_common_subexpr)   s   r:   c                 C   s6   d|  }d| | }|d | d }| |d  | S )Nr2   y                r3   r$   r9   r$   r$   r%   neg_root_complex_subexpr/   s   r;   c                 C   s   t t| t |d dS )N      ?)npcosvaxysin)Za0Za1r$   r$   r%   
call_stuff7   s   rA   c                 C   s   |d d|  |  dk S )N      r   r$   r4   r$   r$   r%   are_roots_imaginary:   s   rD   c                 C   s   | | | S r   r$   r4   r$   r$   r%   div_add=   r0   rE   c                 C   s   | d S )N   r$   )r5   r$   r$   r%   cube@   s   rG   c                 C   s   t | | t |||S r   )r=   r>   add)r,   boutr$   r$   r%   explicit_outputC   s   rK   c                 C   s$   | | }|| |  }|| | }|S r   r$   )r,   rI   cdur$   r$   r%   variable_name_reuseG   s   rO   c                 C   sr   | j d }tj||ftjd}t|D ]#}t||D ]}t| | | |  d d  |||f< |||f< qq|S )Nr   dtyperB   r3   )shaper=   emptyfloat64rangesum)ZvectorsZ	n_vectorsresultijr$   r$   r%   distance_matrixO   s   
rZ   c                   @   s<   e Zd Zeddi dddfddZeddi dfddZdS )RewritesTesterNc                 C   s@   |st  }d|_|d u rtj}|d u rtj}| |||||||S NT)r   Znrtr   typing_contexttarget_context)clsargsreturn_typeflagslocalslibraryr]   r^   r$   r$   r%   mk_pipeline\   s   zRewritesTester.mk_pipelinec                 K   s*   |st  }d|_| j|||||fi |S r\   )r   Zno_rewritesre   )r_   r`   ra   rb   rc   rd   kwsr$   r$   r%   mk_no_rw_pipelinei   s   z RewritesTester.mk_no_rw_pipeline)r&   r'   r(   classmethodre   rg   r$   r$   r$   r%   r[   [   s    r[   c                   @   s   e Zd Zdd Zdd Zdd Zd%dd	Zefd
dZe	fddZ
dd Zdd Zd&ddZdd Zdd Zdd ZefddZdd Zdd  Zd!d" Zd#d$ ZdS )'TestArrayExpressionsc           	      C   s@   t |}||}|j}t |}||}|j}||||fS )zT
        Compile the given function both without and with rewrites enabled.
        )r[   rg   compile_extraentry_pointre   )	selffnarg_tyscontrol_pipelinecres_0control_cfunctest_pipelinecres_1
test_cfuncr$   r$   r%   _compile_functiont   s   



z&TestArrayExpressions._compile_functionc                 C   s6  t ddd}t ddd}t ddd}dd |||fD }| t|\}}}}t|}	|	t}
|
j}||||}||||}||||}t j	
|| t j	
|| |jjj}|jjj}|	jjj}| t|t| | t|t| | t|d jt|d j | t|d jt|d j dS )zv
        Using a simple array expression, verify that rewriting is taking
        place, and is fusing loops.
        r      
   rB   c                 S      g | ]}t |qS r$   r   .0argr$   r$   r%   
<listcomp>       z9TestArrayExpressions.test_simple_expr.<locals>.<listcomp>N)r=   linspaceru   r/   r[   rg   rj   r1   rk   testingassert_array_equalstatefunc_irblocksassertEquallenassertGreaterbody)rl   AXYrn   ro   Znb_axy_0rr   Znb_axy_1Zcontrol_pipeline2Zcres_2Znb_ctlexpectedactualcontrolir0ir1Zir2r$   r$   r%   test_simple_expr   s*   






 $z%TestArrayExpressions.test_simple_exprc                 c   s<    |D ]}t |tjrt |jtjr|jjdkr|V  qd S )NZ	arrayexpr)
isinstancer
   AssignvalueExprop)rl   blockinstrr$   r$   r%   _get_array_exprs   s   z%TestArrayExpressions._get_array_exprsNc           	      C   s~   |du rt  }t|tstd||\}}g }|D ]}t|tr*| ||\}}|| q|t|f}|| ||fS )zK
        Convert an array expression tree into a set of operators.
        Nz{0} not a tuple)setr   tuple
ValueErrorformat_array_expr_to_setappendrH   )	rl   exprrJ   Z	operationZoperandsZprocessed_operandsoperand_Zprocessed_exprr$   r$   r%   r      s   


z'TestArrayExpressions._array_expr_to_setc                 C   s   t jd}t jdd }t jd}dd |||fD }t|}||}|j}t|}	|	|}
|
j}||||}||||}||||}t j|| t j|| t	t
 S )Nrw   r<   c                 S   rx   r$   r   ry   r$   r$   r%   r|      r}   z<TestArrayExpressions._test_root_function.<locals>.<listcomp>)r=   randomr[   rg   rj   rk   re   r   assert_array_almost_equalr   rc   )rl   rm   r   BCrn   ro   control_cresnb_fn_0rr   	test_cresnb_fn_1Z	np_resultZnb_result_0Znb_result_1r$   r$   r%   _test_root_function   s    




z(TestArrayExpressions._test_root_functionc                 C   s   t jdt jd}t|f}t|}||}|j}t|}||}|j}	|d }
| 	|
|| | 	|
|	| t
t S )Nrw   rP   rF   )r=   arangerT   r   r[   rg   rj   rk   re   assertPreciseEqualr   rc   )rl   rm   r   rn   ro   r   r   rr   r   r   r   r$   r$   r%   _test_cube_function   s   





z(TestArrayExpressions._test_cube_functionc           	         sz   t jdt jd  d t fd }| ||\}}}} fdd}||}| ||| | ||| tt S )z
        Test function having a (a, b, out) signature where *out* is
        an output array the function writes into.
        rw   rP   rv   rF   c                    s   t  }|  | |S r   )r=   Z
zeros_like)rm   rJ   r   r   r$   r%   run_func   s   
zETestArrayExpressions._test_explicit_output_function.<locals>.run_func)r=   r   rT   r   ru   r   r   rc   )	rl   rm   rn   ro   rq   rr   rt   r   r   r$   r   r%   _test_explicit_output_function   s   


z3TestArrayExpressions._test_explicit_output_functionc                 C   s"   t t| |}| || dS )z`
        Assert the *block* has the expected number of array expressions
        in it.
        N)r   listr   r   )rl   r   Zexpected_countZrewrite_countr$   r$   r%   _assert_array_exprs   s   z(TestArrayExpressions._assert_array_exprsFc                 C   s`   |  t|t| |d j}|d j}| |d | |d |s.| t|t| dS dS )z
        Given two dictionaries of Numba IR blocks, check to make sure the
        control IR has no array expressions, while the test IR
        contains one and only one.
        r   rv   N)r   r   r   r   r   )rl   
control_irtest_irtrivialcontrol_block
test_blockr$   r$   r%   _assert_total_rewrite  s   

z*TestArrayExpressions._assert_total_rewritec                 C   sf   |  t|t| | D ]"\}}|j}|| j}|  t|t| | |d | |d qdS )z
        Given two dictionaries of Numba IR blocks, check to make sure
        the control IR and the test IR both have no array expressions.
        r   N)r   r   itemsr   r   )rl   r   r   r!   vr   r   r$   r$   r%   _assert_no_rewrite  s   
z'TestArrayExpressions._assert_no_rewritec                 C   s,   |   }| j|jjjj|jjjjdd dS )z
        Ensure even a non-nested expression is rewritten, as it can enable
        scalar optimizations such as rewriting `x ** 2`.
        T)r   N)r   r   ro   r   r   r   rr   rl   nsr$   r$   r%   test_trivial_expr$  s
   

z&TestArrayExpressions.test_trivial_exprc                 C   s(   |   }| |jjjj|jjjj dS )z
        Using the polynomial root function, ensure the full expression is
        being put in the same kernel with no remnants of intermediate
        array expressions.
        N)r   r   ro   r   r   r   rr   r   r$   r$   r%   test_complicated_expr.  s   
z*TestArrayExpressions.test_complicated_exprc           
         s     |}|jjjj}|jjjj} t|t|  t|d j	t|d j	  tt
 |d j	d t
 |d j	} t|d t
 fdd|D }t|dd |dd D ]\}}||}	|	rx d|	 qedS )zp
        Attempt to verify that rewriting will incorporate user common
        subexpressions properly.
        r   rv   c                 3   s"    | ]}  |jjd  V  qdS )rv   N)r   r   r   )rz   r   rl   r$   r%   	<genexpr>K  s    zBTestArrayExpressions.test_common_subexpressions.<locals>.<genexpr>Nz9Common subexpressions detected in array expressions ({0}))r   ro   r   r   r   rr   r   r   r   r   r   r   zipintersectionZfailr   )
rl   rm   r   r   r   Zarray_expr_instrsZ
array_setsZ
expr_set_0Z
expr_set_1Zintersectionsr$   r   r%   test_common_subexpressions8  s&   
  "
z/TestArrayExpressions.test_common_subexpressionsc                 C   s
   |  tS r   )r   r;   r   r$   r$   r%   test_complex_subexpressionS     
z/TestArrayExpressions.test_complex_subexpressionc                 C   s   t jd}t jd}dd ||fD }tjj}tj||j|jd}|	t
}|j}tj||j|jd}|	t
}	|	j}
t
||}|||}|
||}t j|| t j|| | |jjj|jjj dS )zn
        Verify that ufunc and DUFunc calls are being properly included in
        array expressions.
        rw   c                 S   rx   r$   r   ry   r$   r$   r%   r|   ]  r}   zDTestArrayExpressions.test_ufunc_and_dufunc_calls.<locals>.<listcomp>)r]   r^   N)r=   r   r?   Z_dispatcherZtargetdescrr[   rg   r]   r^   rj   rA   rk   re   r   r   r   r   r   r   )rl   r   r   rn   Z
vaxy_descrro   rp   Znb_call_stuff_0rr   rs   Znb_call_stuff_1r   r   r   r$   r$   r%   test_ufunc_and_dufunc_callsV  s4   




z0TestArrayExpressions.test_ufunc_and_dufunc_callsc                 C   *   |  t}| |jjjj|jjjj dS )zQ
        Verify that comparison operators are supported by the rewriter.
        N)r   rD   r   ro   r   r   r   rr   r   r$   r$   r%   test_cmp_opw     

z TestArrayExpressions.test_cmp_opc                 C   r   )zQ
        Check that ufunc calls with explicit outputs are not rewritten.
        N)r   rK   r   ro   r   r   r   rr   r   r$   r$   r%   test_explicit_output  r   z)TestArrayExpressions.test_explicit_outputr   )F)r&   r'   r(   ru   r   r   r   r8   r   rG   r   r   r   r   r   r   r   r:   r   r   r   r   r   r$   r$   r$   r%   ri   r   s$     



!ri   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 )TestRewriteIssuesc                    sn   ddl m} dd l}|dddd  |dd fdd}|d	}||\}}| || | || d S )
Nr   )jitT)Znopythonc                 S   s   | S r   r$   )arrr$   r$   r%   foo  s   z.TestRewriteIssues.test_issue_1184.<locals>.fooc                    s    | } | }||fS r   r$   )r   rL   rM   r   r$   r%   bar  s   z.TestRewriteIssues.test_issue_1184.<locals>.barrw   )numbar   numpyr   ZassertIs)rl   r   r=   r   r   Zout_cZout_dr$   r   r%   test_issue_1184  s   

z!TestRewriteIssues.test_issue_1184c                 C   sN   d}t jj|d d|df}t|}tt|}t j|| t	  d S )Nd   rF   )size)
r=   r   uniformZreshaperZ   r   r   r   gcZcollect)rl   nr-   r   r   r$   r$   r%   test_issue_1264  s   z!TestRewriteIssues.test_issue_1264c                 C   sX   ddl m} |dd }tjd}tjd}|||}|||}tj|| dS )z*Test array expression with duplicated termr   )r   c                 S   s   t |}|| |  S r   )r=   r@   r,   rI   r$   r$   r%   r     s   
z.TestRewriteIssues.test_issue_1372.<locals>.foorw   N)r   r   r=   r   r   py_funcr   assert_allclose)rl   r   r   r,   rI   expectgotr$   r$   r%   test_issue_1372  s   

z!TestRewriteIssues.test_issue_1372c                 C   sF   t dd }d}tjdtjd}|||}|||}| || dS )zP
        Typing of unary array expression (np.negate) can be incorrect.
        c                 S   s   ||  |   S r   r$   r   r$   r$   r%   r     s   z3TestRewriteIssues.test_unary_arrayexpr.<locals>.foog      ?rw   rP   N)r   r=   r   Zint32r   r   )rl   r   rI   r,   r   r   r$   r$   r%   test_unary_arrayexpr  s   

z&TestRewriteIssues.test_unary_arrayexprc                 C   sN   t dd }tg d}tg d}|||}|||}| || dS )zd
        Typing of bitwise boolean array expression can be incorrect
        (issue #1813).
        c                 S   s   | | @  S r   r$   r   r$   r$   r%   r     s   z5TestRewriteIssues.test_bitwise_arrayexpr.<locals>.foo)TTFF)FTFTN)r   r=   arrayr   r   )rl   r   r,   rI   r   r   r$   r$   r%   test_bitwise_arrayexpr  s   

z(TestRewriteIssues.test_bitwise_arrayexprc                 C   sX   t t}tddd}||||| t }|| | }| d| | d| dS )zo
        Type annotation of array expressions with disambiguated
        variable names (issue #1466).
        r   rv   rw   z
#   u.1 = z
#   u.2 = N)r   rO   r=   r~   r   Zinspect_typesgetvalueassertIn)rl   cfuncr,   bufresr$   r$   r%   test_annotations  s   
z"TestRewriteIssues.test_annotationsc                 C   s0   t dd }|d}|d}tj|| d S )Nc                 S   s,   t | }tdD ]
}|| }| }q	|S )NrB   )r=   ZonesrU   copy)r-   r   r   valr$   r$   r%   f  s
   

z;TestRewriteIssues.test_issue_5599_name_collision.<locals>.f   )r   r   r=   r   r   )rl   r   r   r   r$   r$   r%   test_issue_5599_name_collision  s
   

z0TestRewriteIssues.test_issue_5599_name_collisionN)
r&   r'   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 )TestSemanticsc                 C   sb   t }t|}tddtdg}tg d}t|}||||}||||}tj|| d S )N        r<   inf)r   r   r<   )rE   r   r=   rT   floatZ	ones_liker   r   )rl   Zpyfuncr   r,   rI   rL   r   r   r$   r$   r%   test_division_by_zero  s   
z#TestSemantics.test_division_by_zeroN)r&   r'   r(   r   r$   r$   r$   r%   r         r   c                   @   s    e Zd ZdZdd Zdd ZdS )TestOptionalsze Tests the arrival and correct lowering of Optional types at a arrayexpr
    derived ufunc, see #3972c                    s   t dd  t  fdd}tddf}|| }|j| }tj||  j}|d d }| t|t	j
 | t|jt	j d S )	Nc                 S      | | S r   r$   r-   r.   r$   r$   r%   arr_expr     z9TestOptionals.test_optional_scalar_type.<locals>.arr_exprc                       |dkrd }n|} | |S Nr   r$   r-   r.   zr   r$   r%   do_call     
z8TestOptionals.test_optional_scalar_type.<locals>.do_callr   g333333r   rv   )r   r=   r   r   r   r   
signatures
assertTruer   r   OptionaltypeFloatrl   r  r`   r   r   r    otyr$   r   r%   test_optional_scalar_type	  s   

z'TestOptionals.test_optional_scalar_typec                    s   t dd  t  fdd}tdtdf}|| }|j| }tj||  j}|d d }| t|t	j
 | t|jt	j | t|jjt	j d S )	Nc                 S   r   r   r$   r   r$   r$   r%   r   &  r   z8TestOptionals.test_optional_array_type.<locals>.arr_exprc                        |d dkr	d }n|} | |S r   r$   r   r   r$   r%   r  *     
z7TestOptionals.test_optional_array_type.<locals>.do_callr         @r   rv   )r   r=   r   r   r   r   r  r  r   r   r  r  ArrayrQ   r  r  r$   r   r%   test_optional_array_type$  s   

z&TestOptionals.test_optional_array_typeN)r&   r'   r(   __doc__r
  r  r$   r$   r$   r%   r     s    r   c                   @   s   e Zd Zdd Zdd ZdS )TestOptionalsExceptionsc                    s   |    tdd  t fdd}tddf}| t}||  W d    n1 s-w   Y  | dt|j  j	}|d d	 }| 
t|tj | 
t|jtj d S )
Nc                 S   r   r   r$   r   r$   r$   r%   r   H  r   zUTestOptionalsExceptions.test_optional_scalar_type_exception_on_none.<locals>.arr_exprc                    r   r   r$   r   r   r$   r%   r  L  r  zTTestOptionalsExceptions.test_optional_scalar_type_exception_on_none.<locals>.do_callr   r<   zexpected float64, got Noner   rv   )disable_leak_checkr   r=   r   assertRaises	TypeErrorr   str	exceptionr  r  r   r   r  r  r  )rl   r  r`   raisesr    r	  r$   r   r%   +test_optional_scalar_type_exception_on_noneD  s   

zCTestOptionalsExceptions.test_optional_scalar_type_exception_on_nonec                    s   |    tdd  t fdd}tdtddf}| t}||  W d    n1 s1w   Y  t|j}| d| | d	|  j	}|d
 d }| 
t|tj | 
t|jtj | 
t|jjtj d S )Nc                 S   r   r   r$   r   r$   r$   r%   r   f  r   zTTestOptionalsExceptions.test_optional_array_type_exception_on_none.<locals>.arr_exprc                    r  r   r$   r   r   r$   r%   r  j  r  zSTestOptionalsExceptions.test_optional_array_type_exception_on_none.<locals>.do_callr   r<   r  zexpected array(float64,zgot Noner   rv   )r  r   r=   r   r  r  r  r  r   r  r  r   r   r  r  r  rQ   r  )rl   r  r`   r  Zexcstrr    r	  r$   r   r%   *test_optional_array_type_exception_on_noneb  s"   


zBTestOptionalsExceptions.test_optional_array_type_exception_on_noneN)r&   r'   r(   r  r  r$   r$   r$   r%   r  A  s    r  c                   @   s*   e Zd ZdZedZdd Zdd ZdS )TestExternalTypeszJ Tests RewriteArrayExprs with external (user defined) types,
    see #5157z
        from numba.core import types

        class FooType(types.Type):
            def __init__(self):
                super(FooType, self).__init__(name='Foo')
        c                    s|   G dd dt }t G dd dtj}t dd t| fdd}t|tjdd	 }t	
| fd
d}| fS )Nc                   @   r   )z,TestExternalTypes.make_foo_type.<locals>.Fooc                 S   s
   || _ d S r   r   )rl   r   r$   r$   r%   __init__  r   z5TestExternalTypes.make_foo_type.<locals>.Foo.__init__Nr&   r'   r(   r  r$   r$   r$   r%   Foo  s    r  c                   @   r   )z1TestExternalTypes.make_foo_type.<locals>.FooModelc                 S   s"   dt jfg}tj| ||| d S )Nr   )r   intpr   StructModelr  )rl   ZdmmZfe_typemembersr$   r$   r%   r    s   z:TestExternalTypes.make_foo_type.<locals>.FooModel.__init__Nr  r$   r$   r$   r%   FooModel  r   r"  r   c                    s    fdd}|S )Nc                         S r   r$   r  FooTyper$   r%   typer  s   z@TestExternalTypes.make_foo_type.<locals>.type_foo.<locals>.typerr$   )contextr&  r$  r$   r%   type_foo  s   z1TestExternalTypes.make_foo_type.<locals>.type_fooc                 S   s*   |j }|\}t|| |}||_| S r   )ra   r   Zcreate_struct_proxyr   Z	_getvalue)r'  Zbuildersigr`   typr   r   r$   r$   r%   impl_foo  s
   z1TestExternalTypes.make_foo_type.<locals>.impl_fooc                    r#  r   r$   )r   rL   r$  r$   r%   
typeof_foo  s   z3TestExternalTypes.make_foo_type.<locals>.typeof_foo)objectr   r   r   r   r   r   r   r  r   register)rl   r%  r  r"  r(  r+  r,  r$   r$  r%   make_foo_type  s   

zTestExternalTypes.make_foo_typec                    s  t | ju}| |j\ ttjfdd}ttjfdd}ttjfdd}t fdd}t fdd	}t fd
d}t	j
|ddt	ddg t	j
|ddt	ddg t	j
|dt	dg W d    d S 1 s}w   Y  d S )Nc                    s*   t |  rt |tjrdd }|S d S d S )Nc                 S   s   t | j|d gS r   r=   r   r   lhsrhsr$   r$   r%   imp  s   KTestExternalTypes.test_external_type.<locals>.overload_foo_add.<locals>.imp)r   r   r  r2  r3  r4  r$  r$   r%   overload_foo_add  s   z>TestExternalTypes.test_external_type.<locals>.overload_foo_addc                    s(   t |  rt | rdd }|S d S d S )Nc                 S   s   t | j|jgS r   r0  r1  r$   r$   r%   r4    s   r5  r   r6  r$  r$   r%   r7    s   c                    s   t |  rdd }|S d S )Nc                 S   s   t | j gS r   r0  r-   r$   r$   r%   r4    s   zKTestExternalTypes.test_external_type.<locals>.overload_foo_neg.<locals>.impr8  )r-   r4  r$  r$   r%   overload_foo_neg  s   
z>TestExternalTypes.test_external_type.<locals>.overload_foo_negc                    s    | t |g S r   )r=   r   r   r  r$   r%   arr_expr_sum1  s   z;TestExternalTypes.test_external_type.<locals>.arr_expr_sum1c                    s    |  | S r   r$   r   r;  r$   r%   arr_expr_sum2  s   z;TestExternalTypes.test_external_type.<locals>.arr_expr_sum2c                    s
    |  S r   r$   r9  r;  r$   r%   arr_expr_neg  s   
z:TestExternalTypes.test_external_type.<locals>.arr_expr_negr   rv   rB   rF   rC   )r   source_linesr/  r%  r   operatorrH   negr   r=   r   r   r   )rl   Ztest_moduler7  r:  r<  r=  r>  r$   )r  r%  r%   test_external_type  s$   		"z$TestExternalTypes.test_external_typeN)	r&   r'   r(   r  textwrapdedentr@  r/  rC  r$   r$   r$   r%   r    s
    
"r  __main__)>r   ior   r   r=   r   r   r   r   Z
numba.corer   r   r	   r
   r   r   r   Znumba.core.compilerr   r   Znumba.core.registryr   Znumba.tests.supportr   r   r   r   Znumba.extendingr   r   r   r   r   r   r   rA  rD  Zunittestdictr   r/   r1   r8   r:   r;   r?   rA   rD   rE   rG   rK   rO   rZ   r[   ri   r   r   r   r  r  r&   mainr$   r$   r$   r%   <module>   sN    $$	  l<Ca