§
    2@Äj€C  ã                   óÆ  — 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         ¦   «          dS dS )é    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dS )ÚTestUfuncBuildingc                 ó>  ‡ ‡— ddl m} t          |¦  «        }|                     d¦  «        }‰                      |j        ¦  «         |                     d¦  «        }‰                      |j        ¦  «         |                     ¦   «         Šˆ ˆfd„}t          j        dd¬¦  «        } ||¦  «         |d d d	…         } ||¦  «         |                     d
¦  «        } ||¦  «         ‰  	                    ‰j
        d¦  «         ‰                      d‰j        ¦  «         d S )Nr   ©Úaddúint32(int32, int32)zint64(int64, int64)c                 ó’   •—  ‰| | ¦  «        }‰                      | | z   |¦  «         ‰                     |j        | j        ¦  «         d S ©N©ÚassertPreciseEqualÚassertEqualÚdtype©ÚaÚbÚselfÚufuncs     €€úXC:\Projects\Historical\venv\Lib\site-packages\numba/tests/npyufunc/test_ufuncbuilding.pyÚcheckz1TestUfuncBuilding.test_basic_ufunc.<locals>.check   óL   ø€ Ø��a˜‘”ˆAØ×#Ò# A¨¡E¨1Ñ-Ô-Ð-Ø×Ò˜QœW a¤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   s3  øø€ ØCÐCÐCÐCÐCÐCÝ˜3ÑÔˆØ�wŠwÐ,Ñ-Ô-ˆØ×Ò˜œÑ)Ô)Ð)Ø�wŠwÐ,Ñ-Ô-ˆØ×Ò˜œÑ)Ô)Ð)Ø—’Ñ!Ô!ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/õ
 ŒI�b Ð(Ñ(Ô(ˆØˆˆa‰Œˆàˆcˆc�ˆcŒFˆØˆˆa‰ŒˆØ�IŠI�fÑÔˆØˆˆa‰Œˆð 	×Ò˜œ¨Ñ/Ô/Ð/Ø�Š�m U¤]Ñ3Ô3Ð3Ð3Ð3r    c                 óz  ‡ ‡— ddl m} t          |¦  «        }|                     d¦  «        }‰                      |j        ¦  «         |                     ¦   «         Šˆ ˆfd„}t          j        dd¬¦  «        dz   } ||¦  «         |d d d	…         } ||¦  «         |                     d
