Ë
    üÇ:j©A  ã                   ó’  — d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ  G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d«      Z G d„ d«      Z G d„ de«      Z G d„ dej$                  «      Z G d„ de«      Zedk(  r ej@                  «        yy)é    N)Úassert_array_equal)ÚGUFuncBuilder)Ú	vectorizeÚguvectorize)ÚPyUFunc_One)ÚDUFunc)ÚtagÚTestCase)Úconfigc                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestUfuncBuildingc                 ó  ‡ ‡— ddl m} t        |«      }|j                  d«      }‰ j                  |j                  «       |j                  d«      }‰ j                  |j                  «       |j                  «       Šˆ ˆfd„}t        j                  dd¬«      } ||«       |d d d	…   } ||«       |j                  d
«      } ||«       ‰ j                  ‰j                  d«       ‰ j                  d‰j                  «       y )Nr   ©Úaddúint32(int32, int32)zint64(int64, int64)c                 óŽ   •—  ‰| | «      }‰j                  | | z   |«       ‰j                  |j                  | j                  «       y ©N©ÚassertPreciseEqualÚassertEqualÚdtype©ÚaÚbÚselfÚufuncs     €€ú|/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyÚcheckz1TestUfuncBuilding.test_basic_ufunc.<locals>.check   ó:   ø€ Ù�a˜“ˆAØ×#Ñ# A¨¡E¨1Ô-Ø×Ñ˜QŸW™W a§g¡gÕ.ó    é   Úint32©r   é   ©r$   é   r   zAn addition)Ú+numba.tests.npyufunc.ufuncbuilding_usecasesr   ÚUFuncBuilderÚassertFalseÚ
objectmodeÚbuild_ufuncÚnpÚarangeÚreshaper   Ú__name__ÚassertInÚ__doc__©r   r   ÚufbÚcresr   r   r   s   `     @r   Útest_basic_ufuncz"TestUfuncBuilding.test_basic_ufunc   sÍ   ù€ ÝCÜ˜3ÓˆØ�w‰wÐ,Ó-ˆØ×Ñ˜Ÿ™Ô)Ø�w‰wÐ,Ó-ˆØ×Ñ˜Ÿ™Ô)Ø—‘Ó!ˆõ	/ô
 �I‰I�b Ô(ˆÙˆaŒà‰c�ˆc‰FˆÙˆaŒØ�I‰I�fÓˆÙˆaŒð 	×Ñ˜Ÿ™¨Ô/Ø�‰�m U§]¡]Õ3r    c                 óD  ‡ ‡— ddl m} t        |«      }|j                  d«      }‰ j                  |j                  «       |j                  «       Šˆ ˆfd„}t        j                  dd¬«      dz   } ||«       |d d d	…   } ||«       |j                  d
«      } ||«       y )Nr   r   zcomplex64(complex64, complex64)c                 óŽ   •—  ‰| | «      }‰j                  | | z   |«       ‰j                  |j                  | j                  «       y r   r   r   s     €€r   r   z2TestUfuncBuilding.test_ufunc_struct.<locals>.check2   r   r    r!   Ú	complex64r#   ù              ð?r$   r%   )	r'   r   r(   r)   r*   r+   r,   r-   r.   r2   s   `     @r   Útest_ufunc_structz#TestUfuncBuilding.test_ufunc_struct+   s‰   ù€ ÝCÜ˜3ÓˆØ�w‰wÐ8Ó9ˆØ×Ñ˜Ÿ™Ô)Ø—‘Ó!ˆõ	/ô
 �I‰I�b Ô,¨rÑ1ˆÙˆaŒà‰c�ˆc‰FˆÙˆaŒØ�I‰I�fÓˆÙˆa�r    c                 ó  — ddl m} t        |ddi¬«      }|j                  d«      }| j                  |j                  «       |j                  «       }t        j                  dd¬	«      } |||«      }| j                  ||z   |«       y )
Nr   r   ÚforceobjT©Útargetoptionsr   é
   r"   r#   )	r'   r   r(   Ú
