§
    ƒÛgëC  ã                   óJ  — 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  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      €€úT/granary/edev/quantum/lib/python3.11/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¦  «        ¦  «          |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>.checkN   sZ   ø€ å”H˜ZÑ(Ô(ˆEØ×Ò�]Ô5°eÑ<Ô<¸jÑIÔIÐIØ×Ò˜U¥MÔ$:¸:Ñ$FÔ$FÑGÔGÐGÐGÐGr   ÚS10é
   Úa11é   ÚU12é   N)r   ÚCharSeqÚUnicodeCharSeq)r   r   s   ` r   Útest_string_typeszTestFromDtype.test_string_typesJ   s~   ø€ ð	Hð 	Hð 	Hð 	Hð 	Hð 	ˆˆe•U”] 2Ñ&Ô&Ñ'Ô'Ð'Øˆˆe•U”] 2Ñ&Ô&Ñ'Ô'Ð'Øˆˆ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>.checkY   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_typesX   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)rd   r   Ú
NPDatetime©r   s    r   Útest_datetime_typesz!TestFromDtype.test_datetime_typesc   s#   € ð 	×!Ò! #¥uÔ'7Ñ8Ô8Ð8Ð8Ð8r   c                 óF   — |                       dt          j        ¦  «         dS )zL
        Test from_dtype() and as_dtype() with the timedelta types.
        ÚmN)rd   r   ÚNPTimedeltarh   s    r   Útest_timedelta_typesz"TestFromDtype.test_timedelta_typesi   s#   € ð 	×!Ò! #¥uÔ'8Ñ9Ô9Ð9Ð9Ð9r   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   rr   rs   rt   r`   r   s        €r   r   z.TestFromDtype.test_struct_types.<locals>.checkp   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   r$   é   F)rr   rs   rt   T)Úaligné   é   rk   )ÚnÚS5é   )rk   r{   é	   )r   r   r4   r6   r   rY   )r   r   r   s   `  r   Útest_struct_typeszTestFromDtype.test_struct_typeso   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[   rd   ri   rm   r   r�   © r   r   r   r      s�   € € € € € ð3@ð 3@ð 3@ðj/ð /ð /ð	2ð 	2ð 	2ð9ð 9ð 9ð:ð :ð :ð%ð %ð %ð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)ra   ÚYrf   r!   r(   rk   ÚsÚmsÚusÚnsÚpsÚfsÚasé   ÚNat)r   )r   r›   Únp_typeÚnb_typer   ÚunitÚtr`   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   Ú
