asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T 3 'YL!@sdZddlmZddlmZddlmZmZddlmZm Z Gdddej Z dd Z Gd d d eZ Gd d d eZddZdS)aI 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 http://codespeak.net/lxml/sax.html )ContentHandler)etree) ElementTree SubElement)CommentProcessingInstructionc@seZdZdZdS)SaxErrorzGeneral SAX error. N)__name__ __module__ __qualname____doc__r r /usr/lib64/python3.6/sax.pyrsrcCs0|ddkr$t|ddjddSd|fSdS)Nr{})tuplesplit)tagr r r _getNsTags rc@seZdZdZd ddZddZeeejdZdd Zd d Z d d Z ddZ ddZ ddZ d!ddZddZddZd"ddZddZddZeZdS)#ElementTreeContentHandlerz/Build an lxml ElementTree from SAX events. NcCsLtj|d|_g|_g|_d|_ddgi|_i|_|dkrBtj }||_ dS)N) r__init___root_root_siblings_element_stack _default_ns _ns_mapping _new_mappingsrZElement _makeelement)selfZ makeelementr r rr"s  z"ElementTreeContentHandler.__init__cCs t|jS)z=Contains the generated ElementTree after parsing is finished.)rr)rr r r _get_etree.sz$ElementTreeContentHandler._get_etree)doccCsdS)Nr )rZlocatorr r rsetDocumentLocator4sz,ElementTreeContentHandler.setDocumentLocatorcCsdS)Nr )rr r r startDocument7sz'ElementTreeContentHandler.startDocumentcCsdS)Nr )rr r r endDocument:sz%ElementTreeContentHandler.endDocumentc CsR||j|<y|j|j|Wn tk r>|g|j|<YnX|dkrN||_dS)N)rrappendKeyErrorr)rprefixurir r rstartPrefixMapping=s z,ElementTreeContentHandler.startPrefixMappingcCs(|j|}|j|dkr$|d|_dS)Nr)rpopr)rr'Z ns_uri_listr r rendPrefixMappingFs z*ElementTreeContentHandler.endPrefixMappingcCs4|\}}|rd|}n|jr,d|j|f}n|}|S)Nz{%s}%s)r)rZ ns_name_tuplens_uri local_nameel_tagr r r _buildTagLs z#ElementTreeContentHandler._buildTagc Cs|j|}|rri}y |j}Wntk r:|j}YnXx8|D]*\}}|dr\d|} n|d} ||| <qBWnd}|j} |jdkr|j|||j} |_|jrt | drx|jD]} | j | qW|jdd=nt | d|||j} | j | |jj dS)Nrz{%s}%sr addpreviousr*)r0Z iteritemsAttributeErroritemsrrrrrhasattrr1rr%clear) rns_nameqname attributesZel_nameZattrsZiter_attributesZ name_tuplevalueZ attr_nameZ element_stackelementsiblingr r rstartElementNSVs0        z(ElementTreeContentHandler.startElementNScCs6t||}|jdkr"|jj|n|jdj|dS)Nrr*)rrrr%r)rtargetdataZpir r rprocessingInstructionws  z/ElementTreeContentHandler.processingInstructioncCs.|jj}|j|}||jkr*td|dS)NzUnexpected element closed: )rr+r0rr)rr6r7r:r/r r r endElementNS~s   z&ElementTreeContentHandler.endElementNScCs0|rtdd|jD}|jd|f||dS)NcSsg|]\}}d|f|fqS)Nr ).0kvr r r sz:ElementTreeContentHandler.startElement..)dictr3r<)rnamer8r r r startElementsz&ElementTreeContentHandler.startElementcCs|jd|f|dS)N)r@)rrFr r r endElementsz$ElementTreeContentHandler.endElementc CsP|jd}y|d}|jpd||_Wn$tk rJ|jp>d||_YnXdS)Nrr*r*)rtail IndexErrortext)rr>Z last_elementr r r characterss  z$ElementTreeContentHandler.characters)N)N)N)r r r r rr propertyrr"r#r$r)r,r0r<r?r@rGrHrMZignorableWhitespacer r r rrs"   !  rc@s0eZdZdZddZddZddZdd Zd S) ElementTreeProducerz5Produces SAX events for an element and children. c CsTy |j}Wntk r$|}YnX||_||_ddlm}||_|ii|_dS)Nr)AttributesNSImpl)Zgetrootr2_element_content_handlerZxml.sax.xmlreaderrP _attr_class_empty_attributes)relement_or_treecontent_handlerr:Z attr_classr r rrs   zElementTreeProducer.__init__cCs|jj|j}t|drrg}|j}x&t|ddtkrL|j||j}q(Wx"|dddD]}|j|iq^W|j|it|dr|j }x(t|ddtkr|j|i|j }qW|jj dS)N getpreviousrrgetnextr*) rRr#rQr4rWgetattrrr%_recursive_saxifyrXr$)rr:Zsiblingsr;r r rsaxifys"        zElementTreeProducer.saxifycCsx|j}|j}|tks|tkrJ|tkr4|j|j|j|jrF|j|jdSg}|j }|j }|ri}i} x:|D]2\} } t | } | || <|| d| d||| | <qnW|j || } n|j } t |\}}|||||}x|D]\}}|j||qW|j||f|| |jr|j|jx|D]}|j||qW|j||f|x|D]\}}|j|qHW|jrt|j|jdS)Nrr)rRrrrr?r=rLrJrM _build_qnamer3rrSrTr)r<rZr@r,)rr:prefixesrVr new_prefixesZ build_qnameZattribsZ attr_valuesZ attr_qnamesZ attr_ns_namer9Z attr_ns_tupleZsax_attributesr-r.r7r'r(Zchildr r rrZsJ      z%ElementTreeProducer._recursive_saxifyc Cs\|dkr |Sy ||}Wn6tk rNdt|}||<|j||fYnX|d|S)Nzns%02d:)r&lenr%)rr-r.r]r^r'r r rr\s z ElementTreeProducer._build_qnameN)r r r r rr[rZr\r r r rrOs  +rOcCst||jS)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rOr[)rUrVr r rr[sr[N)r Zxml.sax.handlerrZlxmlrZ lxml.etreerrrrZ LxmlErrorrrrobjectrOr[r r r r s  |Z