assertTruer*   r+   r,   r-   r   )r   r   r3   r4   r   r   r   s          r   Útest_ufunc_forceobjz%TestUfuncBuilding.test_ufunc_forceobj?   sp   € ÝCÜ˜3¨z¸4Ð.@ÔAˆØ�w‰wÐ,Ó-ˆØ�‰˜Ÿ™Ô(Ø—‘Ó!ˆä�I‰I�b Ô(ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 ó¢   — ddl m} t        |ddi¬«      }|j                  d«       |j	                  «       }| j                   |dd«      d	«       y
)zA
        Check nested call to an implicitly-typed ufunc.
        r   )ÚouterÚnopythonTr=   ú(int64, int64)éÿÿÿÿr&   r$   N)r'   rC   r(   r   r+   r   )r   rC   Úbuilderr   s       r   Útest_nested_callz"TestUfuncBuilding.test_nested_callJ   sN   € õ 	FÜ˜uØ.8¸$Ð-?ôAˆà�‰Ð$Ô%Ø×#Ñ#Ó%ˆØ×Ñ™˜r 1› qÕ)r    c                 ó¢   — ddl m} t        |ddi¬«      }|j                  d«       |j	                  «       }| j                   |dd«      d	«       y
)zA
        Check nested call to an explicitly-typed ufunc.
        r   )Úouter_explicitrD   Tr=   rE   rF   r&   r$   N)r'   rJ   r(   r   r+   r   )r   rJ   rG   r   s       r   Útest_nested_call_explicitz+TestUfuncBuilding.test_nested_call_explicitU   sN   € õ 	OÜ˜~Ø.8¸$Ð-?ôAˆà�‰Ð$Ô%Ø×#Ñ#Ó%ˆØ×Ñ™˜r 1› qÕ)r    N)r/   Ú
__module__Ú__qualname__r5   r:   rA   rH   rK   © r    r   r   r      s   „ ò4ò4ò(	*ò	*ó	*r    r   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestUfuncBuildingJitDisabledc                 óD   — t         j                  | _        dt         _        y ©NF©r   ÚDISABLE_JITÚold_disable_jit©r   s    r   ÚsetUpz"TestUfuncBuildingJitDisabled.setUpc   ó   € Ü%×1Ñ1ˆÔØ"ŒÕr    c                 ó.   — | j                   t        _        y r   ©rU   r   rT   rV   s    r   ÚtearDownz%TestUfuncBuildingJitDisabled.tearDowng   ó   € Ø!×1Ñ1ŒÕr    N©r/   rL   rM   rW   r[   rN   r    r   rP   rP   a   ó   „ ò#ó2r    rP   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGUfuncBuildingc                 óø  — ddl m} t        |d«      }|j                  d«      }| j	                  |j
                  «       |j                  «       }t        j                  dd¬«      j                  dd	«      } |||«      }| j                  ||z   |«       | j                  |j                  t        j                  d«      «       | j                  |j                  d
«       | j                  d|j                  «       y )Nr   ©Úguaddú(x, y),(x, y)->(x, y)z(void(int32[:,:], int32[:,:], int32[:,:])r?   r"   r#   r$   é   rc   zA generalized addition)r'   rc   r   r   r)   r*   r+   r,   r-   r.   r   r   r   r/   r0   r1   ©r   rc   Úgufbr4   r   r   r   s          r   Útest_basic_gufuncz$TestGUfuncBuilding.test_basic_gufuncm   sÃ   € ÝEÜ˜UÐ$;Ó<ˆØ�x‰xÐBÓCˆØ×Ñ˜Ÿ™Ô)Ø× Ñ Ó"ˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆÙ�!�Q‹Kˆà×Ñ  A¡ qÔ)Ø×Ñ˜Ÿ™¤"§(¡(¨7Ó"3Ô4ð 	×Ñ˜Ÿ™¨Ô1Ø�‰Ð.°·±Õ>r    c                 ó0  — ddl m} t        |d«      }|j                  d«      }| j	                  |j
                  «       |j                  «       }t        j                  dd¬«      j                  dd	«      d