datetime64r   rg   ©r   r›   s     r   Úcheck_datetime_valuesz)ValueTypingTestBase.check_datetime_valuesÇ   s'   € ð 	×(Ò(¨­r¬}½eÔ>NÑOÔOÐOÐOÐOr   c                 ó\   — |                       |t          j        t          j        ¦  «         dS )z;
        Test *func*() with np.timedelta64 values.
        N)r­   r   Útimedelta64r   rl   r°   s     r   Úcheck_timedelta_valuesz*ValueTypingTestBase.check_timedelta_valuesÍ   s2   € ð 	×(Ò(¨­r¬~Ý).Ô):ñ	<ô 	<ð 	<ð 	<ð 	<r   N)r�   r‘   r’   Ú__doc__r�   r­   r±   r´   r“   r   r   r•   r•   ž   s]   € € € € € ðð ð8ð 8ð 8ð*0ð 0ð 0ðPð Pð Pð<ð <ð <ð <ð <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_typerh   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   ÚNotImplementedError©r   r   r¬   s      r   Útest_datetime_valuesz%TestArrayScalars.test_datetime_valuesÝ   s·   € õ Ô.ˆØ×"Ò" 1Ñ%Ô%Ð%åŒM˜& %Ñ(Ô(ˆØ×ÒÕ2Ñ3Ô3ð 	ð 	Øˆ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Ñ%Ô%ˆØ×ÒÕ2Ñ3Ô3ð 	ð 	Øˆ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_Úoutr`   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_matchA  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â   ra   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   rl   rg   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  s6  øøø€ ÝÔ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�UÔ.¨sÑ3Ô3µUÔ5FÀsÑ5KÔ5KÐLØ­5Ô+<¸SÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eàˆ�F�UÔ.¨tÑ4Ô4µeÔ6FÀsÑ6KÔ6KÐLØ­5Ô+;¸DÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eàˆ�F�UÔ-¨cÑ2Ô2µEÔ4EÀcÑ4JÔ4JÐKØ­5Ô+;¸CÑ+@Ô+@Ð*Bð	Dñ 	Dô 	Dð 	Dàˆ�F�UÔ-¨cÑ2Ô2µEÔ4EÀbÑ4IÔ4IÐJØ­5Ô+;¸CÑ+@Ô+@Ð*Bð	Dñ 	Dô 	Dð 	Dàˆ�F�UÔ-¨dÑ3Ô3µUÔ5FÀrÑ5JÔ5JÐKØ­5Ô+;¸DÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eàˆ�F�UÔ.¨rÑ2Ô2µEÔ4DÀSÑ4IÔ4IÐJØ­5Ô+;¸CÑ+@Ô+@Ð*Bð	Dñ 	Dô 	Dð 	Dàˆ�F�UÔ.¨rÑ2Ô2µEÔ4DÀTÑ4JÔ4JÐKØ­5Ô+;¸DÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eàˆ�F�UÔ.¨sÑ3Ô3µU´[ÐAØ­5Ô+<¸SÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eàˆ�F�Uœ]­EÔ,=¸cÑ,BÔ,BÐCØ­5Ô+<¸SÑ+AÔ+AÐ*Cð	Eñ 	Eô 	Eð 	Eð 	ˆˆ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•uÔ(¨Ñ-Ô-­u¬{Ð;Ø¥UÔ%6°sÑ%;Ô%;Ð$=ð	?ñ 	?ô 	?ð 	?àˆˆf•uÔ(¨Ñ-Ô-­u¬|Ð<Ø¥UÔ%6°sÑ%;Ô%;Ð$=ð	?ñ 	?ô 	?ð 	?àˆˆf•uÔ(¨Ñ-Ô-­u¬}Ð=Ø¥UÔ%6°sÑ%;Ô%;Ð$=ð	?ñ 	?ô 	?ð 	?àˆˆf•u”}¥eÔ&7¸Ñ&<Ô&<Ð=Ø¥UÔ%6°sÑ%;Ô%;Ð$=ð	?ñ 	?ô 	?ð 	?ð 	ˆ�v¥Ô 0°Ñ 5Ô 5µuÔ7GÈÑ7LÔ7LÐMÑNÔNÐNð 	ˆ�v¥Ô 1°#Ñ 6Ô 6½¼ÐDÑEÔEÐEÐEÐEr   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§   rz   rv   )rv   r§   ry   r§   ry   )rv   rv   r§   rv   r}   )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   € € € € € ðð ðnFð nFð nFð`(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	   r   Úobjectr•   r·   rÅ   r  r  r  r  rì   r�   Úmainr“   r   r   ú<module>r0     sò  ððð ð
 €
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø (Ð (Ð (Ð (Ð (Ð (Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø "Ð "Ð "Ð "Ð "Ð "ðH1ð H1ð H1ð H1ð H1�Hñ H1ô H1ð H1ðV4<ð 4<ð 4<ð 4<ð 4<˜&ñ 4<ô 4<ð 4<ðnð ð ð ð Ð*¨Hñ ô ð ð>)ð )ð )ð )ð )�ñ )ô )ð )ð"ð ð €
ð
 ð  ð  €
ð HÐGÐG€ØNÐNÐN€ð]Að ]Að ]Að ]Að ]A�ñ ]Aô ]Að ]Að@ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   