§
    2@ÄjXb  ã                   óv  — 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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e'¦  «        Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z- ee)¦  «        Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5 G d„ de¦  «        Z6 G d„ dee¦  «        Z7 G d„ dee¦  «        Z8 G d„ dee&j        ¦  «        Z9 G d „ d!ee&j        ¦  «        Z: G d"„ d#ee&j        ¦  «        Z; G d$„ d%ee&j        ¦  «        Z<e=d&k    r e&j>        ¦   «          dS dS )'é    N)ÚStringIO)ÚnjitÚ	vectorize©Útypeof)ÚutilsÚtypesÚtypingÚirÚcompilerÚcpuÚcgutils)ÚCompilerÚFlags)Ú
cpu_target)ÚMemoryLeakMixinÚTestCaseÚtemp_directoryÚcreate_temp_moduleÚnumpy_sincos_low_precision)ÚoverloadÚmodelsÚlower_builtinÚregister_modelÚmake_attribute_wrapperÚtype_callableÚtypeof_implc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ú	Namespacec                 ól   •— || v r| |         n't          t          | ¦  «                             |¦  «        S ©N)Úsuperr   Ú__getattr__)ÚsÚkÚ	__class__s     €úMC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_array_exprs.pyr#   zNamespace.__getattr__   s1   ø€ Ø˜A�v�vˆq�Œtˆt¥5­°AÑ#6Ô#6×#BÒ#BÀ1Ñ#EÔ#EÐEó    )Ú__name__Ú
__module__Ú__qualname__r#   Ú__classcell__)r&   s   @r'   r   r      sA   ø€ € € € € ðFð Fð Fð Fð Fð Fð Fð Fð Fr(   r   c                 ó   — | |z  |z   S r!   © ©ÚaÚxÚys      r'   Úaxyr3       ó   € Øˆq‰5�1‰9Ðr(   c                 ó   — | |z  |z   S r!   r.   r/   s      r'   Úax2r6   #   r4   r(   c                 ó8   — | |dz  d| z  |z  z
  dz  z   d| z  z  S )Nç       @g      @ç      à?r.   ©ÚAsÚBsÚCss      r'   Úpos_rootr>   &   s.   € ØˆC�R˜2‘X " r¡'¨B¡,Ñ/°CÑ7Ñ8¸RÀ"¹WÑEÐEr(   c                 óD   — d| z  }d|z  |z  }|dz  |z
  }| |dz  z
  |z  S )Nr8   r9   r.   ©r;   r<   r=   Ú_2AsÚ_4AsCsÚ
_Bs2_4AsCss         r'   Úneg_root_common_subexprrD   )   s=   € Ø�‰7€DØ�$‰Y˜‰^€FØ˜‘(˜VÑ#€JØˆC�: Ñ$Ñ%¨Ñ-Ð-r(   c                 óJ   — d| z  }d|z  |z  }|dz  |z
  dz   }| |dz  z
  |z  S )Nr8   y                r9   r.   r@   s         r'   Úneg_root_complex_subexprrF   /   sB   € Ø�‰7€DØ�$‰Y˜‰^€FØ˜‘(˜VÑ# rÑ)€JØˆC�: Ñ$Ñ%¨Ñ-Ð-r(   c                 ór   — t          j        t          | t          j        |¦  «        dz
  d¦  «        ¦  «        S )Nç      ð?)ÚnpÚcosÚvaxyÚsin)Úa0Úa1s     r'   Ú
call_stuffrO   7   s*   € ÝŒ6•$�r�2œ6 "™:œ:¨™?¨BÑ/Ô/Ñ0Ô0Ð0r(   c                 ó&   — |dz  d| z  |z  z
  dk     S )Né   é   r   r.   r:   s      r'   Úare_roots_imaginaryrS   :   s   € Ø�!‰G�a˜"‘f˜r‘kÑ! QÒ&Ð&r(   c                 ó   — | |z  |z   S r!   r.   r:   s      r'   Údiv_addrU   =   s   € Ø�‰7�R‰<Ðr(   c                 ó   — | dz  S )Né   r.   )r;   s    r'   ÚcuberX   @   s   € Ø�‰7€Nr(   c                 óX   — t          j        | |¦  «         t          j        |||¦  «        S r!   )rI   rJ   Úadd)r0   ÚbÚouts      r'   Úexplicit_outputr]   C   s%   € Ý„Fˆ1ˆc�N„N€NÝŒ6�#�q˜#ÑÔÐr(   c                 ó0   — | |z   }|| |z  z
  }||z  |z   }|S r!   r.   )r0   r[   ÚcÚdÚus        r'   Úvariable_name_reuserb   G   s*   € Ø	ˆA‰€AØ	ˆA�‰E‰	€AØ	ˆA‰�‰	€AØ€Hr(   c                 ó  — | j         d         }t          j        ||ft          j        ¬¦  «        }t	          |¦  «        D ]J}t	          ||¦  «        D ]7}t          j        | |         | |         z
  dz  ¦  «        dz  x|||f<   |||f<   Œ8ŒK|S )Nr   ©ÚdtyperQ   r9   )ÚshaperI   ÚemptyÚfloat64ÚrangeÚsum)ÚvectorsÚ	n_vectorsÚresultÚiÚjs        r'   Údistance_matrixrp   O   s¬   € Ø”˜aÔ €IÝŒX�y )Ð,µB´JÐ?Ñ?Ô?€Få�9ÑÔð 7ð 7ˆÝ�q˜)Ñ$Ô$ð 	7ð 	7ˆAÝ(*¬Ø˜”˜g aœjÑ(¨QÑ.ñ)0ô )0Ø36ñ)7ð 7ˆF�1�Q�3‰K˜&  1 ™+˜+ð	7ð €Mr(   c                   óF   — e Zd Ze	 	 dd„¦   «         Ze	 	 dd„¦   «         ZdS )ÚRewritesTesterNc           	      ó’   — |€i }|st          ¦   «         }d|_        |€t          j        }|€t          j        } | |||||||¦  «        S ©NT)r   Únrtr   Útyping_contextÚtarget_context)ÚclsÚargsÚreturn_typeÚflagsÚlocalsÚlibraryrv   rw   s           r'   Úmk_pipelinezRewritesTester.mk_pipeline\   se   € ð ˆ>ØˆFØð 	Ý‘G”GˆEØˆŒ	ØÐ!Ý'Ô6ˆNØÐ!Ý'Ô6ˆNØˆs�> >°7¸DÀ+Ø˜&ñ"ô "ð 	"r(   c                 ó\   — |€i }|st          ¦   «         }d|_         | j        |||||fi |¤ŽS rt   )r   Úno_rewritesr~   )rx   ry   rz   r{   r|   r}   Úkwss          r'   Úmk_no_rw_pipelinez RewritesTester.mk_no_rw_pipelinek   sI   € ð ˆ>ØˆFØð 	Ý‘G”GˆEØ ˆÔØˆsŒ˜t [°%¸ÀÐPÐPÈCÐPÐPÐPr(   )NNNNNN)NNNN)r)   r*   r+   Úclassmethodr~   r‚   r.   r(   r'   rr   rr   [   sd   € € € € € ØØDHØFJð"ð "ð "ñ „[ð"ð ØJNØ"&ðQð Qð Qñ „[ðQð Qð Qr(   rr   c                   ó„   — e Zd Zd„ Zd„ Zd„ Zdd„Zefd„Ze	fd„Z
d„ Zd	„ Zdd„Zd„ Zd„ Zd„ Zefd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestArrayExpressionsc                 óæ   — t                                |¦  «        }|                     |¦  «        }|j        }t                                |¦  «        }|                     |¦  «        }|j        }||||fS )zT
        Compile the given function both without and with rewrites enabled.
        )rr   r‚   Úcompile_extraÚentry_pointr~   )	ÚselfÚfnÚarg_tysÚcontrol_pipelineÚcres_0Úcontrol_cfuncÚtest_pipelineÚcres_1Ú