z   } |||«      }| j                  ||z   |«       y )Nr   rb   rd   ú4void(complex64[:,:], complex64[:,:], complex64[:,:])r?   r8   r#   r$   re   r9   )r'   rc   r   r   r)   r*   r+   r,   r-   r.   r   rf   s          r   Útest_gufunc_structz%TestGUfuncBuilding.test_gufunc_struct~   s‚   € ÝEÜ˜UÐ$;Ó<ˆØ�x‰xÐNÓOˆØ×Ñ˜Ÿ™Ô)Ø× Ñ Ó"ˆä�I‰I�b Ô,×4Ñ4°Q¸Ó:¸RÑ?ˆÙ�!�Q‹Kˆà×Ñ  A¡ qÕ)r    c                 óH  — ddl m} t        |dt        d¬«      ¬«      }|j	                  d«      }| j                  |j                  «       |j                  «       }t        j                  dd	¬
«      j                  dd«      dz   } |||«      }| j                  ||z   |«       y )Nr   rb   rd   T©r<   r=   rj   r?   r8   r#   r$   re   r9   )r'   rc   r   Údictr   r@   r*   r+   r,   r-   r.   r   rf   s          r   Útest_gufunc_struct_forceobjz.TestGUfuncBuilding.test_gufunc_struct_forceobjŠ   s�   € ÝEÜ˜UÐ$;Ü+/¸Ô+>ô@ˆà�x‰xð ó ˆà�‰˜Ÿ™Ô(Ø× Ñ Ó"ˆä�I‰I�b Ô,×4Ñ4°Q¸Ó:¸RÑ?ˆÙ�!�Q‹Kˆà×Ñ  A¡ qÕ)r    N)r/   rL   rM   rh   rk   ro   rN   r    r   r`   r`   k   s   „ ò?ò"
*ó*r    r`   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestGUfuncBuildingJitDisabledc                 óD   — t         j                  | _        dt         _        y rR   rS   rV   s    r   rW   z#TestGUfuncBuildingJitDisabled.setUp›   rX   r    c                 ó.   — | j                   t        _        y r   rZ   rV   s    r   r[   z&TestGUfuncBuildingJitDisabled.tearDownŸ   r\   r    Nr]   rN   r    r   rq   rq   ™   r^   r    rq   c                   óh   — e Zd Zg d¢Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestVectorizeDecor)r   é   NÚreorderablec                 óž   — ddl m}  t        dg«      |«      }t        j                  dd¬«      } |||«      }| j                  ||z   |«       y )Nr   r   r   r?   r"   r#   ©r'   r   r   r,   r-   r   ©r   r   r   r   r   s        r   Útest_vectorizez!TestVectorizeDecor.test_vectorize§   sI   € ÝCØ2”	Ð0Ð1Ó2°3Ó7ˆÜ�I‰I�b Ô(ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 ó¢   — ddl m}  t        dgd¬«      |«      }t        j                  dd¬«      } |||«      }| j                  ||z   |«       y )	Nr   r   r   Trm   r?   r"   r#   ry   rz   s        r   Útest_vectorize_objmodez)TestVectorizeDecor.test_vectorize_objmode®   sK   € ÝCØA”	Ð0Ð1¸DÔAÀ#ÓFˆÜ�I‰I�b Ô(ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 óò   — ddl m}  t        dg«      |«      }t        j                  dd¬«      } |||«      }| j                  |t        j                  |j                  t        j                  ¬«      «       y )Nr   )Úequalszbool_(int32, int32)r?   r"   r#   )	r'   r   r   r,   r-   r   ÚonesÚshapeÚbool_)r   r   r   r   Úrs        r   Útest_vectorize_bool_returnz-TestVectorizeDecor.test_vectorize_bool_returnµ   sX   € ÝFØ2”	Ð0Ð1Ó2°6Ó:ˆÜ�I‰I�b Ô(ˆÙ�!�A‹JˆØ×Ñ ¤2§7¡7¨1¯7©7¼"¿(¹(Ô#CÕDr    c                 óü  — ddl m} d}| j                  D ];  } t        |g|¬«      |«      }|dk(  rd n|}| j	                  |j
                  |«       Œ=  t        |g«      |«      }| j                  |j
                  d «       | j                  t        «      5   t        |gd¬«      |«       d d d «       | j                  t        «      5   t        |gd¬«      |«       d d d «       y # 1 sw Y   Œ<xY w# 1 sw Y   y xY w)Nr   r   r   )Úidentityrw   Únoner$   )	r'   r   Ú_supported_identitiesr   r   r†   ÚassertIsÚassertRaisesÚ
ValueError)r   r   Úsigr†   r   Úexpecteds         r   Útest_vectorize_identityz*TestVectorizeDecor.test_vectorize_identity¼   sî   € ÝCØ#ˆØ×2Ñ2ò 	7ˆHØ7”I˜s˜e¨hÔ7¸Ó<ˆEØ'¨=Ò8‘t¸hˆHØ×Ñ˜UŸ^™^¨XÕ6ð	7ð
 !”	˜3˜%Ó  Ó%ˆØ�‰�e—n‘n dÔ+à×ÑœzÓ*ñ 	3Ø-ŒI�s�e fÔ-¨cÔ2÷	3à×ÑœzÓ*ñ 	.Ø(ŒI�s�e aÔ(¨Ô-÷	.ð 	.÷	3ð 	3ú÷	.ð 	.ús   ÂC&ÃC2Ã&C/Ã2C;c                 ó8  — ddl m} t        j                  ddd«      }t        j                  ddd«      }t	        |«      }| j                   |||«      ||z   «       t	        |«      }t        j                  d«      } ||||«       | j                  |||z   «       y )Nr   r   rv   r?   r$   )r'   r   r,   Úlinspacer   r   Úempty)r   r   r   r   r   Úufunc2Úcs          r   Útest_vectorize_no_argsz)TestVectorizeDecor.test_vectorize_no_argsÌ   s�   € ÝCÜ�K‰K˜˜!˜BÓˆÜ�K‰K˜˜!˜BÓˆÜ˜#“ˆØ×Ñ¡ a¨£
¨A°©EÔ2Ü˜3“ˆÜ�H‰H�R‹LˆÙˆq�!�QŒØ×Ñ  1 q¡5Õ)r    c                 óÒ   — ddl m} t        j                  ddd«      }t        j                  ddd«      } t	        t
        d¬«      |«      }| j                   |||«      ||z  «       y )Nr   )Úmulrv   r?   r$   T)r†   rD   )r'   r–   r,   r�   r   r   r   )r   r–   r   r   r   s        r   Útest_vectorize_only_kwsz*TestVectorizeDecor.test_vectorize_only_kws×   sV   € ÝCÜ�K‰K˜˜!˜BÓˆÜ�K‰K˜˜!˜BÓˆØ>”	¤;¸Ô>¸sÓCˆØ×Ñ¡ a¨£
¨A°©EÕ2r    c                 ó˜   ‡ — ˆ fd„}ddl m}  t        dgd¬«      |«      } ||«        t        d¬«      |«      } ||«        ||«       y)zO
        Passing the output array as a keyword argument (issue #1867).
        c                 ó.  •— t        j                  ddd¬«      }t        j                  |«      } | |||¬«      }‰j                  ||«       ‰j	                  |||z   «       ‰j                  t        «      5   | |||¬«       d d d «       y # 1 sw Y   y xY w)Nr?   é   r"   r#   )Úout)Úzzz)r,   r-   Ú
zeros_liker‰   r   rŠ   Ú	TypeError)r   r   r›   Úgotr   s       €r   r   z=TestVectorizeDecor.test_vectorize_output_kwarg.<locals>.checkâ   s‚   ø€ Ü—	‘	˜"˜b¨Ô0ˆAÜ—-‘- Ó"ˆCÙ˜˜1 #Ô&ˆCØ�M‰M˜#˜sÔ#Ø×#Ñ# C¨¨Q©Ô/Ø×"Ñ"¤9Ó-ñ %Ù�a˜ Õ$÷%÷ %ñ %ús   Á6BÂBr   r   r   T©rD   N)r'   r   r   )r   r   r   r   s   `   r   Útest_vectorize_output_kwargz.TestVectorizeDecor.test_vectorize_output_kwargÞ   sK   ø€ ô	%õ 	DØA”	Ð0Ð1¸DÔAÀ#ÓFˆÙˆeŒà(”	 4Ô(¨Ó-ˆÙˆeŒÙˆe�r    c                 óÀ   — ddl m}  t        dgd«      |«      }t        j                  dd¬«      j                  dd	«      } |||«      }| j                  ||z   |«       y )
Nr   rb   ú$(int32[:,:], int32[:,:], int32[:,:])ú(x,y),(x,y)->(x,y)r?   r"   r#   r$   re   )r'   rc   r   r,   r-   r.   r   )r   rc   r   r   r   s        r   Útest_guvectorizez#TestVectorizeDecor.test_guvectorizeô   s`   € ÝEð2”ÐCÐDØ0ó2Ø27ó9ˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 óì   — ddl m}  t        dgd«      |«      }t        j                  dd¬«      j                  dd	«      }t        j                  |«      } ||||«       | j                  ||z   |«       y )
Nr   rb   r£   z(x,y),(x,y),(x,y)r?   r"   r#   r$   re   )r'   rc   r   r,   r-   r.   r�   r   )r   rc   r   r   r›   s        r   Útest_guvectorize_no_outputz-TestVectorizeDecor.test_guvectorize_no_outputü   so   € ÝEð1”ÐCÐDØ/ó1Ø16ó8ˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆÜ�m‰m˜AÓˆÙˆa��CÔØ×Ñ  A¡ sÕ+r    c                 óÄ   — ddl m}  t        dgdd¬«      |«      }t        j                  dd¬	«      j                  d
d«      } |||«      }| j                  ||z   |«       y )Nr   )Ú	guadd_objr£   r¤   Trm   r?   r"   r#   r$   re   )r'   r©   r   r,   r-   r.   r   )r   r©   r   r   r   s        r   Útest_guvectorize_objectmodez.TestVectorizeDecor.test_guvectorize_objectmode  se   € ÝIðA”ÐCÐDØ0¸4ôAØAJóLˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 óÄ   — ddl m}  t        dgdd¬«      |«      }t        j                  dd¬	«      j                  d
d«      } ||d«      }| j                  |dz   |«       y)zA
        Test passing of scalars to object mode gufuncs.
        r   )Úguadd_scalar_objz(int32[:,:], int32, int32[:,:])z(x,y),()->(x,y)Trm   r?   r"   r#   r$   re   r&   N)r'   r¬   r   r,   r-   r.   r   )r   r¬   r   r   r   s        r   Ú"test_guvectorize_scalar_objectmodez5TestVectorizeDecor.test_guvectorize_scalar_objectmode  sf   € õ 	Qð>”Ð>Ð?Ø-¸ô>Ø>NóPˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆÙ�!�Q‹KˆØ×Ñ  A¡ qÕ)r    c                 óê   — ddl m}m}  t        dgdd¬«      |«      }t	        j
                  dd¬	«      j                  d
