
    ڏDj9	                         d dl Z d dlZd dlZ	 d dlmZ dZddl	m
Z
 ddlmZ d	 Z G d
 d      Zy# e$ r dZd dlmZ Y )w xY w)    N)etreeTF)ElementTree   )Errors)EncodedStringc                 n    t        | t              r%| j                  d      r| dd j                         ryy)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)names    _C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Debugger/DebugWriter.pyis_valid_tagr      s1     $&??3DH$6$6$8    c                   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     r   __init__zCythonDebugWriter.__init__&   sb    =88::'',,z'>RYYO##%

>e)<
=r   Nc                 \    t        |      r!| j                  j                  ||xs i        y y N)r   r   r!   r#   r   r   s      r   r!   zCythonDebugWriter.start0   s%    GGMM$, r   c                 R    t        |      r| j                  j                  |       y y r&   )r   r   end)r#   r   s     r   r)   zCythonDebugWriter.end4   s    GGKK r   c                     t        |      r8| j                  j                  ||       | j                  j                  |       y y r&   )r   r   r!   r)   r'   s      r   	add_entryzCythonDebugWriter.add_entry8   s1    GGMM$&GGKK 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.serialize=   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+   rD    r   r   r   r      s     >-
$r   r   )r   r;   r6   lxmlr   r8   ImportError	xml.etreer   Compilerr   Compiler.StringEncodingr   r   r   rI   r   r   <module>rO      sK    	 
 /I
  34$ 4$-  /I./s   0 A A 