Xj%dZddlmZddlmZddlmZmZddlmZm Z  ddl m Z Gdd ejZd ZGd d eZGd dZdZy#e $rdZ Y;wxYw)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 \/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/lxml/sax.py _GenericAliasrs,,qq11ceZdZdZy)SaxErrorzGeneral SAX error. N)r __module__ __qualname____doc__rrrrsrrc^|ddk(r"d|vrt|ddjddSd|fS)Nr{})tuplesplit)tags r _getNsTagr! s9 1v}SW]]3*++SyrceZdZdZddZdZeeejZdZdZ dZ d Z d Z d Z dd Zd ZdZddZdZdZeZdZy)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 rr&z"ElementTreeContentHandler.__init__*s]%   !TF,  --K'rc,t|jS)z=Contains the generated ElementTree after parsing is finished.)rr'r/s r _get_etreez$ElementTreeContentHandler._get_etree6s4::&&r)doccyr%r)r/locators rsetDocumentLocatorz,ElementTreeContentHandler.setDocumentLocator< rcyr%rr2s r startDocumentz'ElementTreeContentHandler.startDocument?r8rcyr%rr2s r endDocumentz%ElementTreeContentHandler.endDocumentBr8rc||j|< |j|j||||_yy#t$r|g|j|<Y&wxYwr%)r,r+appendKeyErrorr*)r/prefixuris rstartPrefixMappingz,ElementTreeContentHandler.startPrefixMappingEsg%(6" -   V $ + +C 0 >"D   -(+uD  V $ -s:AAc\|j|}|j| |d|_yyN)r+popr*)r/r@ ns_uri_lists rendPrefixMappingz*ElementTreeContentHandler.endPrefixMappingNs2&&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._buildTagTsN*  -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)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^sE..) E 5","6"6"8&5 )! Ea= (: 5I *1 I#(i  )E++ :: ''8J8JK LGdj""ww 'F#221G''01##A& r!2G!&(:(:r))r/targetdatapis rprocessingInstructionz/ElementTreeContentHandler.processingInstructionsE "64 0 ::     & &r *    # * *2 .rc|jj}|j|}||jk7rt d|zy)NzUnexpected element closed: )r)rFrOr r)r/rWrXrarNs r endElementNSz&ElementTreeContentHandler.endElementNSsF%%))+( W[[ 86AB B !rc|r%|jDcic] \}}d|f| }}}|jd|f||ycc}}wr%)rTrc)r/namerYkvs r startElementz&ElementTreeContentHandler.startElementsI 3=3C3C3EF41a4)Q,FJF T4L$ ;Gs>c,|jd|f|yr%)rj)r/rls r endElementz$ElementTreeContentHandler.endElements 4,-rc|jd} |d}|jxsd|z|_y#t$r|jxsd|z|_YywxYw)NrE)r)tail IndexErrortext)r/rf last_elements r charactersz$ElementTreeContentHandler.characterssg**2.  A'+L ".!2!2!8bD @L   A!-!2!2!8bD @L  As/!AAct||Sr%)rrs r__class_getitem__z+ElementTreeContentHandler.__class_getitem__sS$''rr%)r rrrr&r3propertyrr7r:r<rBrHrOrcrhrjrorqrxignorableWhitespacerzrrrr#r#'sq (' ZZ%7%7 8E   #/ #B/C < . A%(rr#c(eZdZdZdZdZdZdZy)ElementTreeProducerz5Produces SAX events for an element and children. c |j}||_||_ddlm}||_|ii|_y#t$r|}Y7wxYw)Nr)AttributesNSImpl)getrootrS_element_content_handlerxml.sax.xmlreaderr _attr_class_empty_attributes)r/element_or_treecontent_handlerra attr_classs rr&zElementTreeProducer.__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 getpreviousr rEgetnext) rr:rrUrgetattrrr>_recursive_saxifyrr<)r/rasiblingsrbs rsaxifyzElementTreeProducer.saxifys! ++--- 7M *H))+G'5$/3HH(!--/'5$/3HH$DbD> 4&&w3 4 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)rr rrrhrervrtrxnsmaprTgetr>r! _build_qnamerrr@rBrcrrjrH)r/ra parent_nsmaprr rt element_nsmap new_prefixesr@rLattribs attr_values attr_qnames attr_ns_namer^ attr_ns_tuplesax_attributesrMrXrArvchilds rrz%ElementTreeProducer._recursive_saxifysO//kk '>S$99++55NNGLL2<# e ), 7 -2 M*-1->->!!$mA&6 %).?.> M* > "--k;GN!33N&s^ !! J w~~E"S(   *: ;v E%F',kkm"c?sf}J "%ZA!5 1 (2S_  > |j((sA5N)r rrrr&rrrrrrr~r~s 4,.4-l)rr~c6t||jS)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )r~r)rrs rrrs  @ G G IIrN)rxml.sax.handlerrlxmlr lxml.etreerrrrtypesr r ImportError LxmlErrorrr!r#r~rrrrrsn +.523u |(|(~p)p)fJI222sAA"!A"