test_cfuncs	            r'   Ú_compile_functionz&TestArrayExpressions._compile_functionx   sp   € õ *×;Ò;¸GÑDÔDÐØ!×/Ò/°Ñ3Ô3ˆØÔ*ˆå&×2Ò2°7Ñ;Ô;ˆØ×,Ò,¨RÑ0Ô0ˆØÔ'ˆ
à °¸zÐIÐIr(   c                 ój  — t          j        ddd¦  «        }t          j        ddd¦  «        }t          j        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   é   é
   rQ   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   r   ©Ú.0Úargs     r'   ú
<listcomp>z9TestArrayExpressions.test_simple_expr.<locals>.<listcomp>Ž   ó   € Ð4Ð4Ð4 3•6˜#‘;”;Ð4Ð4Ð4r(   N)rI   Úlinspacer’   r3   rr   r‚   r‡   r6   rˆ   ÚtestingÚassert_array_equalÚstateÚfunc_irÚblocksÚassertEqualÚlenÚassertGreaterÚbody)r‰   ÚAÚXÚYr‹   rŒ   Únb_axy_0r�   Únb_axy_1Úcontrol_pipeline2Úcres_2Únb_ctlÚexpectedÚactualÚcontrolÚir0Úir1Úir2s                     r'   Útest_simple_exprz%TestArrayExpressions.test_simple_expr†   sé  € õ
 ŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆØ4Ð4¨1¨a°¨)Ð4Ñ4Ô4ˆð ×"Ò"¥3¨Ñ0Ô0ñ 	<Ð˜( M°8õ +×<Ò<¸WÑEÔEÐØ"×0Ò0µÑ5Ô5ˆØÔ#ˆà�8˜A˜q !Ñ$Ô$ˆØ�˜!˜Q Ñ"Ô"ˆØ�&˜˜A˜q‘/”/ˆÝ
Œ
×%Ò% h°Ñ7Ô7Ð7Ý
Œ
×%Ò% g¨vÑ6Ô6Ð6àÔ$Ô,Ô3ˆØÔ!Ô)Ô0ˆØÔ%Ô-Ô4ˆØ×Ò�˜S™œ¥3 s¡8¤8Ñ,Ô,Ð,Ø×Ò�˜S™œ¥3 s¡8¤8Ñ,Ô,Ð,à×Ò�3˜s 1œvœ{Ñ+Ô+­S°°Q´´Ñ-=Ô-=Ñ>Ô>Ð>Ø×Ò�˜S œVœ[Ñ)Ô)­3¨s°1¬v¬{Ñ+;Ô+;Ñ<Ô<Ð<Ð<Ð<r(   c              #   ó®   K  — |D ]O}t          |t          j        ¦  «        r3t          |j        t          j        ¦  «        r|j        j        dk    r|V — ŒPd S )NÚ	arrayexpr)Ú
isinstancer   ÚAssignÚvalueÚExprÚop)r‰   ÚblockÚinstrs      r'   Ú_get_array_exprsz%TestArrayExpressions._get_array_exprs¦   sb   è è € Øð 	$ð 	$ˆEÝ˜%¥¤Ñ+Ô+ð $Ý˜eœk­2¬7Ñ3Ô3ð $Ø”{”~¨Ò4Ð4Ø#˜˜˜øð		$ð 	$r(   Nc                 ó‚  — |€t          ¦   «         }t          |t          ¦  «        s"t          d                     |¦  «        ¦  «        ‚|\  }}g }|D ]E}t          |t          ¦  «        r|                      ||¦  «        \  }}|                     |¦  «         ŒF|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ÚappendrZ   )	r‰   Úexprr\   Ú	operationÚoperandsÚprocessed_operandsÚoperandÚ_Úprocessed_exprs	            r'   rÄ   z'TestArrayExpressions._array_expr_to_set­   sÓ   € ð ˆ;Ý‘%”%ˆCÝ˜$¥Ñ&Ô&ð 	=ÝÐ.×5Ò5°dÑ;Ô;Ñ<Ô<Ð<Ø"Ñˆ	�8ØÐØð 	/ð 	/ˆGÝ˜'¥5Ñ)Ô)ð CØ!×4Ò4°W¸cÑBÔB‘
�˜Ø×%Ò% gÑ.Ô.Ð.Ð.Ø"¥EÐ*<Ñ$=Ô$=Ð=ˆØ�Š�ÑÔÐØ˜sÐ"Ð"r(   c                 ó¼  — t           j                             d¦  «        }t           j                             d¦  «        dz   }t           j                             d¦  «        }d„ |||fD ¦   «         }t                               |¦  «        }|                     |¦  «        }|j        }t                               |¦  «        }	|	                     |¦  «        }
|
j        } ||||¦  «        } ||||¦  «        } ||||¦  «        }t           j                             ||¦  «         t           j                             ||¦  «         t          t          ¦   «         ¦  «        S )Nr•   rH   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   r   r—   s     r'   rš   z<TestArrayExpressions._test_root_function.<locals>.<listcomp>Å   r›   r(   )rI   Úrandomrr   r‚   r‡   rˆ   r~   r�   Úassert_array_almost_equalr   r|   )r‰   rŠ   r¦   ÚBÚCr‹   rŒ   Úcontrol_cresÚnb_fn_0r�   Ú	test_cresÚnb_fn_1Ú	np_resultÚnb_result_0Únb_result_1s                  r'   Ú_test_root_functionz(TestArrayExpressions._test_root_function¿   s7  € ÝŒI×Ò˜RÑ Ô ˆÝŒI×Ò˜RÑ Ô  2Ñ%ˆõ ŒI×Ò˜RÑ Ô ˆØ4Ð4¨1¨a°¨)Ð4Ñ4Ô4ˆå)×;Ò;¸GÑDÔDÐØ'×5Ò5°bÑ9Ô9ˆØÔ*ˆå&×2Ò2°7Ñ;Ô;ˆØ!×/Ò/°Ñ3Ô3ˆ	ØÔ'ˆà�B�q˜!˜Q‘K”Kˆ	Ø�g˜a  AÑ&Ô&ˆØ�g˜a  AÑ&Ô&ˆÝ
Œ
×,Ò,¨Y¸ÑDÔDÐDÝ
Œ
×,Ò,¨[¸+ÑFÔFÐFå�™œÑ"Ô"Ð"r(   c                 óö  — t          j        dt           j        ¬¦  «        }t          |¦  «        f}t                               |¦  «        }|                     |¦  «        }|j        }t                               |¦  «        }|                     |¦  «        }|j        }	|dz  }
|  	                    |
 ||¦  «        ¦  «         |  	                    |
 |	|¦  «        ¦  «         t          t          ¦   «         ¦  «        S )Nr•   rd   rW   )rI   Úarangerh   r   rr   r‚   r‡   rˆ   r~   ÚassertPreciseEqualr   r|   )r‰   rŠ   r¦   r‹   rŒ   rÓ   rÔ   r�   rÕ   rÖ   r®   s              r'   Ú_test_cube_functionz(TestArrayExpressions._test_cube_function×   sÙ   € ÝŒI�b¥¤