d«      }| j                  |«      5   |||«       d d d «       y # 1 sw Y   y xY w)Nr   )ÚguerrorÚMyExceptionr£   r¤   Trm   r?   r"   r#   r$   re   )r'   r¯   r°   r   r,   r-   r.   rŠ   )r   r¯   r°   r   r   s        r   Ú$test_guvectorize_error_in_objectmodez7TestVectorizeDecor.test_guvectorize_error_in_objectmode  st   € ÷	ðA”ÐCÐDØ0¸4ôAØAHóJˆä�I‰I�b Ô(×0Ñ0°°AÓ6ˆØ×Ñ˜{Ó+ñ 	Ù�!�QŒK÷	÷ 	ñ 	ús   Á
A)Á)A2c                 óì  — ddl m}m} dgdf}| j                  D ]8  } t	        |d|iŽ|«      }|dk(  rd n|}| j                  |j                  |«       Œ:  t	        |Ž |«      }| j                  |j                  d «       | j                  t        «      5   t	        |ddiŽ|«       d d d «       | j                  t        «      5   t	        |ddiŽ|«       d d d «       y # 1 sw Y   Œ9xY w# 1 sw Y   y xY w)	Nr   )r   rc   r£   r¤   r†   rw   r‡   r$   )
r'   r   rc   rˆ   r   r   r†   r‰   rŠ   r‹   )r   r   rc   Úargsr†   r   r�   s          r   Útest_guvectorize_identityz,TestVectorizeDecor.test_guvectorize_identity!  sø   € ßJØ7Ð8Ð:NÐOˆØ×2Ñ2ò 	7ˆHØ9”K Ð9°Ñ9¸%Ó@ˆEØ'¨=Ò8‘t¸hˆHØ×Ñ˜UŸ^™^¨XÕ6ð	7ð
 #”˜TÐ" 5Ó)ˆØ�‰�e—n‘n dÔ+à×ÑœzÓ*ñ 	5Ø/ŒK˜Ð/¨Ñ/°Ô4÷	5à×ÑœzÓ*ñ 	0Ø*ŒK˜Ð*¨Ñ*¨3Ô/÷	0ð 	0÷	5ð 	5ú÷	0ð 	0ús   ÂCÃC*ÃC'Ã*C3c                 ó  — ddl m} dg}| j                  t        «      5 } t	        |d«      |«       d d d «       | j                  dt        j                  «      «       | j                  t        «      5 } t	        |d«      |«       d d d «       | j                  t        |j                  «      d«       | j                  t        «      5 } t	        |d«      |«       d d d «       y # 1 sw Y   Œ´xY w# 1 sw Y   ŒkxY w# 1 sw Y   y xY w)	Nr   rb   r£   z)-:zbad token in signaturez(x,y),(x,y)->(x,z,v)zundefined output symbols: v,zz(x,y),(x,y),(x,y)->)
