§
    ƒÛg5$  ã                   ó  — d Z ddlmZmZ ddlmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlZddlmZ ddlZddlZeee G d„ d	e¦  «        ¦   «         ¦   «         ¦   «         Z G d
„ de¦  «        Zedk    r ej        ¦   «          dS dS )z8Tests for gdb interacting with the DWARF numba generatesé    )ÚTestCaseÚ
linux_only)Ú	needs_gdbÚskip_unless_pexpectÚGdbMIDriver)ÚpatchÚMock)Ú	datamodelN)Útypeofc                   óF   — e Zd ZddiZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚTestGDBDwarfÚ	NUMBA_OPTÚ0c                 ó‚   — t          t          d¬¦  «        }|                     ¦   «         }|                     ¦   «          |S )z6Returns True if gdb has NumPy support, False otherwiseF)Údebug)r   Ú__file__Úsupports_numpyÚquit)ÚselfÚdriverÚ	has_numpys      úP/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_gdb_dwarf.pyÚ_gdb_has_numpyzTestGDBDwarf._gdb_has_numpy   s8   € å�X¨UÐ4Ñ4Ô4ˆØ×)Ò)Ñ+Ô+ˆ	Ø�Š‰ŒˆØÐó    c                 óL   — d|› �}|                       |dd| j        ¬¦  «         d S )Nznumba.tests.gdb.ÚTestÚtest)Útest_moduleÚ
test_classÚ	test_nameÚenvvars)Úsubprocess_test_runnerÚ_NUMBA_OPT_0_ENV)r   Útest_modÚthemods      r   Ú_subprocess_test_runnerz$TestGDBDwarf._subprocess_test_runner   sI   € Ø. HÐ.Ð.ˆØ×#Ò#°Ø/5Ø.4Ø,0Ô,Að 	$ñ 	Cô 	Cð 	Cð 	Cð 	Cr   c                 ó0   — |                       d¦  «         d S )NÚ
test_basic©r&   ©r   s    r   r(   zTestGDBDwarf.test_basic&   s   € Ø×$Ò$ \Ñ2Ô2Ð2Ð2Ð2r   c                 ó0   — |                       d¦  «         d S )NÚtest_array_argr)   r*   s    r   r,   zTestGDBDwarf.test_array_arg)   s   € Ø×$Ò$Ð%5Ñ6Ô6Ð6Ð6Ð6r   c                 ó0   — |                       d¦  «         d S )NÚtest_conditional_breakpointr)   r*   s    r   r.   z(TestGDBDwarf.test_conditional_breakpoint,   s   € Ø×$Ò$Ð%BÑCÔCÐCÐCÐCr   c                 ó0   — |                       d¦  «         d S )NÚtest_break_on_symbolr)   r*   s    r   r0   z!TestGDBDwarf.test_break_on_symbol/   s   € Ø×$Ò$Ð%;Ñ<Ô<Ð<Ð<Ð<r   c                 ó0   — |                       d¦  «         d S )NÚtest_break_on_symbol_versionr)   r*   s    r   r2   z)TestGDBDwarf.test_break_on_symbol_version2   s   € Ø×$Ò$Ð%CÑDÔDÐDÐDÐDr   c                 ó†   — |                       ¦   «         sd}|                      |¦  «         |                      d¦  «         d S )Nz"Cannot find gdb with NumPy supportÚtest_pretty_print)r   ÚskipTestr&   )r   Ú_msgs     r   r4   zTestGDBDwarf.test_pretty_print5   sH   € Ø×"Ò"Ñ$Ô$ð 	 Ø7ˆDØ�MŠM˜$ÑÔÐà×$Ò$Ð%8Ñ9Ô9Ð9Ð9Ð9r   N)Ú__name__Ú
__module__Ú__qualname__r#   r   r&   r(   r,   r.   r0   r2   r4   © r   r   r   r      s¢   € € € € € ð $ SÐ)Ððð ð ðCð Cð Cð3ð 3ð 3ð7ð 7ð 7ðDð Dð Dð=ð =ð =ðEð Eð Eð:ð :ð :ð :ð :r   r   c                   óJ   — 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S )ÚTestGDBPrettyPrinterLogicc                 ó  ‡— t          ¦   «         t          ¦   «         dœ}t          j        d|¦  «        | _        | j                             ¦   «          dd l} G d„ d¦  «        } |¦   «         Š |j        di dˆfd„i¤Ž d S )	N)Úgdbzgdb.printingzsys.modulesr   c                   ó   — e Zd Zd„ ZdS )ú9TestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferiorc                 óT   — t           j        |z                       |¦  «        }|j        S ©N)ÚctÚc_charÚfrom_addressÚraw)r   ÚdataÚextentÚbufs       r   Úread_memoryzETestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferior.read_memoryV   s#   € Ý”y 6Ñ)×7Ò7¸Ñ=Ô=�Ø”w�r   N)r7   r8   r9   rJ   r:   r   r   ÚSelectedInferiorr@   T   s#   € € € € € ðð ð ð ð r   rK   Úselected_inferiorc                  ó   •— ‰ S rB   r:   )Úsis   €r   ú<lambda>z1TestGDBPrettyPrinterLogic.setUp.<locals>.<lambda>[   s   ø€ ¸2€ r   r:   )r	   r   ÚdictÚpatched_sysÚstartr>   Úconfigure_mock)r   Úmock_modulesr>   rK   rN   s       @r   ÚsetUpzTestGDBPrettyPrinterLogic.setUpC   s¶   ø€ õ
  $™vœvÝ(,©¬ð0ð 0ˆå œ: m°\ÑBÔBˆÔØÔ×ÒÑ Ô Ð ð 	ˆ
ˆ
ˆ
ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð ÐÑÔˆØˆÔÐ?Ð?Ð1°:°:°:°:Ð>Ð?Ð?Ð?Ð?Ð?r   c                 ó8   — | j                              ¦   «          d S rB   )rQ   Ústopr*   s    r   ÚtearDownz"TestGDBPrettyPrinterLogic.tearDown]   s   € àÔ×ÒÑÔÐÐÐr   c                 óþ  ‡
‡‡— ddl m}  G d„ d¦  «        Š G ˆfd„d¦  «        Š G ˆfd„d¦  «        Š
 G ˆ
