o
    ȷe                     @   sL   d dl Zd dlmZ G dd dejjZG dd deZG dd de	Z
dS )	    N)utilsc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
XmlHandlerc                 C   s   || _ d|fg| _d| _d S )Nroot )
connectionnodescurrent_text)self	root_noder    r   H/var/www/ideatree/venv/lib/python3.10/site-packages/boto/jsonresponse.py__init__   s   
zXmlHandler.__init__c                 C   sZ   d| _ | jd d ||| j}|d ur+t|tr!| j| d S | j||f d S d S )Nr      )r   r   startElementr   
isinstancetupleappend)r	   nameattrstr   r   r   r   "   s   
zXmlHandler.startElementc                 C   sB   | j d d || j| j | j d d |kr| j   d| _d S )Nr   r   r   r   )r   
endElementr   r   popr	   r   r   r   r   r   +   s   

zXmlHandler.endElementc                 C   s   |  j |7  _ d S N)r   )r	   contentr   r   r   
characters1   s   zXmlHandler.charactersc                 C   s&   t |ts
|d}tj||  d S )Nzutf-8)r   bytesencodexmlsaxparseString)r	   sr   r   r   parse4   s   

zXmlHandler.parseN)__name__
__module____qualname__r   r   r   r   r#   r   r   r   r   r      s    	r   c                   @   s>   e Zd Z				dddZdd Zd	d
 Zdd Zdd ZdS )ElementNSetmemberitemFc                 C   sT   t |  || _|| _t|| _t|| _|d u rg | _n|| _|| _	|| _
d S r   )dictr   r   element_namer   mklistlist_markeritem_markerstackpythonize_nameparent)r	   r   r.   r2   r4   r0   r1   r3   r   r   r   r   <   s   

zElement.__init__c              	   C   sT   || v r| | S | D ]}| | }t |tr'zt||W   S  ty&   Y q
w q
tr   )r   r'   getattrAttributeError)r	   keyker   r   r   __getattr__L   s   
zElement.__getattr__c                 C      | j rt |}|S r   r3   r   r   r   r   r   get_nameX      
zElement.get_namec                 C   s   | j | | jD ]}||r't| j|| j| j| j}|| | |< |  S q	t	| j dkrN| j d }t
| j|| j | | j| j| j}|| | |< ||fS d S )Nr   r   )r2   r   r0   endswithListElementr   r1   r3   r=   lenr'   )r	   r   r   r   lmlr.   r9   r   r   r   r   ]   s$   


zElement.startElementc                 C   sh   t | jdkr| j  | }|r0t| jtr"|| j| |< d S t| jtr2| j	| d S d S d S Nr   )
rA   r2   r   stripr   r4   r'   r=   r@   r   )r	   r   valuer   r   r   r   r   o   s   
zElement.endElement)NNNNr(   r*   F)r$   r%   r&   r   r:   r=   r   r   r   r   r   r   r'   :   s    
r'   c                   @   s:   e Zd ZdddgddfddZdd Zd	d
 Zdd ZdS )r@   Nr)   r*   Fc                 C   s,   t |  || _|| _|| _|| _|| _d S r   )listr   r   r.   r0   r1   r3   )r	   r   r.   r0   r1   r3   r   r   r   r   |   s   

zListElement.__init__c                 C   r;   r   r<   r   r   r   r   r=      r>   zListElement.get_namec                 C   s   | j D ] }||r#t| j|| j | j| j}t| | || |  S q|| jv r>t| j|| | j | j| jd}| 	| |S d S )N)r4   r0   r1   r3   )
r0   r?   r@   r   r1   r3   setattrr=   r'   r   )r	   r   r   r   rB   rC   r9   r   r   r   r      s$   




zListElement.startElementc                 C   sv   || j kr0t| dkr,g }| D ]}t|tr!t|dkr!|| q|D ]	}| | q$d S d S t| | || d S rD   )r.   rA   r   r'   r   removerH   r=   )r	   r   rF   r   emptyr9   r   r   r   r      s   


zListElement.endElement)r$   r%   r&   r   r=   r   r   r   r   r   r   r@   z   s    

r@   )xml.saxr   botor   r    ContentHandlerr   r-   r'   rG   r@   r   r   r   r   <module>   s
   @