§
    ƒÛg~  ã                   óØ   — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d„ Zd„ Zd	„ Zd
„ Z G d„ de¦  «        Zedk    r ej        ¦   «          dS dS )é    N)Úcompile_isolatedÚFlags)Újit)Útypes)ÚTestCase)Únumpy_supportc                 ó   — | S ©N© ©Úxs    úQ/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_conversion.pyÚidentityr      ó   € Ø€Hó    c                 ó   — | |z   S r
   r   ©r   Úys     r   Úadditionr      s   € Øˆq‰5€Lr   c                 ó   — | |k    S r
   r   r   s     r   Úequalityr      s   € Ø�Š6€Mr   c                 ó   — | S r
   r   )r   r   Úzs      r   Úfoobarr      r   r   c                   ól   — e 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„ Zd„ Zd„ ZdS )ÚTestConversionz-
    Testing Python to Native conversion
    c                 óx  — t           }t          |t          j        gt          j        ¬¦  «        }g d¢}|D ]+}|                      |                     |¦  «        |¦  «         Œ,t          j        |¦  «        D ]+}|                      |                     |¦  «        |¦  «         Œ,t          |t          j        gt          j        ¬¦  «        }g d¢}|D ]+}|                      |                     |¦  «        |¦  «         Œ,t          j        |¦  «        D ]+}|                      |                     |¦  «        |¦  «         Œ,d S ©N©Úreturn_type)y              ð?y      ð?      ð?y      ð¿      ð¿y      ð?        )r   r   r   Ú	complex64ÚassertEqualÚentry_pointÚnpÚ
