HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/lxml/__pycache__/sax.cpython-310.pyc
o

we�$�@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�A/home/arjun/projects/env/lib/python3.10/site-packages/lxml/sax.pyr	sr	cCs,|ddkrt|dd��dd��Sd|fS)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|_|dur!tj	}||_
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_etree2s
z$ElementTreeContentHandler._get_etree)�doccC�dSrr)r"�locatorrrr�setDocumentLocator8�z,ElementTreeContentHandler.setDocumentLocatorcCr'rrr$rrr�
startDocument;r*z'ElementTreeContentHandler.startDocumentcCr'rrr$rrr�endDocument>r*z%ElementTreeContentHandler.endDocumentcCsT||j|<z
|j|�|�Wnty|g|j|<Ynw|dur(||_dSdSr)rr�append�KeyErrorr)r"�prefix�urirrr�startPrefixMappingAs
�
�z,ElementTreeContentHandler.startPrefixMappingcCs,|j|}|��|dur|d|_dSdS�N���)r�popr)r"r/�ns_uri_listrrr�endPrefixMappingJs

�z*ElementTreeContentHandler.endPrefixMappingcCs8|\}}|rd|}|S|jrd|j|f}|S|}|S)N�{%s}%s)r)r"�
ns_name_tuple�ns_uri�
local_name�el_tagrrr�	_buildTagPs��z#ElementTreeContentHandler._buildTagc
Cs�|�|�}|r6i}z|��}Wn
ty|��}Ynw|D]\}}|dr,d|}	n|d}	|||	<qnd}|j}
|jdure|�|||j�}|_|jr^t	|d�r^|jD]}|�
|�qV|jdd�=n
t|
d|||j�}|
�|�|j�
�dS)Nrr7r�addpreviousr3)r<�	iteritems�AttributeError�itemsrrr!rr�hasattrr=rr-�clear)
r"�ns_name�qname�
attributes�el_name�attrs�iter_attributes�
name_tuple�value�	attr_name�
element_stack�element�siblingrrr�startElementNSZs8
�

�
�

�
z(ElementTreeContentHandler.startElementNScCs8t||�}|jdur|j�|�dS|jd�|�dSr2)rrrr-r)r"�target�data�pirrr�processingInstruction{s

z/ElementTreeContentHandler.processingInstructioncCs.|j��}|�|�}||jkrtd|��dS)NzUnexpected element closed: )rr4r<rr	)r"rCrDrMr;rrr�endElementNS�s



�z&ElementTreeContentHandler.endElementNScCs0|r
tdd�|��D��}|�d|f||�dS)NcSsg|]
\}}d|f|f�qSrr)�.0�k�vrrr�
<listcomp>�sz:ElementTreeContentHandler.startElement.<locals>.<listcomp>)�dictr@rO)r"�namerErrr�startElement�s
�z&ElementTreeContentHandler.startElementcCs|�d|f|�dSr)rT)r"rZrrr�
endElement�sz$ElementTreeContentHandler.endElementcCsN|jd}z|d}|jpd||_WdSty&|jpd||_YdSw)Nr3�)r�tail�
IndexError�text)r"rQ�last_elementrrr�
characters�s
�z$ElementTreeContentHandler.charactersr)r
rrr
rr%�propertyrr)r+r,r1r6r<rOrSrTr[r\rb�ignorableWhitespacerrrrr#s$
	

!

rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�ElementTreeProducerz5Produces SAX events for an element and children.
    cCsRz|��}Wnty|}Ynw||_||_ddlm}||_|ii�|_dS)Nr)�AttributesNSImpl)�getrootr?�_element�_content_handler�xml.sax.xmlreaderrf�_attr_class�_empty_attributes)r"�element_or_tree�content_handlerrM�
attr_classrrrr�s�zElementTreeProducer.__init__cCs�|j��|j}t|d�r<g}|��}t|dd�tur,|�|�|��}t|dd�tus|ddd�D]}|�|i�q3|�|i�t|d�re|�	�}t|dd�ture|�|i�|�	�}t|dd�tusS|j�
�dS)N�getpreviousrr3�getnext)rir+rhrArp�getattrrr-�_recursive_saxifyrqr,)r"rM�siblingsrNrrr�saxify�s&


�
�zElementTreeProducer.saxifycCs�|j}|j}|tus|tur&|tur|�|j|j�|j}|r$|�|�dS|j	}g}||krF|�
�D]\}}	|�|�|	krE|�||	f�q3|�
�}
|
rvi}i}|
D]\}
}t
|
�}|||<|j|d|d|ddd�||<qR|�||�}n|j}t
|�\}	}|j|	|||jdd�}|D]
\}}|�||�q�|�|	|f||�|j}|r�|�|�|D]}|�||�q�|�|	|f|�|D]	\}}|�|�q�|j}|r�|�|�dSdS)NrrT)�preferred_prefix�is_attributeF)rw)rirrrrSrPr`r^rb�nsmapr@�getr-r�_build_qnamerkrlr/r1rOrsrTr6)r"rM�parent_nsmaprnrr^�
element_nsmap�new_prefixesr/r9�attribs�attr_values�attr_qnames�attr_ns_namerJ�
attr_ns_tuple�sax_attributesr:rDr0r`�childrrrrs�sh�
���
�
�z%ElementTreeProducer._recursive_saxifycsv�dur|S|s|�|��kr|}n�fdd�|��D�}t|�dkr'|dn|r-t|�nd}|dur5|S|d|S)Ncs$g|]\}}|dur|�kr|�qSrr)rU�pfxr0�r9rrrXs
�z4ElementTreeProducer._build_qname.<locals>.<listcomp>rr�:)ryr@�len�min)r"r9r:rxrvrwr/�
candidatesrr�rrz�s
��z ElementTreeProducer._build_qnameN)r
rrr
rrursrzrrrrre�s6recCst||���S)zlOne-shot helper to generate SAX events from an XML tree and fire
    them against a SAX ContentHandler.
    )reru)rmrnrrrrusruN)r
�
__future__r�xml.sax.handlerr�lxmlr�
lxml.etreerrrr�	LxmlErrorr	rr�objectrerurrrr�<module>s|s