§
    2@ÄjÆG  ã                   óV  — d Z ddlZddlmZ ddlZddlZddlm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  G d	„ d
e¦  «        Z G d„ de¦  «        Z G d„ dee¦  «        Z G d„ de¦  «        Zg d¢Zg d¢Zg d¢Zg d¢Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )z1
Test helper functions from numba.numpy_support.
é    N)Úproduct)Útypes)ÚNumbaNotImplementedError)ÚTestCase)ÚShakeÚRequestError)Únumpy_supportc                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestFromDtypec           	      ót  ‡ ‡— t           j        Šˆˆ fd„} |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |d	t          j        ¦  «          |d
t          j        ¦  «          |dt          j        ¦  «          |dt          j	        ¦  «          |dt          j	        ¦  «          |dt          j
        ¦  «          |dt          j
        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «          |dt          j        ¦  «         dD ]F}‰                       ‰t%          j        |¦  «        ¦  «        t)          t          |¦  «        ¦  «         ŒGt*          j        dk    rdnd}dD ]3}‰                      t0          ‰t%          j        ||z   ¦  «        ¦  «         Œ4dS ) zX
        Test from_dtype() and as_dtype() with the various scalar number types.
        c                 ó&  •— t          j        | ¦  «        }‰                      ‰|¦  «        |¦  «         ‰                      ‰t          j        d| z   ¦  «        ¦  «        |¦  «         ‰                     |t	          j        |¦  «        ¦  «         d S )Nú=)ÚnpÚdtypeÚassertIsÚassertEqualr	   Úas_dtype)ÚtypecharÚ
numba_typer   ÚfÚselfs      €€úOC:\Projects\Historical\venv\Lib\site-packages\numba/tests/test_numpy_support.pyÚcheckz.TestFromDtype.test_number_types.<locals>.check   s�   ø€ å”H˜XÑ&Ô&ˆEØ�MŠM˜!˜!˜E™(œ( JÑ/Ô/Ð/Ø�MŠM˜!˜!�BœH S¨8¡^Ñ4Ô4Ñ5Ô5°zÑBÔBÐBØ×Ò˜U¥MÔ$:¸:Ñ$FÔ$FÑGÔGÐGÐGÐGó    ú?r   Úf4ÚdÚf8ÚFÚc8ÚDÚc16ÚOÚbÚi1ÚBÚu1ÚhÚi2ÚHÚu2ÚiÚi4ÚIÚu4ÚqÚQ)
Úint8Úuint8Úint16Úuint16Úint32Úuint32Úint64Úuint64ÚintpÚuintpÚlittleú>ú<ÚhHiIlLqQfdFDN)r	   Ú
from_dtyper   Úbool_Úfloat32Úfloat64Ú	complex64Ú
complex128Úpyobjectr2   r3   r4   r5   r6   r7   r8   r9   r   r   r   ÚgetattrÚsysÚ	byteorderÚassertRaisesr   )r   r   ÚnameÚforeign_alignÚletterr   s   `    @r   Útest_number_typeszTestFromDtype.test_number_types   sÈ  øø€ õ Ô$ˆð	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	ˆˆc•5”;ÑÔÐØˆˆc•5”=Ñ!Ô!Ð!Øˆˆd•E”MÑ"Ô"Ð"Øˆˆc•5”=Ñ!Ô!Ð!Øˆˆd•E”MÑ"Ô"Ð"àˆˆc•5”?Ñ#Ô#Ð#Øˆˆd•E”OÑ$Ô$Ð$Øˆˆc•5Ô#Ñ$Ô$Ð$Øˆˆe•UÔ%Ñ&Ô&Ð&àˆˆc•5”>Ñ"Ô"Ð"àˆˆc•5”:ÑÔÐØˆˆd•E”JÑÔÐØˆˆc•5”;ÑÔÐØˆˆd•E”KÑ Ô Ð àˆˆc•5”;ÑÔÐØˆˆd•E”KÑ Ô Ð Øˆˆc•5”<Ñ Ô Ð Øˆˆd•E”LÑ!Ô!Ð!àˆˆc•5”;ÑÔÐØˆˆd•E”KÑ Ô Ð Øˆˆc•5”<Ñ Ô Ð Øˆˆd•E”LÑ!Ô!Ð!àˆˆc•5”;ÑÔÐØˆˆc•5”<Ñ Ô Ð ð9ð 	Cð 	CˆDà�MŠM˜!˜!�BœH T™NœNÑ+Ô+­WµU¸DÑ-AÔ-AÑBÔBÐBÐBõ  #œ}°Ò8Ð8˜˜¸cˆØ$ð 	@ð 	@ˆFØ×ÒÕ6¸Ý œh }°vÑ'=Ñ>Ô>ñ@ô @ð @ð @ð	@ð 	@r   c                 óæ   ‡ — ˆ fd„} |dt          j        d¦  «        ¦  «         t          j        dk     r |dt          j        d¦  «        ¦  «          |dt          j        d¦  «        ¦  «         d	S )
zS
        Test from_dtype() and as_dtype() with the character string types.
        c                 óÐ   •— t          j        | ¦  «        }‰                     t          j        |¦  «        |¦  «         ‰                     |t          j        |¦  «        ¦  «         d S ©N)r   r   r   r	   r@   r   )Ú
typestringr   r   r   s      €r   r   z.TestFromDtype.test_string_types.<locals>.checkO   sZ   ø€ å”H˜ZÑ(Ô(ˆEØ×Ò�]Ô5°eÑ<Ô<¸jÑIÔIÐIØ×Ò˜U¥MÔ$:¸:Ñ$FÔ$FÑGÔGÐGÐGÐGr   ÚS10é
   )é   é   Úa11é   ÚU12é   N)r   ÚCharSeqr	   Únumpy_versionÚUnicodeCharSeq)r   r   s   ` r   Útest_string_typeszTestFromDtype.test_string_typesK   sŒ   ø€ ð	Hð 	Hð 	Hð 	Hð 	Hð 	ˆˆe•U”] 2Ñ&Ô&Ñ'Ô'Ð'ÝÔ&¨Ò/Ð/ØˆE�%�œ rÑ*Ô*Ñ+Ô+Ð+Øˆˆe•UÔ)¨"Ñ-Ô-Ñ.Ô.Ð.Ð.Ð.r   c                 ób   ‡ — ˆ fd„} |t          j        |¦  «         |d¦  «        d¦  «         d S )Nc                 ó2  •— t          j        | ¦  «        }‰                     ||¦  «         ‰                     |j        |¦  «         ‰                     t          j        |¦  «        | ¦  «         ‰                     t          j        |¦  «        | ¦  «         d S rQ   )r	   r@   r   Ú	unit_coder   )r   r   ÚcodeÚtpr   s       €r   r   z1TestFromDtype.check_datetime_types.<locals>.check[   s‰   ø€ ÝÔ)¨%Ñ0Ô0ˆBØ×Ò˜R Ñ,Ô,Ð,Ø×Ò˜Rœ\¨4Ñ0Ô0Ð0Ø×Ò�]Ô3°JÑ?Ô?ÀÑGÔGÐGØ×Ò�]Ô3°BÑ7Ô7¸Ñ?Ô?Ð?Ð?Ð?r   Ú é   )r   r   )r   rM   Únb_classr   s   `   r   Úcheck_datetime_typesz"TestFromDtype.check_datetime_typesZ   sO   ø€ ð	@ð 	@ð 	@ð 	@ð 	@ð 	ˆ�bŒh�vÑÔ  ¨¡¤¨bÑ1Ô1Ð1Ð1Ð1r   c                 óF   — |                       dt          j        ¦  «         dS )zK
        Test from_dtype() and as_dtype() with the datetime types.
        ÚMN)rg   Ú	npy_typesÚ