complex128)ÚselfÚpyfuncÚcresÚxsr   s        r   Útest_complex_identityz$TestConversion.test_complex_identity"   s]  € ÝˆÝ ­¬Ð(9Ý,1¬Oð=ñ =ô =ˆð -Ð,Ð,ˆØð 	5ð 	5ˆAØ×Ò˜T×-Ò-¨aÑ0Ô0°!Ñ4Ô4Ð4Ð4Ý”˜bÑ!Ô!ð 	5ð 	5ˆAØ×Ò˜T×-Ò-¨aÑ0Ô0°!Ñ4Ô4Ð4Ð4å ­Ô)9Ð(:Ý,1Ô,<ð>ñ >ô >ˆð -Ð,Ð,ˆØð 	5ð 	5ˆAØ×Ò˜T×-Ò-¨aÑ0Ô0°!Ñ4Ô4Ð4Ð4Ý”˜rÑ"Ô"ð 	5ð 	5ˆAØ×Ò˜T×-Ò-¨aÑ0Ô0°!Ñ4Ô4Ð4Ð4ð	5ð 	5r   c                 óÔ  — t           }t          |t          j        t          j        gt          j        ¬¦  «        }g d¢}|D ]1}|}|                      |                     ||¦  «        ||z   ¦  «         Œ2t          j        |¦  «        D ]1}|}|                      |                     ||¦  «        ||z   ¦  «         Œ2t          |t          j        t          j        gt          j        ¬¦  «        }g d¢}|D ]1}|}|                      |                     ||¦  «        ||z   ¦  «         Œ2t          j        |¦  «        D ]1}|}|                      |                     ||¦  «        ||z   ¦  «         Œ2d S r   )r   r   r   r!   r"   r#   r$   r%   )r&   r'   r(   r)   r   r   s         r   Útest_complex_additionz$TestConversion.test_complex_addition6   s”  € ÝˆÝ ­¬½%¼/Ð(JÝ,1¬Oð=ñ =ô =ˆð -Ð,Ð,ˆØð 	<ð 	<ˆAØˆAØ×Ò˜T×-Ò-¨a°Ñ3Ô3°Q¸±UÑ;Ô;Ð;Ð;Ý”˜bÑ!Ô!ð 	<ð 	<ˆAØˆAØ×Ò˜T×-Ò-¨a°Ñ3Ô3°Q¸±UÑ;Ô;Ð;Ð;õ   ­Ô)9½5Ô;KÐ(LÝ,1Ô,<ð>ñ >ô >ˆð -Ð,Ð,ˆØð 	<ð 	<ˆAØˆAØ×Ò˜T×-Ò-¨a°Ñ3Ô3°Q¸±UÑ;Ô;Ð;Ð;Ý”˜rÑ"Ô"ð 	<ð 	<ˆAØˆAØ×Ò˜T×-Ò-¨a°Ñ3Ô3°Q¸±UÑ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó   — t           }t          |t          j        t          j        g¦  «        }|j        }d}d}t          j        ||¦  «        D ]/\  }}|                       |||¦  «         |||¦  «        ¦  «         Œ0d S ©N©TF©éÿÿÿÿr   é   )	r   r   r   ÚbooleanÚintpr#   Ú	itertoolsÚproductr"   ©r&   r'   r(   Úcfuncr)   Úyss         r   Útest_boolean_as_intz"TestConversion.test_boolean_as_intO   sˆ   € ÝˆÝ ­¬½¼
Ð(CÑDÔDˆØÔ ˆàˆØˆåÔ'¨¨BÑ/Ô/ð 	<ð 	<‰FˆB�Ø×Ò˜V˜V B¨™^œ^¨U¨U°2°r©]¬]Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó   — t           }t          |t          j        t          j        g¦  «        }|j        }d}d}t          j        ||¦  «        D ]/\  }}|                       |||¦  «         |||¦  «        ¦  «         Œ0d S r.   )	r   r   r   r3   Úfloat64r#   r5   r6   r"   r7   s         r   Útest_boolean_as_floatz$TestConversion.test_boolean_as_floatZ   sˆ   € ÝˆÝ ­¬½¼Ð(FÑGÔGˆØÔ ˆàˆØˆåÔ'¨¨BÑ/Ô/ð 	<ð 	<‰FˆB�Ø×Ò˜V˜V B¨™^œ^¨U¨U°2°r©]¬]Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó   — t           }t          |t          j        t          j        g¦  «        }|j        }d}d}t          j        ||¦  «        D ]/\  }}|                       |||¦  «         |||¦  «        ¦  «         Œ0d S )Nr/   )r   r   r   r3   r#   r5   r6   r"   r7   s         r   Útest_boolean_eq_booleanz&TestConversion.test_boolean_eq_booleane   sˆ   € ÝˆÝ ­¬½¼Ð(FÑGÔGˆØÔ ˆàˆØˆåÔ'¨¨BÑ/Ô/ð 	<ð 	<‰FˆB�Ø×Ò˜V˜V B¨™^œ^¨U¨U°2°r©]¬]Ñ;Ô;Ð;Ð;ð	<ð 	<r   c                 ó¸   — d„ }|                       t          ¦  «        5    t          dd¬¦  «        |¦  «        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó   — | S r
   r   r   s    r   Úfz3TestConversion.test_negative_to_unsigned.<locals>.fv   s   € ØˆHr   zuintp(uintp)T©Únopythonéûÿÿÿ)ÚassertRaisesÚOverflowErrorr   ©r&   rB   s     r   Útest_negative_to_unsignedz(TestConversion.test_negative_to_unsignedu   s±   € ð	ð 	ð 	à×Ò�}Ñ-Ô-ð 	6ð 	6Ø1Ð.�C�¨Ð.Ñ.Ô.¨qÑ1Ô1°"Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s   ž$AÁAÁAc                 ó4  — t           }t          |t          j        t          j        t          j        gt          j        ¬¦  «        }|j        }d}|                      t          ¦  «        5  |D ]\  }}} ||||¦  «         Œ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )r0   )r   r1   r2   )r   r2   r1   )r   r   r   Úuint64r#   rF   rG   )r&   r'   r(   r8   Útest_fail_argsÚaÚbÚcs           r   Ú'test_multiple_args_negative_to_unsignedz6TestConversion.test_multiple_args_negative_to_unsigned}   sã   € ÝˆÝ ­¬µu´|ÅUÄ\Ð(RÝ,1¬Lð:ñ :ô :ˆàÔ ˆØ=ˆØ×Ò�}Ñ-Ô-ð 	ð 	Ø)ð ð ‘��1�aØ��a˜˜A‘”��ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á(BÂBÂBc                 óR  — t           }t          j        dt          j        fdt          j        fdt          j        fg¦  «        }t	          j        |¦  «        }t          ||d d …         t          j        t          j        g|d d …         ¬¦  «        }|j	        }t          j
        d|¬¦  «        }t          j        |j        ¦  «        dz   |_        t          j        |j        ¦  «        dz   |_        t          j        |j        ¦  «        dz   |_        |                      |¦  «        5  |ddf|ddff}|D ]E\  }}	}