Ð+Ñ+Ô+ˆÝ˜!‘9”9�,ˆå)×;Ò;¸GÑDÔDÐØ'×5Ò5°bÑ9Ô9ˆØÔ*ˆå&×2Ò2°7Ñ;Ô;ˆØ!×/Ò/°Ñ3Ô3ˆ	ØÔ'ˆà˜‘6ˆØ×Ò ¨'¨'°!©*¬*Ñ5Ô5Ð5Ø×Ò ¨'¨'°!©*¬*Ñ5Ô5Ð5å�™œÑ"Ô"Ð"r(   c                 ó¢  ‡
‡— t          j        dt           j        ¬¦  «        Š
‰
dz   Št          ‰
¦  «        fdz  }|                      ||¦  «        \  }}}}ˆ
ˆfd„}t
          rdnd} ||¦  «        }	|                      |	 ||¦  «        d|¬¦  «         |                      |	 ||¦  «        d|¬¦  «         t          t          ¦   «         ¦  «        S )	z
        Test function having a (a, b, out) signature where *out* is
        an output array the function writes into.
        r•   rd   r”   rW   c                 óJ   •— t          j        ‰¦  «        } | ‰‰|¦  «         |S r!   )rI   Ú
zeros_like)rŠ   r\   r¦   rÑ   s     €€r'   Úrun_funczETestArrayExpressions._test_explicit_output_function.<locals>.run_funcõ   s(   ø€ Ý”- Ñ"Ô"ˆCØˆBˆq�!�S‰MŒMˆMØˆJr(   rR   Údouble)ÚprecÚulps)	rI   rÜ   rh   r   r’   r   rÝ   r   r|   )r‰   rŠ   r‹   rŒ   rŽ   r�   r‘   râ   rå   r®   r¦   rÑ   s             @@r'   Ú_test_explicit_output_functionz3TestArrayExpressions._test_explicit_output_functioné   s
  øø€ õ
 ŒI�b¥¤
Ð+Ñ+Ô+ˆØ�‰EˆÝ˜!‘9”9�, Ñ"ˆð ×"Ò" 2 wÑ/Ô/ñ 	CÐ˜-¨¸
ð	ð 	ð 	ð 	ð 	ð 	õ
 /Ð5ˆqˆq°AˆØ�8˜B‘<”<ˆØ×Ò ¨(¨(°=Ñ*AÔ*AØ%-°Dð 	 ñ 	:ô 	:ð 	:à×Ò ¨(¨(°:Ñ*>Ô*>Ø%-°Dð 	 ñ 	:ô 	:ð 	:õ �™œÑ"Ô"Ð"r(   c                 ó�   — t          t          |                      |¦  «        ¦  «        ¦  «        }|                      ||¦  «         dS )z`
        Assert the *block* has the expected number of array expressions
        in it.
        N)r£   Úlistr¾   r¢   )r‰   r¼   Úexpected_countÚrewrite_counts       r'   Ú_assert_array_exprsz(TestArrayExpressions._assert_array_exprs  sC   € õ
 �D ×!6Ò!6°uÑ!=Ô!=Ñ>Ô>Ñ?Ô?ˆØ×Ò˜¨Ñ7Ô7Ð7Ð7Ð7r(   Fc                 óZ  — |                       t          |¦  «        t          |¦  «        ¦  «         |d         j        }|d         j        }|                      |d¦  «         |                      |d¦  «         |s2|                      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   r”   N)r¢   r£   r¥   rë   r¤   )r‰   Ú
control_irÚtest_irÚtrivialÚcontrol_blockÚ
test_blocks         r'   Ú_assert_total_rewritez*TestArrayExpressions._assert_total_rewrite  sª   € ð 	×Ò�˜Z™œ­#¨g©,¬,Ñ7Ô7Ð7Ø" 1œÔ*ˆØ˜Q”Z”_ˆ
Ø× Ò  °Ñ2Ô2Ð2Ø× Ò  ¨QÑ/Ô/Ð/Øð 	Dð ×Ò�s =Ñ1Ô1µ3°z±?´?ÑCÔCÐCÐCÐCð		Dð 	Dr(   c                 óz  — |                       t          |¦  «        t          |¦  «        ¦  «         |                     ¦   «         D ]u\  }}|j        }||         j        }|                       t          |¦  «        t          |¦  «        ¦  «         |                      |d¦  «         |                      |d¦  «         Œvd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ë   )r‰   rí   rî   r%   Úvrð   rñ   s          r'   Ú_assert_no_rewritez'TestArrayExpressions._assert_no_rewrite  s´   € ð
 	×Ò�˜Z™œ­#¨g©,¬,Ñ7Ô7Ð7à×$Ò$Ñ&Ô&ð 	4ð 	4‰DˆAˆqØœFˆMØ  œœˆJØ×Ò�S Ñ/Ô/µ°Z±´ÑAÔAÐAØ×$Ò$ ]°AÑ6Ô6Ð6Ø×$Ò$ Z°Ñ3Ô3Ð3Ð3ð	4ð 	4r(   c                 ó®   — |                       ¦   «         }|                      |j        j        j        j        |j        j        j        j        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ò   rŒ   rŸ   r    r¡   r�   ©r‰   Únss     r'   Útest_trivial_exprz&TestArrayExpressions.test_trivial_expr+  s\   € ð
 ×%Ò%Ñ'Ô'ˆØ×"Ò" 2Ô#6Ô#<Ô#DÔ#KØ#%Ô#3Ô#9Ô#AÔ#HØ+/ð 	#ñ 	1ô 	1ð 	1ð 	1ð 	1r(   c                 óª   — |                       ¦   «         }|                      |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ò   rŒ   rŸ   r    r¡   r�   rø   s     r'   Útest_complicated_exprz*TestArrayExpressions.test_complicated_expr5  sY   € ð ×%Ò%Ñ'Ô'ˆØ×"Ò" 2Ô#6Ô#<Ô#DÔ#KØ#%Ô#3Ô#9Ô#AÔ#Hñ	Jô 	Jð 	Jð 	Jð 	Jr(   c           
      ó²  ‡ — ‰                       |¦  «        }|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 ¦   «         ¦  «        }t          |dd…         |dd…         ¦  «        D ]D\  }}|                     |¦  «        }	|	r(‰                      d                     |	¦  «        ¦  «         ŒEdS )zp
        Attempt to verify that rewriting will incorporate user common
        subexpressions properly.
        r   r”   c              3   ób   •K  — | ])}‰                      |j        j        ¦  «        d          V — Œ*dS )r”   N)rÄ   r¹   rÆ   )r˜   r½   r‰   s     €r'   ú	<genexpr>zBTestArrayExpressions.test_common_subexpressions.<locals>.<genexpr>R  sO   øè è € ð :ð :Ø#ð ×1Ò1°%´+Ô2BÑCÔCÀAÔFð :ð :ð :ð :ð :ð :r(   Néÿÿÿÿz9Common subexpressions detected in array expressions ({0}))rÚ   rŒ   rŸ   r    r¡   r�   r¢   r£   r¤   r¥   rè   r¾   ÚzipÚintersectionÚfailrÃ   )
