
    d/                         d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 d Z
i fdZi fdZi fd	Zd
 Z G d dej                  Z G d de	j                  ZddZdS )znA library of useful helper classes to the SAX classes, for the
convenience of application and driver writers.
    N   )handler)	xmlreaderc                 f    |                                 D ]\  }}|                     ||          } | S )z2Replace substrings of a string using a dictionary.)itemsreplace)sdkeyvalues       "  /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/xml/sax/saxutils.py__dict_replacer      s7    ggii " "
UIIc5!!H    c                     |                      dd          } |                      dd          } |                      dd          } |rt          | |          } | S )zEscape &, <, and > in a string of data.

    You can escape other strings of data by passing a dictionary as
    the optional entities parameter.  The keys and values must all be
    strings; each key will be replaced with its corresponding value.
    &&amp;>&gt;<&lt;r   r   dataentitiess     r   escaper      sY     <<W%%D<<V$$D<<V$$D .dH--Kr   c                     |                      dd          } |                      dd          } |rt          | |          } |                      dd          S )a
  Unescape &amp;, &lt;, and &gt; in a string of data.

    You can unescape other strings of data by passing a dictionary as
    the optional entities parameter.  The keys and values must all be
    strings; each key will be replaced with its corresponding value.
    r   r   r   r   r   r   r   r   s     r   unescaper   "   sU     <<$$D<<$$D .dH--<<%%%r   c                     i |dddd}t          | |          } d| v r$d| v rd|                     dd          z  } nd	| z  } nd| z  } | S )
a  Escape and quote an attribute value.

    Escape &, <, and > in a string of data, then quote it for use as
    an attribute value.  The " character will be escaped as well, if
    necessary.

    You can escape other strings of data by passing a dictionary as
    the optional entities parameter.  The keys and values must all be
    strings; each key will be replaced with its corresponding value.
    z&#10;z&#13;z&#9;)
	"'z"%s"z&quot;z'%s')r   r   r   s     r   	quoteattrr$   0   sr     G(F'vFFFH$!!D
d{{$;;DLLh777DDD=DD}Kr   c                      dd l }|j        S t           t          j                  r S t           t
          j        t
          j        f          r S t           t          j                  r" G  fdd          } |            }d |_	        nQt          j
                    }d |_         j        |_        	  j        |_         j        |_        n# t          $ r Y nw xY wt          j        ||ddd	          S )
