
    Pi                        d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZ erd dlmZmZ dgZdd	iZ G d
 d          ZdS )    )annotationsN)IOTYPE_CHECKINGDictIterableListOptionalTuple)escape	quoteattr)URIRef)	NamespaceNamespaceManager	XMLWriterz&#13;c                      e Zd ZdZ	 	 	 d#d$dZd%dZ ee          Zd&dZd'dZ	d(d)dZ
i fd*dZd(d+dZd,dZd-d!Zd.d"ZdS )/r   z,A simple XML writer that writes to a stream.N   stream	IO[bytes]namespace_managerr   encodingOptional[str]declintextra_nsOptional[Dict[str, Namespace]]c                    |pd}t          j        |          \  }}}}	 |	|          x| _        }|r|                    d|z             g | _        || _        |pi | _        d| _        d S )Nzutf-8z#<?xml version="1.0" encoding="%s"?>T)codecslookupr   writeelement_stacknmr   closed)
selfr   r   r   r   r   encoderdecoderstream_readerstream_writers
             x/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/serializers/xmlwriter.py__init__zXMLWriter.__init__   s     &w9?x9P9P6-  -}V444f 	KLL>IJJJ(*# B    returnstrc                0    dt          | j                  z  S )Nz  )lenr!   r$   s    r)   __get_indentzXMLWriter.__get_indent*   s    c$,----r+   Nonec                Z    | j         s#d| _         | j                            d           d S d S )NT>)r#   r   r    r0   s    r)   __close_start_tagzXMLWriter.__close_start_tag/   s9    { 	#DKKc"""""	# 	#r+   uric                   |                                   | j        j        } |d            || j                    |d|                     |          z             | j                            |           d| _        d| _        d S )N
z<%sF)	_XMLWriter__close_start_tagr   r    indentqnamer!   appendr#   parent)r$   r6   r    s      r)   pushzXMLWriter.push4   s       !ddkedjjoo%&&&!!#&&&r+   c                ,   | j                                         }|r||k    sJ | j        j        }| j        sd| _         |d           nC| j        r |d            || j                    |d|                     |          z             d| _        d S )NTz/>r8   z</%s>)r!   popr   r    r#   r=   r:   r;   )r$   r6   topr    s       r)   r@   zXMLWriter.pop>   s     $$&& 	#::::!{ 	-DKE$KKKK{ #ddk"""E'DJJsOO+,,,r+   content
attributesDict[URIRef, str]c                    |                      |           |                                D ]\  }}|                     ||           |                     |           |                                  dS )z3Utility method for adding a complete simple elementN)r>   items	attributetextr@   )r$   r6   rB   rC   kvs         r)   elementzXMLWriter.elementM   sl     			#$$&& 	! 	!DAqNN1a    		'




r+   
namespacesIterable[Tuple[str, str]]c                V   |s| j                                         }| j        j        } |d           |D ]1\  }}|r |d|d|d           || j        vr |d|z             2| j                                        D ](\  }}|r |d|d|d            |d|z             )d S )Nr8   z  xmlns:z="z"
z  xmlns="%s"
)r"   rL   r   r    r   rF   )r$   rL   r    prefix	namespaces        r)   rL   zXMLWriter.namespacesW   s    	.++--J!d!+ 	4 	4FI 4VVVYYY?@@@@t},,&2333!%!4!4!6!6 	4 	4FI 4VVVYYY?@@@@&23333		4 	4r+   valuec                    | j         j        } |d|                     |          dt          |                     d S )N =)r   r    r;   r   )r$   r6   rQ   r    s       r)   rG   zXMLWriter.attributej   sB    !$**S////9U+;+;+;<=====r+   rH   c                @   |                                   d|v rXd|v rTd|vrP| j                            d           | j                            |           | j                            d           d S | j                            t          |t                               d S )N<r4   z]]>z	<![CDATA[)r9   r   r    r   ESCAPE_ENTITIES)r$   rH   s     r)   rH   zXMLWriter.textn   s       $;;3$;;5+<+<Kk***Kd###Ke$$$$$KfT?;;<<<<<r+   c                8   | j                                         D ]g\  }}|                    |          rM|dk    r.d                    ||t	          |          d         g          c S |t	          |          d         c S h| j                            |          S )zZCompute qname for a uri using our extra namespaces,
        or the given namespace manager :N)r   rF   
startswithjoinr/   r"   qname_strict)r$   r6   prenss       r)   r;   zXMLWriter.qnamew   s     }**,, 	* 	*GC~~b!! *"9988S#c"ggii.$9:::::s2wwyy>)))	* w##C(((r+   )Nr   N)
r   r   r   r   r   r   r   r   r   r   )r,   r-   )r,   r2   )r6   r-   r,   r2   )N)r6   r   r,   r2   )r6   r-   rB   r-   rC   rD   r,   r2   )rL   rM   r,   r2   )r6   r-   rQ   r-   r,   r2   )rH   r-   r,   r2   )r6   r-   r,   r-   )__name__
__module____qualname____doc__r*   _XMLWriter__get_indentpropertyr:   r9   r>   r@   rK   rL   rG   rH   r;    r+   r)   r   r      s       66 #'37    *. . . . Xl##F# # # #
         GI    4 4 4 4 4&> > > >= = = =) ) ) ) ) )r+   )
__future__r   r   typingr   r   r   r   r   r	   r
   xml.sax.saxutilsr   r   rdflib.termr   rdflib.namespacer   r   __all__rW   r   rf   r+   r)   <module>rm      s    " " " " " "  K K K K K K K K K K K K K K K K K K . . . . . . . .       =<<<<<<<< -/p) p) p) p) p) p) p) p) p) p)r+   