r‰   rŠ   rù   r±   r²   Úarray_expr_instrsÚ
array_setsÚ
expr_set_0Ú
expr_set_1Úintersectionss
   `         r'   Útest_common_subexpressionsz/TestArrayExpressions.test_common_subexpressions?  sÆ  ø€ ð
 ×%Ò% bÑ)Ô)ˆØÔ!Ô'Ô/Ô6ˆØÔÔ$Ô,Ô3ˆØ×Ò�˜S™œ¥3 s¡8¤8Ñ,Ô,Ð,Ø×Ò�3˜s 1œvœ{Ñ+Ô+­S°°Q´´Ñ-=Ô-=Ñ>Ô>Ð>Ø×Ò��T $×"7Ò"7¸¸A¼¼Ñ"DÔ"DÑEÔEÑFÔFÈÑJÔJÐJõ
 ! ×!6Ò!6°s¸1´v´{Ñ!CÔ!CÑDÔDÐØ×Ò�3Ð0Ñ1Ô1°1Ñ5Ô5Ð5õ ð :ð :ð :ð :Ø'8ð:ñ :ô :ñ :ô :ˆ
å&)¨*°S°b°S¬/¸:ÀaÀbÀb¼>Ñ&JÔ&Jð 	Eð 	EÑ"ˆJ˜
Ø&×3Ò3°JÑ?Ô?ˆMØð EØ—	’	ð .ß.4ªf°]Ñ.CÔ.CñEô Eð Eøð	Eð 	Er(   c                 ó6   — |                       t          ¦  «        S r!   )r	  rF   )r‰   s    r'   Útest_complex_subexpressionz/TestArrayExpressions.test_complex_subexpressionZ  s   € Ø×.Ò.Õ/GÑHÔHÐHr(   c                 ó  — t           j                             d¦  «        }t           j                             d¦  «        }d„ ||fD ¦   «         }t          j        j        }t
                               ||j        |j        ¬¦  «        }| 	                    t          ¦  «        }|j        }t
                               ||j        |j        ¬¦  «        }| 	                    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.
        r•   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r.   r   r—   s     r'   rš   zDTestArrayExpressions.test_ufunc_and_dufunc_calls.<locals>.<listcomp>d  s   € Ð1Ð1Ð1 3•6˜#‘;”;Ð1Ð1Ð1r(   )rv   rw   N)rI   rÏ   rK   Ú_dispatcherÚtargetdescrrr   r‚   rv   rw   r‡   rO   rˆ   r~   r�   rÐ   rò   rŸ   r    r¡   )r‰   r¦   rÑ   r‹   Ú
vaxy_descrrŒ   r�   Únb_call_stuff_0r�   r�   Únb_call_stuff_1r®   r°   r¯   s                 r'   Útest_ufunc_and_dufunc_callsz0TestArrayExpressions.test_ufunc_and_dufunc_calls]  s}  € õ
 ŒI×Ò˜RÑ Ô ˆÝŒI×Ò˜RÑ Ô ˆØ1Ð1¨1¨a¨&Ð1Ñ1Ô1ˆåÔ%Ô1ˆ
Ý)×;Ò;ØØ%Ô4Ø%Ô4ð <ñ 6ô 6Ðð "×/Ò/µ
Ñ;Ô;ˆØ Ô,ˆå&×2Ò2ØØ%Ô4Ø%Ô4ð 3ñ 6ô 6ˆð ×,Ò,­ZÑ8Ô8ˆØ Ô,ˆå˜a Ñ#Ô#ˆØ!�/ ! QÑ'Ô'ˆØ �  AÑ&Ô&ˆÝ
Œ
×,Ò,¨X°wÑ?Ô?Ð?Ý
Œ
×,Ò,¨X°vÑ>Ô>Ð>à×"Ò"Ð#3Ô#9Ô#AÔ#HØ#0Ô#6Ô#>Ô#Eñ	Gô 	Gð 	Gð 	Gð 	Gr(   c                 ó¶   — |                       t          ¦  «        }|                      |j        j        j        j        |j        j        j        j        ¦  «         dS )zQ
        Verify that comparison operators are supported by the rewriter.
        N)rÚ   rS   rò   rŒ   rŸ   r    r¡   r�   rø   s     r'   Útest_cmp_opz TestArrayExpressions.test_cmp_op~  s\   € ð ×%Ò%Õ&9Ñ:Ô:ˆØ×"Ò" 2Ô#6Ô#<Ô#DÔ#KØ#%Ô#3Ô#9Ô#AÔ#Hñ	Jô 	Jð 	Jð 	Jð 	Jr(   c                 ó¶   — |                       t          ¦  «        }|                      |j        j        j        j        |j        j        j        j        ¦  «         dS )zQ
        Check that ufunc calls with explicit outputs are not rewritten.
        N)ræ   r]   rö   rŒ   rŸ   r    r¡   r�   rø   s     r'   Útest_explicit_outputz)TestArrayExpressions.test_explicit_output†  s[   € ð ×0Ò0µÑAÔAˆØ×Ò Ô 3Ô 9Ô AÔ HØ "Ô 0Ô 6Ô >Ô Eñ	Gô 	Gð 	Gð 	Gð 	Gr(   r!   )F)r)   r*   r+   r’   r´   r¾   rÄ   r>   rÚ   rX   rÞ   ræ   rë   rò   rö   rú   rü   rD   r	  r  r  r  r  r.   r(   r'   r…   r…   v   sZ  € € € € € ðJð Jð Jð=ð =ð =ð@$ð $ð $ð#ð #ð #ð #ð$ &.ð #ð #ð #ð #ð0 &*ð #ð #ð #ð #ð$#ð #ð #ð48ð 8ð 8ðDð Dð Dð Dð$4ð 4ð 4ð1ð 1ð 1ðJð Jð Jð -Dð Eð Eð Eð Eð6Ið Ið IðGð Gð GðBJð Jð JðGð Gð Gð Gð Gr(   r…   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestRewriteIssuesc                 ó  ‡— ddl m} dd l} |d¬¦  «        d„ ¦   «         Š |d¬¦  «        ˆfd„¦   «         } |j        d¦  «        } ||¦  «        \  }}|                      ||¦  «         |                      ||¦  «         d S )Nr   )ÚjitT)Únopythonc                 ó   — | S r!   r.   )Úarrs    r'   Úfooz.TestRewriteIssues.test_issue_1184.<locals>.foo•  s   € àˆJr(   c                 ó8   •—  ‰| ¦  «        } ‰| ¦  «        }||fS r!   r.   )r  r_   r`   r  s      €r'   Úbarz.TestRewriteIssues.test_issue_1184.<locals>.bar™  s&   ø€ à��C‘”ˆAØ��C‘”ˆAØ�a�4ˆKr(   r•   )Únumbar  ÚnumpyrÜ   ÚassertIs)r‰   r  rI   r!  r  Úout_cÚout_dr  s          @r'   Útest_issue_1184z!TestRewriteIssues.test_issue_1184‘  sË   ø€ ØÐÐÐÐÐØÐÐÐà	ˆ�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 
