
    z%i<                        	 d Z ddl ddlmZmZ ddlmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 	 ddlmZ  eed	      s	 ed
d      ddlmZmZmZ ej(                  Zej*                  Z	 ddlZddlZej0                  Z[[ G d d      Z G d dej6                        Z G d dej:                  ej6                        Zd Ze dk(  ryddl!Z" e       Z#e#jI                  e"jJ                  j$                  jM                                e#jO                  e"jJ                  jQ                                e#jS                  d       yy# e$ r
  ed
d      w xY w# e$ r d ZY w xY w)z0.20    )*)feature_validationfeature_namespaces)feature_namespace_prefixes)feature_external_gesfeature_external_pes)feature_string_interning)property_xml_stringproperty_interning_dict)expatParserCreatezexpat not supportedN)	xmlreadersaxutilshandlerc                     | S N )os    G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/xml/sax/expatreader.py_mkproxyr   !   s        c                       e Zd Zy)_ClosedParserN)__name__
__module____qualname__r   r   r   r   r   (   s    r   r   c                   ,    e Zd Z	 d Zd Zd Zd Zd Zy)ExpatLocatorc                 $    t        |      | _        y r   )r   _refselfparsers     r   __init__zExpatLocator.__init__3   s    V$	r   c                 `    | j                   }|j                  y |j                  j                  S r   )r    _parserErrorColumnNumberr!   s     r   getColumnNumberzExpatLocator.getColumnNumber6   s(    >>!~~///r   c                 `    | j                   }|j                  y|j                  j                  S N   )r    r&   ErrorLineNumberr!   s     r   getLineNumberzExpatLocator.getLineNumber<   s(    >>!~~---r   c                 T    | j                   }|y |j                  j                         S r   )r    _sourcegetPublicIdr!   s     r   r0   zExpatLocator.getPublicIdB   &    >~~))++r   c                 T    | j                   }|y |j                  j                         S r   )r    r/   getSystemIdr!   s     r   r3   zExpatLocator.getSystemIdH   r1   r   N)r   r   r   r$   r(   r-   r0   r3   r   r   r   r   r   -   s     
%0.,,r   r   c                       e Zd Z	 d!dZd Zd Zd Zd Zd Zd Z	d Z
d"d	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!y )#ExpatParserc                     t         j                  j                  | |       t        j                         | _        d | _        || _        d | _        d| _        g | _	        d| _
        d | _        y )NFr   )r   IncrementalParserr$   InputSourcer/   r&   _namespaces_lex_handler_prop_parsing_entity_stack_external_ges
_interning)r"   namespaceHandlingbufsizes      r   r$   zExpatParser.__init__T   s]    ##,,T7; ,,.,!%r   c                    	 t        j                  |      }|| _        	 | j                          | j                  j                  t        |              t        j                  j                  | |       y #  | j                           xY wr   )r   prepare_input_sourcer/   reset_cont_handlersetDocumentLocatorr   r   r7   parse_close_sourcer"   sources     r   rF   zExpatParser.parsea   sq    =..v6		JJL11,t2DE''--dF;	  s   AA4 4Bc                 x    |j                         *| j                  j                  |j                                y y r   )r3   r&   SetBaserH   s     r   prepareParserzExpatParser.prepareParserq   s1    +LL  !3!3!56 ,r   c                 ~    t         j                  j                  | |       | j                  r| j	                          y y r   )r   r7   setContentHandlerr;   _reset_cont_handler)r"   r   s     r   rN   zExpatParser.setContentHandlerw   s0    ##55dGD==$$& r   c                     |t         k(  r| j                  S |t        k(  r| j                  d uS |t        t
        t        fv ry|t        k(  r| j                  S t        d|z        )Nr   Feature '%s' not recognized)
r   r9   r	   r>   r   r   r   r   r=   SAXNotRecognizedExceptionr"   names     r   
getFeaturezExpatParser.getFeature|   sn    %%###--??$..(*>02 2))%%%'(E(LMMr   c                 j   | j                   rt        d      |t        k(  r|| _        y |t        k(  r|| _        y |t        k(  r|r| j                  i | _        y d | _        y y |t        k(  r|rt        d      y |t        k(  r|rt        d      y |t        k(  r|rt        d      y t        d|z        )Nz!Cannot set features while parsingz!expat does not support validationz/expat does not read external parameter entitiesz(expat does not report namespace prefixesrQ   )r;   SAXNotSupportedExceptionr   r9   r   r=   r	   r>   r   r   r   rR   )r"   rT   states      r   
setFeaturezExpatParser.setFeature   s    ==*+NOO%%$D))!&D--??*&(DO"& + ''.79 9  )).EG G  //.>@ @  ,-46 6r   c                 <   |t         j                  k(  r| j                  S |t        k(  r| j                  S |t
        k(  rR| j                  r;t        | j                  d      r| j                  j                         S t        d      t        d      t        d|z        )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_handlerr:   r   r>   r
   r&   hasattrr[   rR   rW   rS   s     r   getPropertyzExpatParser.getProperty   s    7333))),,??"((||4<<):;<<77993*+ + /DF F'(F(MNNr   c                     |t         j                  k(  r%|| _        | j                  r| j	                          y y |t
        k(  r|| _        y |t        k(  rt        d|z        t        d|z        )NzProperty '%s' cannot be setr\   )