r'   rc   rŠ   r‹   r   r0   ÚstrÚ	exceptionÚ	NameErrorr   )r   rc   ÚsigsÚraisess       r   Útest_guvectorize_invalid_layoutz2TestVectorizeDecor.test_guvectorize_invalid_layout1  sð   € ÝEØ6Ð7ˆà×ÑœzÓ*ð 	,¨fØ$ŒK˜˜eÓ$ UÔ+÷	,à�‰Ð.´°F×4DÑ4DÓ0EÔFà×ÑœyÓ)ð 	=¨VØ5ŒK˜Ð4Ó5°eÔ<÷	=à×Ñœ˜V×-Ñ-Ó.Ø8ô	:ð ×ÑœzÓ*ð 	<¨fØ4ŒK˜Ð3Ó4°UÔ;÷	<ð 	<÷	,ð 	,ú÷	=ð 	=ú÷
	<ð 	<ús#   ŸC%Á4C1Ã	C=Ã%C.Ã1C:Ã=DN)r/   rL   rM   rˆ   r{   r}   r„   rŽ   r”   r—   r¡   r¥   r§   rª   r­   r±   r´   r»   rN   r    r   ru   ru   £   sO   „ â7Ðò*ò*òEò.ò 	*ò3òò,*ò,ò*ò	*òò0ó <r    ru   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Ú