¦  «        } ||¦  «         d S )Nr   r   zcomplex64(complex64, complex64)c                 ó’   •—  ‰| | ¦  «        }‰                      | | z   |¦  «         ‰                     |j        | j        ¦  «         d S 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ÐCÐCÐCÐCÐCÝ˜3ÑÔˆØ�wŠwÐ8Ñ9Ô9ˆØ×Ò˜œÑ)Ô)Ð)Ø—’Ñ!Ô!ˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/õ
 ŒI�b Ð,Ñ,Ô,¨rÑ1ˆØˆˆa‰Œˆàˆcˆc�ˆcŒFˆØˆˆa‰ŒˆØ�IŠI�fÑÔˆØˆˆa‰Œˆˆˆr    c                 ó4  — ddl m} t          |ddi¬¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬	¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )
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?   s£   € ØCÐCÐCÐCÐCÐCÝ˜3¨z¸4Ð.@ÐAÑAÔAˆØ�wŠwÐ,Ñ-Ô-ˆØ�Š˜œÑ(Ô(Ð(Ø—’Ñ!Ô!ˆåŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 óÊ   — ddl m} t          |ddi¬¦  «        }|                     d¦  «         |                     ¦   «         }|                       |dd¦  «        d	¦  «         d
S )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   s‚   € ð 	FÐEÐEÐEÐEÐEÝ˜uØ.8¸$Ð-?ðAñ Aô Aˆà�ŠÐ$Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%ˆØ×Ò˜˜˜r 1™œ qÑ)Ô)Ð)Ð)Ð)r    c                 óÊ   — ddl m} t          |ddi¬¦  «        }|                     d¦  «         |                     ¦   «         }|                       |dd¦  «        d	¦  «         d
S )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   s‚   € ð 	OÐNÐNÐNÐNÐNÝ˜~Ø.8¸$Ð-?ðAñ Aô Aˆà�ŠÐ$Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%ˆØ×Ò˜˜˜r 1™œ qÑ)Ô)Ð)Ð)Ð)r    N)r/   Ú
__module__Ú__qualname__r5   r:   rA   rH   rK   © r    r   r   r      s_   € € € € € ð4ð 4ð 4ð4ð ð ð(	*ð 	*ð 	*ð	*ð 	*ð 	*ð	*ð 	*ð 	*ð 	*ð 	*r    r   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestUfuncBuildingJitDisabledc                 ó@   — t           j        | _        dt           _        d S ©NF©r   ÚDISABLE_JITÚold_disable_jit©r   s    r   ÚsetUpz"TestUfuncBuildingJitDisabled.setUpc   ó   € Ý%Ô1ˆÔØ"�ÔÐÐr    c                 ó(   — | j         t          _        d S r   ©rU   r   rT   rV   s    r   ÚtearDownz%TestUfuncBuildingJitDisabled.tearDowng   ó   € Ø!Ô1�ÔÐÐr    N©r/   rL   rM   rW   r[   rN   r    r   rP   rP   a   ó2   € € € € € ð#ð #ð #ð2ð 2ð 2ð 2ð 2r    rP   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestGUfuncBuildingc                 ó  — ddl m} t          |d¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «         	                    dd	¦  «        } |||¦  «        }|  
                    ||z   |¦  «         |                      |j        t          j        d¦  «        ¦  «         |                      |j        d
¦  «         |                      d|j        ¦  «         d S )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ÐEÐEÐEÐEÐEÝ˜UÐ$;Ñ<Ô<ˆØ�xŠxÐBÑCÔCˆØ×Ò˜œÑ)Ô)Ð)Ø× Ò Ñ"Ô"ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ø×Ò˜œ¥"¤(¨7Ñ"3Ô"3Ñ4Ô4Ð4ð 	×Ò˜œ¨Ñ1Ô1Ð1Ø�ŠÐ.°´Ñ>Ô>Ð>Ð>Ð>r    c                 ó\  — ddl m} t          |d¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j        dd¬¦  «         	                    dd	¦  «        d
z   } |||¦  «        }|  
                    ||z   |¦  «         d S )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ÐEÐEÐEÐEÐEÝ˜UÐ$;Ñ<Ô<ˆØ�xŠxÐNÑOÔOˆØ×Ò˜œÑ)Ô)Ð)Ø× Ò Ñ"Ô"ˆåŒI�b Ð,Ñ,Ô,×4Ò4°Q¸Ñ:Ô:¸RÑ?ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 ó|  — ddl m} t          |dt          d¬¦  «        ¬¦  «        }|                     d¦  «        }|                      |j        ¦  «         |                     ¦   «         }t          j	        dd	¬