r   r]   r:   r;   _reset_lex_handler_propr   r>   r
   rW   rR   )r"   rT   values      r   setPropertyzExpatParser.setProperty   s{    7333%*D"}},,. ,,#DO((*+H+/,0 1 1 ,,J,0-1 2 2r   c                    | j                   s1| j                          d| _         | j                  j                          	 | j                  j                  ||       y # t        j                  $ rO}t        t        j                  |j                        ||       }| j                  j                  |       Y d }~y d }~ww xY w)NT)r;   rC   rD   startDocumentr&   Parser   errorSAXParseExceptionErrorStringcode_err_handler
fatalError)r"   dataisFinaleexcs        r   feedzExpatParser.feed   s    }}JJL DM,,.		.
 LLtW-{{ 	.#E$5$5aff$=q$GC((--	.s   A B>/AB99B>c                     | j                   }	 |j                         }||j                          |j                         }||j                          y y # |j                         }||j                          w w xY wr   )r/   getCharacterStreamclosegetByteStream)r"   rI   files      r   rG   zExpatParser._close_source   su    	,,.D

'')D

   '')D

  s   "A %A9c                    | j                   s&| j                  t        | j                  t              ry 	 | j	                  dd       | j
                  j                          d| _        d | _        d| _        | j                  Gt               }| j                  j                  |_        | j                  j                  |_	        || _        | j                          y # d| _        | j                  Gt               }| j                  j                  |_        | j                  j                  |_	        || _        | j                          w xY w)Nr   T)rn   F)r<   r&   
isinstancer   rq   rD   endDocumentr;   r'   r,   rG   r!   s     r   rt   zExpatParser.close   s    $,,"6t||]3	!IIc4I(**,!DMDL!DM||'&+/<<+I+I()-)E)E&%  "DM||'&+/<<+I+I()-)E)E&% s   ;C A,Ec                     | j                   j                  | j                  _        | j                   j                  | j                  _        y r   )rD   processingInstructionr&   ProcessingInstructionHandler
charactersCharacterDataHandlerr"   s    r   rO   zExpatParser._reset_cont_handler   s5    $($6$6$L$L 	1,0,>,>,I,I)r   c                 *   | j                   }| j                  }|$d |_        d |_        d |_        d |_        d |_        y |j                  |_        |j                  |_        |j                  |_        | j                  |_        |j                  |_        y r   )r:   r&   CommentHandlerStartCdataSectionHandlerEndCdataSectionHandlerStartDoctypeDeclHandlerEndDoctypeDeclHandlercomment
startCDATAendCDATAstart_doctype_declendDTD)r"   lexr#   s      r   ra   z#ExpatParser._reset_lex_handler_prop   s    $$;$(F!.2F+,0F)-1F*+/F($'KKF!.1nnF+,/LLF)-1-D-DF*+.::F(r   c                 J   | j                   rt        j                  | j                  j	                         d| j
                        | _        d| j                  _        | j                  | j                  _	        | j                  | j                  _        ntt        j                  | j                  j	                         | j
                        | _        | j                  | j                  _	        | j                  | j                  _        | j                          | j                  | j                  _        | j"                  | j                  _        | j&                  | j                  _        | j*                  | j                  _        d | _        | j0                  r| j3                          | j4                  | j                  _        	 | j8                  | j                  _        | j                  j?                  t        j@                         d| _!        g | _"        y # t<        $ r Y Cw xY w)N )internr+   F)#r9   r   r   r/   getEncodingr>   r&   namespace_prefixesstart_element_nsStartElementHandlerend_element_nsEndElementHandlerstart_elementend_elementrO   unparsed_entity_declUnparsedEntityDeclHandlernotation_declNotationDeclHandlerstart_namespace_declStartNamespaceDeclHandlerend_namespace_declEndNamespaceDeclHandler_decl_handler_propr:   ra   external_entity_refExternalEntityRefHandlerskipped_entity_handlerSkippedEntityHandlerAttributeErrorSetParamEntityParsing*XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONEr;   r<   r   s    r   rC   zExpatParser.reset  s    --dll.F.F.H#59__FDL./DLL+/3/D/DDLL,-1-@-@DLL* --dll.F.F.H7;HDL/3/A/ADLL,-1-=-=DLL*  "151J1J.+/+=+=(151J1J./3/F/F,"&!!((* 150H0H-	040K0KDLL- 	**<<	>   		s   H 	H"!H"c                 H    | j                   y | j                   j                  S r   )r&   r'   r   s    r   r(   zExpatParser.getColumnNumber5  s    <<||---r   c                 H    | j                   y| j                   j                  S r*   )r&   r,   r   s    r   r-   zExpatParser.getLineNumber:  s    <<||+++r   c                 6    | j                   j                         S r   )r/   r0   r   s    r   r0   zExpatParser.getPublicId?      ||''))r   c                 6    | j                   j                         S r   )r/   r3   r   s    r   r3   zExpatParser.getSystemIdB  r   r   c                 N    | j                   j                  |t        |             y r   )rD   startElementAttributesImpl)r"   rT   attrss      r   r   zExpatParser.start_elementF  s    ''nU.CDr   c                 :    | j                   j                  |       y r   )rD   