fd	„d
¦  «        }t          j        }t          j                             |t          |¦  «        ¦  «        }|                     ¦   «         }t          |¦  «        › d|                     ¦   «         › d�} |||¦  «        }| 	                    |¦  «        }	|	 
                    ¦   «                              ¦   «         S )Nr   )Úgdb_print_extensionc                   ó0   — e Zd Zd„ Zed„ ¦   «         Zd„ ZdS )ú:TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrangec                 ó"   — || _         || _        d S rB   ©Ú_loÚ_hi©r   ÚloÚhis      r   Ú__init__zCTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.__init__n   s   € Ø�”Ø�”��r   c                 ó   — | S rB   r:   r*   s    r   Útypez?TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.typer   s   € à�r   c                 ó   — | j         | j        fS rB   r^   r*   s    r   Úrangez@TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.rangev   s   € Ø”x ¤Ð)Ð)r   N)r7   r8   r9   rd   Úpropertyrf   rh   r:   r   r   Ú
DISubranger\   m   sM   € € € € € ðð ð ð ðð ñ ŒXðð*ð *ð *ð *ð *r   rj   c                   ó    •— e Zd Zd„ Zˆ fd„ZdS )úATestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_typec                 ó$   — ||c| _         | _        d S rB   r^   ra   s      r   rd   zJTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.__init__z   s   € Ø%'¨Ð"�”˜$œ(˜(˜(r   c                 ó2   •—  ‰| j         | j        ¦  «        gS rB   r^   )r   rj   s    €r   ÚfieldszHTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.fields}   s   ø€ Ø"˜
 4¤8¨T¬XÑ6Ô6Ð8Ð8r   N)r7   r8   r9   rd   ro   )rj   s   €r   ÚDW_TAG_array_typerl   y   s=   ø€ € € € € ð,ð ,ð ,ð9ð 9ð 9ð 9ð 9ð 9ð 9r   rp   c                   ó6   •— e Zd Zˆ fd„Zed„ ¦   «         Zd„ ZdS )úCTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuplec                 óX   •—  ‰dt          |¦  «        dz
  ¦  «        | _        || _        d S )Nr   é   )ÚlenÚ_typeÚ_tuple)r   Ú	the_tuplerp   s     €r   rd   zLTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.__init__�   s-   ø€ Ø.Ð.¨qµ#°i±.´.À1Ñ2DÑEÔE�”
