Ë
    èÿæi5$  ã                   óä   — 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.                  «        yy)z8Tests for gdb interacting with the DWARF numba generatesé    )ÚTestCaseÚ
linux_only)Ú	needs_gdbÚskip_unless_pexpectÚGdbMIDriver)ÚpatchÚMock)Ú	datamodelN)Útypeofc                   óD   — e Zd ZddiZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)ÚTestGDBDwarfÚ	NUMBA_OPTÚ0c                 óh   — t        t        d¬«      }|j                  «       }|j                  «        |S )z6Returns True if gdb has NumPy support, False otherwiseF)Údebug)r   Ú__file__Úsupports_numpyÚquit)ÚselfÚdriverÚ	has_numpys      úo/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_gdb_dwarf.pyÚ_gdb_has_numpyzTestGDBDwarf._gdb_has_numpy   s+   € äœX¨UÔ4ˆØ×)Ñ)Ó+ˆ	Ø�‰ŒØÐó    c                 óL   — d|› �}| j                  |dd| j                  ¬«       y )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   s3   € Ø# H :Ð.ˆØ×#Ñ#°Ø/5Ø.4Ø,0×,AÑ,Að 	$õ 	Cr   c                 ó&   — | j                  d«       y )NÚ
test_basic©r&   ©r   s    r   r(   zTestGDBDwarf.test_basic&   s   € Ø×$Ñ$ \Õ2r   c                 ó&   — | j                  d«       y )NÚtest_array_argr)   r*   s    r   r,   zTestGDBDwarf.test_array_arg)   s   € Ø×$Ñ$Ð%5Õ6r   c                 ó&   — | j                  d«       y )NÚtest_conditional_breakpointr)   r*   s    r   r.   z(TestGDBDwarf.test_conditional_breakpoint,   s   € Ø×$Ñ$Ð%BÕCr   c                 ó&   — | j                  d«       y )NÚtest_break_on_symbolr)   r*   s    r   r0   z!TestGDBDwarf.test_break_on_symbol/   s   € Ø×$Ñ$Ð%;Õ<r   c                 ó&   — | j                  d«       y )NÚtest_break_on_symbol_versionr)   r*   s    r   r2   z)TestGDBDwarf.test_break_on_symbol_version2   s   € Ø×$Ñ$Ð%CÕDr   c                 ól   — | j                  «       sd}| j                  |«       | j                  d«       y )Nz"Cannot find gdb with NumPy supportÚtest_pretty_print)r   ÚskipTestr&   )r   Ú_msgs     r   r4   zTestGDBDwarf.test_pretty_print5   s.   € Ø×"Ñ"Ô$Ø7ˆDØ�M‰M˜$Ôà×$Ñ$Ð%8Õ9r   N)Ú__name__Ú
__module__Ú__qualname__r#   r   r&   r(   r,   r.   r0   r2   r4   © r   r   r   r      s:   „ ð $ SÐ)ÐòòCò3ò7òDò=òEó:r   r   c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestGDBPrettyPrinterLogicc                 óò   ‡— t        «       t        «       dœ}t        j                  d|«      | _        | j                  j	                  «        dd l} G d„ d«      } |«       Š |j                  di dˆfd„i¤Ž y )	N)Úgdbzgdb.printingzsys.modulesr   c                   ó   — e Zd Zd„ Zy)ú9TestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferiorc                 ó^   — t         j                  |z  j                  |«      }|j                  S ©N)ÚctÚc_charÚfrom_addressÚraw)r   ÚdataÚextentÚbufs       r   Úread_memoryzETestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferior.read_memoryV   s$   € Ü—y‘y 6Ñ)×7Ñ7¸Ó=�Ø—w‘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   ø€ ¹2r   r:   )r	   r   ÚdictÚpatched_sysÚstartr>   Úconfigure_mock)r   Úmock_modulesr>   rK   rN   s       @r   ÚsetUpzTestGDBPrettyPrinterLogic.setUpC   sm   ø€ ô
  $›vÜ(,«ñ0ˆä Ÿ:™: m°\ÓBˆÔØ×Ñ×ÑÔ ó 	÷	ñ 	ñ ÓˆØˆ×ÑÑ?Ð1³:Ð>Ó?r   c                 ó8   — | j                   j                  «        y 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                  j                  |t        |«      «      }|j                  «       }t        |«      › d|j                  «       › d�} |||«      }|j                  |«      }	|	j                  «       j                  «       S )Nr   )Úgdb_print_extensionc                   ó(   — e Zd Zd„ Zed„ «       Zd„ Zy)ú:TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrangec                 ó    — || _         || _        y 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                 ó2   — | j                   | j                  fS rB   r^   r*   s    r   Úrangez@TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.rangev   s   € Ø—x‘x §¡Ð)Ð)r   N)r7   r8   r9   rd   Úpropertyrf   rh   r:   r   r   Ú
