o
    j                     @   s   d dl Z d dlZd dlZz
d dlmZ dZW n ey'   dZd dlmZ Y nw ddl	m
Z
 ddlmZ d	d
 ZG dd dZdS )    N)etreeTF)ElementTree   )Errors)EncodedStringc                 C   s,   t | tr| dr| dd  rdS dS )z
    Names like '.0' are used internally for arguments
    to functions creating generator expressions,
    however they are not identifiers.

    See https://github.com/cython/cython/issues/5552
    .   NFT)
isinstancer   
startswith	isdecimal)name r   \/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/Cython/Debugger/DebugWriter.pyis_valid_tag   s   
r   c                   @   s:   e Zd ZdZdd ZdddZdd Zd	d
 Zdd ZdS )CythonDebugWriterz
    Class to output debugging information for cygdb

    It writes debug information to cython_debug/cython_debug_info_<modulename>
    in the build directory.
    c                 C   sN   t d u rt tj|ptjd| _t  | _	d | _
| jdtddd d S )Ncython_debugz1.0)version)attrs)r   r   ZNoElementTreeInstalledExceptionospathjoincurdir
output_dirZTreeBuildertbmodule_namestartdict)selfr   r   r   r   __init__&   s   
zCythonDebugWriter.__init__Nc                 C   s"   t |r| j||pi  d S d S N)r   r   r   r   r   r   r   r   r   r   0   s   zCythonDebugWriter.startc                 C   s   t |r| j| d S d S r   )r   r   end)r   r   r   r   r   r!   4   s   zCythonDebugWriter.endc                 K   s*   t |r| j|| | j| d S d S r   )r   r   r   r!   r    r   r   r   	add_entry8   s   zCythonDebugWriter.add_entryc              
   C   s   | j d | j d | j  }zt| j W n ty2 } z|jtjkr( W Y d }~nd }~ww t	
|}i }tr@d|d< d| j }|jtj| j|fddi| tj| jd}t|d	}|tj W d    d S 1 suw   Y  d S )
NModuler   TZpretty_printZcython_debug_info_encodingzUTF-8interpreterw)r   r!   closer   makedirsr   OSErrorerrnoEEXISTr   r   	have_lxmlr   writer   r   opensys
executable)r   Zxml_root_elementeetkwfnZinterpreter_pathfr   r   r   	serialize=   s*   


""zCythonDebugWriter.serializer   )	__name__
__module____qualname____doc__r   r   r!   r"   r6   r   r   r   r   r      s    

r   )r   r/   r*   Zlxmlr   r,   ImportErrorZ	xml.etreer   ZCompilerr   ZCompiler.StringEncodingr   r   r   r   r   r   r   <module>   s    