Ø'�”��r   c                 ó   — | j         S rB   )rv   r*   s    r   rf   zHTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.type…   s
   € à”zÐ!r   c                 ó   — | j         |         S rB   )rw   ©r   Úitems     r   Ú__getitem__zOTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.__getitem__‰   s   € Ø”{ 4Ô(Ð(r   N)r7   r8   r9   rd   ri   rf   r}   )rp   s   €r   ÚDIDerivedType_tuplerr   €   sX   ø€ € € € € ð(ð (ð (ð (ð (ð ð"ð "ñ ŒXð"ð)ð )ð )ð )ð )r   r~   c                   ó’   •— e Zd Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zeˆ fd„¦   «         Zeˆ fd„¦   «         Z	ed„ ¦   «         Z
dS )	úETestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Arrayc                 ó"   — || _         || _        d S rB   )Ú_arrÚ	_type_str)r   ÚarrÚtype_strs      r   rd   zNTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.__init__�   s   € Ø�”	Ø!)�”��r   c                 ó"   — t          | |¦  «        S rB   )Úgetattrr{   s     r   r}   zQTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.__getitem__‘   s   € Ý˜t TÑ*Ô*Ð*r   c                 ó$   — | j         j        j        S rB   )r‚   ÚctypesrG   r*   s    r   rG   zJTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.data”   s   € à”yÔ'Ô,Ð,r   c                 ó   — | j         j        S rB   )r‚   Úitemsizer*   s    r   r‹   zNTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.itemsize˜   s   € à”yÔ)Ð)r   c                 ó.   •—  ‰| j         j        ¦  «        S rB   )r‚   Úshape©r   r~   s    €r   r�   zKTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.shapeœ   s   ø€ à*Ð*¨4¬9¬?Ñ;Ô;Ð;r   c                 ó.   •—  ‰| j         j        ¦  «        S rB   )r‚   ÚstridesrŽ   s    €r   r�   zMTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.strides    s   ø€ à*Ð*¨4¬9Ô+<Ñ=Ô=Ð=r   c                 ó   — | j         S rB   )rƒ   r*   s    r   rf   zJTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.type¤   s
   € à”~Ð%r   N)r7   r8   r9   rd   r}   ri   rG   r‹   r�   r�   rf   )r~   s   €r   ÚDICompositeType_Arrayr€   Œ   sÎ   ø€ € € € € ð*ð *ð *ð+ð +ð +ð ð-ð -ñ ŒXð-ð ð*ð *ñ ŒXð*ð ð<ð <ð <ð <ñ ŒXð<ð ð>ð >ð >ð >ñ ŒXð>ð ð&ð &ñ ŒXð&ð &ð &r   r’   z (ú))Ú
numba.miscrZ   r
   Údefault_managerÚmodelsÚ
ArrayModelr   Úget_data_typeÚstructure_reprÚNumbaArrayPrinterÚ	to_stringÚstrip)r   ÚarrayrZ   r’   ÚdmmÚarray_modelÚ	data_typer…   Úfake_gdb_arrÚprinterr~   rj   rp   s             @@@r   Úget_gdb_reprz&TestGDBPrettyPrinterLogic.get_gdb_repra   s{  øøø€ ð 	3Ð2Ð2Ð2Ð2Ð2ð
	*ð 
	*ð 
	*ð 
	*ð 
	*ñ 
	*ô 
	*ð 
	*ð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð
	)ð 
	)ð 
	)ð 
	)ð 
	)ð 
	)ð 
	)ñ 
	)ô 
	)ð 
	)ð	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ñ 	&ô 	&ð 	&õ< Ô'ˆÝÔ&×1Ò1°#µv¸e±}´}ÑEÔEˆØ×-Ò-Ñ/Ô/ˆ	Ý˜U‘m”mÐDÐD y×'?Ò'?Ñ'AÔ'AÐDÐDÐDˆØ,Ð,¨U°HÑ=Ô=ˆà%×7Ò7¸ÑEÔEˆà× Ò Ñ"Ô"×(Ò(Ñ*Ô*Ð*r   c                 ó�   — |                       |¦  «        }|                      t          |¦  «        t          |¦  «        ¦  «         d S rB   )r£   ÚassertEqualÚstr)r   r�   Úgdb_printeds      r   ÚcheckzTestGDBPrettyPrinterLogic.check´   s?   € Ø×'Ò'¨Ñ.Ô.ˆØ×Ò�˜[Ñ)Ô)­3¨u©:¬:Ñ6Ô6Ð6Ð6Ð6r   c                 ó
  — d}d}t           j        t           j        t           j        t           j        t           j        fD ]D}t          j        ||z  |¬¦  «                             ||¦  «        }|                      |¦  «         ŒEd S )Né   é   ©Údtype)	ÚnpÚint8Úuint16Úint64Úfloat32Ú