ˆ�dÐ	Ñ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	ð
 ˆbŒi˜‰mŒmˆØ�s˜3‘x”x‰ˆˆuØ�Š�e˜UÑ#Ô#Ð#Ø�Š�e˜SÑ!Ô!Ð!Ð!Ð!r(   c                 ó8  — d}t           j                             |dz  ¬¦  «                             |df¦  «        }t	          |¦  «        } t          t          ¦  «        |¦  «        }t           j                             ||¦  «         t          j	        ¦   «          d S )Néd   rW   )Úsize)
rI   rÏ   ÚuniformÚreshaperp   r   r�   rÐ   ÚgcÚcollect)r‰   Únr1   r®   r¯   s        r'   Útest_issue_1264z!TestRewriteIssues.test_issue_1264¤  s€   € ØˆÝŒI×Ò 1 Q¡3ÐÑ'Ô'×/Ò/°°1°Ñ6Ô6ˆÝ" 1Ñ%Ô%ˆØ&••oÑ&Ô& qÑ)Ô)ˆÝ
Œ
×,Ò,¨X°vÑ>Ô>Ð>å
Œ
‰Œˆˆˆr(   c                 ó(  — ddl m} |d„ ¦   «         }t          j                             d¦  «        }t          j                             d¦  «        }|                     ||¦  «        } |||¦  «        }t          j                             ||¦  «         dS )z*Test array expression with duplicated termr   )r   c                 ó:   — t          j        |¦  «        }||z   | z   S r!   )rI   rL   ©r0   r[   s     r'   r  z.TestRewriteIssues.test_issue_1372.<locals>.foo±  s   € å”�q‘	”	ˆAØ�q‘5˜1‘9Ðr(   r•   N)r"  r   rI   rÏ   r+  Úpy_funcr�   Úassert_allclose)r‰   r   r  r0   r[   ÚexpectÚgots          r'   Útest_issue_1372z!TestRewriteIssues.test_issue_1372­  s™   € àÐÐÐÐÐà	ð	ð 	ñ 
Œð	õ ŒI×Ò˜bÑ!Ô!ˆÝŒI×Ò˜bÑ!Ô!ˆØ—’˜Q Ñ"Ô"ˆØˆc�!�Q‰iŒiˆÝ
Œ
×"Ò" 3¨Ñ/Ô/Ð/Ð/Ð/r(   c                 óÚ   — t           d„ ¦   «         }d}t          j        dt          j        ¬¦  «        }|                     ||¦  «        } |||¦  «        }|                      ||¦  «         dS )zP
        Typing of unary array expression (np.negate) can be incorrect.
        c                 ó   — || z
  |  z   S r!   r.   r3  s     r'   r  z3TestRewriteIssues.test_unary_arrayexpr.<locals>.fooÀ  s   € à�q‘5˜A˜2‘:Ðr(   g      ø?r•   rd   N)r   rI   rÜ   Úint32r4  rÝ   )r‰   r  r[   r0   r6  r7  s         r'   Útest_unary_arrayexprz&TestRewriteIssues.test_unary_arrayexpr¼  sx   € õ 
ð	ð 	ñ 
Œð	ð ˆÝŒI�b¥¤Ð)Ñ)Ô)ˆà—’˜Q Ñ"Ô"ˆØˆc�!�Q‰iŒiˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r(   c                 óî   — t           d„ ¦   «         }t          j        g d¢¦  «        }t          j        g d¢¦  «        }|                     ||¦  «        } |||¦  «        }|                      ||¦  «         dS )zd
        Typing of bitwise boolean array expression can be incorrect
        (issue #1813).
        c                 ó   — | | z   S r!   r.   r3  s     r'   r  z5TestRewriteIssues.test_bitwise_arrayexpr.<locals>.fooÐ  s   € à˜1˜"‘X�;Ðr(   )TTFF)FTFTN)r   rI   Úarrayr4  rÝ   )r‰   r  r0   r[   r6  r7  s         r'   Útest_bitwise_arrayexprz(TestRewriteIssues.test_bitwise_arrayexprË  s‰   € õ
 
ð	ð 	ñ 
Œð	õ ŒHÐ/Ð/Ð/Ñ0Ô0ˆÝŒHÐ/Ð/Ð/Ñ0Ô0ˆà—’˜Q Ñ"Ô"ˆØˆc�!�Q‰iŒiˆØ×Ò  VÑ,Ô,Ð,Ð,Ð,r(   c                 ó<  — t          t          ¦  «        }t          j        ddd¦  «        } |||||¦  «         t	          ¦   «         }|                     |¦  «         |                     ¦   «         }|                      d|¦  «         |                      d|¦  «         dS )zo
        Type annotation of array expressions with disambiguated
        variable names (issue #1466).
        r   r”   r•   z
#   u.1 = z
#   u.2 = N)r   rb   rI   rœ   r   Úinspect_typesÚgetvalueÚassertIn)r‰   Úcfuncr0   ÚbufÚress        r'   Útest_annotationsz"TestRewriteIssues.test_annotationsÛ  s“   € õ
 Õ(Ñ)Ô)ˆåŒK˜˜1˜bÑ!Ô!ˆØˆˆa��A�qÑÔÐå‰jŒjˆØ×Ò˜CÑ Ô Ð Ø�lŠl‰nŒnˆØ�Š�l CÑ(Ô(Ð(Ø�Š�l CÑ(Ô(Ð(Ð(Ð(r(   c                 ó¦   — t           d„ ¦   «         } |d¦  «        }|                     d¦  «        }t          j                             ||¦  «         d S )Nc                 ó„   — t          j        | ¦  «        }t          d¦  «        D ]}||z  }|                     ¦   «         }Œ|S )NrQ   )rI   Úonesri   Úcopy)r1   r  rË   Úvals       r'   Úfz;TestRewriteIssues.test_issue_5599_name_collision.<locals>.fí  sA   € å”'˜!‘*”*ˆCå˜1‘X”Xð !ð !�Ø˜S‘y�Ø—h’h‘j”j��ØˆJr(   é   )r   r4  rI   r�   rž   )r‰   rN  r7  r6  s       r'   Útest_issue_5599_name_collisionz0TestRewriteIssues.test_issue_5599_name_collisionë  sW   € å	ð	ð 	ñ 
