bg$dZddlmZddlmZddlmZddlmZm Z ddlm Z m Z Gddej Z d ZGd d eZGd d eZdZdS)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)CommentProcessingInstructionceZdZdZdS)SaxErrorzGeneral SAX error. N)__name__ __module__ __qualname____doc__[/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/lxml/sax.pyr r srr cx|ddkr+t|ddddSd|fS)Nr{})tuplesplit)tags r _getNsTagrs= 1v}}SW]]3**+++SyrceZdZdZddZdZeeejZdZdZ dZ d Z d Z d Z dd Zd ZdZddZdZdZeZdS)ElementTreeContentHandlerz/Build an lxml ElementTree from SAX events. Nctj|d|_g|_g|_d|_ddgi|_i|_| tj }||_ dSN) r__init___root_root_siblings_element_stack _default_ns _ns_mapping _new_mappingsrElement _makeelement)self makeelements rrz"ElementTreeContentHandler.__init__&sd%%%   !TF,  -K'rc*t|jS)z=Contains the generated ElementTree after parsing is finished.)rr r(s r _get_etreez$ElementTreeContentHandler._get_etree2s4:&&&r)doccdSrr)r(locators rsetDocumentLocatorz,ElementTreeContentHandler.setDocumentLocator8 rcdSrrr+s r startDocumentz'ElementTreeContentHandler.startDocument;r1rcdSrrr+s r endDocumentz%ElementTreeContentHandler.endDocument>r1rc||j|< |j||n#t$r|g|j|<YnwxYw| ||_dSdSr)r%r$appendKeyErrorr#)r(prefixuris rstartPrefixMappingz,ElementTreeContentHandler.startPrefixMappingAs}%(6" -  V $ + +C 0 0 0 0 - - -(+uD V $ $ $ - >"D    >s -AAcj|j|}|||d|_dSdSN)r$popr#)r(r9 ns_uri_lists rendPrefixMappingz*ElementTreeContentHandler.endPrefixMappingJs=&v.  >*2D    >rcN|\}}|rd|z}n|jrd|jd|}n|}|S)N{%s}%srr)r#)r( ns_name_tuplens_uri local_nameel_tags r _buildTagz#ElementTreeContentHandler._buildTagPsQ*   -FF    !%!1!1!1::>FFF rcr||}|r`i} |}n$#t$r|}YnwxYw|D] \}}|drd|z} n|d} ||| <!nd}|j} |jd||||jx} |_|jr/t| dr|jD]} | | |jdd=nt| d|||j} | | |j dS)NrrCr addpreviousr>)rH iteritemsAttributeErroritemsr"r r'r%r!hasattrrJrr7clear) r(ns_nameqname attributesel_nameattrsiter_attributes name_tuplevalue attr_name element_stackelementsiblings rstartElementNSz(ElementTreeContentHandler.startElementNSZs..))  E 5","6"6"8"8! 5 5 5","2"2"4"4 5&5 ) )! Ea=. (: 5II *1 I#(i   )E+ : ''8JKK LGdj" 1ww 'F'F 1#211G''0000#AAA&& r!2G!&(:<z:ElementTreeContentHandler.startElement..s$CCC1tQi^CCCr)dictrMr\)r(namerRs r startElementz&ElementTreeContentHandler.startElementsZ  CC 0@0@0B0BCCCJ T4L$ ;;;;;rc6|d|f|dSr)rc)r(rks r endElementz$ElementTreeContentHandler.endElements" 4,-----rc|jd} |d}|jpd|z|_dS#t$r|jpd|z|_YdSwxYw)Nr>)r"tail IndexErrortext)r(r_ last_elements r charactersz$ElementTreeContentHandler.characterssw*2.  A'+L!-!2!8bD @L    A A A!-!2!8bD @L     As*A A r)r r rrrr,propertyrr0r3r5r;rArHr\rarcrlrnruignorableWhitespacerrrrr#s# ( ( ( (''' HZZ%7 8 8 8E         ###/// ####B///CCC <<<<...AAA%rrc*eZdZdZdZdZdZdZdS)ElementTreeProducerz5Produces SAX events for an element and children. c |}n#t$r|}YnwxYw||_||_ddlm}||_|ii|_dS)Nr)AttributesNSImpl)getrootrL_element_content_handlerxml.sax.xmlreaderr{ _attr_class_empty_attributes)r(element_or_treecontent_handlerrZ attr_classs rrzElementTreeProducer.__init__s &%--//GG & & &%GGG & /DDDDDD%!+B!3!3s  &&c|j|j}t|drg}|}t |ddt urA|||}t |ddt uA|dddD]}||i||it|drn| }t |ddt urB||i| }t |ddt uB|j dS)N getpreviousrr>getnext) r~r3r}rNrgetattrr r7_recursive_saxifyrr5)r(rZsiblingsr[s rsaxifyzElementTreeProducer.saxifysz ++---- 7M * * 4H))++G'5$//3HHH(((!--//'5$//3HHH$DDbD> 4 4&&w3333 w+++ 7I & & ,oo''G'5$//3HHH&&w333!//++'5$//3HHH ))+++++rcp|j}|j}|tus |turI|tur ||j|j|j}|r||dS|j }g}||krJ| D]5\}} | || kr| || f6| } | r`i} i} | D]B\} }t| }|| |<||d|d|dd| |<C|| | }n|j}t|\} }|| |||jd}|D]\}}||||| |f|||j}|r|||D]}||||| |f||D]\}}|||j}|r||dSdS)NrrT)preferred_prefix is_attributeF)r)r~rrr rar^rsrqrunsmaprMgetr7r _build_qnamerrr9r;r\rrcrA)r(rZ parent_nsmaprrrq element_nsmap new_prefixesr9rEattribs attr_values attr_qnames attr_ns_namerW attr_ns_tuplesax_attributesrFrQr:rschilds rrz%ElementTreeProducer._recursive_saxifys/k '>>S$999+++55NGL222 ># e ), 7 7 -2 M*-1->->!!$mA&6 %).?.>.> M**"--k;GGNN!3N&s^^ !! J w~E"SS( < .s2"c?sf}}'4}}rrr:)rrMlenmin)r(rErFrrrr9 candidatess ` rrz ElementTreeProducer._build_qnames >   *: ; ;v E E%FF&+kkmmJ "%ZA!5!5 1 (2S___  > |j((rN)r r rrrrrrrrrryrys[ 4 4 4,,,.4-4-4-l)))))rrycFt||S)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )ryr)rrs rrrs   @ @ G G I IIrN)r __future__rxml.sax.handlerrlxmlr lxml.etreerrrr LxmlErrorr rrobjectryrrrrrs6  '&&&&&******........55555555u y%y%y%y%y%y%y%y%xp)p)p)p)p)&p)p)p)fJJJJJr