complex128ÚarangeÚreshaper¨   )r   ÚnÚmÚdtr„   s        r   Ú*test_np_array_printer_simple_numeric_typeszDTestGDBPrettyPrinterLogic.test_np_array_printer_simple_numeric_types¸   ss   € àˆØˆå”7�BœI¥r¤xµ´½R¼]ÐKð 	ð 	ˆBÝ”)˜A ™E¨Ð,Ñ,Ô,×4Ò4°Q¸Ñ:Ô:ˆCØ�JŠJ�s‰OŒOˆOˆOð	ð 	r   c           
      óþ  — d}t           j                             d¦  «         t          |¦  «        D �]J}t           j                             ddt           j                             dd¦  «        ¬¦  «        }t          j        t          j        |¦  «        ¦  «                             |¦  «        }g }|D ]Ÿ}t           j                             d|¦  «        }t           j                             |dz   t          |dz   |dz   ¦  «        ¦  «        }t           j                             dd¦  «        }	t          |||	¦  «        }
| 
                    |
¦  «         Œ |t          |¦  «                 }|                      |¦  «         �ŒLd S )Né   r   rt   é   é   )ÚhighÚsizer«   )r®   ÚrandomÚseedrh   Úrandintr´   Úprodrµ   ÚmaxÚsliceÚappendÚtupler¨   )r   Ún_testsÚ_r�   ÚtmpÚslicesÚxrR   rW   ÚstepÚstrdr„   s               r   Ú2test_np_array_printer_simple_numeric_types_stridedzLTestGDBPrettyPrinterLogic.test_np_array_printer_simple_numeric_types_stridedÁ   sE  € àˆÝ
Œ	�Š�qÑÔÐå�w‘”ð 	ñ 	ˆAå”I×%Ò% a¨bµr´y×7HÒ7HÈÈAÑ7NÔ7NÐ%ÑOÔOˆEÝ”)�BœG E™NœNÑ+Ô+×3Ò3°EÑ:Ô:ˆCàˆFØð $ð $�Ýœ	×)Ò)¨!¨QÑ/Ô/�õ ”y×(Ò(¨°©µC¸À¹	À1ÀqÁ5Ñ4IÔ4IÑJÔJ�Ý”y×(Ò(¨¨AÑ.Ô.�Ý˜U D¨$Ñ/Ô/�Ø—’˜dÑ#Ô#Ð#Ð#à•e˜F‘m”mÔ$ˆCØ�JŠJ�s‰OŒOˆO‰Oð!	ð 	r   c                 ó>  — d}d}t          j        dt           j        fdt           j        fgd¬¦  «        }t          j        dt           j        fdt           j        fgd¬¦  «        }||fD ]³}t          j        ||z  |¬¦  «                             ||¦  «        }t          j        ||z  |d         ¬¦  «                             ||¦  «        |d<   d	t          j        ||z  |d         ¬¦  «                             ||¦  «        z  |d<   |                      |¦  «         Œ´d S )
Nrª   r«   rÌ   ÚyT©ÚalignFr¬   éd   )r®   r­   Úint16Úfloat64Úemptyrµ   r´   r¨   )r   r¶   r·   ÚalignedÚ	unalignedr¸   r„   s          r   Ú-test_np_array_printer_simple_structured_dtypezGTestGDBPrettyPrinterLogic.test_np_array_printer_simple_structured_dtypeØ   s  € àˆØˆå”(˜S¥"¤(˜O¨cµ2´:Ð->Ð?ÀtÐLÑLÔLˆÝ”H˜s¥B¤H˜o°µR´ZÐ/@ÐAÈÐOÑOÔOˆ	à˜IÐ&ð 	ð 	ˆBÝ”(˜1˜q™5¨Ð+Ñ+Ô+×3Ò3°A°qÑ9Ô9ˆCÝ”y  Q¡¨b°¬gÐ6Ñ6Ô6×>Ò>¸qÀ!ÑDÔDˆC�‰HØ�RœY q¨1¡u°B°s´GÐ<Ñ<Ô<×DÒDÀQÈÑJÔJÑJˆC�‰HØ�JŠJ�s‰OŒOˆOˆOð		ð 	r   c                 óZ   — t          j        dg¦  «        }|                      |¦  «         d S )NÚabcde)r®   r�   r¨   )r   r„   s     r   Útest_np_array_printer_chr_arrayz9TestGDBPrettyPrinterLogic.test_np_array_printer_chr_arrayæ   s&   € åŒh˜�yÑ!Ô!ˆØ�
Š
�3‰Œˆˆˆr   c                 ó^  — d}d}t          j        ddt           j        fgd¬¦  «        }t          j        ||z  |¬¦  «                             ||¦  «        }|                      |¦  «        }|                      d|¦  «         |                      d	|¦  «         |                      d
|¦  «         d S )Nrª   r«   )rÌ   z<U5rÑ   TrÒ   r¬   úarray[Exception:úUnsupported sub-typez[unichr x 5])r®   r­   rÖ   Úzerosrµ   r£   ÚassertIn©r   r¶   r·   r¸   r„   Úreps         r   Ú-test_np_array_printer_unichr_structured_dtypezGTestGDBPrettyPrinterLogic.test_np_array_printer_unichr_structured_dtypeë   s«   € àˆØˆåŒX�| c­2¬:Ð%6Ð7¸tÐDÑDÔDˆÝŒh�q˜1‘u BÐ'Ñ'Ô'×/Ò/°°1Ñ5Ô5ˆØ×Ò Ñ$Ô$ˆØ�ŠÐ(¨#Ñ.Ô.Ð.Ø�ŠÐ,¨cÑ2Ô2Ð2Ø�Š�n cÑ*Ô*Ð*Ð*Ð*r   c                 óx  — d}d}t          j        dt           j        dfdt           j        fgd¬¦  «        }t          j        ||z  |¬¦  «                             ||¦  «        }|                      |¦  «        }|                      d	|¦  «         |                      d
|¦  «         |                      d|¦  «         d S )Nrª   r«   rÌ   )é   rÑ   TrÒ   r¬   rß   rà   znestedarray(int16)r®   r­   rÕ   rÖ   rá   rµ   r£   râ   rã   s         r   Ú3test_np_array_printer_nested_array_structured_dtypezMTestGDBPrettyPrinterLogic.test_np_array_printer_nested_array_structured_dtype÷   sµ   € àˆØˆåŒX˜�RœX tÐ,¨sµB´JÐ.?Ð@ÈÐMÑMÔMˆÝŒh�q˜1‘u BÐ'Ñ'Ô'×/Ò/°°1Ñ5Ô5ˆØ×Ò Ñ$Ô$ˆØ�ŠÐ(¨#Ñ.Ô.Ð.Ø�ŠÐ,¨cÑ2Ô2Ð2Ø�ŠÐ)¨3Ñ/Ô/Ð/Ð/Ð/r   N)r7   r8   r9   rU   rX   r£   r¨   r¹   rÏ   rÚ   rÝ   rå   rè   r:   r   r   r<   r<   =   s±   € € € € € ð@ð @ð @ð4 ð  ð  ðQ+ð Q+ð Q+ðf7ð 7ð 7ðð ð ðð ð ð.ð ð ðð ð ð

+ð 
+ð 
+ð
0ð 
0ð 
0ð 
0ð 
0r   r<   Ú__main__)Ú__doc__Únumba.tests.supportr   r   Únumba.tests.gdb_supportr   r   r   Úunittest.mockr   r	   Ú
numba.corer
   Únumpyr®   Únumbar   r‰   rC   Úunittestr   r<   r7   Úmainr:   r   r   ú<module>ró      sC  ðØ >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€ð Ø
Øð+:ð +:ð +:ð +:ð +:�8ñ +:ô +:ñ Ôñ „ñ „ð+:ð\D0ð D0ð D0ð D0ð D0 ñ D0ô D0ð D0ðN ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   