NPDatetime©r   s    r   Útest_datetime_typesz!TestFromDtype.test_datetime_typese   s#   € ð 	×!Ò! #¥yÔ';Ñ<Ô<Ð<Ð<Ð<r   c                 óF   — |                       dt          j        ¦  «         dS )zL
        Test from_dtype() and as_dtype() with the timedelta types.
        ÚmN)rg   rj   ÚNPTimedeltarl   s    r   Útest_timedelta_typesz"TestFromDtype.test_timedelta_typesk   s#   € ð 	×!Ò! #¥yÔ'<Ñ=Ô=Ð=Ð=Ð=r   c                 ó6  ‡ — ˆ fd„}t          j        dt           j        fdt           j        fg¦  «        } ||t          j        dd d ft          j        dd d fdœdd¬	¦  «         t          j        dt           j        fdt           j        fgd
¬¦  «        } ||t          j        dd d ft          j        dd d fdœdd
¬	¦  «         t          j        dt           j        fdg¦  «        } ||t          j        dd d ft	          j        d¦  «        dd d fdœdd¬	¦  «         d S )Nc                 óH  •— t          j        | ¦  «        }‰                     |t          j        ¦  «         ‰                     |j        | ¦  «         ‰                     |j        |¦  «         ‰                     |j        |¦  «         ‰                     |j	        |¦  «         d S rQ   )
r	   r@   ÚassertIsInstancer   ÚRecordr   r   ÚfieldsÚsizeÚaligned)r   rv   rw   rx   rc   r   s        €r   r   z.TestFromDtype.test_struct_types.<locals>.checkr   s‘   ø€ ÝÔ)¨%Ñ0Ô0ˆBØ×!Ò! "¥e¤lÑ3Ô3Ð3à×Ò˜RœX uÑ-Ô-Ð-Ø×Ò˜RœY¨Ñ/Ô/Ð/Ø×Ò˜RœW dÑ+Ô+Ð+Ø×Ò˜RœZ¨Ñ1Ô1Ð1Ð1Ð1r   Úar$   r   rU   )ry   r$   é   F)rv   rw   rx   T)Úaligné   é   ro   )ÚnÚS5rV   )ro   r~   é	   )r   r   r4   r6   r   r[   )r   r   r   s   `  r   Útest_struct_typeszTestFromDtype.test_struct_typesq   se  ø€ ð	2ð 	2ð 	2ð 	2ð 	2õ ”˜3¥¤˜/¨Cµ´¨?Ð;Ñ<Ô<ˆØˆˆeÝ!œK¨¨D°$Ð7Ý!œK¨¨D°$Ð7ð9ð 9à˜eð	%ñ 	%ô 	%ð 	%õ
 ”˜3¥¤˜/¨Cµ´¨?Ð;À4ÐHÑHÔHˆØˆˆeÝ!œK¨¨D°$Ð7Ý!œK¨¨D°$Ð7ð9ð 9à˜dð	$ñ 	$ô 	$ð 	$õ
 ”˜3¥¤˜/¨;Ð7Ñ8Ô8ˆØˆˆeÝ!œK¨¨D°$Ð7Ý!œM¨!Ñ,Ô,¨a°°tÐ<ð>ð >à˜eð	%ñ 	%ô 	%ð 	%ð 	%ð 	%r   c                 ó>  ‡ — ˆ fd„}t           j        t           j        t           j        t           j        g}t
          t          g}t          ||¦  «        D ]\  }} |||t          j	        ¦  «         Œt          ||¦  «        D ]\  }} |||t          j
        ¦  «         Œd S )Nc                 óÄ   •— t          j        | ¦  «        }t          j        |¦  «        } |||¦  «        }t          j        |¦  «        }‰                     ||¦  «         d S rQ   )r   r   r	   r@   r   r   )Ú	base_instÚenum_defÚ