Œð	ð ˆa�‰dŒdˆØ—’˜1‘”ˆÝ
Œ
×%Ò% c¨6Ñ2Ô2Ð2Ð2Ð2r(   N)
r)   r*   r+   r'  r0  r8  r<  r@  rH  rP  r.   r(   r'   r  r  �  s}   € € € € € ð"ð "ð "ð&ð ð ð0ð 0ð 0ð-ð -ð -ð-ð -ð -ð )ð )ð )ð 3ð 3ð 3ð 3ð 3r(   r  c                   ó   — e Zd Zd„ ZdS )ÚTestSemanticsc                 óB  — t           }t          |¦  «        }t          j        ddt	          d¦  «        g¦  «        }t          j        g d¢¦  «        }t          j        |¦  «        } ||||¦  «        } ||||¦  «        }t          j                             ||¦  «         d S )Nç        rH   Úinf)rT  rT  rH   )rU   r   rI   rh   ÚfloatÚ	ones_liker�   rž   )r‰   ÚpyfuncrE  r0   r[   r_   r6  r7  s           r'   Útest_division_by_zeroz#TestSemantics.test_division_by_zeroý  s�   € õ ˆÝ�V‘”ˆåŒJ˜˜S¥%¨¡,¤,Ð/Ñ0Ô0ˆÝŒJ���Ñ'Ô'ˆÝŒL˜‰OŒOˆà�˜˜1˜a‘”ˆØˆe�A�q˜!‰nŒnˆÝ
Œ
×%Ò% f¨cÑ2Ô2Ð2Ð2Ð2r(   N)r)   r*   r+   rY  r.   r(   r'   rR  rR  û  s#   € € € € € ð3ð 3ð 3ð 3ð 3r(   rR  c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚTestOptionalsze Tests the arrival and correct lowering of Optional types at a arrayexpr
    derived ufunc, see #3972c                 ó¾  ‡— t           d„ ¦   «         Št           ˆfd„¦   «         }t          j        d¦  «        df} ||Ž } |j        |Ž }t          j                             ||¦  «         ‰j        }|d         d         }|                      t          |t          j
        ¦  «        ¦  «         |                      t          |j        t          j        ¦  «        ¦  «         d S )Nc                 ó   — | |z   S r!   r.   ©r1   r2   s     r'   Úarr_exprz9TestOptionals.test_optional_scalar_type.<locals>.arr_expr  ó   € à�q‘5ˆLr(   c                 ó2   •— |dk    rd }n|} ‰| |¦  «        S ©Nr   r.   ©r1   r2   Úzr_  s      €r'   Údo_callz8TestOptionals.test_optional_scalar_type.<locals>.do_call  ó(   ø€ à�1ŠuˆuØ��à�Ø�8˜A˜q‘>”>Ð!r(   rO  g333333ó¿r   r”   )r   rI   rÜ   r4  r�   r5  Ú
signaturesÚ
assertTruer·   r	   ÚOptionalÚtypeÚFloat©r‰   re  ry   rG  r®   r$   Úotyr_  s          @r'   Útest_optional_scalar_typez'TestOptionals.test_optional_scalar_type  sã   ø€ å	ð	ð 	ñ 
Œð	õ 
ð	"ð 	"ð 	"ð 	"ñ 
Œð	"õ ”	˜!‘”˜dÐ#ˆð ˆg�tˆnˆØ"�7”? DÐ)ˆÝ
Œ
×"Ò" 3¨Ñ1Ô1Ð1ð ÔˆØ�Œd�1ŒgˆØ�Š�
 3­¬Ñ7Ô7Ñ8Ô8Ð8Ø�Š�
 3¤8­U¬[Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:r(   c                 óP  ‡— t           d„ ¦   «         Št           ˆfd„¦   «         }t          j        d¦  «        t          j        d¦  «        f} ||Ž } |j        |Ž }t          j                             ||¦  «         ‰j        }|d         d         }|                      t          |t          j
        ¦  «        ¦  «         |                      t          |j        t          j        ¦  «        ¦  «         |                      t          |j        j        t          j        ¦  «        ¦  «         d S )Nc                 ó   — | |z   S r!   r.   r^  s     r'   r_  z8TestOptionals.test_optional_array_type.<locals>.arr_expr-  r`  r(   c                 ó>   •— |d         dk    rd }n|} ‰| |¦  «        S rb  r.   rc  s      €r'   re  z7TestOptionals.test_optional_array_type.<locals>.do_call1  ó,   ø€ à�Œt�aŠxˆxØ��à�Ø�8˜A˜q‘>”>Ð!r(   rO  ç      @r   r”   )r   rI   rÜ   r4  r�   r5  rg  rh  r·   r	   ri  rj  ÚArrayre   rk  rl  s          @r'   Útest_optional_array_typez&TestOptionals.test_optional_array_type+  s  ø€ å	ð	ð 	ñ 
Œð	õ 
ð	"ð 	"ð 	"ð 	"ñ 
Œð	"õ ”	˜!‘”�bœi¨™mœmÐ,ˆð ˆg�tˆnˆØ"�7”? DÐ)ˆÝ
Œ
×"Ò" 3¨Ñ1Ô1Ð1ð ÔˆØ�Œd�1ŒgˆØ�Š�
 3­¬Ñ7Ô7Ñ8Ô8Ð8Ø�Š�
 3¤8­U¬[Ñ9Ô9Ñ:Ô:Ð:Ø�Š�
 3¤8¤>µ5´;Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@r(   N)r)   r*   r+   Ú__doc__rn  ru  r.   r(   r'   r[  r[    sA   € € € € € ð ð  ð;ð ;ð ;ð6Að Að Að Að Ar(   r[  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestOptionalsExceptionsc                 óF  ‡— |                       ¦   «          t          d„ ¦   «         Št          ˆfd„¦   «         }t          j        d¦  «        df}|                      t
          ¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         ‰j	        }|d         d         }|  
                    t          |t          j        ¦  «        ¦  «         |  
                    t          |j        t          j        ¦  «        ¦  «         d S )Nc                 ó   — | |z   S r!   r.   r^  s     r'   r_  zUTestOptionalsExceptions.test_optional_scalar_type_exception_on_none.<locals>.arr_exprO  r`  r(   c                 ó2   •— |dk    rd }n|} ‰| |¦  «        S rb  r.   rc  s      €r'   re  zTTestOptionalsExceptions.test_optional_scalar_type_exception_on_none.<locals>.do_callS  rf  r(   rO  rH   zexpected float64, got Noner   r”   )Údisable_leak_checkr   rI   rÜ   ÚassertRaisesÚ	TypeErrorrD  ÚstrÚ	exceptionrg  rh  r·   r	   ri  rj  rk  )r‰   re  ry   Úraisesr$   rm  r_  s         @r'   Ú+test_optional_scalar_type_exception_on_nonezCTestOptionalsExceptions.test_optional_scalar_type_exception_on_noneK  sW  ø€ à×ÒÑ!Ô!Ð!å	ð	ð 	ñ 
