Ë
    "ïàj’  ã                   ó  — d Z ddlZddlmZ dZ ej
                  d«      ZdZ	 ddlm	Z	 dZe	j                  Zd„ Zd„ Zddœd„Zd„ Zd„ Zddœd„Zd„ Zy# e$ r* dd	lmZmZmZ dd
lmZ	 exe	_        Zee	_        ee	_        Y ŒJw xY w)z-
Small wrapper for different etree packages.
é    N)ÚStringIOÚreStructuredTextÚwsgidavF)ÚetreeT)ÚElementÚ
SubElementÚtostring)ÚElementTreec                 ó"   — t        | t        «      S )N)Ú
isinstanceÚ_ElementType)Úobjs    ú@/srv/dav/.venv/lib/python3.12/site-packages/wsgidav/xml_tools.pyÚis_etree_elementr   (   s   € Ü�cœ<Ó(Ð(ó    c                 ó  — 	 t         r+t        j                  | t        j                  d¬«      ¬«      S t        j                  | «      S # t        $ r/ t
        j                  d«       t
        j                  d| › �«       ‚ w xY w)z&Convert XML string into etree.Element.F)Úresolve_entities)ÚparserzyError parsing XML string. If lxml is not available, and unicode is involved, then installing lxml _may_ solve this issue.zXML source: )Úuse_lxmlr   ÚXMLÚ	XMLParserÚ	ExceptionÚ_loggerÚerror)Útexts    r   Ústring_to_xmlr   ,   sl   € ðÝÜ—9‘9˜T¬%¯/©/È5Ô*QÔRÐRÜ�y‰y˜‹ÐøÜò ô 	�‰ð6ô	
ô
 	�‰˜ T FÐ+Ô,Øð!ús   ‚0A ³A Á8B ©Úprettyc                óÆ   — t         rt        j                  | dd|¬«      }n-t        j                  | d¬«      }|j                  d«      sd|z   }|j                  d«      sJ ‚|S )zsWrapper for etree.tostring, that takes care of unsupported pretty_print
    option and prepends an encoding header.zUTF-8T)ÚencodingÚxml_declarationÚpretty_print)r    s   <?xml s(   <?xml version="1.0" encoding="utf-8" ?>
)r   r   r	   Ú
startswith)Úelementr   Úxmls      r   Úxml_to_bytesr&   E   s`   € õ Ü�n‰nØØØ Øô	
‰ô �n‰n˜W¨wÔ7ˆØ�~‰~˜iÔ(Ø>ÀÑDˆCà�>‰>˜)Ô$Ð$Ð$Ø€Jr   c                  ój   — t         rt        j                  dddi¬«      S t        j                  d«      S )úGWrapper for etree.Element, that takes care of unsupported nsmap option.z{DAV:}multistatusÚDúDAV:©Únsmap©r   r   r   © r   r   Úmake_multistatus_elr/   X   s+   € åÜ�}‰}Ð0¸¸f¸ÔFÐFÜ�=‰=Ð,Ó-Ð-r   c                  ój   — t         rt        j                  dddi¬«      S t        j                  d«      S )r(   z
{DAV:}propr)   r*   r+   r-   r.   r   r   Úmake_prop_elemr1   _   s)   € åÜ�}‰}˜\°#°v°Ô?Ð?Ü�=‰=˜Ó&Ð&r   r+   c                ój   — t         rt        j                  | ||¬«      S t        j                  | |«      S )zJWrapper for etree.SubElement, that takes care of unsupported nsmap option.r+   )r   r   r   )ÚparentÚtagr,   s      r   Úmake_sub_elementr5   f   s-   € åÜ×Ñ ¨°5Ô9Ð9Ü×Ñ˜F CÓ(Ð(r   c                 óâ   — t        | «      dk(  r| j                  xs dS t        «       }| D ]!  }|j                  t	        |d¬«      dz   «       Œ# |j                  «       }|j                  «        |S )záSerialize etree.Element.

    Note: element may contain more than one child or only text (i.e. no child
          at all). Therefore the resulting string may raise an exception, when
          passed back to etree.XML().
    r   Ú Fr   ú
)Úlenr   r   Úwriter&   ÚgetvalueÚclose)r$   ÚstreamÚ	childnodeÚss       r   Úelement_content_as_stringr@   m   sk   € ô ˆ7ƒ|�qÒØ�|‰|Ò!˜rÐ!Ü‹Z€FØò Cˆ	Ø�‰”\ )°EÔ:¸TÑAÕBðCð 	�‰Ó€AØ
‡L�L„NØ€Hr   )Ú__doc__ÚloggingÚior   Ú__docformat__Ú	getLoggerr   r   Úlxmlr   Ú_Elementr   ÚImportErrorÚxml.etree.ElementTreer   r   r	   Ú
defusedxmlr
   r   r   r&   r/   r1   r5   r@   r.   r   r   ú<module>rK      s«   ðñ
ó Ý à"€ð ˆ'×
Ñ
˜IÓ
&€ð €ðÝà€HØ—>‘>€Lò")òð2 %*ô ò&.ò'ð ,0ô )óøðk ò çCÑCå/à#*Ð*€E„M�LØ!€EÔØ€E†Nðús   ¤A Á,BÂB