DISubranger\   m   s    „ òð ñó ðó*r   rj   c                   ó   •— e Zd Zd„ Zˆ fd„Zy)úATestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_typec                 ó"   — ||c| _         | _        y rB   r^   ra   s      r   rd   zJTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.__init__z   s   € Ø%'¨Ð"�”˜$�(r   c                 ó@   •—  ‰| j                   | j                  «      gS rB   r^   )r   rj   s    €r   ÚfieldszHTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.fields}   s   ø€ Ù" 4§8¡8¨T¯X©XÓ6Ð8Ð8r   N)r7   r8   r9   rd   ro   )rj   s   €r   ÚDW_TAG_array_typerl   y   s   ø„ ò,õ9r   rp   c                   ó.   •— e Zd Zˆ fd„Zed„ «       Zd„ Zy)úCTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuplec                 óH   •—  ‰dt        |«      dz
  «      | _        || _        y )Nr   é   )ÚlenÚ_typeÚ_tuple)r   Ú	the_tuplerp   s     €r   rd   zLTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.__init__�   s!   ø€ Ù.¨q´#°i³.À1Ñ2DÓE�”
Ø'�•r   c                 ó   — | j                   S rB   )rv   r*   s    r   rf   zHTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.type…   s   € à—z‘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   €   s!   ø„ ô(ð ñ"ó ð"ó)r   r~   c                   ór   •— 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
y)	úETestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Arrayc                 ó    — || _         || _        y 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                 óB   — | j                   j                  j                  S rB   )r‚   ÚctypesrG   r*   s    r   rG   zJTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.data”   s   € à—y‘y×'Ñ'×,Ñ,Ð,r   c                 ó.   — | j                   j                  S rB   )r‚   Úitemsizer*   s    r   r‹   zNTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.itemsize˜   s   € à—y‘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©9¯?©?Ó;Ð;r   c                 ó<   •—  ‰| j                   j                  «      S rB   )r‚   ÚstridesrŽ   s    €r   r�   zMTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.strides    s   ø€ á*¨4¯9©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€   Œ   sq   ø„ ò*ò+ð ñ-ó ð-ð ñ*ó ð*ð ó<ó ð<ð ó>ó ð>ð ñ&ó ñ&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÷
	*ñ 
	*÷	9ó 	9÷
	)ó 
	)÷	&ó 	&ô< ×'Ñ'ˆÜ×&Ñ&×1Ñ1°#´v¸e³}ÓEˆØ×-Ñ-Ó/ˆ	Ü˜U“m�_ B y×'?Ñ'?Ó'AÐ&BÀ!ÐDˆÙ,¨U°HÓ=ˆà%×7Ñ7¸ÓEˆà× Ñ Ó"×(Ñ(Ó*Ð*r   c                 ón   — | j                  |«      }| j                  t        |«      t        |«      «       y rB   )r£   ÚassertEqualÚstr)r   r�   Úgdb_printeds      r   ÚcheckzTestGDBPrettyPrinterLogic.check´   s+   € Ø×'Ñ'¨Ó.ˆØ×Ñœ˜[Ó)¬3¨u«:Õ6r   c                 ó&  — d}d}t         j                  t         j                  t         j                  t         j                  t         j
                  fD ]=  }t        j                  ||z  |¬«      j                  ||«      }| j                  |«       Œ? y )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¸   sb   € àˆØˆä—7‘7œBŸI™I¤r§x¡x´·±¼R¿]¹]ÓKˆBÜ—)‘)˜A ™E¨Ô,×4Ñ4°Q¸Ó:ˆCØ�J‰J�s�Oñ Lr   c           
      óÊ  — d}t         j                  j                  d«       t        |«      D �]3  }t         j                  j	                  ddt         j                  j	                  dd«      ¬«      }t        j
                  t        j                  |«      «      j                  |«      }g }|D ]“  }t         j                  j	                  d|«      }t         j                  j	                  |dz   t        |dz   |dz   «      «      }t         j                  j	                  dd«      }	t        |||	«      }