Œð	õ 
ð	"ð 	"ð 	"ð 	"ñ 
Œð	"õ ”	˜!‘”˜cÐ"ˆð ×Ò�yÑ)Ô)ð 	¨VØˆG�TˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	�ŠÐ2µC¸Ô8HÑ4IÔ4IÑJÔJÐJð ÔˆØ�Œd�1ŒgˆØ�Š�
 3­¬Ñ7Ô7Ñ8Ô8Ð8Ø�Š�
 3¤8­U¬[Ñ9Ô9Ñ:Ô:Ð:Ð:Ð:s   Á(A:Á:A>ÂA>c                 ó
  ‡— |                       ¦   «          t          d„ ¦   «         Št          ˆfd„¦   «         }t          j        d¦  «        t          j        dd¦  «        f}|                      t
          ¦  «        5 } ||Ž  d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        }|                      d|¦  «         |                      d|¦  «         ‰j	        }|d         d	         }|  
                    t          |t          j        ¦  «        ¦  «         |  
                    t          |j        t          j        ¦  «        ¦  «         |  
                    t          |j        j        t          j        ¦  «        ¦  «         d S )
Nc                 ó   — | |z   S r!   r.   r^  s     r'   r_  zTTestOptionalsExceptions.test_optional_array_type_exception_on_none.<locals>.arr_exprm  r`  r(   c                 ó>   •— |d         dk    rd }n|} ‰| |¦  «        S rb  r.   rc  s      €r'   re  zSTestOptionalsExceptions.test_optional_array_type_exception_on_none.<locals>.do_callq  rr  r(   rO  rH   rs  zexpected array(float64,zgot Noner   r”   )r|  r   rI   rÜ   r}  r~  r  r€  rD  rg  rh  r·   r	   ri  rj  rt  re   rk  )r‰   re  ry   r�  Úexcstrr$   rm  r_  s          @r'   Ú*test_optional_array_type_exception_on_nonezBTestOptionalsExceptions.test_optional_array_type_exception_on_nonei  sž  ø€ à×ÒÑ!Ô!Ð!å	ð	ð 	ñ 
Œð	õ 
ð	"ð 	"ð 	"ð 	"ñ 
Œð	"õ ”	˜!‘”�bœi¨¨BÑ/Ô/Ð0ˆð ×Ò�yÑ)Ô)ð 	¨VØˆG�TˆNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �VÔ%Ñ&Ô&ˆØ�ŠÐ/°Ñ8Ô8Ð8Ø�Š�j &Ñ)Ô)Ð)ð ÔˆØ�Œd�1ŒgˆØ�Š�
 3­¬Ñ7Ô7Ñ8Ô8Ð8Ø�Š�
 3¤8­U¬[Ñ9Ô9Ñ:Ô:Ð:Ø�Š�
 3¤8¤>µ5´;Ñ?Ô?Ñ@Ô@Ð@Ð@Ð@s   Á;BÂBÂBN)r)   r*   r+   r‚  r‡  r.   r(   r'   rx  rx  H  s7   € € € € € ð;ð ;ð ;ð<Að Að Að Að Ar(   rx  c                   ó>   — e Zd ZdZ ej        d¦  «        Zd„ Z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                 óf  ‡—  G d„ dt           ¦  «        }t          ‰¦  «         G d„ dt          j        ¦  «        ¦   «         }t	          ‰dd¦  «         t          |¦  «        ˆfd„¦   «         }t          |t          j        ¦  «        d„ ¦   «         }t          j
        |¦  «        ˆfd„¦   «         }|‰fS )	Nc                   ó   — e Zd Zd„ ZdS )ú,TestExternalTypes.make_foo_type.<locals>.Fooc                 ó   — || _         d S r!   )r¹   )r‰   r¹   s     r'   Ú__init__z5TestExternalTypes.make_foo_type.<locals>.Foo.__init__™  s   € Ø"�”
