
    Ae                         d dl mZ d dlZd dlZd dlZ	 d dlmZ dZdd	lmZ  G d
 de      Zy# e$ r- dZ	 d dl	m
Z n # e$ r 	 d dl	mZ n# e$ r dZY nw xY wY nw xY wY Cw xY w)    )absolute_importN)etreeTF)cElementTree)ElementTree   )Errorsc                   0    e Zd ZdZd ZddZd Zd Zd Zy)	CythonDebugWriterz
    Class to output debugging information for cygdb

    It writes debug information to cython_debug/cython_debug_info_<modulename>
    in the build directory.
    c                     t         t        j                         t        j                  j                  |xs t        j                  d      | _        t        j                         | _	        d | _
        | j                  dt        d             y )Ncython_debugz1.0)version)attrs)r   r   NoElementTreeInstalledExceptionospathjoincurdir
output_dirTreeBuildertbmodule_namestartdict)selfr   s     ;lib/python3.12/site-packages/Cython/Debugger/DebugWriter.py__init__zCythonDebugWriter.__init__   sb    =88::'',,z'>RYYO##%

>e)<
=    Nc                 D    | j                   j                  ||xs i        y N)r   r   r   namer   s      r   r   zCythonDebugWriter.start)   s    dEKR(r   c                 :    | j                   j                  |       y r   )r   end)r   r!   s     r   r#   zCythonDebugWriter.end,   s    Dr   c                 r    | j                   j                  ||       | j                   j                  |       y r   )r   r   r#   r    s      r   	add_entryzCythonDebugWriter.add_entry/   s$    dE"Dr   c                    | j                   j                  d       | j                   j                  d       | j                   j                         }	 t        j                  | j
                         t        j                  |      }i }t        rd|d<   d| j                  z   } |j                  t        j                  j                  | j
                  |      fddi| t        j                  j                  | j
                  d      }t!        |d	      5 }|j                  t"        j$                         d d d        y # t        $ r(}|j                  t        j                  k7  r Y d }~d }~ww xY w# 1 sw Y   y xY w)
NModuler   Tpretty_printcython_debug_info_encodingzUTF-8interpreterw)r   r#   closer   makedirsr   OSErrorerrnoEEXISTr   r   	have_lxmlr   writer   r   opensys
executable)r   xml_root_elementeetkwfninterpreter_pathfs           r   	serializezCythonDebugWriter.serialize3   s!   HN#77==?	KK(
 /0!%B~!D$4$44door2KWKK77<<G"C( 	$AGGCNN#	$ 	$  	ww%,,& '		$ 	$s$   D>  E2>	E/E**E/2E;r   )	__name__
__module____qualname____doc__r   r   r#   r%   r>    r   r   r
   r
      s     >)$r   r
   )
__future__r   r   r5   r0   lxmlr   r2   ImportError	xml.etreer   r   Compilerr   objectr
   rC   r   r   <module>rJ      sx    & 	 
 ) 1$ 1$  I3 	6 	E		sS   . A =A AA
	A
AAAAA AA A 