|                      t$          ¦  «        5   |||	|
¦  «         d d d ¦  «         n# 1 swxY w Y   ŒF~~~	~
t'          j        ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )	NÚpÚrowÚcolr   é   ©Údtyper2   r1   )r   r$   rW   r<   r   Ú
from_dtyper   r   rK   r#   ÚrecarrayÚarangeÚsizerR   rS   rT   ÚassertRefCountrF   rG   ÚgcÚcollect)r&   r'   Úmystruct_dtÚmystructr(   r8   Úst1rL   rM   rN   rO   s              r   Útest_multiple_args_recordsz)TestConversion.test_multiple_args_recordsˆ   s  € Ýˆå”h ¥b¤jÐ 1Ø!¥2¤:Ð.Ø!¥2¤:Ð.ð 0ñ 1ô 1ˆõ !Ô+¨KÑ8Ô8ˆå ¨°!°!°!¬µe´lÅEÄLÐ(QØ,4°Q°Q°Q¬Kð9ñ 9ô 9ˆàÔ ˆåŒk˜! ;Ð/Ñ/Ô/ˆå”	˜#œ(Ñ#Ô# aÑ'ˆŒÝ”)˜CœHÑ%Ô%¨Ñ)ˆŒÝ”)˜CœHÑ%Ô%¨Ñ)ˆŒà× Ò  Ñ%Ô%ð 	ð 	Ø" B¨˜l¨S°!°R¨LÐ9ˆNà)ð #ð #‘��1�aØ×&Ò&¥}Ñ5Ô5ð #ð #Ø�E˜!˜Q ‘N”N�Nð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #øð   1 aÝŒJ‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   Ä%-FÅE,Å FÅ,E0Å0FÅ3E0Å4FÆF Æ#F c           	      óˆ   — d„ }|                        |¦   «           t          dd¬¦  «        |¦  «        ¦   «         ¦  «         d S )Nc                  ó   — d S r
   r   r   r   r   rB   z1TestConversion.test_with_no_parameters.<locals>.f¦   ó   € ØˆDr   z()TrC   )r"   r   rH   s     r   Útest_with_no_parametersz&TestConversion.test_with_no_parameters¥   sT   € ð	ð 	ð 	à×Ò˜˜™œÐ9Ð6�c $°Ð6Ñ6Ô6°qÑ9Ô9Ñ;Ô;Ñ<Ô<Ð<Ð<Ð<r   c                 ó(  ‡— d„ }ˆfd„Š ‰|¦  «        }t          ||t          j        f¦  «        } | j        |Ž 5  |                     |d¦  «         ddd¦  «         n# 1 swxY w Y    | j        |Ž 5  |                      t          ¦  «        5  |                     |d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          |t          j        |f¦  «        } | j        |Ž 5  |                     d|¦  «         ddd¦  «         n# 1 swxY w Y    | j        |Ž 5  |                      t          ¦  «        5  |                     d|¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zF
        Check that argument cleanup doesn't leak references.
        c                 ó   — d S r
   r   r   s     r   rB   z0TestConversion.check_argument_cleanup.<locals>.f®   re   r   c                 ó^   •— | g}t          | t          ¦  «        r| D ]}| ‰|¦  «        z  }Œ|S r
   )Ú
