grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a õ¶a´$ã@sŽdZddlmZddlmZddlmZddlmZm Z ddlm Z m Z Gdd„dej ƒZ d d „ZGd d „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ú./usr/lib64/python3.9/site-packages/lxml/sax.pyr sr cCs0|ddkr$t|dd… dd¡ƒSd|fSdS)Nrú{éú})ÚtupleÚsplit)ÚtagrrrÚ _getNsTags rc@s˜eZdZdZd dd„Zdd„Zeeejd�Zdd „Zd d „Z d d „Z dd„Z dd„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|_|durBtj }||_ dS©N) rÚ__init__Ú_rootÚ_root_siblingsÚ_element_stackÚ _default_nsÚ _ns_mappingÚ _new_mappingsrZElementÚ _makeelement)ÚselfZ makeelementrrrr&s  z"ElementTreeContentHandler.__init__cCs t|jƒS)z=Contains the generated ElementTree after parsing is finished.)rr©r!rrrÚ _get_etree2sz$ElementTreeContentHandler._get_etree)ÚdoccCsdSrr)r!ZlocatorrrrÚsetDocumentLocator8sz,ElementTreeContentHandler.setDocumentLocatorcCsdSrrr"rrrÚ startDocument;sz'ElementTreeContentHandler.startDocumentcCsdSrrr"rrrÚ endDocument>sz%ElementTreeContentHandler.endDocumentcCsP||j|<z|j| |¡Wnty<|g|j|<Yn0|durL||_dSr)rrÚappendÚKeyErrorr)r!ÚprefixÚurirrrÚstartPrefixMappingAs  z,ElementTreeContentHandler.startPrefixMappingcCs(|j|}| ¡|dur$|d|_dS©Néÿÿÿÿ)rÚpopr)r!r*Z ns_uri_listrrrÚendPrefixMappingJs z*ElementTreeContentHandler.endPrefixMappingcCs4|\}}|rd|}n|jr,d|j|f}n|}|S)Nú{%s}%s)r)r!Z ns_name_tupleÚns_uriÚ local_nameÚel_tagrrrÚ _buildTagPs z#ElementTreeContentHandler._buildTagc Csö| |¡}|rli}z | ¡}Wnty8| ¡}Yn0|D]*\}}|drXd|} n|d} ||| <q>nd}|j} |jdurÊ| |||j¡} |_|jr¼t | dƒr¼|jD]} |   | ¡q¬|jdd…=nt | d|||jƒ} |   | ¡|j  ¡dS)Nrr1rÚ addpreviousr.)r5Z iteritemsÚAttributeErrorÚitemsrrr rrÚhasattrr6rr(Úclear) r!Úns_nameÚqnameÚ attributesZel_nameÚattrsZiter_attributesZ name_tupleÚvalueZ attr_nameZ element_stackÚelementÚsiblingrrrÚstartElementNSZs4       ÿ   ÿ z(ElementTreeContentHandler.startElementNScCs6t||ƒ}|jdur"|j |¡n|jd |¡dSr-)rrrr(r)r!ÚtargetÚdataZpirrrÚprocessingInstruction{s  z/ElementTreeContentHandler.processingInstructioncCs.|j ¡}| |¡}||jkr*td|ƒ‚dS)NzUnexpected element closed: )rr/r5rr )r!r;r<r@r4rrrÚ endElementNS‚s   z&ElementTreeContentHandler.endElementNScCs0|rtdd„| ¡Dƒƒ}| d|f||¡dS)NcSsg|]\}}d|f|f‘qSrr)Ú.0ÚkÚvrrrÚ ‹óz:ElementTreeContentHandler.startElement..)Údictr8rB)r!Únamer=rrrÚ startElementˆs ÿz&ElementTreeContentHandler.startElementcCs| d|f|¡dSr)rF)r!rMrrrÚ endElement�sz$ElementTreeContentHandler.endElementcCsN|jd}z|d}|jpd||_Wn"tyH|jp.rrú:)rfr8ÚlenÚmin)r!r2r3rercrdr*Z candidatesrrirrgús ÿ ýz ElementTreeProducer._build_qnameN)r r r r rrbrargrrrrrVŸs  6rVcCst||ƒ ¡S)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rVrb)r\r]rrrrbsrbN)r Z __future__rZxml.sax.handlerrZlxmlrZ lxml.etreerrrrZ LxmlErrorr rrÚobjectrVrbrrrrÚs   |s