o ?OgS?@sdZdZddlTddlmZmZddlmZddlmZmZddlm Z ddlm Z m Z dd l Z e j d d d kr>ed d [ zdd lmZWn eySedd weeds^edd ddlmZmZmZejZejZzdd lZWn eyddZYn wdd lZejZ[[GdddZGdddejZGdddej ejZ!ddZ"e#dkrdd l$Z%e"Z&e&'e%j(j)e&*e%j(+e&,dd Sd S)z] SAX driver for the pyexpat C module. This driver works with pyexpat.__version__ == '2.22'. z0.20)*)feature_validationfeature_namespaces)feature_namespace_prefixes)feature_external_gesfeature_external_pes)feature_string_interning)property_xml_stringproperty_interning_dictNjavazexpat not available in Java)expatzexpat not supported ParserCreate) xmlreadersaxutilshandlercCs|SN)orr:/opt/alt/python310/lib64/python3.10/xml/sax/expatreader.py_mkproxy'src@s eZdZdS) _ClosedParserN)__name__ __module__ __qualname__rrrrr.src@s8eZdZdZddZddZddZdd Zd d Zd S) ExpatLocatorzLocator for use with the ExpatParser class. This uses a weak reference to the parser object to avoid creating a circular reference between the parser and the content handler. cCst||_dSr)r_refselfparserrrr__init__9zExpatLocator.__init__cCs|j}|jdur dS|jjSr)r_parserErrorColumnNumberrrrrgetColumnNumber< zExpatLocator.getColumnNumbercCs|j}|jdur dS|jjSN)rr"ErrorLineNumberrrrr getLineNumberBr%zExpatLocator.getLineNumbercC|j}|dur dS|jSr)r_source getPublicIdrrrrr,H zExpatLocator.getPublicIdcCr*r)rr+ getSystemIdrrrrr.Nr-zExpatLocator.getSystemIdN) rrr__doc__r r$r)r,r.rrrrr3s rc@seZdZdZdFddZddZdd Zd d Zd d ZddZ ddZ ddZ dGddZ ddZ ddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?d@Z!dAdBZ"dCdDZ#dES)H ExpatParserz$SAX driver for the pyexpat C module.rcCsFtj||t|_d|_||_d|_d|_g|_ d|_ d|_ dS)NFr) rIncrementalParserr Z InputSourcer+r" _namespaces_lex_handler_prop_parsing _entity_stack _external_ges _interning)rZnamespaceHandlingbufsizerrrr Zs  zExpatParser.__init__cCsNt|}||_z||jt|tj ||WdS| )z3Parse an XML document from a URL or an InputSource.N) rprepare_input_sourcer+reset _cont_handlerZsetDocumentLocatorrrr2parse _close_sourcersourcerrrr=gs zExpatParser.parsecCs$|dur|j|dSdSr)r.r"ZSetBaser?rrr prepareParserws zExpatParser.prepareParsercCs$tj|||jr|dSdSr)rr2setContentHandlerr5_reset_cont_handler)rrrrrrB}s zExpatParser.setContentHandlercCsL|tkr|jS|tkr|jduS|tttfvrdS|tkr |jSt d|)NrFeature '%s' not recognized) rr3rr8rrrrr7SAXNotRecognizedExceptionrnamerrr getFeatures  zExpatParser.getFeaturecCs|jrtd|tkr||_dS|tkr||_dS|tkr0|r+|jdur)i|_dSdSd|_dS|tkr<|r:tddS|t krH|rFtddS|t krT|rRtddSt d|)Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixesrD) r5SAXNotSupportedExceptionrr3rr7rr8rrrrE)rrGstaterrr setFeaturesB     zExpatParser.setFeaturecCs^|tjkr|jS|tkr|jS|tkr)|jr%t|jdr!|jSt dt dt d|)NGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingProperty '%s' not recognized) rproperty_lexical_handlerr4r r8r r"hasattrrLrErIrFrrr getPropertys    zExpatParser.getPropertycCsX|tjkr||_|jr|dSdS|tkr||_dS|tkr&td|t d|)NzProperty '%s' cannot be setrM) rrNr4r5_reset_lex_handler_propr r8r rIrE)rrGvaluerrr setPropertys   zExpatParser.setPropertyFc Cs||js|d|_|jz |j||WdStjy=}ztt |j ||}|j |WYd}~dSd}~ww)NT) r5r;r<Z startDocumentr"Parser errorSAXParseException ErrorStringcode _err_handler fatalError)rdataisFinaleexcrrrfeeds zExpatParser.feedc Cs|jdurdS|j}zEz|jd|jddWn#tjy?}ztt|j||}|j |WYd}~nd}~wwW|j|dSW|j|dS|j|w)NF) r"ZGetReparseDeferralEnabledZSetReparseDeferralEnabledrTr rUrVrWrXrYrZ)rZ was_enabledr]r^rrrflushs   zExpatParser.flushcCs^|j}z|}|dur|W|}|dur|dSdS|}|dur.|wwr)r+ZgetCharacterStreamcloseZ getByteStream)rr@filerrrr>s  zExpatParser._close_sourcecCs|js|jdust|jtrdSz1|jddd|jd|_d|_Wd|_|jdurrrrrrbs.          zExpatParser.closecCs|jj|j_|jj|j_dSr)r<processingInstructionr"ZProcessingInstructionHandler charactersZCharacterDataHandlerrrrrrC szExpatParser._reset_cont_handlercCsb|j}|j}|durd|_d|_d|_d|_d|_dS|j|_|j|_|j |_|j |_|j |_dSr) r4r"ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ startCDATAZendCDATAstart_doctype_declZendDTD)rZlexrrrrrQs  z#ExpatParser._reset_lex_handler_propcCs|jrtj|jd|jd|_d|j_|j|j_ |j |j_ ntj|j|jd|_|j |j_ |j |j_ ||j|j_|j|j_|j|j_|j|j_d|_|jrW||j|j_z|j|j_Wn tylYnw|jtj d|_!g|_"dS)N )internr'F)#r3r rr+Z getEncodingr8r"Znamespace_prefixesstart_element_nsZStartElementHandlerend_element_nsZEndElementHandler start_element end_elementrCunparsed_entity_declZUnparsedEntityDeclHandler notation_declZNotationDeclHandlerstart_namespace_declZStartNamespaceDeclHandlerend_namespace_declZEndNamespaceDeclHandlerZ_decl_handler_propr4rQexternal_entity_refZExternalEntityRefHandlerskipped_entity_handlerZSkippedEntityHandlerAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr5r6rgrrrr;"s>            zExpatParser.resetcCs|jdurdS|jjSr)r"r#rgrrrr$I zExpatParser.getColumnNumbercCs|jdurdS|jjSr&)r"r(rgrrrr)NrvzExpatParser.getLineNumbercC |jSr)r+r,rgrrrr,S zExpatParser.getPublicIdcCrwr)r+r.rgrrrr.VrxzExpatParser.getSystemIdcCs|j|t|dSr)r<Z startElementAttributesImpl)rrGattrsrrrrmZzExpatParser.start_elementcC|j|dSr)r<Z endElementrFrrrrn]zExpatParser.end_elementc Cs|}t|dkrd|f}nt|dkr|d|df}nt|}i}i}|D]>\}}|}t|} | dkrA|} d|f} n| dkrXd|d|df} |d|df} n|d} t|} ||| <| || <q*|j|dt||dS)Nr'rz%s:%s)splitlentupleitemsr<ZstartElementNSAttributesNSImpl) rrGrzpairZnewattrsZqnamesZanamerRpartsZlengthZqnameZapairrrrrk`s0      zExpatParser.start_element_nscCsV|}t|dkrd|f}nt|dkr|d|df}nt|}|j|ddS)Nr'r~r)rrrr<Z endElementNS)rrGrrrrrls   zExpatParser.end_element_nscC|j||dSr)r<re)rtargetr[rrrprocessing_instructionz"ExpatParser.processing_instructioncCr|r)r<rf)rr[rrrcharacter_datar}zExpatParser.character_datacCrr)r<ZstartPrefixMapping)rprefixZurirrrrqrz ExpatParser.start_namespace_declcCr|r)r<ZendPrefixMapping)rrrrrrrr}zExpatParser.end_namespace_declcCs|j|||dSr)r4ZstartDTD)rrGsysidpubidZhas_internal_subsetrrrrhzExpatParser.start_doctype_declcCs|j||||dSr) _dtd_handlerZunparsedEntityDecl)rrGbaserrZ notation_namerrrror{z ExpatParser.unparsed_entity_declcCs|j|||dSr)rZ notationDecl)rrGrrrrrrrprzExpatParser.notation_declcCs|jsdS|j||}t||jpd}|j|j |jf|j ||_ ||_z t j ||WnYdS|jd\|_ |_|jd=dS)Nr'r)r7Z _ent_handlerZ resolveEntityrr:r+r.r6appendr"ZExternalEntityParserCreaterr2r=)rcontextrrrr@rrrrss" zExpatParser.external_entity_refcCs|rd|}|j|dS)N%)r<Z skippedEntity)rrGZis_perrrrtsz"ExpatParser.skipped_entity_handlerN)rr1)F)$rrrr/r r=rArBrHrKrPrSr_rar>rbrCrQr;r$r)r,r.rmrnrkrlrrrqrrrhrorprsrtrrrrr0WsD     '"  r0cOst|i|Sr)r0)argskwargsrrr create_parserr!r__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)-r/versionZxml.sax._exceptionsZxml.sax.handlerrrrrrrr r sysplatformZSAXReaderNotAvailableZ xml.parsersr ImportErrorrOZxml.saxrrrryr_weakrefrweakrefproxyrZLocatorrr2r0rrZxml.sax.saxutilsZxmlprBZsaxZ XMLGeneratorZsetErrorHandlerZ ErrorHandlerr=rrrrsV          $m