isinstanceÚtuple)ÚobjÚobjsÚvÚ_objectss      €r   ro   z7TestConversion.check_argument_cleanup.<locals>._objects±   sD   ø€ Ø�5ˆDÝ˜#�uÑ%Ô%ð (Øð (ð (�AØ˜H˜H Q™KœKÑ'�D�DØˆKr   r2   Nr1   )r   r   Úuint32r\   r#   rF   rG   )r&   Útyprl   rB   Úobjectsr(   ro   s         @r   Úcheck_argument_cleanupz%TestConversion.check_argument_cleanupª   s5  ø€ ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð �(˜3‘-”-ˆå  C­¬Ð#6Ñ7Ô7ˆØ ˆTÔ  'Ð*ð 	%ð 	%Ø×Ò˜S !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%à ˆTÔ  'Ð*ð 	*ð 	*Ø×"Ò"¥=Ñ1Ô1ð *ð *Ø× Ò   bÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*õ   ¥E¤L°#Ð#6Ñ7Ô7ˆØ ˆTÔ  'Ð*ð 	%ð 	%Ø×Ò˜Q Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%à ˆTÔ  'Ð*ð 	*ð 	*Ø×"Ò"¥=Ñ1Ô1ð *ð *Ø× Ò   SÑ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s�   »AÁA"Á%A"Á3CÂB1Â%CÂ1B5	Â5CÂ8B5	Â9CÃCÃCÃ9DÄD Ä#D Ä1FÅE/Å#FÅ/E3	Å3FÅ6E3	Å7FÆFÆFc                 ó¦   — t          t          d¦  «        ¦  «        }|                      t          j        t          j        dd¦  «        |¦  «         d S ©Nó   xyzr2   ÚC)Ú
memoryviewÚ	bytearrayrs   r   ÚBufferÚintc)r&   Úmems     r   Útest_cleanup_bufferz"TestConversion.test_cleanup_bufferÈ   sC   € Ý� 6Ñ*Ô*Ñ+Ô+ˆØ×#Ò#¥E¤Lµ´¸QÀÑ$DÔ$DÀcÑJÔJÐJÐJÐJr   c                 óê   — t          j        dt           j        fdt           j        fg¦  «        }t          j        d|¬¦  «        }|                      t          j        |¦  «        |d         ¦  «         d S )Nr   r   r2   rV   r   )r$   rW   r<   Úzerosrs   r   rX   )r&   rW   Úrecarrs      r   Útest_cleanup_recordz"TestConversion.test_cleanup_recordÌ   sc   € Ý”˜3¥¤
Ð+¨cµ2´:Ð->Ð?Ñ@Ô@ˆÝ”˜! 5Ð)Ñ)Ô)ˆØ×#Ò#¥MÔ$<¸UÑ$CÔ$CÀVÈAÄYÑOÔOÐOÐOÐOr   c                 óÔ   — t          t          d¦  «        ¦  «        }t          j        t          j        t          j        dd¦  «        d¦  «        }|                      |||f¦  «         d S )Nrv   r2   rw   é   )rx   ry   r   ÚUniTuplerz   r{   rs   ©r&   r|   Útps      r   Útest_cleanup_tuplez!TestConversion.test_cleanup_tupleÑ   sX   € Ý� 6Ñ*Ô*Ñ+Ô+ˆÝŒ^�EœL­¬°Q¸Ñ<Ô<¸aÑ@Ô@ˆØ×#Ò# B¨¨c¨
Ñ3Ô3Ð3Ð3Ð3r   c                 óÎ   — t          t          d¦  «        ¦  «        }t          j        t          j        t          j        dd¦  «        ¦  «        }|                      ||¦  «         d S ru   )rx   ry   r   ÚOptionalrz   r{   rs   r…   s      r   Útest_cleanup_optionalz$TestConversion.test_cleanup_optionalÖ   sR   € Ý� 6Ñ*Ô*Ñ+Ô+ˆÝŒ^�EœL­¬°Q¸Ñ<Ô<Ñ=Ô=ˆØ×#Ò# B¨Ñ,Ô,Ð,Ð,Ð,r   c                 óÎ   ‡— t          t          j        t          j        ¦  «        d¬¦  «        d„ ¦   «         Št          t          j        ¦   «         d¬¦  «        ˆfd„¦   «         }d S )NTrC   c                 ó   — d S r
   r   )Ústrings    r   Úbarz9TestConversion.test_stringliteral_to_unicode.<locals>.barß   s   € àˆDr   c                  ó   •—  ‰ d¦  «         d S )Nzliteral stringr   )rŽ   s   €r   Úfoo2z:TestConversion.test_stringliteral_to_unicode.<locals>.foo2ã   s   ø€ àˆCÐ Ñ!Ô!Ð!Ð!Ð!r   )r   r   ÚvoidÚunicode_type)r&   r�   rŽ   s     @r   Útest_stringliteral_to_unicodez,TestConversion.test_stringliteral_to_unicodeÛ   s|   ø€ õ 
�UŒZ�Ô*Ñ+Ô+°dÐ	;Ñ	;Ô	;ð	ð 	ñ 
<Ô	;ð	õ 
�UŒZ‰\Œ\ DÐ	)Ñ	)Ô	)ð	"ð 	"ð 	"ð 	"ñ 
*Ô	)ð	"ð 	"ð 	"r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r,   r:   r=   r?   rI   rP   rb   rf   rs   r}   r�   r‡   rŠ   r“   r   r   r   r   r      s  € € € € € ðð ð5ð 5ð 5ð(<ð <ð <ð2	<ð 	<ð 	<ð	<ð 	<ð 	<ð	<ð 	<ð 	<ð 6ð 6ð 6ðð ð ðð ð ð:=ð =ð =ð
*ð *ð *ð<Kð Kð KðPð Pð Pð
4ð 4ð 4ð
-ð -ð -ð

"ð 
"ð 
"ð 
"ð 
"r   r   Ú__main__)Úarrayr]   r5   ÚsysÚnumpyr$   ÚunittestÚnumba.core.compilerr   r   Únumbar   Ú
numba.corer   Únumba.tests.supportr   Únumba.npr   r   r   r   r   r   r”   Úmainr   r   r   ú<module>r£      s6  ðØ €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
à Ð Ð Ð à €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ðð ð ðð ð ðð ð ðH"ð H"ð H"ð H"ð H"�Xñ H"ô H"ð H"ðV ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   