
    /~h                     p    d dl mZ 	 d dlmZ d dlmZmZ  G d de      Z G d de	      Z
 G d d	e	      Zy
)    )absolute_import)contextmanager)Elementtostringc                       e Zd Zy)LxmlSyntaxErrorN)__name__
__module____qualname__     [/var/www/peopleoo.sandbox-dev.co.uk/venv/lib/python3.12/site-packages/et_xmlfile/xmlfile.pyr   r      s    r   r   c                   @    e Zd ZdZd Zed	d       Zd Zd Zd Z	d Z
y)
_FakeIncrementalFileWriterz_Replacement for _IncrementalFileWriter of lxml.
       Uses ElementTree to build xml in memory.c                 <    g | _         d | _        || _        d| _        y )NF)_element_stack_top_element_file
_have_root)selfoutput_files     r   __init__z#_FakeIncrementalFileWriter.__init__   s        
r   Nc              +     K   d| _         |i }t        |fd|i|| _        d| j                  _        d| j                  _        | j
                  j                  | j                         d | j
                  j                         }| j
                  r2| j
                  d   }|j                  | j                         || _        y| j                  |       d| _        yw)zCreate a new xml element using a context manager.
        The elements are written when the top level context is left.

        This is for code compatibility only as it is quite slow.
        TNattrib )	r   r   r   texttailr   appendpop_write_element)r   tagr   nsmap_extraelparents          r   elementz"_FakeIncrementalFileWriter.element   s      >F#CAA&A!#!#""4#4#45   $$&((,FMM$++, &D# $Ds   CCc                    t        |t              rq| j                  
t               t	        | j                        dk(  r | j                  xj
                  |z  c_        y| j                  d   xj                  |z  c_        y| j                  | j                  j                  |       y| j                  s| j                  |       yt               )zWrite a string or subelement.Nr   r   )

isinstancestrr   r   lenr   r   r   r   r!   )r   args     r   writez _FakeIncrementalFileWriter.write5   s     c3  (%''4$$%*!!&&#-& !!"%**c1*   ,!!((-__##C(%''r   c                 P    t        |      }| j                  j                  |       y N)r   r   r-   )r   r'   xmls      r   r!   z)_FakeIncrementalFileWriter._write_elementL   s    w

r   c                      y r/   r   r   s    r   	__enter__z$_FakeIncrementalFileWriter.__enter__P   s    r   c                 0    | j                   s
t               y r/   )r   r   r   typevalue	tracebacks       r   __exit__z#_FakeIncrementalFileWriter.__exit__S   s    !## r   )NN)r	   r
   r   __doc__r   r   r'   r-   r!   r3   r9   r   r   r   r   r      s4    3  % %6(.$r   r   c                   $    e Zd ZdZddZd Zd Zy)xmlfilez4Context manager that can replace lxml.etree.xmlfile.Nc                 r    t        |t              rt        |d      | _        d| _        y || _        || _        y )NwbT)r)   r*   openr   _close)r   r   bufferedencodingcloses        r   r   zxmlfile.__init__[   s/    k3'k40DJDK$DJDKr   c                 ,    t        | j                        S r/   )r   r   r2   s    r   r3   zxmlfile.__enter__c   s    )$**55r   c                 X    | j                   dk(  r| j                  j                          y y )NT)r@   r   rC   r5   s       r   r9   zxmlfile.__exit__f   s#    ;;$JJ r   )FNF)r	   r
   r   r:   r   r3   r9   r   r   r   r<   r<   Y   s    > 6r   r<   N)
__future__r   
contextlibr   xml.etree.ElementTreer   r   	Exceptionr   objectr   r<   r   r   r   <module>rK      s=    & Q & 3	i 	F$ F$Rf r   