NEP13Arrayz4https://numpy.org/neps/nep-0013-ufunc-overrides.htmlc                 ó   — || _         y r   ©Úarray©r   rÀ   s     r   Ú__init__zNEP13Array.__init__E  ó	   € Øˆ�
r    c                 ó   — | j                   S r   r¿   rV   s    r   Ú	__array__zNEP13Array.__array__H  s   € Ø�z‰zÐr    c                 ó6   — | j                   j                  «       S r   )rÀ   ÚtolistrV   s    r   rÇ   zNEP13Array.tolistK  s   € Ø�z‰z× Ñ Ó"Ð"r    c           
      ó†   — |dk7  rt         S t         ||D �cg c]  }t        j                  |«      ‘Œ c}i |¤Ž«      S c c}w ©NÚ__call__)ÚNotImplementedr½   r,   Úasarray©r   r   Úmethodr³   ÚkwargsÚxs         r   Ú__array_ufunc__zNEP13Array.__array_ufunc__N  s;   € Ø�ZÒÜ!Ð!ä™%¸Ö!>°A¤"§*¡*¨Q¥-Ò!>ÐIÀ&ÑIÓJÐJùÒ!>s   —>N)r/   rL   rM   r1   rÂ   rÅ   rÇ   rÑ   rN   r    r   r½   r½   C  s   „ Ù>òòò#óKr    r½   c                   óN   — e Zd ZdZd„ Zd„ Zd„ ZeZeZeZ	eZ
eZeZeZeZeZeZeZy)ÚFakeDaskArrayzýThis class defines both the NEP13 protocol and the dask collection protocol
    (https://docs.dask.org/en/stable/custom-collections.html). This is a stand-in for
    dask array, dask dataframe, and for any wrapper around them (e.g. xarray or pint).
    c                 ó   — || _         y r   r¿   rÁ   s     r   rÂ   zFakeDaskArray.__init__[  rÃ   r    c                 óê   — |dk7  rt         S t        j                  t        j                  |«      «      }|D �cg c]   }t	        |t
        «      r|j                  n|‘Œ" }}t         ||i |¤Ž«      S c c}w rÉ   )rË   ÚpickleÚloadsÚdumpsÚ