type_classÚnp_dtÚnb_tyÚinstÚ	recoveredr   s          €r   r   z+TestFromDtype.test_enum_type.<locals>.check�   s_   ø€ Ý”H˜YÑ'Ô'ˆEÝ!Ô,¨UÑ3Ô3ˆEØ�:˜h¨Ñ.Ô.ˆDÝ%Ô.¨tÑ4Ô4ˆIØ×Ò˜U IÑ.Ô.Ð.Ð.Ð.r   )r   rC   r6   rE   rA   r   r   r   r   Ú
EnumMemberÚIntEnumMember)r   r   ÚdtsÚenumsÚdtÚenums   `     r   Útest_enum_typezTestFromDtype.test_enum_type�   s¶   ø€ ð	/ð 	/ð 	/ð 	/ð 	/õ Œz�2œ8¥R¤]µB´HÐ=ˆÝ�Ð%ˆå  UÑ+Ô+ð 	.ð 	.‰HˆB�ØˆE�"�d�EÔ,Ñ-Ô-Ð-Ð-å  UÑ+Ô+ð 	1ð 	1‰HˆB�ØˆE�"�d�EÔ/Ñ0Ô0Ð0Ð0ð	1ð 	1r   N)
Ú__name__Ú
__module__Ú__qualname__rN   r^   rg   rm   rq   r�   r‘   © r   r   r   r      s�   € € € € € ð3@ð 3@ð 3@ðj/ð /ð /ð	2ð 	2ð 	2ð=ð =ð =ð>ð >ð >ð%ð %ð %ð81ð 1ð 1ð 1ð 1r   r   c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚValueTypingTestBasezL
    Common tests for the typing of values.  Also used by test_special.
    c                 ó8  — |}|                        |d¦  «        t          j        t          j        f¦  «         |                        |d¦  «        t          j        t          j        f¦  «         |                        |d¦  «        t          j        t          j        f¦  «         |                       |d¦  «        t          j        ¦  «         |                       |d¦  «        t          j        ¦  «         |                       |d¦  «        t          j        ¦  «         |                       |d¦  «        t          j        ¦  «         dD ]Q} t          t          |¦  «        ¦   «         }|                       ||¦  «        t          t          |¦  «        ¦  «         ŒRd	S )
z;
        Test *func*() with scalar numeric values.
        é   iÿÿÿi   €g      ð?y              ð?TF)r2   r3   r4   r5   r6   r7   r8   r9   ÚintcÚuintcr:   r;   rB   rC   rD   rE   rA   N)
ÚassertInr   r6   r8   r   rC   rE   rA   rG   r   )r   Úfuncr   rK   Úvals        r   Úcheck_number_valuesz'ValueTypingTestBase.check_number_values¥   sN  € ð ˆà�Š�a�a˜‘d”d�Uœ[­%¬+Ð6Ñ7Ô7Ð7Ø�Š�a�a˜	‘l”l¥U¤[µ%´+Ð$>Ñ?Ô?Ð?Ø�Š�a�a˜‘i”i¥%¤+­u¬{Ð!;Ñ<Ô<Ð<Ø�Š�a�a˜‘f”f�eœmÑ,Ô,Ð,Ø�Š�a�a˜‘g”g�uÔ/Ñ0Ô0Ð0Ø�Š�a�a˜‘g”g�uœ{Ñ+Ô+Ð+Ø�Š�a�a˜‘h”h¥¤Ñ,Ô,Ð,ðð 	8ð 	8ˆDð $•'�"˜dÑ#Ô#Ñ%Ô%ˆCØ�MŠM˜!˜!˜C™&œ&¥'­%°Ñ"6Ô"6Ñ7Ô7Ð7Ð7ð	8ð 	8r   c                 óœ   — |}dD ]F}|r |d|¦  «        }n |d¦  «        } ||¦  «        }|                       | ||¦  «        ¦  «         ŒGd S )N)rd   ÚYri   r!   r(   ro   ÚsÚmsÚusÚnsÚpsÚfsÚasé   ÚNat)r   )r   r�   Únp_typeÚnb_typer   ÚunitÚtrc   s           r   Ú_base_check_datetime_valuesz/ValueTypingTestBase._base_check_datetime_valuesº   s|   € Øˆð
ð 	0ð 	0ˆDð ð #Ø�G˜A˜tÑ$Ô$��ð �G˜E‘N”N�Ø��1‘”ˆBà×Ò˜R  ¨¡¤Ñ/Ô/Ð/Ð/ð	0ð 	0r   c                 ó\   — |                       |t          j        t          j        ¦  «         dS )z:
        Test *func*() with np.datetime64 values.
        N)r¯   r   Ú
datetime64rj   rk   ©r   r�   s     r   Úcheck_datetime_valuesz)ValueTypingTestBase.check_datetime_valuesÉ   s2   € ð 	×(Ò(¨­r¬}Ý)2Ô)=ñ	?ô 	?ð 	?ð 	?ð 	?r   c                 ó\   — |                       |t          j        t          j        ¦  «         dS )z;
        Test *func*() with np.timedelta64 values.
        N)r¯   r   Útimedelta64rj   rp   r²   s     r   Úcheck_timedelta_valuesz*ValueTypingTestBase.check_timedelta_valuesÐ   s7   € ð 	×(Ò(¨­r¬~Ý)2Ô)>ñ	@ô 	@ð 	@ð 	@ð 	@r   N)r’   r“   r”   Ú__doc__rŸ   r¯   r³   r¶   r•   r   r   r—   r—       s_   € € € € € ðð ð8ð 8ð 8ð*0ð 0ð 0ð?ð ?ð ?ð@ð @ð @ð @ð @r   r—   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestArrayScalarsc                 óD   — |                       t          j        ¦  «         dS )zH
        Test map_arrayscalar_type() with scalar number values.
        N)rŸ   r	   Úmap_arrayscalar_typerl   s    r   Útest_number_valuesz#TestArrayScalars.test_number_valuesÚ   s!   € ð 	× Ò ¥Ô!CÑDÔDÐDÐDÐDr   c                 óî   — t           j        }|                      |¦  «         t          j        dd¦  «        }|                      t          ¦  «        5   ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zH
        Test map_arrayscalar_type() with np.datetime64 values.
        Ú2014Ú10YN)r	   r»   r³   r   r±   rJ   r   ©r   r   r®   s      r   Útest_datetime_valuesz%TestArrayScalars.test_datetime_valuesà   s·   € õ Ô.ˆØ×"Ò" 1Ñ%Ô%Ð%åŒM˜& %Ñ(Ô(ˆØ×ÒÕ7Ñ8Ô8ð 	ð 	ØˆAˆa‰DŒDˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   ÁA*Á*A.Á1A.c                 óî   — t           j        }|                      |¦  «         t          j        dd¦  «        }|                      t          ¦  «        5   ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zI
        Test map_arrayscalar_type() with np.timedelta64 values.
        rT   r¿   N)r	   r»   r¶   r   rµ   rJ   r   rÀ   s      r   Útest_timedelta_valuesz&TestArrayScalars.test_timedelta_valuesë   s·   € õ Ô.ˆØ×#Ò# AÑ&Ô&Ð&åŒN˜2˜uÑ%Ô%ˆØ×ÒÕ7Ñ8Ô8ð 	ð 	ØˆAˆa‰DŒDˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rÂ   N)r’   r“   r”   r¼   rÁ   rÄ   r•   r   r   r¹   r¹   Ø   sD   € € € € € ðEð Eð Eð	ð 	ð 	ð	ð 	ð 	ð 	ð 	r   r¹   c                   ó   — e Zd ZdZdZ d„ ZdS )Ú	FakeUFunc)ÚninÚnoutr   Úntypesz
fake ufuncc                 óŠ  — || _         | j         d                              d¦  «        \  }}t          |¦  «        | _        t          |¦  «        | _        t          |¦  «        | _        |D ]Y}| j         d                              d¦  «        \  }}t          |¦  «        | j        k    sJ ‚t          |¦  «        | j        k    sJ ‚ŒZd S )Nr   z->)r   ÚsplitÚlenrÇ   rÈ   rÉ   )r   r   Úin_Úoutrc   s        r   Ú__init__zFakeUFunc.__init__û   s¸   € ØˆŒ
Ø”:˜a”=×&Ò& tÑ,Ô,‰ˆˆSÝ�s‘8”8ˆŒÝ˜‘H”HˆŒ	Ý˜%‘j”jˆŒØð 	)ð 	)ˆBØ”z !”}×*Ò*¨4Ñ0Ô0‰HˆC�Ý�s‘8”8˜tœxÒ'Ð'Ð'Ð'Ý�s‘8”8˜tœyÒ(Ð(Ð(Ð(Ð(ð	)ð 	)r   N)r’   r“   r”   Ú	__slots__rÏ   r•   r   r   rÆ   rÆ   ÷   s-   € € € € € Ø2€IØ€Hð	)ð 	)ð 	)ð 	)ð 	)r   rÆ   )ú??->?úbb->búBB->Búhh->húHH->Húii->iúII->Iúll->lúLL->Lúqq->qúQQ->Qúee->eúff->fúdd->dúgg->gúFF->FúDD->DúGG->GúMm->Múmm->múmM->MúOO->O)rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   râ   úmq->mzqm->múmd->múdm->mræ   )ze->?zf->?úd->?zg->?zF->?zD->?zG->?)ze->ezf->fúd->dzg->gzF->FzD->DzG->GzO->Oc                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú
TestUFuncsz
    Test ufunc helpers.
    c                 óØ  ‡ ‡	‡
— t           j        Š
t          t          ¦  «        }t          t          ¦  «        }t          t
          ¦  «        }t          t          ¦  «        }dˆ
ˆ fd„	Š	dˆ	ˆ fd„	}ˆ
ˆ fd„} ||t          j        t          j        fd¦  «          ||t          j	        t          j	        fd¦  «          ||t          j
        t          j
        fd¦  «          ||t          j        t          j        fd¦  «          ||t          j        t          j        fd	¦  «          ||t          j        t          j        fd
¦  «          ||t          j        t          j        fd¦  «          ||t          j        t          j        fd¦  «          ||t          j        t          j        fd¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t          j        fdt#          j        d¦  «        f¬¦  «          ||t          j        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ‰	|t          j        t          j	        fd¦  «          ‰	|t          j
        t          j        fd¦  «          ‰	|t          j        t          j        fd¦  «          ‰	|t          j        t          j        fd¦  «          ‰	|t          j        t          j        fd¦  «         t          j        t          j        t          j        t          j        g}|D ]f} ‰	|t          j        |fd
¦  «          ‰	|t          j        |fd¦  «          ‰	|t          j        |fd¦  «          ‰	|t          j        |fd¦  «         Œg|D ]} ‰	||fd¦  «          ‰	||fd¦  «         Œ ‰	|t#          j        d¦  «        t          j        fdt#          j        d¦  «        f¬¦  «          ‰	|t#          j        d¦  «        t          j        fdt#          j        d¦  «        f¬¦  «          ‰	|t#          j        d¦  «        t          j        fdt#          j        d¦  «        f¬¦  «          ‰	|t          j        t#          j        d¦  «        fdt#          j        d¦  «        f¬¦  «          ||t#          j        d¦  «        t#          j        d¦  «        f¦  «          ||t#          j        d¦  «        t          j        f¦  «         d S )Nr•   c                 óä  •—  ‰| ||z   ¦  «        }‰                      |¦  «         t          |t          ¦  «        r|f}‰                     |j        |d|›d|›d|›d|j        ›�¦  «         ‰                     t          |j        ¦  «        t          |j        ¦  «        ¦  «         ‰                     t          |j	        ¦  «        t          |j
        ¦  «        ¦  «         |s8 ‰| t          |¦  «        |j
        z   ¦  «        }‰                     ||¦  «         n(‰                     |j
        t          |¦  «        ¦  «          ‰| |j        |j
        z   ¦  «        }‰                     ||¦  «         |S )z¡
            Check that ufunc_find_matching_loop() finds one of the given
            *sigs* for *ufunc*, *input_types* and optional *output_types*.
            zinputs=z and outputs=z should have selected one of z, got )Ú
assertTrueÚ
isinstanceÚstrrœ   Ú	ufunc_sigr   rÌ   Únumpy_inputsÚinputsÚnumpy_outputsÚoutputsÚlist)	ÚufuncÚinput_typesÚsigsÚoutput_typesÚloopÚloop_explicitÚloop_rtr   r   s	          €€r   r   z7TestUFuncs.test_ufunc_find_matching_loop.<locals>.check#  sw  ø€ ð
 �1�U˜K¨,Ñ6Ñ7Ô7ˆDØ�OŠO˜DÑ!Ô!Ð!Ý˜$¥Ñ$Ô$ð Ø�w�Ø�MŠM˜$œ.¨$¨$ð )˜[˜[¨,¨,¨,¸¸¸¸d¼n¸nðNñOô Oð Oð ×Ò�S Ô!2Ñ3Ô3µS¸¼Ñ5EÔ5EÑFÔFÐFØ×Ò�S Ô!3Ñ4Ô4µc¸$¼,Ñ6GÔ6GÑHÔHÐHØð Cà !  %­¨kÑ):Ô):¸T¼\Ñ)IÑ JÔ J�Ø× Ò  °Ñ5Ô5Ð5Ð5à× Ò  ¤­t°LÑ/AÔ/AÑBÔBÐBà�a˜˜tœ{¨T¬\Ñ9Ñ:Ô:ˆGØ×Ò˜W dÑ+Ô+Ð+ØˆKr   c                 ót   •—  ‰| |||¦  «        }‰                      |j        t          |¦  «        ¦  «         dS )zV
            Like check(), but also ensure no casting of inputs occurred.
            N)r   rõ   rø   )rù   rú   rû   rü   rý   r   r   s        €€r   Úcheck_exactz=TestUFuncs.test_ufunc_find_matching_loop.<locals>.check_exact=  s@   ø€ ð �5˜ ¨T°<Ñ@Ô@ˆDØ×Ò˜Tœ[­$¨{Ñ*;Ô*;Ñ<Ô<Ð<Ð<Ð<r   c                 óL   •—  ‰| |¦  «        }‰                      |d ¦  «         d S rQ   )r   )rù   rú   rý   r   r   s      €€r   Úcheck_no_matchz@TestUFuncs.test_ufunc_find_matching_loop.<locals>.check_no_matchD  s.   ø€ Ø�1�U˜KÑ(Ô(ˆDØ�MŠM˜$ Ñ%Ô%Ð%Ð%Ð%r   rÑ   rÒ   rÓ   )rØ   rÚ   )rÙ   rÛ   rÝ   rÞ   rà   rá   r¢   rä   )rü   r£   rå   rã   rd   r¥   rç   ré   rÖ   rë   rê   rè   )r•   )r	   Úufunc_find_matching_looprÆ   Ú
_add_typesÚ
_mul_typesÚ_isnan_typesÚ_sqrt_typesr   rA   r2   r3   r8   r9   rB   rC   rD   rE   rj   rp   rk   r4   r5   r6   r7   )r   Únp_addÚnp_mulÚnp_isnanÚnp_sqrtr  r  Ú	int_typesÚinttyr   r   s   `        @@r   Útest_ufunc_find_matching_loopz(TestUFuncs.test_ufunc_find_matching_loop  sr  øøø€ ÝÔ2ˆÝ�:Ñ&Ô&ˆÝ�:Ñ&Ô&ˆÝ�\Ñ*Ô*ˆÝ�KÑ(Ô(ˆð	ð 	ð 	ð 	ð 	ð 	ð 	ð4	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð
 	ˆ�F�Uœ[­%¬+Ð6¸Ñ@Ô@Ð@Øˆ�F�UœZ­¬Ð4°gÑ>Ô>Ð>Øˆ�F�Uœ[­%¬+Ð6¸Ñ@Ô@Ð@Øˆ�F�Uœ[­%¬+Ð6Ð8JÑKÔKÐKØˆ�F�Uœ\­5¬<Ð8Ð:LÑMÔMÐMØˆ�F�Uœ]­E¬MÐ:¸GÑDÔDÐDØˆ�F�Uœ]­E¬MÐ:¸GÑDÔDÐDØˆ�F�Uœ_­e¬oÐ>ÀÑHÔHÐHØˆ�F�UÔ-­uÔ/?Ð@À'ÑJÔJÐJð 	ˆ�F�YÔ2°3Ñ7Ô7Ý&Ô2°3Ñ7Ô7ð9à­9Ô+@ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Ið 	ˆ�F�YÔ2°4Ñ8Ô8Ý&Ô1°#Ñ6Ô6ð8à­9Ô+?ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Ið 	ˆ�F�YÔ1°#Ñ6Ô6Ý&Ô2°3Ñ7Ô7ð9à­9Ô+?ÀÑ+DÔ+DÐ*Fð	Hñ 	Hô 	Hð 	Hð 	ˆ�F�YÔ1°#Ñ6Ô6Ý&Ô2°2Ñ6Ô6ð8à­9Ô+?ÀÑ+DÔ+DÐ*Fð	Hñ 	Hô 	Hð 	Hð 	ˆ�F�YÔ1°$Ñ7Ô7Ý&Ô2°2Ñ6Ô6ð8à­9Ô+?ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Ið 	ˆ�F�YÔ2°2Ñ6Ô6Ý&Ô1°#Ñ6Ô6ð8à­9Ô+?ÀÑ+DÔ+DÐ*Fð	Hñ 	Hô 	Hð 	Hð 	ˆ�F�YÔ2°2Ñ6Ô6Ý&Ô1°$Ñ7Ô7ð9à­9Ô+?ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Ið 	ˆ�F�YÔ2°3Ñ7Ô7½¼ÐEØ­9Ô+@ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Iàˆ�F�Uœ]­IÔ,AÀ#Ñ,FÔ,FÐGØ­9Ô+@ÀÑ+EÔ+EÐ*Gð	Iñ 	Iô 	Ið 	Ið 	ˆˆf•u”{¥E¤JÐ/°Ñ9Ô9Ð9Øˆˆf•u”{¥E¤KÐ0°'Ñ:Ô:Ð:Øˆˆf•u”{¥E¤LÐ1°7Ñ;Ô;Ð;Øˆˆf•u”­¬Ð6¸Ñ@Ô@Ð@Øˆˆf•u”}¥e¤oÐ6¸Ñ@Ô@Ð@õ ”[¥%¤,µ´½U¼\ÐJˆ	Øð 	>ð 	>ˆEØˆE�&�5œ=¨%Ð0°'Ñ:Ô:Ð:ØˆE�&�5œ=¨%Ð0°'Ñ:Ô:Ð:ØˆE�&�5œ?¨EÐ2°GÑ<Ô<Ð<ØˆE�&�5Ô+¨UÐ3°WÑ=Ô=Ð=Ð=ð ð 	.ð 	.ˆEØˆE�'˜E˜8 VÑ,Ô,Ð,ØˆE�(˜U˜H fÑ-Ô-Ð-Ð-ð 	ˆˆf•yÔ,¨SÑ1Ô1µ5´;Ð?Ø¥YÔ%:¸3Ñ%?Ô%?Ð$Að	Cñ 	Cô 	Cð 	Càˆˆf•yÔ,¨SÑ1Ô1µ5´<Ð@Ø¥YÔ%:¸3Ñ%?Ô%?Ð$Að	Cñ 	Cô 	Cð 	Càˆˆf•yÔ,¨SÑ1Ô1µ5´=ÐAØ¥YÔ%:¸3Ñ%?Ô%?Ð$Að	Cñ 	Cô 	Cð 	Càˆˆf•u”}¥iÔ&;¸CÑ&@Ô&@ÐAØ¥YÔ%:¸3Ñ%?Ô%?Ð$Að	Cñ 	Cô 	Cð 	Cð 	ˆ�v¥	Ô 4°SÑ 9Ô 9Ý )Ô 4°SÑ 9Ô 9ð ;ñ 	<ô 	<ð 	<ð 	ˆ�v¥	Ô 5°cÑ :Ô :½E¼KÐHÑIÔIÐIÐIÐIr   c           	      ó6  ‡ — ˆ fd„}t          j        d¦  «        } ||¦  «          ||                     d¦  «        ¦  «          ||                     d¦  «        j        ¦  «          ||                     d¦  «        d d d…         ¦  «          ||                     d¦  «        ¦  «          ||                     d¦  «        j        ¦  «          ||                     d¦  «        d d …d d d…f         ¦  «          ||                     d¦  «        j        d d …d d d…f         ¦  «          ||                     d¦  «        d d d…         ¦  «          ||                     d¦  «        j        d d …d d …d d d…f         ¦  «          ||                     d¦  «        d d d…d d d…f         ¦  «          ||                     d¦  «        j        d d …d d d…d d d…f         ¦  «          ||                     d¦  «        d d d…d d d…d d d…f         ¦  «          ||                     d¦  «        j        d d d…d d d…d d d…f         ¦  «          ||                     d¦  «        d d d…d d d…d d d…f         ¦  «          ||                     d¦  «        j        d d …d d d…d d d…d d d…f         ¦  «          ||                     d¦  «        d d d	…d d d…d d d…f         ¦  «          ||                     d¦  «        j        d d …d d d…d d d…d d d	…f         ¦  «         d S )
Nc                 ó   •— | j         }| j        }| j        j        }t	          j        |||¦  «        }t	          j        |||¦  «        }| j        d         }| j        d         }‰                     ||¦  «         ‰                     ||¦  «         d S )NÚC_CONTIGUOUSÚF_CONTIGUOUS)	ÚshapeÚstridesr   Úitemsizer	   Úis_contiguousÚ
is_fortranÚflagsr   )	ÚarrÚdimsr  r  Úis_cÚis_fÚexpect_cÚexpect_fr   s	           €r   Ú	check_arrz1TestUFuncs.test_layout_checker.<locals>.check_arr•  s�   ø€ Ø”9ˆDØ”kˆGØ”yÔ)ˆHÝ Ô.¨t°W¸hÑGÔGˆDÝ Ô+¨D°'¸8ÑDÔDˆDØ”y Ô0ˆHØ”y Ô0ˆHØ×Ò˜T 8Ñ,Ô,Ð,Ø×Ò˜T 8Ñ,Ô,Ð,Ð,Ð,r   é   )r©   r}   rU   )rU   r©   r|   r©   r|   )rU   rU   r©   rU   rV   )r   ÚarangeÚreshapeÚT)r   r   r  s   `  r   Útest_layout_checkerzTestUFuncs.test_layout_checker”  su  ø€ ð		-ð 		-ð 		-ð 		-ð 		-õ Œi˜‰mŒmˆàˆ	�#‰Œˆàˆ	�#—+’+˜fÑ%Ô%Ñ&Ô&Ð&Øˆ	�#—+’+˜fÑ%Ô%Ô'Ñ(Ô(Ð(Øˆ	�#—+’+˜fÑ%Ô% c c¨ cÔ*Ñ+Ô+Ð+àˆ	�#—+’+˜iÑ(Ô(Ñ)Ô)Ð)Øˆ	�#—+’+˜iÑ(Ô(Ô*Ñ+Ô+Ð+àˆ	�#—+’+˜iÑ(Ô(¨¨¨¨C¨C¨a¨C¨Ô0Ñ1Ô1Ð1Øˆ	�#—+’+˜iÑ(Ô(Ô*¨1¨1¨1¨c¨c°¨c¨6Ô2Ñ3Ô3Ð3ð 	ˆ	�#—+’+˜iÑ(Ô(¨¨¨1¨Ô-Ñ.Ô.Ð.Øˆ	�#—+’+˜iÑ(Ô(Ô*¨1¨1¨1¨a¨a¨a°°°1°¨9Ô5Ñ6Ô6Ð6àˆ	�#—+’+˜iÑ(Ô(¨¨¨1¨¨c¨c°¨c¨Ô2Ñ3Ô3Ð3Øˆ	�#—+’+˜iÑ(Ô(Ô*¨1¨1¨1¨c¨c°¨c°3°3°Q°3¨;Ô7Ñ8Ô8Ð8àˆ	�#—+’+˜iÑ(Ô(¨¨¨1¨¨c¨c°¨c°3°3°Q°3¨Ô7Ñ8Ô8Ð8Øˆ	�#—+’+˜iÑ(Ô(Ô*¨3¨3¨Q¨3°°°!°°S°S°q°S¨=Ô9Ñ:Ô:Ð:àˆ	�#—+’+˜lÑ+Ô+¨C¨C¨a¨C°°°1°°c°c¸°c¨MÔ:Ñ;Ô;Ð;Øˆ	�#—+’+˜lÑ+Ô+Ô-¨a¨a¨a°°°1°°c°c¸°c¸3¸3¸Q¸3Ð.>Ô?Ñ@Ô@Ð@àˆ	�#—+’+˜lÑ+Ô+¨C¨C¨a¨C°°°1°°c°c¸°c¨MÔ:Ñ;Ô;Ð;Øˆ	�#—+’+˜lÑ+Ô+Ô-¨a¨a¨a°°°1°°c°c¸°c¸3¸3¸Q¸3Ð.>Ô?Ñ@Ô@Ð@Ð@Ð@r   N)r’   r“   r”   r·   r  r%  r•   r   r   rí   rí     sH   € € € € € ðð ðvJð vJð vJðp(Að (Að (Að (Að (Ar   rí   Ú__main__)r·   rH   Ú	itertoolsr   Únumpyr   ÚunittestÚ
numba.corer   Únumba.core.errorsr   Únumba.tests.supportr   Únumba.tests.enum_usecasesr   r   Únumba.npr	   rj   r   Úobjectr—   r¹   rÆ   r  r  r  r  rí   r’   Úmainr•   r   r   ú<module>r1     s  ððð ð
 €
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø (Ð (Ð (Ð (Ð (Ð (Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðI1ð I1ð I1ð I1ð I1�Hñ I1ô I1ð I1ðX5@ð 5@ð 5@ð 5@ð 5@˜&ñ 5@ô 5@ð 5@ðpð ð ð ð Ð*¨Hñ ô ð ð>)ð )ð )ð )ð )�ñ )ô )ð )ð"ð ð €
ð
 ð  ð  €
ð HÐGÐG€ØNÐNÐN€ðeAð eAð eAð eAð eA�ñ eAô eAð eAðP ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   