endElementrS   s     r   r   zExpatParser.end_elementI      %%d+r   c                    |j                         }t        |      dk(  rd |f}n$t        |      dk(  r|d   |d   f}nt        |      }i }i }|j                         D ]c  \  }}|j                         }t        |      }	|	dk(  r|}
d |f}n-|	dk(  r|d   d|d   }
|d   |d   f}n|d   }
t        |      }|||<   |
||<   e | j                  j                  |d t        ||             y )Nr+      r      :)splitlentupleitemsrD   startElementNSAttributesNSImpl)r"   rT   r   pairnewattrsqnamesanamerb   partslengthqnameapairs               r   r   zExpatParser.start_element_nsL  s   zz|t9>$<DY!^7DG#D ;D#kkm 	"NUEKKMEZF{u1#(8U1X6a%(* ae#HUO!F5M!	"$ 	))$*:8V*L	Nr   c                     |j                         }t        |      dk(  rd |f}n$t        |      dk(  r|d   |d   f}nt        |      }| j                  j	                  |d        y )Nr+   r   r   )r   r   r   rD   endElementNS)r"   rT   r   s      r   r   zExpatParser.end_element_nsn  s]    zz|t9>$<DY!^7DG#D;D''d3r   c                 <    | j                   j                  ||       y r   )rD   r{   )r"   targetrm   s      r   processing_instructionz"ExpatParser.processing_instructionz  s    00>r   c                 :    | j                   j                  |       y r   )rD   r}   )r"   rm   s     r   character_datazExpatParser.character_data~  r   r   c                 <    | j                   j                  ||       y r   )rD   startPrefixMapping)r"   prefixuris      r   r   z ExpatParser.start_namespace_decl  s    --fc:r   c                 :    | j                   j                  |       y r   )rD   endPrefixMapping)r"   r   s     r   r   zExpatParser.end_namespace_decl  s    ++F3r   c                 >    | j                   j                  |||       y r   )r:   startDTD)r"   rT   sysidpubidhas_internal_subsets        r   r   zExpatParser.start_doctype_decl  s    ''eU;r   c                 @    | j                   j                  ||||       y r   )_dtd_handlerunparsedEntityDecl)r"   rT   baser   r   notation_names         r   r   z ExpatParser.unparsed_entity_decl  s    ,,T5%Or   c                 >    | j                   j                  |||       y r   )r   notationDecl)r"   rT   r   r   r   s        r   r   zExpatParser.notation_decl  s    &&tUE:r   c                    | j                   sy| j                  j                  ||      }t        j                  || j
                  j                         xs d      }| j                  j                  | j                  | j
                  f       | j                  j                  |      | _	        || _        	 t        j                  j                  | |       | j                  d   \  | _	        | _        | j                  d= y#  Y yxY w)Nr+    r   )r=   _ent_handlerresolveEntityr   rB   r/   r3   r<   appendr&   ExternalEntityParserCreater   r7   rF   )r"   contextr   r   r   rI   s         r   r   zExpatParser.external_entity_ref  s    !!""00>..v/3||/G/G/I 02/13 	!!4<<">?||>>wG	''--dF; (,'9'9"'=$t|r"	s   5 C? ?Dc                 H    |rd|z   }| j                   j                  |       y )N%)rD   skippedEntity)r"   rT   is_pes      r   r   z"ExpatParser.skipped_entity_handler  s"    t8D((.r   N)r   i  )F)"r   r   r   r$   rF   rL   rN   rU   rY   r_   rc   rq   rG   rt   rO   ra   rC   r(   r-   r0   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r5   Q   s    .	 7'

N6<O$2 ."	!*J
6 # N.
,
**E, ND	4?,;4<P;,/r   r5   c                      t        | i |S r   )r5   )argskwargss     r   create_parserr     s    '''r   __main__z:http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml)*versionxml.sax._exceptionsxml.sax.handlerr   r   r   r   r   r	   r
   r   xml.parsersr   r^   SAXReaderNotAvailableImportErrorxml.saxr   r   r   r   r   _weakrefweakrefproxyr   r   Locatorr   r7   r5   r   r   xml.sax.saxutilsxmlprN   saxXMLGeneratorsetErrorHandlerErrorHandlerrF   r   r   r   <module>r     sT  
  ! B 6 F 4 HA! 5.)#$94@@ 0 0))-- 

 }}H	 	
,9$$ ,HY/)--y/@/@ Y/z
(
 zA((5578cgg**,-GGHI E  =
 5t
<<=  s   E  )E  EEE