o
    g                     @   sj   d dl mZ 	 d dlmZ d dlmZmZ ddlmZ G dd de	Z
G dd	 d	eZG d
d deZdS )    )absolute_import)contextmanager)Element_escape_cdata   )incremental_treec                   @   s   e Zd ZdS )LxmlSyntaxErrorN)__name__
__module____qualname__ r   r   L/var/www/html/api-tag/env/lib/python3.10/site-packages/et_xmlfile/xmlfile.pyr      s    r   c                   @   s>   e Zd ZdZdd ZedddZdd Zd	d
 Zdd Z	dS )_IncrementalFileWriterz.Replacement for _IncrementalFileWriter of lxmlc                 C   s&   g | _ || _d| _t | _d| _d S )NF)_element_stack_file
_have_rootr   current_global_nsmapglobal_nsmapis_html)selfoutput_filer   r   r   __init__   s
   

z_IncrementalFileWriter.__init__Nc                 k   s"   |r"d|v r"d|v r|d |d krt d| }|d|d< d| _|du r+i }t|fd|i|}d|_d|_| jrId}| jd \}}}	nd}i }d}i }	tj	| j
||| jd| j||	||d
\}}}}	}
| j|||	f dV  | j  | 
d	| d
 |jr| 
t|j dS dS )z1Create a new xml element using a context manager.N z?Found None and "" as default nsmap prefixes with different URIsTattribF)nsmap_scoper   short_empty_elementsr   is_rooturi_to_prefixdefault_ns_attr_prefix	new_nsmapz</>)
ValueErrorcopypopr   r   texttailr   r   write_elem_startr   r   r   appendr   )r   tagr   nsmap_extraelemr   r   r   r   next_remains_rootr   r   r   element   sn   
z_IncrementalFileWriter.elementc                 C   s   t |tr| jst | t| dS | js| jrt | jr+d}| jd \}}}nd}i }d}i }tj| j||| j	d| j
|||d	 dS )zWrite a string or subelement.Fr   TN)r   r   r   r   r   r   r   )
isinstancestrr   r   r   r   r   r   _serialize_ns_xmlr   r   )r   argr   r   r   r   r   r   r   write_   s8   

z_IncrementalFileWriter.writec                 C   s   d S Nr   )r   r   r   r   	__enter__   s   z _IncrementalFileWriter.__enter__c                 C   s   | j st d S r4   )r   r   r   typevalue	tracebackr   r   r   __exit__   s   z_IncrementalFileWriter.__exit__)NN)
r	   r
   r   __doc__r   r   r.   r3   r5   r:   r   r   r   r   r      s    @%r   c                   @   s*   e Zd ZdZdddZdd Zdd	 Zd
S )xmlfilez4Context manager that can replace lxml.etree.xmlfile.Futf-8c                 C   s   || _ || _|| _d | _d S r4   )r   _closeencoding	writer_cm)r   r   bufferedr?   closer   r   r   r      s   
zxmlfile.__init__c                 C   s*   t j| j| jd| _| j \}}t|S )N)r?   )r   _get_writerr   r?   r@   r5   r   )r   writerdeclared_encodingr   r   r   r5      s   zxmlfile.__enter__c                 C   s.   | j r| j ||| | jr| j  d S d S r4   )r@   r:   r>   r   rB   r6   r   r   r   r:      s
   zxmlfile.__exit__N)Fr=   F)r	   r
   r   r;   r   r5   r:   r   r   r   r   r<      s
    
r<   N)
__future__r   
contextlibr   xml.etree.ElementTreer   r   r   r   	Exceptionr   objectr   r<   r   r   r   r   <module>   s    x