|j                  |
«       Œ• |t        |«         }| j                  |«       �Œ6 y )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Á   s  € àˆÜ
�	‰	�‰�qÔä�w—ˆAä—I‘I×%Ñ% a¨b´r·y±y×7HÑ7HÈÈAÓ7NÐ%ÓOˆEÜ—)‘)œBŸG™G E›NÓ+×3Ñ3°EÓ:ˆCàˆFÛ�ÜŸ	™	×)Ñ)¨!¨QÓ/�ô —y‘y×(Ñ(¨°©´C¸À¹	À1ÀqÁ5Ó4IÓJ�Ü—y‘y×(Ñ(¨¨AÓ.�Ü˜U D¨$Ó/�Ø—‘˜dÕ#ð ð ”e˜F“mÑ$ˆCØ�J‰J�sŽ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  |¬«      j                  ||«      }t        j                  ||z  |d   ¬«      j                  ||«      |d<   d	t        j                  ||z  |d   ¬«      j                  ||«      z  |d<   | j                  |«       Œ¢ y )
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ˆÜ—H‘H˜s¤B§H¡H˜o°´R·Z±ZÐ/@ÐAÈÔOˆ	à˜IÓ&ˆBÜ—(‘(˜1˜q™5¨Ô+×3Ñ3°A°qÓ9ˆCÜ—y‘y  Q¡¨b°©gÔ6×>Ñ>¸qÀ!ÓDˆC�‰HØœRŸY™Y q¨1¡u°B°s±GÔ<×DÑDÀQÈÓJÑJˆC�‰HØ�J‰J�s�Oñ	 'r   c                 óR   — t        j                  dg«      }| j                  |«       y )NÚabcde)r®   r�   r¨   )r   r„   s     r   Útest_np_array_printer_chr_arrayz9TestGDBPrettyPrinterLogic.test_np_array_printer_chr_arrayæ   s   € ä�h‰h˜�yÓ!ˆØ�
‰
�3�r   c                 ó@  — d}d}t        j                  ddt         j                  fgd¬«      }t        j                  ||z  |¬«      j	                  ||«      }| j                  |«      }| j                  d|«       | j                  d	|«       | j                  d
|«       y )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‰X�| c¬2¯:©:Ð%6Ð7¸tÔDˆÜ�h‰h�q˜1‘u BÔ'×/Ñ/°°1Ó5ˆØ×Ñ Ó$ˆØ�‰Ð(¨#Ô.Ø�‰Ð,¨cÔ2Ø�‰�n cÕ*r   c                 ób  — d}d}t        j                  dt         j                  dfdt         j                  fgd¬«      }t        j                  ||z  |¬«      j                  ||«      }| j                  |«      }| j                  d	|«       | j                  d
|«       | j                  d|«       y )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‰X˜œRŸX™X tÐ,¨s´B·J±JÐ.?Ð@ÈÔMˆÜ�h‰h�q˜1‘u BÔ'×/Ñ/°°1Ó5ˆØ×Ñ Ó$ˆØ�‰Ð(¨#Ô.Ø�‰Ð,¨cÔ2Ø�‰Ð)¨3Õ/r   N)r7   r8   r9   rU   rX   r£   r¨   r¹   rÏ   rÚ   rÝ   rå   rè   r:   r   r   r<   r<   =   s7   „ ò@ò4 òQ+òf7òòò.òò

+ó
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ó      sx   ðÙ >ß 4ß OÑ Oß %Ý  Û Ý Û Û ð Ø
Øô+:�8ó +:ó ó ó ð+:ô\D0 ô D0ðN ˆzÒØ€H‡M�M…Oð r   