Nr   c                   (    e Zd Z j        Z fdZdS ) _gettextwriter.<locals>._wrapperc                 $    t          |          S N)getattr)selfnameouts     r   __getattr__z,_gettextwriter.<locals>._wrapper.__getattr__Z   s    sD)))r   N)__name__
__module____qualname__	__class__r.   )r-   s   r   _wrapperr'   X   s5        I* * * * * * *r   r3   c                      d S r)    r5   r   r   <lambda>z _gettextwriter.<locals>.<lambda>]   s    t r   c                      dS )NTr5   r5   r   r   r6   z _gettextwriter.<locals>.<lambda>b   s    $ r   xmlcharrefreplacer   T)encodingerrorsnewlinewrite_through)sysstdout
isinstanceio
TextIOBasecodecsStreamWriterStreamReaderWriter	RawIOBasecloseBufferedIOBasewritablewriteseekabletellAttributeErrorTextIOWrapper)r-   r9   r=   r3   buffers   `    r   _gettextwriterrO   G   s8   
{


z#r}%% 
#+V-FGHH 
 #r|$$ 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* #| "$$&,y	 "lFO(FKK 	 	 	D	FX#6$(*.0 0 0 0s   7C 
CCc                   f    e Zd Zd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S )XMLGeneratorN
iso-8859-1Fc                     t           j                            |            t          ||          }|j        | _        |j        | _        i g| _        | j        d         | _	        g | _
        || _        || _        d| _        d S )NF)r   ContentHandler__init__rO   rI   _writeflush_flush_ns_contexts_current_context_undeclared_ns_maps	_encoding_short_empty_elements_pending_start_element)r+   r-   r9   short_empty_elementss       r   rV   zXMLGenerator.__init__r   sy    ''---S(++iiD $ 1" 5#% !%9"&+###r   c                     |d         r:d|d         k    rd|d         z   S | j         |d                  }|r|dz   |d         z   S |d         S )z7Builds a qualified name from a (ns_url, localname) pairr   z$http://www.w3.org/XML/1998/namespacezxml:r   :)r[   )r+   r,   prefixs      r   _qnamezXMLGenerator._qname~   sc    7 	.
 6a@@Q''*473F .|d1g--Awr   c                 P    | j         r|                     d           d| _         d S d S )Nr   Fr_   rW   )r+   
endElements     r   _finish_pending_start_elementz*XMLGenerator._finish_pending_start_element   s7    & 	0KK*/D'''	0 	0r   c                 @    |                      d| j        z             d S )Nz$<?xml version="1.0" encoding="%s"?>
)rW   r]   r+   s    r   startDocumentzXMLGenerator.startDocument   s/    ;' 	( 	( 	( 	( 	(r   c                 .    |                                   d S r)   )rY   rj   s    r   endDocumentzXMLGenerator.endDocument   s    r   c                     | j                             | j                                                   || j        |<   | j                            ||f           d S r)   )rZ   appendr[   copyr\   r+   rc   uris      r   startPrefixMappingzXMLGenerator.startPrefixMapping   sV      !6!;!;!=!=>>>%+c" ''66666r   c                 :    | j         d         | _        | j         d= d S )NrT   )rZ   r[   r+   rc   s     r   endPrefixMappingzXMLGenerator.endPrefixMapping   s#     $ 1" 5b!!!r   c           	      ,   |                                   |                     d|z              |                                D ]-\  }}|                     d|dt          |                     .| j        r	d| _        d S |                     d           d S )Nr    =Tr   )rh   rW   r   r$   r^   r_   )r+   r,   attrsr   s       r   startElementzXMLGenerator.startElement   s    **,,,C$J"[[]] 	= 	=MT5KKKDDD)E*:*:*:;<<<<% 	*.D'''KKr   c                     | j         r|                     d           d| _         d S |                     d|z             d S Nz/>Fz</%s>rf   r+   r,   s     r   rg   zXMLGenerator.endElement   sI    & 	(KK*/D'''KK$'''''r   c           	         |                                   |                     d|                     |          z              | j        D ]<\  }}|r|                     d|d|d           $|                     d|z             =g | _        |                                D ]@\  }}|                     d|                     |          dt          |                     A| j        r	d| _        d S |                     d	           d S )
Nr   z xmlns:z="r"   z xmlns="%s"rx   ry   Tr   )rh   rW   rd   r\   r   r$   r^   r_   )r+   r,   qnamerz   rc   rr   r   s          r   startElementNSzXMLGenerator.startElementNS   s"   **,,,C$++d+++,,,3 	1 	1KFC 1<====MC/0000#% "[[]] 	J 	JMT5KKKDKK$5$5$5$5y7G7G7GHIIII% 	*.D'''KKr   c                     | j         r|                     d           d| _         d S |                     d|                     |          z             d S r}   )r_   rW   rd   r+   r,   r   s      r   endElementNSzXMLGenerator.endElementNS   sV    & 	5KK*/D'''KK$++d"3"3344444r   c                     |rb|                                   t          |t                    st          || j                  }|                     t          |                     d S d S r)   )rh   r?   strr]   rW   r   r+   contents     r   
characterszXMLGenerator.characters   sg     	)..000gs++ 7gt~66KKw(((((		) 	)r   c                     |rU|                                   t          |t                    st          || j                  }|                     |           d S d S r)   )rh   r?   r   r]   rW   r   s     r   ignorableWhitespacez XMLGenerator.ignorableWhitespace   sa     	!..000gs++ 7gt~66KK     		! 	!r   c                 f    |                                   |                     d|d|d           d S )Nz<?rx   z?>)rh   rW   r+   targetr   s      r   processingInstructionz"XMLGenerator.processingInstruction   s;    **,,,666444011111r   )NrR   F)F)r/   r0   r1   rV   rd   rh   rk   rm   rs   rv   r{   rg   r   r   r   r   r   r5   r   r   rQ   rQ   p   s        
, 
, 
, 
,  "0 0 0 0( ( (  7 7 7
" " "  ( ( (  $5 5 5) ) )! ! !2 2 2 2 2r   rQ   c                       e 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d Zd Zd Zd Zd ZdS ) XMLFilterBaseaY  This class is designed to sit between an XMLReader and the
    client application's event handlers.  By default, it does nothing
    but pass requests up to the reader and events on to the handlers
    unmodified, but subclasses can override specific methods to modify
    the event stream or the configuration requests as they pass
    through.Nc                 R    t           j                            |            || _        d S r)   )r   	XMLReaderrV   _parentr+   parents     r   rV   zXMLFilterBase.__init__   s$    $$T***r   c                 :    | j                             |           d S r)   )_err_handlererrorr+   	exceptions     r   r   zXMLFilterBase.error   s    	*****r   c                 :    | j                             |           d S r)   )r   
fatalErrorr   s     r   r   zXMLFilterBase.fatalError   s    $$Y/////r   c                 :    | j                             |           d S r)   )r   warningr   s     r   r   zXMLFilterBase.warning   s    !!),,,,,r   c                 :    | j                             |           d S r)   )_cont_handlersetDocumentLocator)r+   locators     r   r   z XMLFilterBase.setDocumentLocator   s    --g66666r   c                 8    | j                                          d S r)   )r   rk   rj   s    r   rk   zXMLFilterBase.startDocument   s    ((*****r   c                 8    | j                                          d S r)   )r   rm   rj   s    r   rm   zXMLFilterBase.endDocument  s    &&(((((r   c                 <    | j                             ||           d S r)   )r   rs   rq   s      r   rs   z XMLFilterBase.startPrefixMapping  s!    --fc:::::r   c                 :    | j                             |           d S r)   )r   rv   ru   s     r   rv   zXMLFilterBase.endPrefixMapping  s    ++F33333r   c                 <    | j                             ||           d S r)   )r   r{   )r+   r,   rz   s      r   r{   zXMLFilterBase.startElement  !    ''e44444r   c                 :    | j                             |           d S r)   )r   rg   r~   s     r   rg   zXMLFilterBase.endElement  s    %%d+++++r   c                 >    | j                             |||           d S r)   )r   r   )r+   r,   r   rz   s       r   r   zXMLFilterBase.startElementNS  s#    ))$u=====r   c                 <    | j                             ||           d S r)   )r   r   r   s      r   r   zXMLFilterBase.endElementNS  r   r   c                 :    | j                             |           d S r)   )r   r   r   s     r   r   zXMLFilterBase.characters  s    %%g.....r   c                 :    | j                             |           d S r)   )r   r   )r+   charss     r   r   z!XMLFilterBase.ignorableWhitespace  s    ..u55555r   c                 <    | j                             ||           d S r)   )r   r   r   s      r   r   z#XMLFilterBase.processingInstruction  s!    00>>>>>r   c                 :    | j                             |           d S r)   )r   skippedEntityr~   s     r   r   zXMLFilterBase.skippedEntity   s    ((.....r   c                 >    | j                             |||           d S r)   )_dtd_handlernotationDecl)r+   r,   publicIdsystemIds       r   r   zXMLFilterBase.notationDecl%  s#    &&tXx@@@@@r   c                 @    | j                             ||||           d S r)   )r   unparsedEntityDecl)r+   r,   r   r   ndatas        r   r   z XMLFilterBase.unparsedEntityDecl(  s%    ,,T8XuMMMMMr   c                 8    | j                             ||          S r)   )_ent_handlerresolveEntity)r+   r   r   s      r   r   zXMLFilterBase.resolveEntity-  s     ..xBBBr   c                 
   | j                             |            | j                             |            | j                             |            | j                             |            | j                             |           d S r)   )r   setContentHandlersetErrorHandlersetEntityResolversetDTDHandlerparse)r+   sources     r   r   zXMLFilterBase.parse2  sv    &&t,,,$$T***&&t,,,""4(((6"""""r   c                 :    | j                             |           d S r)   )r   	setLocale)r+   locales     r   r   zXMLFilterBase.setLocale9  s    v&&&&&r   c                 6    | j                             |          S r)   )r   
getFeaturer~   s     r   r   zXMLFilterBase.getFeature<  s    |&&t,,,r   c                 <    | j                             ||           d S r)   )r   
setFeature)r+   r,   states      r   r   zXMLFilterBase.setFeature?  s     e,,,,,r   c                 6    | j                             |          S r)   )r   getPropertyr~   s     r   r   zXMLFilterBase.getPropertyB  s    |''---r   c                 <    | j                             ||           d S r)   )r   setProperty)r+   r,   r   s      r   r   zXMLFilterBase.setPropertyE  s       u-----r   c                     | j         S r)   r   rj   s    r   	getParentzXMLFilterBase.getParentJ  s
    |r   c                     || _         d S r)   r   r   s     r   	setParentzXMLFilterBase.setParentM  s    r   r)   ) r/   r0   r1   __doc__rV   r   r   r   r   rk   rm   rs   rv   r{   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r   r   r   r      s           + + +0 0 0- - -
7 7 7+ + +) ) ); ; ;4 4 45 5 5, , ,> > >5 5 5/ / /6 6 6? ? ?/ / /
A A AN N N
C C C
# # #' ' '- - -- - -. . .. . .
      r   r    c                    t          | t          j                  rt          j        |           } t          | t                    rt          j        |           } nt          | d          r| }t          j                    } t          |                    d          t                    r| 	                    |           n| 
                    |           t          |d          r4t          |j        t                    r|                     |j                   |                                 C|                                 .|                                 }t          j                            t          j                            |                    }t          j                            ||          }t          j                            |          r&|                     |           t+          |d          }nd|                     t,          j                            ||                     t,          j                            |                                           }| 
                    |           | S )zThis function takes an InputSource and an optional base URL and
    returns a fully resolved InputSource object ready for reading.readr   r,   Nrb)r?   osPathLikefspathr   r   InputSourcehasattrr   setCharacterStreamsetByteStreamr,   setSystemIdgetCharacterStreamgetByteStreamgetSystemIdpathdirnamenormpathjoinisfileopenurllibr   urljoinrequesturlopen)r   basefsysidbaseheadsysidfilenames         r   prepare_input_sourcer   R  s    &"+&& #6""&# 
'&v..		 	  '&((affQii%% 	$%%a((((  ###1f 	'*QVS"9"9 	'qv&&&  ""*v/C/C/E/E/M""$$7??27#3#3D#9#9::Xu557>>-(( 	=}---]D))AAv|33D%@@AAA&&v'9'9';';<<AQMr   )r   )r   r   urllib.parser   urllib.requestr@   rB   r   r   r   r   r   r   r$   rO   rU   rQ   r   r   r   r5   r   r   <module>r      s_   
 ( ' ' ' ' ' ' ' ' ' ' ' 				                       & & & &      .'0 '0 '0Rp2 p2 p2 p2 p27) p2 p2 p2fk k k k kI' k k k^     r   