isinstancerÓ   rÀ   rÍ   s         r   rÑ   zFakeDaskArray.__array_ufunc__^  si   € Ø�ZÒÜ!Ð!ô —‘œVŸ\™\¨%Ó0Ó1ˆØHLÖMÀ1œ: a¬Ô7�—’¸QÑ>ÐMˆÐMÜ™U DÐ3¨FÑ3Ó4Ð4ùò Ns   ¸%A0c                 ó   — t        d«      ‚)Nz#called potentially expensive method)ÚAssertionError)r   r³   rÏ   s      r   Ú_dask_methodzFakeDaskArray._dask_methodg  s   € ÜÐBÓCÐCr    N)r/   rL   rM   r1   rÂ   rÑ   rÜ   rÅ   Ú__dask_graph__Ú__dask_keys__Ú__dask_optimize__Ú__dask_postcompute__Ú__dask_postpersist__Ú__dask_scheduler__Ú__dask_tokenize__ÚcomputeÚpersistÚ	visualizerN   r    r   rÓ   rÓ   U  sU   „ ñò
ò5òDð €IØ!€NØ €MØ$ÐØ'ÐØ'ÐØ%ÐØ$ÐØ€GØ€GØ�Ir    rÓ   c                   ó   — e Zd Zd„ Zy)ÚTestNEP13WithoutSignaturec                 ó°  — t        d¬«      d„ «       }t        j                  g d¢t        j                  ¬«      }t        j                  g d¢t        j                  ¬«      }t        j                  g d¢t        j                  ¬«      } ||||«      }| j	                  |t        j
                  «       | j                  |j                  «       g d¢«        |t        |«      ||«      }| j	                  |t        «       | j                  |j                  «       g d¢«        ||t        |«      |«      }| j	                  |t        «       | j                  |j                  «       g d¢«        |||t        |«      «      }| j	                  |t        «       | j                  |j                  «       g d¢«       t        j                  g d	¢t        j                  ¬«      }t        j                  g d
¢t        j                  ¬«      }t        j                  g d¢t        j                  ¬«      } ||||«      }| j	                  |t        j
                  «       | j                  |j                  «       g d¢«        |t        |«      ||«      }| j	                  |t        «       | j                  |j                  «       g d¢«        ||t        |«      |«      }| j	                  |t        «       | j                  |j                  «       g d¢«        |||t        |«      «      }| j	                  |t        «       | j                  |j                  «       g d¢«       y )NTr    c                 ó   — d| z  d|z  z   |z   S )Néd   r?   rN   )ÚhundredsÚtensr€   s      r   Ú	new_ufuncz5TestNEP13WithoutSignature.test_all.<locals>.new_ufunc|  s   € à�x‘< " T¡'Ñ)¨DÑ0Ð0r    )rv   r$   r&   r#   )é   re   é   )é   é   é	   )é“   i  iq  )gš™™™™™ñ?gš™™™™™@gffffff
@)gš™™™™™@g      @gffffff@)gÍÌÌÌÌÌ@gš™™™™™!@gÍÌÌÌÌÌ#@)gfffff6d@gÍÌÌÌÌ¼q@gfffff^y@)
r   r,   rÀ   Úint64ÚassertIsInstanceÚndarrayr   rÇ   r½   Úfloat64)	r   rî   r   r   r“   Úall_npÚnep13_1Únep13_2Únep13_3s	            r   Útest_allz"TestNEP13WithoutSignature.test_ally  sa  € ô 
˜DÔ	!ñ	1ó 
"ð	1ô �H‰H’Y¤b§h¡hÔ/ˆÜ�H‰H’Y¤b§h¡hÔ/ˆÜ�H‰H’Y¤b§h¡hÔ/ˆá˜1˜a Ó#ˆØ×Ñ˜f¤b§j¡jÔ1Ø×Ñ˜Ÿ™›ª/Ô:áœJ q›M¨1¨aÓ0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)ª?Ô;á˜Aœz¨!›}¨aÓ0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)ª?Ô;á˜A˜q¤*¨Q£-Ó0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)ª?Ô;ô �H‰H’_¬B¯J©JÔ7ˆÜ�H‰H’_¬B¯J©JÔ7ˆÜ�H‰H’_¬B¯J©JÔ7ˆá˜1˜a Ó#ˆØ×Ñ˜f¤b§j¡jÔ1Ø×Ñ˜Ÿ™›Ò*?Ô@áœJ q›M¨1¨aÓ0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)Ò+@ÔAá˜Aœz¨!›}¨aÓ0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)Ò+@ÔAá˜A˜q¤*¨Q£-Ó0ˆØ×Ñ˜g¤zÔ2Ø×Ñ˜Ÿ™Ó)Ò+@ÕAr    N)r/   rL   rM   rý   rN   r    r   rè   rè   w  s   „ ó/Br    rè   c                   ó   — e Zd ZdZd„ Zy)ÚTestDaskzæTest that numba ufuncs are compatible with dask collections and wrappers around
    dask (e.g. xarray or pint) and that they can be serialized, sent over the network,
    deserialized on a different host and applied remotely.
    c                 óÚ  — t        t        j                  dt        j                  ¬«      «      }t        j                  dt        j                  ¬«      dz  }t	        dg«      d„ «       }t	        «       d„ «       }t        dgd«      d	„ «       }|||fD ]L  }| j                  |«      5   ||«      }t        |t         «      sJ ‚t        |j                  |«       d d d «       ŒN y # 1 sw Y   ŒYxY w)
