o
    Á¿iG  ã                   @   s`   d Z ddlmZ ddlmZ dZdZdZG dd„ deƒZ	G d	d
„ d
ƒZ
deeef fdd„ZdS )zEThis module was extracted from the xmltodict package, version 0.14.2.é    )ÚUnion)ÚexpatzMartin Blechz0.14.2ÚMITc                   @   s   e Zd ZdS )ÚParsingInterruptedN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   úL/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/vendor/xmltodict.pyr      s    r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú_DictSAXHandlerc                 C   s@   g | _ g | _g | _d | _d| _d| _d| _d| _i | _d| _	d S )Nú@z#textÚ ú:z#comment)
ÚpathÚstackÚdataÚitemÚattr_prefixÚ	cdata_keyÚcdata_separatorÚnamespace_separatorÚnamespace_declarationsÚcomment_key)Úselfr	   r	   r
   Ú__init__   s   
z_DictSAXHandler.__init__c                 C   s   || j |pd< d S )Nr   )r   )r   ÚprefixÚurir	   r	   r
   ÚstartNamespaceDecl   s   z"_DictSAXHandler.startNamespaceDeclc                 C   s¸   t |tƒstt|dd d… |dd d… ƒƒ}|r#| jr#| j|d< i | _| j ||p*d f¡ | j | j| jf¡ g }| 	¡ D ]\}}| j
| }| ||f¡ q=t|ƒ}|pUd | _g | _d S )Nr   é   é   Úxmlns)Ú
isinstanceÚdictÚzipr   r   Úappendr   r   r   Úitemsr   )r   Ú	full_nameÚattrsÚattr_entriesÚkeyÚvaluer	   r	   r
   ÚstartElement"   s   
"




z_DictSAXHandler.startElementc                 C   sØ   t | jƒdkr| j}|d u r| jsd n| j | j¡}| jr_| js"d n| j | j¡}| j}| j ¡ \| _| _|r=| ¡ p<d }|d urU|rK|  	|| j
|¡ |  	| j||¡| _n|  	| j||¡| _nd | _g | _| j ¡  d S )Nr   )Úlenr   r   r   r   Újoinr   ÚpopÚstripÚ	push_datar   )r   r&   r   r   r	   r	   r
   Ú
endElement2   s$   z_DictSAXHandler.endElementc                 C   s"   | j s	|g| _ d S | j  |¡ d S ©N)r   r$   )r   r   r	   r	   r
   Ú
charactersI   s   z_DictSAXHandler.charactersc                 C   s^   |d u ri }z|| }t |tƒr| |¡ W |S ||g||< W |S  ty.   |||< Y |S w r2   )r!   Úlistr$   ÚKeyError)r   r   r)   r   r*   r	   r	   r
   r0   O   s   
ýþ
þz_DictSAXHandler.push_dataN)	r   r   r   r   r   r+   r1   r3   r0   r	   r	   r	   r
   r      s    r   Ú	xml_inputc                 C   s˜   t ƒ }d}t| tƒrd}|  |¡} t |d¡}zd|_W n	 ty%   Y nw |j|_	|j
|_|j|_|j|_d|_dd„ |_dd„ |_| | d¡ |jS )z;Parse the given XML input and convert it into a dictionary.Nzutf-8Tc                 S   s   d S r2   r	   ©Úxr	   r	   r
   Ú<lambda>p   ó    zparse.<locals>.<lambda>c                  W   s   dS )Nr   r	   r7   r	   r	   r
   r9   r   r:   )r   r!   ÚstrÚencoder   ÚParserCreateÚordered_attributesÚAttributeErrorr   ÚStartNamespaceDeclHandlerr+   ÚStartElementHandlerr1   ÚEndElementHandlerr3   ÚCharacterDataHandlerÚbuffer_textÚDefaultHandlerÚExternalEntityRefHandlerÚParser   )r6   ÚhandlerÚencodingÚparserr	   r	   r
   Úparse^   s(   


þ

rK   N)Ú__doc__Útypingr   Úxml.parsersr   Ú
__author__Ú__version__Ú__license__Ú	Exceptionr   r   Úbytesr;   rK   r	   r	   r	   r
   Ú<module>   s    N