a ÕDOgS?ã@s¢dZdZddlTddlmZmZddlmZddlmZmZddlm Z ddlm Z m Z dd l Z e j d d …d kr|ed d ƒ‚[ zdd lmZWneyªedd ƒ‚Yn0eedƒsÀedd ƒ‚ddlmZmZmZejZejZz dd lZWneydd„ZYn0dd lZejZ[[Gdd„dƒZGdd„dejƒZGdd„dej ejƒZ!dd„Z"e#dkrždd l$Z%e"ƒZ&e& 'e%j(j )¡¡e& *e%j( +¡¡e& ,d¡d S)z] SAX driver for the pyexpat C module. This driver works with pyexpat.__version__ == '2.22'. z0.20é)Ú*)Úfeature_validationÚfeature_namespaces)Úfeature_namespace_prefixes)Úfeature_external_gesÚfeature_external_pes)Úfeature_string_interning)Úproperty_xml_stringÚproperty_interning_dictNéÚjavazexpat not available in Java)Úexpatzexpat not supportedÚ ParserCreate)Ú xmlreaderÚsaxutilsÚhandlercCs|S©N©)Úorrú8/opt/alt/python39/lib64/python3.9/xml/sax/expatreader.pyÚ_mkproxy'src@s eZdZdS)Ú _ClosedParserN)Ú__name__Ú __module__Ú __qualname__rrrrr.src@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) Ú ExpatLocatorz¼Locator 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Ú_ref©ÚselfÚparserrrrÚ__init__9szExpatLocator.__init__cCs|j}|jdurdS|jjSr)rÚ_parserÚErrorColumnNumberrrrrÚgetColumnNumber<s zExpatLocator.getColumnNumbercCs|j}|jdurdS|jjS©Né)rr!ÚErrorLineNumberrrrrÚ getLineNumberBs zExpatLocator.getLineNumbercCs|j}|durdS|j ¡Sr)rÚ_sourceÚ getPublicIdrrrrr)HszExpatLocator.getPublicIdcCs|j}|durdS|j ¡Sr)rr(Ú getSystemIdrrrrr*NszExpatLocator.getSystemIdN) rrrÚ__doc__r r#r'r)r*rrrrr3s rc@seZdZdZdFdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dGdd„Z dd„Z dd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Zd=d>„Z d?d@„Z!dAdB„Z"dCdD„Z#dES)HÚ ExpatParserz$SAX driver for the pyexpat C module.réìÿcCsFtj ||¡t ¡|_d|_||_d|_d|_g|_ d|_ d|_ dS)NFr) rÚIncrementalParserr Z InputSourcer(r!Ú _namespacesÚ_lex_handler_propÚ_parsingÚ _entity_stackÚ _external_gesÚ _interning)rZnamespaceHandlingÚbufsizerrrr Zs zExpatParser.__init__cCsVt |¡}||_z*| ¡|j t|ƒ¡tj  ||¡Wn|  ¡‚Yn0dS)z3Parse an XML document from a URL or an InputSource.N) rÚprepare_input_sourcer(ÚresetÚ _cont_handlerZsetDocumentLocatorrrr.ÚparseÚ _close_source©rÚsourcerrrr9gs zExpatParser.parsecCs | ¡dur|j | ¡¡dSr)r*r!ZSetBaser;rrrÚ prepareParserws zExpatParser.prepareParsercCs tj ||¡|jr| ¡dSr)rr.ÚsetContentHandlerr1Ú_reset_cont_handler)rrrrrr>}szExpatParser.setContentHandlercCsP|tkr|jS|tkr |jduS|tttfvr2dS|tkr@|jSt d|ƒ‚dS)NrúFeature '%s' not recognized) rr/rr4rrrrr3ÚSAXNotRecognizedException©rÚnamerrrÚ getFeature‚s ÿzExpatParser.getFeaturecCs¦|jrtdƒ‚|tkr||_n„|tkr.||_nt|tkrT|rL|jdurRi|_q¢d|_nN|tkrj|r¢tdƒ‚n8|t kr€|r¢tdƒ‚n"|t kr–|r¢tdƒ‚n t d|ƒ‚dS)Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixesr@) r1ÚSAXNotSupportedExceptionrr/rr3rr4rrrrA)rrCÚstaterrrÚ setFeatureŽs: ÿÿÿÿzExpatParser.setFeaturecCsd|tjkr|jS|tkr|jS|tkrT|jrLt|jdƒrB|j ¡St dƒ‚nt dƒ‚t d|ƒ‚dS)NÚGetInputContextz=This version of expat does not support getting the XML stringz.XML string cannot be returned when not parsingúProperty '%s' not recognized) rÚproperty_lexical_handlerr0r r4r r!ÚhasattrrHrArErBrrrÚ getProperty¬s   ÿÿzExpatParser.getPropertycCsV|tjkr ||_|jrR| ¡n2|tkr0||_n"|tkrFtd|ƒ‚n t d|ƒ‚dS)NzProperty '%s' cannot be setrI) rrJr0r1Ú_reset_lex_handler_propr r4r rErA)rrCÚvaluerrrÚ setProperty¾s  ÿÿzExpatParser.setPropertyFc Cs||js| ¡d|_|j ¡z|j ||¡WnFtjyv}z,tt  |j ¡||ƒ}|j   |¡WYd}~n d}~00dS)NT) r1r7r8Z startDocumentr!ÚParser ÚerrorÚSAXParseExceptionÚ ErrorStringÚcodeÚ _err_handlerÚ fatalError)rÚdataÚisFinalÚeÚexcrrrÚfeedÎs zExpatParser.feedc Cs¢|jdurdS|j ¡}zvz|j d¡|j dd¡WnFtjy~}z,tt |j¡||ƒ}|j   |¡WYd}~n d}~00W|j |¡n|j |¡0dS)NFó) r!ZGetReparseDeferralEnabledZSetReparseDeferralEnabledrPr rQrRrSrTrUrV)rZ was_enabledrYrZrrrÚflushßs   $zExpatParser.flushcCsZ|j}z4| ¡}|dur | ¡W| ¡}|durV| ¡n| ¡}|durT| ¡0dSr)r(ZgetCharacterStreamÚcloseZ getByteStream)rr<Úfilerrrr:ís  þzExpatParser._close_sourcecCsÀ|js|jdust|jtƒr dSz`|jddd|j ¡d|_d|_Wd|_|jdurxtƒ}|jj|_|jj |_ ||_|  ¡n:d|_|jdur²tƒ}|jj|_|jj |_ ||_|  ¡0dS)Nr\T)rXF) r2r!Ú isinstancerr[r8Z endDocumentr1r"r&r:rrrrr^øs. ÿ     ù   zExpatParser.closecCs|jj|j_|jj|j_dSr)r8ÚprocessingInstructionr!ZProcessingInstructionHandlerÚ charactersZCharacterDataHandler©rrrrr? sÿzExpatParser._reset_cont_handlercCs`|j}|j}|dur4d|_d|_d|_d|_d|_n(|j|_|j|_|j |_|j |_|j |_dSr) r0r!ZCommentHandlerZStartCdataSectionHandlerZEndCdataSectionHandlerZStartDoctypeDeclHandlerZEndDoctypeDeclHandlerZcommentZ startCDATAZendCDATAÚstart_doctype_declZendDTD)rZlexrrrrrMsz#ExpatParser._reset_lex_handler_propcCsø|jr>tj|j ¡d|jd|_d|j_|j|j_ |j |j_ n,tj|j ¡|jd|_|j |j_ |j |j_ | ¡|j|j_|j|j_|j|j_|j|j_d|_|jr®| ¡|j|j_z|j|j_WntyØYn0|j tj ¡d|_!g|_"dS)Nú )Úinternr%F)#r/r rr(Z getEncodingr4r!Znamespace_prefixesÚstart_element_nsZStartElementHandlerÚend_element_nsZEndElementHandlerÚ start_elementÚ end_elementr?Úunparsed_entity_declZUnparsedEntityDeclHandlerÚ notation_declZNotationDeclHandlerÚstart_namespace_declZStartNamespaceDeclHandlerÚend_namespace_declZEndNamespaceDeclHandlerZ_decl_handler_propr0rMÚexternal_entity_refZExternalEntityRefHandlerÚskipped_entity_handlerZSkippedEntityHandlerÚAttributeErrorZSetParamEntityParsingZ*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr1r2rcrrrr7"s<ÿ   ÿ        ÿzExpatParser.resetcCs|jdurdS|jjSr)r!r"rcrrrr#Is zExpatParser.getColumnNumbercCs|jdurdS|jjSr$)r!r&rcrrrr'Ns zExpatParser.getLineNumbercCs |j ¡Sr)r(r)rcrrrr)SszExpatParser.getPublicIdcCs |j ¡Sr)r(r*rcrrrr*VszExpatParser.getSystemIdcCs|j |t|ƒ¡dSr)r8Z startElementÚAttributesImpl)rrCÚattrsrrrriZszExpatParser.start_elementcCs|j |¡dSr)r8Z endElementrBrrrrj]szExpatParser.end_elementc Csì| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}i}i}| ¡D]|\}}| ¡}t|ƒ} | dkr‚|} d|f} n>| dkr°d|d|df} |d|df} n|d} t|ƒ} ||| <| || <qT|j |dt||ƒ¡dS)Nr%érz%s:%sé)ÚsplitÚlenÚtupleÚitemsr8ZstartElementNSÚAttributesNSImpl) rrCrsÚpairZnewattrsZqnamesZanamerNÚpartsZlengthZqnameZapairrrrrg`s0      ÿzExpatParser.start_element_nscCsV| ¡}t|ƒdkrd|f}n&t|ƒdkr<|d|df}nt|ƒ}|j |d¡dS)Nr%rtr)rvrwrxr8Z endElementNS)rrCr{rrrrh‚s   zExpatParser.end_element_nscCs|j ||¡dSr)r8ra)rÚtargetrWrrrÚprocessing_instructionŽsz"ExpatParser.processing_instructioncCs|j |¡dSr)r8rb)rrWrrrÚcharacter_data’szExpatParser.character_datacCs|j ||¡dSr)r8ZstartPrefixMapping)rÚprefixZurirrrrm•sz ExpatParser.start_namespace_declcCs|j |¡dSr)r8ZendPrefixMapping)rr€rrrrn˜szExpatParser.end_namespace_declcCs|j |||¡dSr)r0ZstartDTD)rrCÚsysidÚpubidZhas_internal_subsetrrrrd›szExpatParser.start_doctype_declcCs|j ||||¡dSr)Ú _dtd_handlerZunparsedEntityDecl)rrCÚbaserr‚Z notation_namerrrrkžsz ExpatParser.unparsed_entity_declcCs|j |||¡dSr)rƒZ notationDecl)rrCr„rr‚rrrrl¡szExpatParser.notation_declcCs–|js dS|j ||¡}t ||j ¡p*d¡}|j |j |jf¡|j   |¡|_ ||_zt j   ||¡WnYdS0|jd\|_ |_|jd=dS)Nr%Úréÿÿÿÿ)r3Z _ent_handlerZ resolveEntityrr6r(r*r2Úappendr!ZExternalEntityParserCreaterr.r9)rÚcontextr„rr‚r<rrrro¤s" þzExpatParser.external_entity_refcCs|r d|}|j |¡dS)Nú%)r8Z skippedEntity)rrCZis_perrrrpºsz"ExpatParser.skipped_entity_handlerN)rr-)F)$rrrr+r r9r=r>rDrGrLrOr[r]r:r^r?rMr7r#r'r)r*rirjrgrhr~rrmrnrdrkrlrorprrrrr,WsB    '" r,cOst|i|¤ŽSr)r,)ÚargsÚkwargsrrrÚ create_parserÂsrŒÚ__main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)-r+ÚversionZxml.sax._exceptionsZxml.sax.handlerrrrrrrr r ÚsysÚplatformZSAXReaderNotAvailableZ xml.parsersr Ú ImportErrorrKZxml.saxrrrrrrzÚ_weakrefrÚweakrefÚproxyrZLocatorrr.r,rŒrZxml.sax.saxutilsZxmlÚpr>ZsaxZ XMLGeneratorZsetErrorHandlerZ ErrorHandlerr9rrrrÚsN       $m