
    sh5$                         S r SSKJrJr  SSKJrJrJr  SSKJ	r	J
r
  SSKJr  SSKrSSKJr  SSKrSSKr\\\ " S S	\5      5       5       5       r " S
 S\5      r\S:X  a  \R.                  " 5         gg)z8Tests for gdb interacting with the DWARF numba generates    )TestCase
linux_only)	needs_gdbskip_unless_pexpectGdbMIDriver)patchMock)	datamodelN)typeofc                   L    \ rS rSrSS0rS rS rS rS rS r	S	 r
S
 rS rSrg)TestGDBDwarf   	NUMBA_OPT0c                 b    [        [        SS9nUR                  5       nUR                  5         U$ )z6Returns True if gdb has NumPy support, False otherwiseF)debug)r   __file__supports_numpyquit)selfdriver	has_numpys      n/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_gdb_dwarf.py_gdb_has_numpyTestGDBDwarf._gdb_has_numpy   s+    XU4))+	    c                 F    SU 3nU R                  USSU R                  S9  g )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_runner$TestGDBDwarf._subprocess_test_runner   s3    #H:.##/5.4,0,A,A 	$ 	Cr   c                 &    U R                  S5        g )N
test_basicr(   r   s    r   r+   TestGDBDwarf.test_basic&   s    $$\2r   c                 &    U R                  S5        g )Ntest_array_argr,   r-   s    r   r0   TestGDBDwarf.test_array_arg)   s    $$%56r   c                 &    U R                  S5        g )Ntest_conditional_breakpointr,   r-   s    r   r3   (TestGDBDwarf.test_conditional_breakpoint,   s    $$%BCr   c                 &    U R                  S5        g )Ntest_break_on_symbolr,   r-   s    r   r6   !TestGDBDwarf.test_break_on_symbol/   s    $$%;<r   c                 &    U R                  S5        g )Ntest_break_on_symbol_versionr,   r-   s    r   r9   )TestGDBDwarf.test_break_on_symbol_version2   s    $$%CDr   c                 v    U R                  5       (       d  SnU R                  U5        U R                  S5        g )Nz"Cannot find gdb with NumPy supporttest_pretty_print)r   skipTestr(   )r   _msgs     r   r<   TestGDBDwarf.test_pretty_print5   s1    ""$$7DMM$$$%89r    N)__name__
__module____qualname____firstlineno__r%   r   r(   r+   r0   r3   r6   r9   r<   __static_attributes__r@   r   r   r   r      s:     $S)C37D=E:r   r   c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)TestGDBPrettyPrinterLogic=   c                    ^ [        5       [        5       S.n[        R                  " SU5      U l        U R                  R	                  5         SS Kn " S S5      nU" 5       mUR                  " S0 SU4S j0D6  g )	N)gdbzgdb.printingzsys.modulesr   c                       \ rS rSrS rSrg)9TestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferiorT   c                 ^    [         R                  U-  R                  U5      nUR                  $ N)ctc_charfrom_addressraw)r   dataextentbufs       r   read_memoryETestGDBPrettyPrinterLogic.setUp.<locals>.SelectedInferior.read_memoryV   s$    yy6)77=wwr   r@   N)rA   rB   rC   rD   rW   rE   r@   r   r   SelectedInferiorrL   T   s    r   rY   selected_inferiorc                     > T $ rO   r@   )sis   r   <lambda>1TestGDBPrettyPrinterLogic.setUp.<locals>.<lambda>[   s    2r   r@   )r	   r   dictpatched_sysstartrJ   configure_mock)r   mock_modulesrJ   rY   r\   s       @r   setUpTestGDBPrettyPrinterLogic.setUpC   sk    
  $v(,0 ::m\B  		 	 ?1:>?r   c                 8    U R                   R                  5         g rO   )r`   stopr-   s    r   tearDown"TestGDBPrettyPrinterLogic.tearDown]   s    r   c                   ^
^^ SSK Jn   " S S5      m " U4S jS5      m " U4S jS5      m
 " U
4S	 jS
5      n[        R                  n[        R                  R                  U[        U5      5      nUR                  5       n[        U5       SUR                  5        S3nU" X5      nUR                  U5      n	U	R                  5       R                  5       $ )Nr   )gdb_print_extensionc                   0    \ rS rSrS r\S 5       rS rSrg):TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrangem   c                     Xl         X l        g rO   _lo_hir   lohis      r   __init__CTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.__init__n   s    r   c                     U $ rO   r@   r-   s    r   type?TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.typer   s    r   c                 2    U R                   U R                  4$ rO   rp   r-   s    r   range@TestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DISubrange.rangev   s    xx))r   rr   rq   N)	rA   rB   rC   rD   rv   propertyry   r|   rE   r@   r   r   
DISubrangerm   m   s       *r   r   c                   (   > \ rS rSrS rU 4S jrSrg)ATestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_typey   c                      XsU l         U l        g rO   rp   rs   s      r   rv   JTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.__init__z   s    %'"$(r   c                 @   > T" U R                   U R                  5      /$ rO   rp   )r   r   s    r   fieldsHTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DW_TAG_array_type.fields}   s    "488TXX688r   r~   N)rA   rB   rC   rD   rv   r   rE   )r   s   r   DW_TAG_array_typer   y   s    ,9 9r   r   c                   8   > \ rS rSrU 4S jr\S 5       rS rSrg)CTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple   c                 F   > T" S[        U5      S-
  5      U l        Xl        g )Nr      )len_type_tuple)r   	the_tupler   s     r   rv   LTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.__init__   s    .q#i.12DE
'r   c                     U R                   $ rO   )r   r-   s    r   ry   HTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.type   s    zz!r   c                      U R                   U   $ rO   )r   r   items     r   __getitem__OTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DIDerivedType_tuple.__getitem__   s    {{4((r   )r   r   N)	rA   rB   rC   rD   rv   r   ry   r   rE   )r   s   r   DIDerivedType_tupler      s!    ( " ")r   r   c                   ~   > \ rS rSrS rS r\S 5       r\S 5       r\U 4S j5       r	\U 4S j5       r
\S 5       rS	rg
)ETestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array   c                     Xl         X l        g rO   _arr	_type_str)r   arrtype_strs      r   rv   NTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.__init__   s    	!)r   c                     [        X5      $ rO   )getattrr   s     r   r   QTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.__getitem__   s    t**r   c                 B    U R                   R                  R                  $ rO   )r   ctypesrT   r-   s    r   rT   JTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.data   s    yy'',,,r   c                 .    U R                   R                  $ rO   )r   itemsizer-   s    r   r   NTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.itemsize   s    yy)))r   c                 <   > T" U R                   R                  5      $ rO   )r   shaper   r   s    r   r   KTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.shape   s    *499??;;r   c                 <   > T" U R                   R                  5      $ rO   )r   stridesr   s    r   r   MTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.strides   s    *499+<+<==r   c                     U R                   $ rO   )r   r-   s    r   ry   JTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.type   s    ~~%r   r   N)rA   rB   rC   rD   rv   r   r   rT   r   r   r   ry   rE   )r   s   r   DICompositeType_Arrayr      sq    *+ - - * * < < > > & &r   r   z ())
numba.miscrk   r
   default_managermodels
ArrayModelr   get_data_typestructure_reprNumbaArrayPrinter	to_stringstrip)r   arrayrk   r   dmmarray_model	data_typer   fake_gdb_arrprinterr   r   r   s             @@@r   get_gdb_repr&TestGDBPrettyPrinterLogic.get_gdb_repra   s     	3
	* 
	*	9 	9
	) 
	)	& 	&< ''&&11#ve}E--/	Um_By'?'?'A&B!D,U=%77E  "((**r   c                 n    U R                  U5      nU R                  [        U5      [        U5      5        g rO   )r   assertEqualstr)r   r   gdb_printeds      r   checkTestGDBPrettyPrinterLogic.check   s+    ''.[)3u:6r   c                 "   SnSn[         R                  [         R                  [         R                  [         R                  [         R
                  4 H:  n[         R                  " X!-  US9R                  X!5      nU R                  U5        M<     g )N      dtype)	npint8uint16int64float32
complex128arangereshaper   )r   nmdtr   s        r   *test_np_array_printer_simple_numeric_typesDTestGDBPrettyPrinterLogic.test_np_array_printer_simple_numeric_types   s^    77BIIrxxR]]KB))AE,44Q:CJJsO Lr   c           
         Sn[         R                  R                  S5        [        U5       GH4  n[         R                  R	                  SS[         R                  R	                  SS5      S9n[         R
                  " [         R                  " U5      5      R                  U5      n/ nU H  n[         R                  R	                  SU5      n[         R                  R	                  US-   [        US-   US-   5      5      n[         R                  R	                  SS5      n	[        XxU	5      n
UR                  U
5        M     U[        U5         nU R                  U5        GM7     g )N   r   r   r      )highsizer   )r   randomseedr|   randintr   prodr   maxsliceappendtupler   )r   n_tests_r   tmpslicesxra   rg   stepstrdr   s               r   2test_np_array_printer_simple_numeric_types_stridedLTestGDBPrettyPrinterLogic.test_np_array_printer_simple_numeric_types_strided   s   
		qwAII%%abryy7H7HA7N%OE))BGGEN+33E:CF		))!Q/ yy((C	1q54IJyy((A.U$/d#  eFm$CJJsO!  r   c                     SnSn[         R                  " S[         R                  4S[         R                  4/SS9n[         R                  " S[         R                  4S[         R                  4/SS9nX44 H  n[         R                  " X!-  US9R                  X!5      n[         R                  " X!-  US   S9R                  X!5      US'   S	[         R                  " X!-  US   S9R                  X!5      -  US'   U R                  U5        M     g )
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_dtypeGTestGDBPrettyPrinterLogic.test_np_array_printer_simple_structured_dtype   s    ((S"((Oc2::->?tLHHsBHHoRZZ/@AO	&B((15+33A9Cyybg6>>qDCHRYYquBsG<DDQJJCHJJsO	 'r   c                 T    [         R                  " S/5      nU R                  U5        g )Nabcde)r   r   r   )r   r   s     r   test_np_array_printer_chr_array9TestGDBPrettyPrinterLogic.test_np_array_printer_chr_array   s    hhy!

3r   c                 4   SnSn[         R                  " SS[         R                  4/SS9n[         R                  " X!-  US9R	                  X!5      nU R                  U5      nU R                  SU5        U R                  S	U5        U R                  S
U5        g )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_dtypeGTestGDBPrettyPrinterLogic.test_np_array_printer_unichr_structured_dtype   s    XX|c2::%67tDhhquB'//5$(#.,c2nc*r   c                 V   SnSn[         R                  " S[         R                  S4S[         R                  4/SS9n[         R                  " X!-  US9R                  X!5      nU R                  U5      nU R                  S	U5        U R                  S
U5        U R                  SU5        g )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_dtypeMTestGDBPrettyPrinterLogic.test_np_array_printer_nested_array_structured_dtype   s    XXRXXt,sBJJ.?@MhhquB'//5$(#.,c2)3/r   )r`   N)rA   rB   rC   rD   rd   rh   r   r   r   r   r  r  r  r  rE   r@   r   r   rG   rG   =   s7    @4 Q+f7.

+
0r   rG   __main__)__doc__numba.tests.supportr   r   numba.tests.gdb_supportr   r   r   unittest.mockr   r	   
numba.corer
   numpyr   numbar   r   rP   unittestr   rG   rA   mainr@   r   r   <module>r      sv    > 4 O O %       
+:8 +:   +:\D0 D0N zMMO r   