¦  «         
                    dd¦  «        dz   } |||¦  «        }|                      ||z   |¦  «         d S )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ÐEÐEÐEÐEÐEÝ˜UÐ$;Ý+/¸Ð+>Ñ+>Ô+>ð@ñ @ô @ˆà�xŠxð ñ ô ˆà�Š˜œÑ(Ô(Ð(Ø× Ò Ñ"Ô"ˆåŒI�b Ð,Ñ,Ô,×4Ò4°Q¸Ñ:Ô:¸RÑ?ˆØˆE�!�Q‰KŒKˆà×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    N)r/   rL   rM   rh   rk   ro   rN   r    r   r`   r`   k   sA   € € € € € ð?ð ?ð ?ð"
*ð 
*ð 
*ð*ð *ð *ð *ð *r    r`   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestGUfuncBuildingJitDisabledc                 ó@   — t           j        | _        dt           _        d S rR   rS   rV   s    r   rW   z#TestGUfuncBuildingJitDisabled.setUp›   rX   r    c                 ó(   — | j         t          _        d S r   rZ   rV   s    r   r[   z&TestGUfuncBuildingJitDisabled.tearDownŸ   r\   r    Nr]   rN   r    r   rq   rq   ™   r^   r    rq   c                   ój   — 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dS )ÚTestVectorizeDecor)r   é   NÚreorderablec                 óº   — ddl m}  t          dg¦  «        |¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )Nr   r   r   r?   r"   r#   ©r'   r   r   r,   r-   r   ©r   r   r   r   r   s        r   Útest_vectorizez!TestVectorizeDecor.test_vectorize§   sr   € ØCÐCÐCÐCÐCÐCØ2•	Ð0Ð1Ñ2Ô2°3Ñ7Ô7ˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 ó¾   — ddl m}  t          dgd¬¦  «        |¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )	Nr   r   r   Trm   r?   r"   r#   ry   rz   s        r   Útest_vectorize_objmodez)TestVectorizeDecor.test_vectorize_objmode®   sw   € ØCÐCÐCÐCÐCÐCØA•	Ð0Ð1¸DÐAÑAÔAÀ#ÑFÔFˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 óú   — ddl m}  t          dg¦  «        |¦  «        }t          j        dd¬¦  «        } |||¦  «        }|                      |t          j        |j        t          j        ¬¦  «        ¦  «         d S )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µ   s�   € ØFÐFÐFÐFÐFÐFØ2•	Ð0Ð1Ñ2Ô2°6Ñ:Ô:ˆÝŒI�b Ð(Ñ(Ô(ˆØˆE�!�A‰JŒJˆØ×Ò ¥2¤7¨1¬7½"¼(Ð#CÑ#CÔ#CÑDÔDÐDÐDÐDr    c                 óH  — ddl m} d}| j        D ]B} t          |g|¬¦  «        |¦  «        }|dk    rd n|}|                      |j        |¦  «         ŒC t          |g¦  «        |¦  «        }|                      |j        d ¦  «         |                      t          ¦  «        5   t          |gd¬¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5   t          |gd¬¦  «        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ÐCÐCÐCÐCÐCØ#ˆØÔ2ð 	7ð 	7ˆHØ7•I˜s˜e¨hÐ7Ñ7Ô7¸Ñ<Ô<ˆEØ'¨=Ò8Ð8�t�t¸hˆHØ×Ò˜Uœ^¨XÑ6Ô6Ð6Ð6à •	˜3˜%Ñ Ô  Ñ%Ô%ˆØ�Š�e”n dÑ+Ô+Ð+à×Ò�zÑ*Ô*ð 	3ð 	3Ø-�I�s�e fÐ-Ñ-Ô-¨cÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3à×Ò�zÑ*Ô*ð 	.ð 	.Ø(�I�s�e aÐ(Ñ(Ô(¨Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s$   Â!C	Ã	CÃCÃ.DÄDÄDc                 ó`  — ddl m} t          j        ddd¦  «        }t          j        ddd¦  «        }t	          |¦  «        }|                       |||¦  «        ||z   ¦  «         t	          |¦  «        }t          j        d¦  «        } ||||¦  «         |                      |||z   ¦  «         d S )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ÐCÐCÐCÐCÐCÝŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆÝ˜#‘”ˆØ×Ò   a¨¡
¤
¨A°©EÑ2Ô2Ð2Ý˜3‘”ˆÝŒH�R‰LŒ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¬¦  «        |¦  «        }|                       |||¦  «        ||z  ¦  «         d S )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×   s€   € ØCÐCÐCÐCÐCÐCÝŒK˜˜!˜BÑÔˆÝŒK˜˜!˜BÑÔˆØ>•	¥;¸Ð>Ñ>Ô>¸sÑCÔCˆØ×Ò   a¨¡
¤
¨A°©EÑ2Ô2Ð2Ð2Ð2r    c                 óÈ   ‡ — ˆ fd„}ddl m}  t          dgd¬¦  «        |¦  «        } ||¦  «          t          d¬¦  «        |¦  «        } ||¦  «          ||¦  «         dS )zO
        Passing the output array as a keyword argument (issue #1867).
        c                 óZ  •— t          j        ddd¬¦  «        }t          j        |¦  «        } | |||¬¦  «        }‰                     ||¦  «         ‰                     |||z   ¦  «         ‰                     t          ¦  «        5   | |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ñ0Ô0ˆAÝ”- Ñ"Ô"ˆCØ�%˜˜1 #Ð&Ñ&Ô&ˆCØ�MŠM˜#˜sÑ#Ô#Ð#Ø×#Ò# C¨¨Q©Ñ/Ô/Ð/Ø×"Ò"¥9Ñ-Ô-ð %ð %Ø��a˜ Ð$Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ÂB Â 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Þ   s–   ø€ ð	%ð 	%ð 	%ð 	%ð 	%ð 	DÐCÐCÐCÐCÐCØA•	Ð0Ð1¸DÐAÑAÔAÀ#ÑFÔFˆØˆˆe‰Œˆà(•	 4Ð(Ñ(Ô(¨Ñ-Ô-ˆØˆˆe‰ŒˆØˆˆe‰Œˆˆˆr    c                 óä   — ddl m}  t          dgd¦  «        |¦  «        }t          j        dd¬¦  «                             dd	¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )
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ÐEÐEÐEÐEÐEð2•ÐCÐDØ0ñ2ô 2Ø27ñ9ô 9ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 ó  — ddl m}  t          dgd¦  «        |¦  «        }t          j        dd¬¦  «                             dd	¦  «        }t          j        |¦  «        } ||||¦  «         |                      ||z   |¦  «         d S )
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ü   s¤   € ØEÐEÐEÐEÐEÐEð1•ÐCÐDØ/ñ1ô 1Ø16ñ8ô 8ˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆÝŒm˜AÑÔˆØˆˆa��CÑÔÐØ×Ò  A¡ sÑ+Ô+Ð+Ð+Ð+r    c                 óè   — ddl m}  t          dgdd¬¦  «        |¦  «        }t          j        dd¬	¦  «                             d
d¦  «        } |||¦  «        }|                      ||z   |¦  «         d S )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  s�   € ØIÐIÐIÐIÐIÐIðA•ÐCÐDØ0¸4ðAñ Aô AØAJñLô LˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 óè   — ddl m}  t          dgdd¬¦  «        |¦  «        }t          j        dd¬	¦  «                             d
d¦  «        } ||d¦  «        }|                      |dz   |¦  «         dS )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  sœ   € ð 	QÐPÐPÐPÐPÐPð>•Ð>Ð?Ø-¸ð>ñ >ô >Ø>NñPô PˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØˆE�!�Q‰KŒKˆØ×Ò  A¡ qÑ)Ô)Ð)Ð)Ð)r    c                 ó  — ddl m}m}  t          dgdd¬¦  «        |¦  «        }t	          j        dd¬	¦  «                             d
d¦  «        }|                      |¦  «        5   |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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  s  € ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ðA•ÐCÐDØ0¸4ðAñ Aô AØAHñJô JˆåŒI�b Ð(Ñ(Ô(×0Ò0°°AÑ6Ô6ˆØ×Ò˜{Ñ+Ô+ð 	ð 	ØˆE�!�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á$A>Á>BÂBc                 ó   — ddl m}m} dgdf}| j        D ]<} t	          |d|iŽ|¦  «        }|dk    rd n|}|                      |j        |¦  «         Œ= t	          |Ž |¦  «        }|                      |j        d ¦  «         |                      t          ¦  «        5   t	          |ddiŽ|¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5   t	          |ddiŽ|¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	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ÐJÐJÐJÐJÐJÐJÐJØ7Ð8Ð:NÐOˆØÔ2ð 	7ð 	7ˆHØ9•K Ð9°Ð9Ð9¸%Ñ@Ô@ˆEØ'¨=Ò8Ð8�t�t¸hˆHØ×Ò˜Uœ^¨XÑ6Ô6Ð6Ð6à"•˜TÐ" 5Ñ)Ô)ˆØ�Š�e”n dÑ+Ô+Ð+à×Ò�zÑ*Ô*ð 	5ð 	5Ø/�K˜Ð/¨Ð/Ð/°Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5à×Ò�zÑ*Ô*ð 	0ð 	0Ø*�K˜Ð*¨Ð*Ð*¨3Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s$   ÂB;Â;B?ÃB?Ã DÄDÄ
Dc                 ó|  — ddl m} dg}|                      t          ¦  «        5 } t	          |d¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      dt          |j        ¦  «        ¦  «         |                      t          ¦  «        5 } t	          |d¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |  	                    t          |j        ¦  «        d¦  «         |                      t          ¦  «        5 } t	          |d¦  «        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	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ÐEÐEÐEÐEÐEØ6Ð7ˆà×Ò�zÑ*Ô*ð 	,¨fØ$�K˜˜eÑ$Ô$ UÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,à�ŠÐ.µ°FÔ4DÑ0EÔ0EÑFÔFÐFà×Ò�yÑ)Ô)ð 	=¨VØ5�K˜Ð4Ñ5Ô5°eÑ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=à×Ò�˜VÔ-Ñ.Ô.Ø8ñ	:ô 	:ð 	:ð ×Ò�zÑ*Ô*ð 	<¨fØ4�K˜Ð3Ñ4Ô4°UÑ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s5   ¤A
Á
AÁAÂB=Â=CÃCÄ
D1Ä1D5Ä8D5N)r/   rL   rM   rˆ   r{   r}   r„   rŽ   r”   r—   r¡   r¥   r§   rª   r­   r±   r´   r»   rN   r    r   ru   ru   £   sõ   € € € € € à7Ð7Ð7Ðð*ð *ð *ð*ð *ð *ðEð Eð Eð.ð .ð .ð 	*ð 	*ð 	*ð3ð 3ð 3ðð ð ð,*ð *ð *ð,ð ,ð ,ð*ð *ð *ð	*ð 	*ð 	*ðð ð ð0ð 0ð 0ð <ð <ð <ð <ð <r    ru   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )Ú
NEP13Arrayz4https://numpy.org/neps/nep-0013-ufunc-overrides.htmlc                 ó   — || _         d S 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Ðr    c                 ó4   — | j                              ¦   «         S r   )rÀ   ÚtolistrV   s    r   rÇ   zNEP13Array.tolistK  s   € ØŒz× Ò Ñ"Ô"Ð"r    c                 óZ   — |dk    rt           S t           |d„ |D ¦   «         i |¤Ž¦  «        S )NÚ__call__c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS rN   )r,   Úasarray©Ú.0Úxs     r   ú
<listcomp>z.NEP13Array.__array_ufunc__.<locals>.<listcomp>R  s    € Ð!>Ð!>Ð!>°A¥"¤*¨Q¡-¤-Ð!>Ð!>Ð!>r    )ÚNotImplementedr½   ©r   r   Úmethodr³   Úkwargss        r   Ú__array_ufunc__zNEP13Array.__array_ufunc__N  s?   € Ø�ZÒÐÝ!Ð!å˜%˜%Ð!>Ð!>¸Ð!>Ñ!>Ô!>ÐIÀ&ÐIÐIÑJÔJÐJr    N)r/   rL   rM   r1   rÂ   rÅ   rÇ   rÔ   rN   r    r   r½   r½   C  s[   € € € € € Ø>Ð>ðð ð ðð ð ð#ð #ð #ðKð Kð Kð Kð Kr    r½   c                   óP   — 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dS )Ú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                 ó   — || _         d S r   r¿   rÁ   s     r   rÂ   zFakeDaskArray.__init__[  rÃ   r    c                 óª   — |dk    rt           S t          j        t          j        |¦  «        ¦  «        }d„ |D ¦   «         }t	           ||i |¤Ž¦  «        S )NrÉ   c                 óJ   — g | ] }t          |t          ¦  «        r|j        n|‘Œ!S rN   )Ú
isinstancerÖ   rÀ   rÌ   s     r   rÏ   z1FakeDaskArray.__array_ufunc__.<locals>.<listcomp>d  s-   € ÐMÐMÐMÀ1�: a­Ñ7Ô7Ð>�”�¸QÐMÐMÐMr    )rÐ   ÚpickleÚloadsÚdumpsrÖ   rÑ   s        r   rÔ   zFakeDaskArray.__array_ufunc__^  s^   € Ø�ZÒÐÝ!Ð!õ ”�Vœ\¨%Ñ0Ô0Ñ1Ô1ˆØMÐMÈÐMÑMÔMˆÝ˜U˜U DÐ3¨FÐ3Ð3Ñ4Ô4Ð4r    c                 ó    — t          d¦  «        ‚)Nz#called potentially expensive method)ÚAssertionError)r   r³   rÓ   s      r   Ú_dask_methodzFakeDaskArray._dask_methodg  s   € ÝÐBÑCÔ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  s†   € € € € € ðð ð
ð ð ð5ð 5ð 5ðDð Dð Dð €IØ!€NØ €MØ$ÐØ'ÐØ'ÐØ%ÐØ$ÐØ€GØ€GØ€I€I€Ir    rÖ   c                   ó   — e Zd Zd„ ZdS )ÚTestNEP13WithoutSignaturec                 ó   — t          d¬¦  «        d„ ¦   «         }t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        }t          j        g d¢t          j        ¬¦  «        } ||||¦  «        }|                      |t          j        ¦  «         |                      |                     ¦   «         g d¢¦  «          |t          |¦  «        ||¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «          ||t          |¦  «        |¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «          |||t          |¦  «        ¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «         t          j        g d	¢t          j	        ¬¦  «        }t          j        g d
¢t          j	        ¬¦  «        }t          j        g d¢t          j	        ¬¦  «        } ||||¦  «        }|                      |t          j        ¦  «         |                      |                     ¦   «         g d¢¦  «          |t          |¦  «        ||¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «          ||t          |¦  «        |¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «          |||t          |¦  «        ¦  «        }|                      |t          ¦  «         |                      |                     ¦   «         g d¢¦  «         d S )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  sg  € õ 
˜DÐ	!Ñ	!Ô	!ð	1ð 	1ñ 
"Ô	!ð	1õ ŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆÝŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆÝŒH�Y�Y�Y¥b¤hÐ/Ñ/Ô/ˆà�˜1˜a Ñ#Ô#ˆØ×Ò˜f¥b¤jÑ1Ô1Ð1Ø×Ò˜Ÿš™œ¨/¨/¨/Ñ:Ô:Ð:à�)�J q™MœM¨1¨aÑ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;à�)˜A�z¨!™}œ}¨aÑ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;à�)˜A˜q¥*¨Q¡-¤-Ñ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)¨?¨?¨?Ñ;Ô;Ð;õ ŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆÝŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆÝŒH�_�_�_­B¬JÐ7Ñ7Ô7ˆà�˜1˜a Ñ#Ô#ˆØ×Ò˜f¥b¤jÑ1Ô1Ð1Ø×Ò˜Ÿš™œÐ*?Ð*?Ð*?Ñ@Ô@Ð@à�)�J q™MœM¨1¨aÑ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAà�)˜A�z¨!™}œ}¨aÑ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAà�)˜A˜q¥*¨Q¡-¤-Ñ0Ô0ˆØ×Ò˜g¥zÑ2Ô2Ð2Ø×Ò˜ŸšÑ)Ô)Ð+@Ð+@Ð+@ÑAÔAÐAÐAÐAr    N)r/   rL   rM   r  rN   r    r   rì   rì   w  s(   € € € € € ð/Bð /Bð /Bð /Bð /Br    rì   c                   ó   — e Zd ZdZd„ ZdS )Ú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 ]f}|                      |¦  «        5   ||¦  «        }t          |t           ¦  «        sJ ‚t          |j	        |¦  «         d d d ¦  «         n# 1 swxY w Y   Œgd S )
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 …<   d S r  rN   )rÎ   r›   s     r   Údouble_guvectorizez4TestDask.test_dask_array.<locals>.double_guvectorize½  s   € à˜‘UˆC���‰FˆFˆ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±  sk  € Ý�"œ) A­R¬ZÐ8Ñ8Ô8Ñ9Ô9ˆÝ”˜1¥B¤JÐ/Ñ/Ô/°!Ñ3ˆå	�H�:Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ 
‰Œð	ð 	ñ 
Œð	õ 
�j�\ 8Ñ	,Ô	,ð	ð 	ñ 
-Ô	,ð	ð $Ø$Øð
ð 	4ð 	4ˆDð
 —’˜dÑ#Ô#ð 4ð 4Ø�D˜‘G”G�Ý! !¥]Ñ3Ô3Ð3Ð3Ð3Ý" 1¤7¨FÑ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4øð	4ð 	4s   Â78C;Ã;C?	ÄC?	N)r/   rL   rM   r1   r  rN   r    r   r  r  «  s-   € € € € € ðð ð
4ð 4ð 4ð 4ð 4r    r  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestVectorizeDecorJitDisabledc                 ó@   — t           j        | _        dt           _        d S rR   rS   rV   s    r   rW   z#TestVectorizeDecorJitDisabled.setUpÎ  rX   r    c                 ó(   — | j         t          _        d S 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Ð 5Ð 5Ð 5Ð 5Ð 5Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð ðO*ð O*ð O*ð O*ð O*˜ñ O*ô O*ð O*ðd2ð 2ð 2ð 2ð 2Ð#4ñ 2ô 2ð 2ð+*ð +*ð +*ð +*ð +*˜ñ +*ô +*ð +*ð\2ð 2ð 2ð 2ð 2Ð$6ñ 2ô 2ð 2ð\<ð \<ð \<ð \<ð \<˜ñ \<ô \<ð \<ð@Kð Kð Kð Kð Kñ Kô Kð Kð$ð ð ð ð ñ ô ð ðD1Bð 1Bð 1Bð 1Bð 1B ñ 1Bô 1Bð 1Bðh4ð 4ð 4ð 4ð 4ˆxÔ ñ 4ô 4ð 4ðB2ð 2ð 2ð 2ð 2Ð$6ñ 2ô 2ð 2ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr    