HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/lxml/__pycache__/sax.cpython-38.pyc
U

�|/\�$�@s�dZddlmZddlmZddlmZddlmZm	Z	ddlm
Z
mZGdd�dej�Z
d	d
�ZGdd�de�ZGd
d�de�Zdd�ZdS)aI
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 http://codespeak.net/lxml/sax.html
�)�absolute_import)�ContentHandler)�etree)�ElementTree�
SubElement)�Comment�ProcessingInstructionc@seZdZdZdS)�SaxErrorzGeneral SAX error.
    N)�__name__�
__module__�__qualname__�__doc__�rr�*/usr/lib/python3/dist-packages/lxml/sax.pyr	sr	cCs0|ddkr$t|dd��dd��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.
    NcCsLt�|�d|_g|_g|_d|_ddgi|_i|_|dkrBtj	}||_
dS�N)r�__init__�_root�_root_siblings�_element_stack�_default_ns�_ns_mapping�
_new_mappingsrZElement�_makeelement)�selfZmakeelementrrrr&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)�doccCsdSrr)r!Zlocatorrrr�setDocumentLocator8sz,ElementTreeContentHandler.setDocumentLocatorcCsdSrrr"rrr�
startDocument;sz'ElementTreeContentHandler.startDocumentcCsdSrrr"rrr�endDocument>sz%ElementTreeContentHandler.endDocumentcCsR||j|<z|j|�|�Wn tk
r>|g|j|<YnX|dkrN||_dSr)rr�append�KeyErrorr)r!�prefix�urirrr�startPrefixMappingAs
z,ElementTreeContentHandler.startPrefixMappingcCs(|j|}|��|dkr$|d|_dS�N���)r�popr)r!r*Zns_uri_listrrr�endPrefixMappingJs
z*ElementTreeContentHandler.endPrefixMappingcCs4|\}}|rd|}n|jr,d|j|f}n|}|S)N�{%s}%s)r)r!Z
ns_name_tuple�ns_uri�
local_name�el_tagrrr�	_buildTagPs
z#ElementTreeContentHandler._buildTagc
Cs�|�|�}|rni}z|��}Wntk
r:|��}YnX|D]*\}}|drZd|}	n|d}	|||	<q@nd}|j}
|jdkr�|�|||j�}|_|jr�t	|d�r�|jD]}|�
|�q�|jdd�=nt|
d|||j�}|
�|�|j�
�dS)Nrr1r�addpreviousr.)r5Z	iteritems�AttributeError�itemsrrr rr�hasattrr6rr(�clear)
r!�ns_name�qname�
attributesZel_nameZattrsZiter_attributesZ
name_tuple�valueZ	attr_nameZ
element_stack�element�siblingrrr�startElementNSZs6


�

�
z(ElementTreeContentHandler.startElementNScCs6t||�}|jdkr"|j�|�n|jd�|�dSr-)rrrr(r)r!�target�dataZpirrr�processingInstruction{s

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


z&ElementTreeContentHandler.endElementNScCs0|rtdd�|��D��}|�d|f||�dS)NcSsg|]\}}d|f|f�qSrr)�.0�k�vrrr�
<listcomp>�sz:ElementTreeContentHandler.startElement.<locals>.<listcomp>)�dictr8rA)r!�namer=rrr�startElement�s
�z&ElementTreeContentHandler.startElementcCs|�d|f|�dSr)rE)r!rKrrr�
endElement�sz$ElementTreeContentHandler.endElementcCsP|jd}z|d}|jpd||_Wn$tk
rJ|jp>d||_YnXdS)Nr.�)r�tail�
IndexError�text)r!rCZlast_elementrrr�
characters�s
z$ElementTreeContentHandler.characters)N)N)N)r
rrr
rr#�propertyrr%r&r'r,r0r5rArDrErLrMrRZignorableWhitespacerrrrr#s"
	

!

rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�ElementTreeProducerz5Produces SAX events for an element and children.
    cCsTz|��}Wntk
r$|}YnX||_||_ddlm}||_|ii�|_dS)Nr)�AttributesNSImpl)Zgetrootr7�_element�_content_handlerZxml.sax.xmlreaderrU�_attr_class�_empty_attributes)r!�element_or_tree�content_handlerr?Z
attr_classrrrr�s
zElementTreeProducer.__init__cCs�|j��|j}t|d�rjg}|��}t|dd�tkrJ|�|�|��}q&|ddd�D]}|�|i�qX|�|i�t|d�r�|�	�}t|dd�tkr�|�|i�|�	�}q�|j�
�dS)N�getpreviousrr.�getnext)rWr&rVr9r\�getattrrr(�_recursive_saxifyr]r')r!r?Zsiblingsr@rrr�saxify�s"





zElementTreeProducer.saxifycCs�|j}|j}|tks|tkrL|tkr4|�|j|j�|j}|rH|�|�dS|j	}g}||kr�|�
�D]$\}}	|�|�|	krf|�||	f�qf|�
�}
|
r�i}i}|
D]8\}
}t
|
�}|||<|j|d|d|ddd�||<q�|�||�}n|j}t
|�\}	}|j|	|||jdd�}|D]\}}|�||��q|�|	|f||�|j}|�rX|�|�|D]}|�||��q\|�|	|f|�|D]\}}|�|��q�|j}|�r�|�|�dS)NrrT)�preferred_prefix�is_attributeF)rb)rWrrrrDrBrQrOrR�nsmapr8�getr(r�_build_qnamerXrYr*r,rAr_rEr0)r!r?Zparent_nsmapr[rrOZ
element_nsmapZnew_prefixesr*r2ZattribsZattr_valuesZattr_qnamesZattr_ns_namer>Z
attr_ns_tupleZsax_attributesr3r<r+rQZchildrrrr_�sx�
���
z%ElementTreeProducer._recursive_saxifycsv�dkr|S|s$|�|��kr$|}n:�fdd�|��D�}t|�dkrN|dn|rZt|�nd}|dkrj|S|d|S)Ncs$g|]\}}|dk	r|�kr|�qSrr)rFZpfxr+�r2rrrIs�z4ElementTreeProducer._build_qname.<locals>.<listcomp>rr�:)rdr8�len�min)r!r2r3rcrarbr*Z
candidatesrrfrre�s
��z ElementTreeProducer._build_qnameN)r
rrr
rr`r_rerrrrrT�s
6rTcCst||���S)zlOne-shot helper to generate SAX events from an XML tree and fire
    them against a SAX ContentHandler.
    )rTr`)rZr[rrrr`sr`N)r
Z
__future__rZxml.sax.handlerrZlxmlrZ
lxml.etreerrrrZ	LxmlErrorr	rr�objectrTr`rrrr�<module>s|s