HEX
Server: LiteSpeed
System: Linux s787.bom1.mysecurecloudhost.com 4.18.0-477.13.1.lve.el8.x86_64 #1 SMP Thu Jun 1 16:40:47 EDT 2023 x86_64
User: mobilech (5348)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //usr/local/lib64/python3.6/site-packages/lxml/__pycache__/sax.cpython-36.pyc
3

��?e�$�@s�dZddlmZddlmZddlmZddlmZm	Z	ddlm
Z
mZGdd�dej�Z
d	d
�ZGdd�de�ZGd
d�de�Zdd�ZdS)a?
SAX-based adapter to copy trees from/to the Python standard library.

Use the `ElementTreeContentHandler` class to build an ElementTree from
SAX events.

Use the `ElementTreeProducer` class or the `saxify()` function to fire
the SAX events of an ElementTree against a SAX ContentHandler.

See https://lxml.de/sax.html
�)�absolute_import)�ContentHandler)�etree)�ElementTree�
SubElement)�Comment�ProcessingInstructionc@seZdZdZdS)�SaxErrorzGeneral SAX error.
    N)�__name__�
__module__�__qualname__�__doc__�rr�(/tmp/pip-build-_veujq9v/lxml/lxml/sax.pyr	sr	cCs0|ddkr$t|dd�jdd��Sd|fSdS)Nr�{��})�tuple�split)�tagrrr�	_getNsTagsrc@s�eZdZdZd dd�Zdd�Zeeejd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
d!dd�Zdd�Zdd�Zd"dd�Zdd�Zdd�ZeZdS)#�ElementTreeContentHandlerz/Build an lxml ElementTree from SAX events.
    NcCsLtj|�d|_g|_g|_d|_ddgi|_i|_|dkrBtj	}||_
dS)N)r�__init__�_root�_root_siblings�_element_stack�_default_ns�_ns_mapping�
_new_mappingsr�Element�_makeelement)�self�makeelementrrrr&s
z"ElementTreeContentHandler.__init__cCs
t|j�S)z=Contains the generated ElementTree after parsing is finished.)rr)r!rrr�
_get_etree2sz$ElementTreeContentHandler._get_etree)�doccCsdS)Nr)r!�locatorrrr�setDocumentLocator8sz,ElementTreeContentHandler.setDocumentLocatorcCsdS)Nr)r!rrr�
startDocument;sz'ElementTreeContentHandler.startDocumentcCsdS)Nr)r!rrr�endDocument>sz%ElementTreeContentHandler.endDocumentcCsR||j|<y|j|j|�Wn tk
r>|g|j|<YnX|dkrN||_dS)N)rr�append�KeyErrorr)r!�prefix�urirrr�startPrefixMappingAs
z,ElementTreeContentHandler.startPrefixMappingcCs(|j|}|j�|dkr$|d|_dS)Nr���)r�popr)r!r+Zns_uri_listrrr�endPrefixMappingJs
z*ElementTreeContentHandler.endPrefixMappingcCs4|\}}|rd|}n|jr,d|j|f}n|}|S)Nz{%s}%s)r)r!Z
ns_name_tuple�ns_uri�
local_name�el_tagrrr�	_buildTagPs
z#ElementTreeContentHandler._buildTagc

Cs|j|�}|rri}y|j�}Wntk
r:|j�}YnXx8|D]*\}}|dr\d|}	n|d}	|||	<qBWnd}|j}
|jdkr�|j|||j�}|_|jr�t	|d�r�x|jD]}|j
|�q�W|jdd�=nt|
d|||j�}|
j|�|jj
�dS)Nrz{%s}%sr�addpreviousr.)r4�	iteritems�AttributeError�itemsrrr rr�hasattrr5rr)�clear)
r!�ns_name�qname�
attributesZel_name�attrsZiter_attributesZ
name_tuple�value�	attr_nameZ
element_stack�element�siblingrrr�startElementNSZs0





z(ElementTreeContentHandler.startElementNScCs6t||�}|jdkr"|jj|�n|jdj|�dS)Nrr.)rrrr)r)r!�target�data�pirrr�processingInstruction{s