�
�
r(   N©r)   r*   r+   rŽ  r.   r(   r'   ÚFoorŒ  ˜  s#   € € € € € ð#ð #ð #ð #ð #r(   r�  c                   ó   — e Zd Zd„ ZdS )ú1TestExternalTypes.make_foo_type.<locals>.FooModelc                 óh   — dt           j        fg}t          j                             | |||¦  «         d S )Nr¹   )r	   Úintpr   ÚStructModelrŽ  )r‰   ÚdmmÚfe_typeÚmemberss       r'   rŽ  z:TestExternalTypes.make_foo_type.<locals>.FooModel.__init__ž  s4   € Ø#¥U¤ZÐ0Ð1�ÝÔ"×+Ò+¨D°#°wÀÑHÔHÐHÐHÐHr(   Nr�  r.   r(   r'   ÚFooModelr’  œ  s(   € € € € € ðIð Ið Ið Ið Ir(   r™  r¹   c                 ó   •— ˆfd„}|S )Nc                 ó   •—  ‰¦   «         S r!   r.   )r¹   ÚFooTypes    €r'   Útyperz@TestExternalTypes.make_foo_type.<locals>.type_foo.<locals>.typer¦  s   ø€ Ø�w‘y”yÐ r(   r.   )Úcontextr�  rœ  s     €r'   Útype_fooz1TestExternalTypes.make_foo_type.<locals>.type_foo¤  s#   ø€ ð!ð !ð !ð !ð !ð ˆLr(   c                 óŠ   — |j         }|\  } t          j        |¦  «        | |¦  «        }||_        |                     ¦   «         S r!   )rz   r   Úcreate_struct_proxyr¹   Ú	_getvalue)rž  ÚbuilderÚsigry   Útypr¹   r  s          r'   Úimpl_fooz1TestExternalTypes.make_foo_type.<locals>.impl_foo«  sA   € à”/ˆCØ‰GˆUØ2•'Ô-¨cÑ2Ô2°7¸GÑDÔDˆCØˆCŒIØ—=’=‘?”?Ð"r(   c                 ó   •—  ‰¦   «         S r!   r.   )rM  r_   rœ  s     €r'   Ú
typeof_fooz3TestExternalTypes.make_foo_type.<locals>.typeof_foo³  s   ø€ à�7‘9”9Ðr(   )Úobjectr   r   r•  r   r   r   r	   r”  r   Úregister)r‰   rœ  r�  r™  rŸ  r¦  r¨  s    `     r'   Úmake_foo_typezTestExternalTypes.make_foo_type—  s  ø€ ð	#ð 	#ð 	#ð 	#ð 	#•&ñ 	#ô 	#ð 	#õ 
˜Ñ	 Ô	 ð	Ið 	Ið 	Ið 	Ið 	I•vÔ)ñ 	Iô 	Iñ 
!Ô	 ð	Iõ
 	˜w¨°Ñ9Ô9Ð9å	�sÑ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	õ 
�s�EœJÑ	'Ô	'ð	#ð 	#ñ 
(Ô	'ð	#õ 
Ô	˜cÑ	"Ô	"ð	ð 	ð 	ð 	ñ 
#Ô	"ð	ð �Gˆ|Ðr(   c                 óR  ‡‡— t          | j        ¦  «        5 }|                      |j        ¦  «        \  ŠŠt	          t
          j        ¦  «        ˆfd„¦   «         }t	          t
          j        ¦  «        ˆfd„¦   «         }t	          t
          j        ¦  «        ˆfd„¦   «         }t          ˆfd„¦   «         }t          ˆfd„¦   «         }t          ˆfd„¦   «         }t          j
                              |dd¦  «        t          j        ddg¦  «        ¦  «         t          j
                              |d	d
¦  «        t          j        d	d
g¦  «        ¦  «         t          j
                              |d¦  «        t          j        dg¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ój   •— t          | ‰¦  «        rt          |t          j        ¦  «        rd„ }|S d S d S )Nc                 óD   — t          j        | j        |d         g¦  «        S rb  ©rI   r?  r¹   ©ÚlhsÚrhss     r'   ÚimpzKTestExternalTypes.test_external_type.<locals>.overload_foo_add.<locals>.impÂ  s   € Ý!œx¨¬°C¸´FÐ(;Ñ<Ô<Ð<r(   )r·   r	   rt  ©r±  r²  r³  rœ  s      €r'   Úoverload_foo_addz>TestExternalTypes.test_external_type.<locals>.overload_foo_add¿  sR   ø€ å˜c 7Ñ+Ô+ð µ
¸3ÅÄÑ0LÔ0Lð ð=ð =ð =ð �Jð	ð ð ð r(   c                 óV   •— t          | ‰¦  «        rt          |‰¦  «        rd„ }|S d S d S )Nc                 óB   — t          j        | j        |j        g¦  «        S r!   r¯  r°  s     r'   r³  zKTestExternalTypes.test_external_type.<locals>.overload_foo_add.<locals>.impÌ  s   € Ý!œx¨¬°C´IÐ(>Ñ?Ô?Ð?r(   ©r·   r´  s      €r'   rµ  z>TestExternalTypes.test_external_type.<locals>.overload_foo_addÉ  sS   ø€ å˜c 7Ñ+Ô+ð µ
¸3ÀÑ0HÔ0Hð ð@ð @ð @ð �Jð	ð ð ð r(   c                 ó2   •— t          | ‰¦  «        rd„ }|S d S )Nc                 ó8   — t          j        | j         g¦  «        S r!   r¯  )r1   s    r'   r³  zKTestExternalTypes.test_external_type.<locals>.overload_foo_neg.<locals>.impÖ  s   € Ý!œx¨!¬'¨¨
Ñ3Ô3Ð3r(   r¸  )r1   r³  rœ  s     €r'   Úoverload_foo_negz>TestExternalTypes.test_external_type.<locals>.overload_foo_negÓ  s5   ø€ å˜a Ñ)Ô)ð ð4ð 4ð 4ð �Jð	ð r(   c                 óF   •—  ‰| ¦  «        t          j        |g¦  «        z   S r!   )rI   r?  ©r1   r2   r�  s     €r'   Úarr_expr_sum1z;TestExternalTypes.test_external_type.<locals>.arr_expr_sum1Û  s    ø€ à�s˜1‘v”v¥¤¨!¨¡¤Ñ-Ð-r(   c                 ó2   •—  ‰| ¦  «         ‰|¦  «        z   S r!   r.   r½  s     €r'   Úarr_expr_sum2z;TestExternalTypes.test_external_type.<locals>.arr_expr_sum2ß  s   ø€ à�s˜1‘v”v   A¡¤‘Ð&r(   c                 ó   •—  ‰| ¦  «         S r!   r.   )r1   r�  s    €r'   Úarr_expr_negz:TestExternalTypes.test_external_type.<locals>.arr_expr_negã  s   ø€ à˜˜A™œ�w�r(   r   r”   rQ   rW   rR   éüÿÿÿ)r   Úsource_linesr«  rœ  r   ÚoperatorrZ   Únegr   rI   r�   rž   r?  )	r‰   Útest_modulerµ  r»  r¾  rÀ  rÂ  r�  rœ  s	          @@r'   Útest_external_typez$TestExternalTypes.test_external_type¹  s3  øø€ Ý Ô 1Ñ2Ô2ð /	K°kØ×-Ò-¨kÔ.AÑBÔB‰LˆC�õ •h”lÑ#Ô#ðð ð ð ñ $Ô#ðõ •h”lÑ#Ô#ðð ð ð ñ $Ô#ðõ •h”lÑ#Ô#ðð ð ð ñ $Ô#ðõ ð.ð .ð .ð .ñ ŒTð.õ ð'ð 'ð 'ð 'ñ ŒTð'õ ðð ð ð ñ ŒTðõ ŒJ×)Ò)¨-¨-¸¸1Ñ*=Ô*=½r¼xÈÈAÈÑ?OÔ?OÑPÔPÐPÝŒJ×)Ò)¨-¨-¸¸1Ñ*=Ô*=½r¼xÈÈAÈÑ?OÔ?OÑPÔPÐPÝŒJ×)Ò)¨,¨,°q©/¬/½2¼8ÀRÀD¹>¼>ÑJÔJÐJð_/	Kð /	Kð /	Kñ /	Kô /	Kð /	Kð /	Kð /	Kð /	Kð /	Kð /	Kð /	Køøøð /	Kð /	Kð /	Kð /	Kð /	Kð /	Ks   —E8FÆF Æ#F N)	r)   r*   r+   rv  ÚtextwrapÚdedentrÄ  r«  rÈ  r.   r(   r'   r‰  r‰  ‹  s\   € € € € € ðð ð #�8”?ð $ñ ô €Lð ð  ð  ðD0Kð 0Kð 0Kð 0Kð 0Kr(   r‰  Ú__main__)?r-  Úior   r#  rI   r"  r   r   r   Ú
numba.corer   r	   r
   r   r   r   r   Únumba.core.compilerr   r   Únumba.core.registryr   Únumba.tests.supportr   r   r   r   r   Únumba.extendingr   r   r   r   r   r   r   rÅ  rÉ  ÚunittestÚdictr   r3   r6   r>   rD   rF   rK   rO   rS   rU   rX   r]   rb   rp   rr   r…   r  rR  r[  rx  r‰  r)   Úmainr.   r(   r'   ú<module>rÕ     s*  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð à Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø *Ð *Ð *Ð *Ð *Ð *ðQð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qð Qðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€Ø €€€à €€€ðFð Fð Fð Fð F�ñ Fô Fð Fðð ð ðð ð ðFð Fð Fð.ð .ð .ð.ð .ð .ð €y��~„~€ð1ð 1ð 1ð'ð 'ð 'ðð ð ðð ð ðð ð ðð ð ð	ð 	ð 	ðQð Qð Qð Qð Q�Xñ Qô Qð Qð6VGð VGð VGð VGð VG˜?¨Hñ VGô VGð VGðri3ð i3ð i3ð i3ð i3˜¨ñ i3ô i3ð i3ðX3ð 3ð 3ð 3ð 3�O XÔ%6ñ 3ô 3ð 3ð"9Að 9Að 9Að 9Að 9A�O XÔ%6ñ 9Aô 9Að 9Aðx@Að @Að @Að @Að @A˜o¨xÔ/@ñ @Aô @Að @AðF^Kð ^Kð ^Kð ^Kð ^K˜¨Ô):ñ ^Kô ^Kð ^KðB ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr(   