gW$dZddlmZddlmZddlmZmZddlmZm Z GddejZ dZ Gd d eZ Gd d Zd Zy)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)CommentProcessingInstructionceZdZdZy)SaxErrorzGeneral SAX error. N)__name__ __module__ __qualname____doc__9/opt/hc_python/lib64/python3.12/site-packages/lxml/sax.pyr r srr cV|ddk(rt|ddjddSd|fS)Nr{})tuplesplit)tags r _getNsTagrs3 1v}SW]]3*++SyrceZdZdZddZdZeeejZdZdZ dZ d Z d Z d Z dd Zd ZdZddZdZdZeZy)ElementTreeContentHandlerz/Build an lxml ElementTree from SAX events. Nctj|d|_g|_g|_d|_ddgi|_i|_|tj}||_ yN) r__init___root_root_siblings_element_stack _default_ns _ns_mapping _new_mappingsrElement _makeelement)self makeelements rrz"ElementTreeContentHandler.__init__%s]%   !TF,  --K'rc,t|jS)z=Contains the generated ElementTree after parsing is finished.)rrr's r _get_etreez$ElementTreeContentHandler._get_etree1s4::&&r)doccyrr)r'locators rsetDocumentLocatorz,ElementTreeContentHandler.setDocumentLocator7 rcyrrr*s r startDocumentz'ElementTreeContentHandler.startDocument:r0rcyrrr*s r endDocumentz%ElementTreeContentHandler.endDocument=r0rc||j|< |j|j||||_yy#t$r|g|j|<Y&wxYwr)r$r#appendKeyErrorr")r'prefixuris rstartPrefixMappingz,ElementTreeContentHandler.startPrefixMapping@sg%(6" -   V $ + +C 0 >"D   -(+uD  V $ -s:AAc\|j|}|j| |d|_yyN)r#popr")r'r8 ns_uri_lists rendPrefixMappingz*ElementTreeContentHandler.endPrefixMappingIs2&&v.  >*2D  rcf|\}}|rd|z}|S|jrd|jd|}|S|}|S)N{%s}%srr)r")r' ns_name_tuplens_uri local_nameel_tags r _buildTagz#ElementTreeContentHandler._buildTagOsN*  -F    !%!1!1:>F  F rcl|j|}|r3i} |j}|D]\}}|drd|z} n|d} ||| <nd}|j} |j n|j |||jx} |_|jr.t| dr"|jD]} | j| |jdd=nt| d|||j} | j| |jjy#t$r|j}Y wxYw)NrrBr addpreviousr=)rG iteritemsAttributeErroritemsr!rr&r$r hasattrrIrr6clear) r'ns_nameqname attributesel_nameattrsiter_attributes name_tuplevalue attr_name element_stackelementsiblings rstartElementNSz(ElementTreeContentHandler.startElementNSYs;..) E 5","6"6"8&5! Ea= (: 5I *1 I#(i &5E++ :: ''8J8JK LGdj""ww 'F#22G''0 3##A& r!2G!&(:(:rGrr )r'rOrPrYrFs r endElementNSz&ElementTreeContentHandler.endElementNSsF%%))+( W[[ 86AB B !rc|r%|jDcic] \}}d|f| }}}|jd|f||ycc}}wr)rLr[)r'namerQkvs r startElementz&ElementTreeContentHandler.startElementsL 3=3C3C3EF3E41a4)Q,3EJF T4L$ ;Gs>c,|jd|f|yr)rb)r'rds r endElementz$ElementTreeContentHandler.endElements 4,-rc|jd} |d}|jxsd|z|_y#t$r|jxsd|z|_YywxYw)Nr=)r!tail IndexErrortext)r'r^ last_elements r charactersz$ElementTreeContentHandler.characterssc**2.  A'+L!-!2!2!8bD @L  A!-!2!2!8bD @L  As/!AAr)r r r rrr+propertyrr/r2r4r:r@rGr[r`rbrgrirpignorableWhitespacerrrrr"sl (' ZZ%7%7 8E   #/ #B/C < .A%rrc(eZdZdZdZdZdZdZy)ElementTreeProducerz5Produces SAX events for an element and children. c |j}||_||_ddlm}||_|ii|_y#t$r|}Y7wxYw)Nr)AttributesNSImpl)getrootrK_element_content_handlerxml.sax.xmlreaderrv _attr_class_empty_attributes)r'element_or_treecontent_handlerrY attr_classs rrzElementTreeProducer.__init__sV &%--/G  /D%!+B!3  &%G &s< A  A c||jj|j}t|dryg}|j }t |ddt ur5|j||j }t |ddt ur5|dddD]}|j|i|j|it|drY|j}t |ddt ur6|j|i|j}t |ddt ur6|jjy)N getpreviousrr=getnext) ryr2rxrMrgetattrrr6_recursive_saxifyrr4)r'rYsiblingsrZs rsaxifyzElementTreeProducer.saxifys ++--- 7M *H))+G'5$/3HH(!--/'5$/3HH$DbD>&&w3* w+ 7I &oo'G'5$/3HH&&w3!//+'5$/3HH ))+rc>|j}|j}|tus|turN|tur&|j |j |j |j}|r|j|y|j}g}||k7r@|jD]-\}} |j|| k7s|j|| f/|j} | rPi} i} | D]4\} }t| }|| |<|j|d|d|dd| |<6|j| | }n |j }t|\} }|j| |||j"d}|D]\}}|j%|||j'| |f|||j }|r|j||D]}|j)|||j+| |f||D]\}}|j-||j}|r|j|yy)NrrT)preferred_prefix is_attributeF)r)ryrrrr`r]rnrlrpnsmaprLgetr6r _build_qnamer{r|r8r:r[rrbr@)r'rY parent_nsmapr~rrl element_nsmap new_prefixesr8rDattribs attr_values attr_qnames attr_ns_namerV attr_ns_tuplesax_attributesrErPr9rnchilds rrz%ElementTreeProducer._recursive_saxifys6//kk '>S$99++55NNGLL2<->!!$mA&6 %).?.> M*(/ "--k;GN!33N&s^ !! J w~~E"S(KFC  . .vs ;(&& Z % 9||   & &t ,E  " "5- 8$$fj%95A'KFC  , ,V 4(||   & &t , rc||S|s|j||k(r|}nK|jDcgc]\}}|||k(r|} }}t| dk(r| dn| r t| nd}||S|dz|zScc}}w)Nrr:)rrLlenmin) r'rDrErrrr8pfxr9 candidatess rrz ElementTreeProducer._build_qnames >  *: ;v E%F',kkm&3 c?sf}m  "%ZA!5 1 (2S_  > |j((sA5N)r r r rrrrrrrrrtrts 4,.4-l)rrtc6t||jS)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rtr)r}r~s rrrs  @ G G IIrN)rxml.sax.handlerrlxmlr lxml.etreerrrr LxmlErrorr rrrtrrrrrsO +.5u w%w%tp)p)fJr