Nrï   r#   r$   zf8(f8)c                 ó   — | dz  S ©Nr$   rN   ©rÐ   s    r   Údouble_static_vectorizez9TestDask.test_dask_array.<locals>.double_static_vectorizeµ  ó   € à�q‘5ˆLr    c                 ó   — | dz  S r  rN   r  s    r   Údouble_dynamic_vectorizez:TestDask.test_dask_array.<locals>.double_dynamic_vectorize¹  r  r    zf8,f8[:]z()->()c                 ó   — | dz  |d d  y r  rN   )rÐ   r›   s     r   Údouble_guvectorizez4TestDask.test_dask_array.<locals>.double_guvectorize½  s   € à˜‘UˆC‘‰Fr    )
rÓ   r,   r-   rø   r   r   ÚsubTestrÙ   r   rÀ   )r   r   Úexpectr  r  r	  Úfuncr   s           r   Útest_dask_arrayzTestDask.test_dask_array±  së   € Üœ"Ÿ)™) A¬R¯Z©ZÔ8Ó9ˆÜ—‘˜1¤B§J¡JÔ/°!Ñ3ˆä	�H�:Ó	ñ	ó 
ð	ô 
‹ñ	ó 
ð	ô 
�j�\ 8Ó	,ñ	ó 
-ð	ð $Ø$Øð
ò 	4ˆDð
 —‘˜dÓ#ñ 4Ù˜“G�Ü! !¤]Ô3Ð3Ð3Ü" 1§7¡7¨FÔ3÷4ð 4ñ	4÷
4ð 4ús   Â%1C!Ã!C*	N)r/   rL   rM   r1   r  rN   r    r   rÿ   rÿ   «  s   „ ñó
4r    rÿ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestVectorizeDecorJitDisabledc                 óD   — t         j                  | _        dt         _        y rR   rS   rV   s    r   rW   z#TestVectorizeDecorJitDisabled.setUpÎ  rX   r    c                 ó.   — | j                   t        _        y r   rZ   rV   s    r   r[   z&TestVectorizeDecorJitDisabled.tearDownÒ  r\   r    Nr]   rN   r    r   r  r  Ì  r^   r    r  Ú__main__)!rÖ   ÚunittestÚnumpyr,   Únumpy.testingr   Únumba.np.ufunc.ufuncbuilderr   Únumbar   r   Únumba.np.ufuncr   Únumba.np.ufunc.dufuncr   r(   Únumba.tests.supportr	   r
   Ú
numba.corer   r   rP   r`   rq   ru   r½   rÓ   rè   rÿ   r  r/   ÚmainrN   r    r   ú<module>r     sÈ   ðÛ Û ã Ý ,å 5ß (Ý &Ý 8ß -Ý ôO*˜ô O*ôd2Ð#4ô 2ô+*˜ô +*ô\2Ð$6ô 2ô\<˜ô \<÷@Kñ K÷$ñ ôD1B ô 1Bôh4ˆx× Ñ ô 4ôB2Ð$6ô 2ð ˆzÒØ€H‡M�M…Oð r    