h%dZddlmZddlmZddlmZmZddlmZm Z  ddl m Z n#e $rdZ YnwxYwGdd ejZd ZGd d eZGd dZdZdS)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 )ContentHandler)etree) ElementTree SubElement)CommentProcessingInstruction) GenericAliasc&|jd|jdS)N[])__name__clsitems X/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/lxml/sax.py _GenericAliasrs,111111ceZdZdZdS)SaxErrorzGeneral SAX error. N)r __module__ __qualname____doc__rrrrsrrc|ddkr/d|vr+t|ddddSd|fS)Nr{})tuplesplit)tags r _getNsTagr! sE 1v}}SW]]3**+++SyrceZdZdZddZdZeeejZdZdZ dZ d Z d Z d Z dd Zd ZdZddZdZdZeZdZdS)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 rr&z"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_etree6s4:&&&r)doccdSr%r)r/locators rsetDocumentLocatorz,ElementTreeContentHandler.setDocumentLocator< rcdSr%rr2s r startDocumentz'ElementTreeContentHandler.startDocument?r8rcdSr%rr2s r endDocumentz%ElementTreeContentHandler.endDocumentBr8rc||j|< |j||n#t$r|g|j|<YnwxYw| ||_dSdSr%)r,r+appendKeyErrorr*)r/prefixuris rstartPrefixMappingz,ElementTreeContentHandler.startPrefixMappingEs}%(6" -  V $ + +C 0 0 0 0 - - -(+uD V $ $ $ - >"D    >s -AAcj|j|}|||d|_dSdSN)r+popr*)r/r@ ns_uri_lists rendPrefixMappingz*ElementTreeContentHandler.endPrefixMappingNs=&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._buildTagTsQ*   -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)NrrJr addpreviousrE)rO iteritemsAttributeErroritemsr)r'r.r,r(hasattrrQrr>clear) r/ns_nameqname attributesel_nameattrsiter_attributes name_tuplevalue attr_name element_stackelementsiblings rstartElementNSz(ElementTreeContentHandler.startElementNS^s..))  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!&(:<r))r/targetdatapis rprocessingInstructionz/ElementTreeContentHandler.processingInstructionsX "64 0 0 :    & &r * * * * *   # * *2 . . . . .rc|j}||}||jkrt d|zdS)NzUnexpected element closed: )r)rFrOr r)r/rWrXrarNs r endElementNSz&ElementTreeContentHandler.endElementNSsP%))++(( W[ 86ABB B ! rcx|rd|D}|d|f||dS)Nci|] \}}d|f| Sr%r).0kvs r z:ElementTreeContentHandler.startElement..s"FFF41a4)QFFFr)rTrc)r/namerYs r startElementz&ElementTreeContentHandler.startElementsL  GFF:3C3C3E3EFFFJ T4L$ ;;;;;rc6|d|f|dSr%)rj)r/rqs r endElementz$ElementTreeContentHandler.endElements" 4,-----rc|jd} |d}|jpd|z|_dS#t$r|jpd|z|_YdSwxYw)NrE)r)tail IndexErrortext)r/rf last_elements r charactersz$ElementTreeContentHandler.characterss{*2.  A'+L ".!2!8bD @L     A A A!-!2!8bD @L     As*A A c"t||Sr%)rrs r__class_getitem__z+ElementTreeContentHandler.__class_getitem__sS$'''rr%)r rrrr&r3propertyrr7r:r<rBrHrOrcrhrjrrrtr{ignorableWhitespacer}rrrr#r#'s6 ( ( ( (''' HZZ%7 8 8 8E         ###/// ####B///CCC <<<< ... A A A%(((((rr#c*eZdZdZdZdZdZdZdS)ElementTreeProducerz5Produces SAX events for an element and children. c |}n#t$r|}YnwxYw||_||_ddlm}||_|ii|_dS)Nr)AttributesNSImpl)getrootrS_element_content_handlerxml.sax.xmlreaderr _attr_class_empty_attributes)r/element_or_treecontent_handlerra attr_classs rr&zElementTreeProducer.__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 getpreviousr rEgetnext) rr:rrUrgetattrrr>_recursive_saxifyrr<)r/rasiblingsrbs 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)rr rrrhreryrwr{nsmaprTgetr>r! _build_qnamerrr@rBrcrrjrH)r/ra parent_nsmaprr rw element_nsmap new_prefixesr@rLattribs attr_values attr_qnames attr_ns_namer^ attr_ns_tuplesax_attributesrMrXrArychilds 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( < z4ElementTreeProducer._build_qname.. s2"c?sf}}'4}}rrr:)rrTlenmin)r/rLrMrrrr@ candidatess ` rrz ElementTreeProducer._build_qnames >   *: ; ;v E E%FF&+kkmmJ "%ZA!5!5 1 (2S___  > |j((rN)r rrrr&rrrrrrrrs[ 4 4 4,,,.4-4-4-l)))))rrcFt||S)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rr)rrs rrrs   @ @ G G I IIrN)rxml.sax.handlerrlxmlr lxml.etreerrrrtypesr r ImportError LxmlErrorrr!r#rrrrrrsp  +*****........5555555523333333222222222 u |(|(|(|(|(|(|(|(~p)p)p)p)p)p)p)p)fJJJJJs '22