
    Pi
              	          d Z ddlmZmZmZmZmZ ddlmZ ej	        Z
ddedeee                  deeef         fdZd	e
dee         deeeef         ee         f         fd
Zdeeef         defdZdedeeef         de
fdZdS )z+
Slightly faster replacement for xmltodict
    )AnyDictOptionalSetUnion)etreeNdocumentrepeated_tagsreturnc                 ~    |t                      }t          j        |           }t          ||          }|j        |iS )zU
    Convert an XML document to a dictionary, like xmltodict.parse but with lxml
    N)r
   )setr   
fromstring_recursive_dicttag)r	   r
   rootchildrens       a/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/blobfile/_xml.pyparser      sB     H%%Dt=AAAHHh    elemc                    t          |           dk    r| j        S t                      }i }| D ]}|j        |v r?|                    |j        g           }|                    t          ||                     J|j        |vsJ d|j                     |                    |j                   t          ||          ||j        <   |S )Nr   z6Found repeated tag that was not in repeated_tags set: )lentextr   r   
setdefaultappendr   add)r   r
   	seen_tagsresultchild
child_lists         r   r   r      s    
4yyA~~yEE	 		J 		JEyM))#..uy"==
!!/%"G"GHHHH IY...WEIWW /..ei((($3E=$I$Iuy!!r   datac                     t          |                                           }t          |          dk    sJ d|             t          |d         | |d                            }dt	          j        |d          z   S )zY
    Convert a dictionary into an XML document, like xmltodict.unparse but with lxml
       z%Must be only one root element, found r   s'   <?xml version="1.0" encoding="utf-8"?>
utf8)encoding)listkeysr   _create_treer   tostring)r!   	root_keysr   s      r   unparser+   *   sz     TYY[[!!Iy>>Q S	 S S	!d9Q<&899D 7W]9^9^9^^^r   namec                    t          j        |           }|                                D ]E\  }}t          |t                    r$|                    t          ||                     ?t          |t                    r|D ]}t          |t                    r1t          j        |          }||_	        |                    |           Ht          |t                    r$|                    t          ||                     J dt          |                       t          |t                    s|J t          j        |          }|d|_	        n||_	        |                    |           G|S )NFzInvalid value item type:  )r   Elementitems
isinstancedictr   r(   r&   strr   type)r,   r!   r   kvitemses          r   r(   r(   6   sc   =D

  1a 	KKQ**++++4   	 K KdC(( Kq))B"BGKKOOOOd++ KKKQ 5 56666J"Jd4jj"J"JJJ5K a%%22q!!ByKKOOOOKr   )N)__doc__typingr   r   r   r   r   lxmlr   _Elementr/   bytesr3   r   r   r+   r(    r   r   <module>r?      sE    3 2 2 2 2 2 2 2 2 2 2 2 2 2      
.   E  (3s8*<  SRUX        ' #c( uT#s(^U]^aUbEb?c    &	_$sCx. 	_U 	_ 	_ 	_ 	_s $sCx. W      r   