
    J/Ph5$                        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      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_gdb_dwarf.py_gdb_has_numpyzTestGDBDwarf._gdb_has_numpy   s8    XU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    ""$$ 	 7DMM$$$%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#    y6)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    
  $vv(,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    "
48TX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..12D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    tT***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    **49?;;;r   c                 .     | j         j                  S rB   )r   stridesr   s    r   r   zMTestGDBPrettyPrinterLogic.get_gdb_repr.<locals>.DICompositeType_Array.strides   s    **49+<===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#ve}}EE--//	UmmDDy'?'?'A'ADDD,,UH==%77EE  ""((***r   c                     |                      |          }|                     t          |          t          |                     d S rB   )r   assertEqualstr)r   r   gdb_printeds      r   checkzTestGDBPrettyPrinterLogic.check   s?    ''..[))3u::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    7BIrxR]K 	 	B)AE,,,44Q::CJJsOOOO	 	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%%abry7H7HA7N7N%OOE)BGENN++33E::CF $ $	))!Q// y((C	1q54I4IJJy((A..UD$//d####eFmm$CJJsOOOO!	 	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"(Oc2:->?tLLLHsBHoRZ/@AOOO	I& 	 	B(1q5+++33Aq99CyQbg666>>q!DDCHRYq1uBsG<<<DDQJJJCHJJsOOOO		 	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|c2:%67tDDDhq1uB'''//155$$(#...,c222nc*****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RXt,sBJ.?@MMMhq1uB'''//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0N zHMOOOOO r   