z/ElementTreeContentHandler.processingInstructioncCs.|jj�}|j|�}||jkr*td|��dS)NzUnexpected element closed: )rr/r4rr	)r!r;r<rAr3rrr�endElementNS�s


z&ElementTreeContentHandler.endElementNScCs0|rtdd�|j�D��}|jd|f||�dS)NcSsg|]\}}d|f|f�qS)Nr)�.0�k�vrrr�
<listcomp>�sz:ElementTreeContentHandler.startElement.<locals>.<listcomp>)�dictr8rC)r!�namer=rrr�startElement�sz&ElementTreeContentHandler.startElementcCs|jd|f|�dS)N)rH)r!rNrrr�
endElement�sz$ElementTreeContentHandler.endElementcCsP|jd}y|d}|jpd||_Wn$tk
rJ|jp>d||_YnXdS)Nr�r.r.)r�tail�
IndexError�text)r!rEZlast_elementrrr�
characters�s
z$ElementTreeContentHandler.characters)N)N)N)r
rrr
rr#�propertyrr&r'r(r-r0r4rCrGrHrOrPrU�ignorableWhitespacerrrrr#s"
	

!

rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�ElementTreeProducerz5Produces SAX events for an element and children.
    cCsTy|j�}Wntk
r$|}YnX||_||_ddlm}||_|ii�|_dS)Nr)�AttributesNSImpl)�getrootr7�_element�_content_handlerZxml.sax.xmlreaderrY�_attr_class�_empty_attributes)r!�element_or_tree�content_handlerrAZ
attr_classrrrr�s
zElementTreeProducer.__init__cCs�|jj�|j}t|d�rrg}|j�}x&t|dd�tkrL|j|�|j�}q(Wx"|ddd�D]}|j|i�q^W|j|i�t|d�r�|j	�}x(t|dd�tkr�|j|i�|j	�}q�W|jj
�dS)N�getpreviousrr�getnextr.)r\r'r[r9ra�getattrrr)�_recursive_saxifyrbr()r!rAZsiblingsrBrrr�saxify�s"



zElementTreeProducer.saxifycCs�|j}|j}|tks|tkrL|tkr4|j|j|j�|j}|rH|j|�dS|j	}g}||kr�x0|j
�D]$\}}	|j|�|	krh|j||	f�qhW|j
�}
|
r�i}i}x@|
D]8\}
}t
|
�}|||<|j|d|d|ddd�||<q�W|j||�}n|j}t
|�\}	}|j|	|||jdd�}x|D]\}}|j||��q"W|j|	|f||�|j}|�rd|j|�x|D]}|j||��qjW|j|	|f|�x|D]\}}|j|��q�W|j}|�r�|j|�dS)NrrT)�preferred_prefix�is_attributeF)rg)r\rrrrGrDrTrRrU�nsmapr8�getr)r�_build_qnamer]r^r+r-rCrdrHr0)r!rAZparent_nsmapr`rrRZ
element_nsmapZnew_prefixesr+r1ZattribsZattr_valuesZattr_qnamesZattr_ns_namer?Z
attr_ns_tupleZsax_attributesr2r<r,rT�childrrrrd�s\


z%ElementTreeProducer._recursive_saxifycsx�dkr|S|r&|j|��kr&|}n:�fdd�|j�D�}t|�dkrP|dn|r\t|�nd}|dkrl|S|d|S)Ncs$g|]\}}|dk	r|�kr|�qS)Nr)rI�pfxr,)r1rrrLsz4ElementTreeProducer._build_qname.<locals>.<listcomp>rr�:)rir8�len�min)r!r1r2rhrfrgr+�
candidatesr)r1rrj�sz ElementTreeProducer._build_qnameN)r
rrr
rrerdrjrrrrrX�s
6rXcCst||�j�S)zlOne-shot helper to generate SAX events from an XML tree and fire
    them against a SAX ContentHandler.
    )rXre)r_r`rrrresreN)r
�
__future__rZxml.sax.handlerr�lxmlrZ
lxml.etreerrrrZ	LxmlErrorr	rr�objectrXrerrrr�<module>
s|s