ó
    F\hß/  ã                   óÖ   • S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  S r
0 4S jr0 4S jr0 4S	 jrS
 r " S S\R                  5      r " S S\	R"                  5      rSS jrg)znA library of useful helper classes to the SAX classes, for the
convenience of application and driver writers.
é    Né   )Úhandler)Ú	xmlreaderc                 óZ   • UR                  5        H  u  p#U R                  X#5      n M     U $ )z2Replace substrings of a string using a dictionary.)ÚitemsÚreplace)ÚsÚdÚkeyÚvalues       Ú'/usr/lib/python3.13/xml/sax/saxutils.pyÚ__dict_replacer      s'   € à—g‘g–i‰
ˆØ�I‰I�cÓ!Šñ  à€Hó    c                 ó–   • U R                  SS5      n U R                  SS5      n U R                  SS5      n U(       a  [        X5      n U $ )zìEscape &, <, 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      sF   € ð �<‰<˜˜WÓ%€DØ�<‰<˜˜VÓ$€DØ�<‰<˜˜VÓ$€DÞÜ˜dÓ-ˆØ€Kr   c                 ó’   • U R                  SS5      n U R                  SS5      n U(       a  [        X5      n U R                  SS5      $ )zú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   "   sB   € ð �<‰<˜ Ó$€DØ�<‰<˜ Ó$€DÞÜ˜dÓ-ˆà�<‰<˜ Ó%Ð%r   c                 ó�   • 0 UESSSS.En[        X5      n SU ;   a%  SU ;   a  SU R                  SS5      -  n U $ S	U -  n  U $ SU -  n U $ )
aw  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   sn   € ð G�(ÐF '°¸vÒF€HÜ�$Ó!€DØ
ˆdƒ{Ø�$‹;Ø˜DŸL™L¨¨hÓ7Ñ7ˆDð
 €Kð ˜D‘=‰Dð €Kð ˜‰}ˆØ€Kr   c                 ó6  ^ • T c  SS K nUR                  $ [        T [        R                  5      (       a  T $ [        T [
        R                  [
        R                  45      (       a  T $ [        T [        R                  5      (       a   " U 4S jS5      nU" 5       nS Ul	        OQ[        R                  " 5       nS Ul        T R                  Ul         T R                  Ul        T R                  Ul        [        R                   " XASSSS	9$ ! [         a     N#f = f)
Nr   c                   ó<   >• \ rS rSr Y R                  rU 4S jrSrg)Ú _gettextwriter.<locals>._wrapperéX   c                 ó   >• [        TU5      $ ©N)Úgetattr)ÚselfÚnameÚouts     €r   Ú__getattr__Ú,_gettextwriter.<locals>._wrapper.__getattr__Z   s   ø€ Ü˜s DÓ)Ð)r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__class__r/   Ú__static_attributes__)r.   s   €r   Ú_wrapperr'   X   s   ø† ÙŸ™ˆI÷*ð *r   r8   c                  ó   • g r*   r1   r1   r   r   Ú<lambda>Ú _gettextwriter.<locals>.<lambda>]   s   € ˜tr   c                  ó   • g)NTr1   r1   r   r   r:   r;   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.   r>   rB   r8   Úbuffers   `    r   Ú_gettextwriterrT   G   sî   ø€ Ø
�{ÛØ�z‰zÐä�#”r—}‘}×%Ñ%àˆ
ä�#œ×+Ñ+¬V×-FÑ-FÐG×HÑHàˆ
ô �#”r—|‘|×$Ñ$÷	*ô 	*ñ “ˆÙ#ˆ�ô ×"Ò"Ó$ˆÙ&ˆŒØ—y‘yˆŒð	ð "Ÿl™lˆFŒOØŸ(™(ˆFŒKô ×Ò˜FØ#6Ø$(Ø*.ñ0ð 0øô ó 	Ùð	ús   Ã"D Ä
DÄDc                   óp   • \ rS rSrSS jrS rSS jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rSrg)ÚXMLGeneratorép   Nc                 ó  • [         R                  R                  U 5        [        X5      nUR                  U l        UR                  U l        0 /U l        U R                  S   U l	        / U l
        X l        X0l        SU l        g )NéÿÿÿÿF)r   ÚContentHandlerÚ__init__rT   rN   Ú_writeÚflushÚ_flushÚ_ns_contextsÚ_current_contextÚ_undeclared_ns_mapsÚ	_encodingÚ_short_empty_elementsÚ_pending_start_element)r,   r.   r>   Úshort_empty_elementss       r   r[   ÚXMLGenerator.__init__r   sn   € Ü×Ñ×'Ñ'¨Ô-Ü˜SÓ+ˆØ—i‘iˆŒØ—i‘iˆŒØ˜DˆÔØ $× 1Ñ 1°"Ñ 5ˆÔØ#%ˆÔ Ø!ŒØ%9Ô"Ø&+ˆÕ#r   c                 óŠ   • US   (       a5  SUS   :X  a  SUS   -   $ U R                   US      nU(       a  US-   US   -   $ U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   Ú_qnameÚXMLGenerator._qname~   sY   € à��7ð
 6¸¸a¹Ó@Ø  Q¡Ñ'Ð'à×*Ñ*¨4°©7Ñ3ˆFÞà ‘| d¨1¡gÑ-Ð-à�A‰wˆr   c                 óX   • U R                   (       a  U R                  S5        SU l         g g )Nr   F©rd   r\   )r,   Ú
endElements     r   Ú_finish_pending_start_elementÚ*XMLGenerator._finish_pending_start_element�   s$   € Ø×&×&Ø�K‰K˜ÔØ*/ˆDÕ'ð 'r   c                 ó@   • U R                  SU R                  -  5        g )Nz$<?xml version="1.0" encoding="%s"?>
)r\   rb   ©r,   s    r   ÚstartDocumentÚXMLGenerator.startDocument–   s   € Ø�‰Ð;ØŸ™ñ'õ 	(r   c                 ó$   • U R                  5         g r*   )r^   rr   s    r   ÚendDocumentÚXMLGenerator.endDocumentš   s   € Ø�‰�r   c                 ó¾   • U R                   R                  U R                  R                  5       5        XR                  U'   U R                  R                  X45        g r*   )r_   Úappendr`   Úcopyra   ©r,   ri   Úuris      r   ÚstartPrefixMappingÚXMLGenerator.startPrefixMapping�   sI   € Ø×Ñ× Ñ  ×!6Ñ!6×!;Ñ!;Ó!=Ô>Ø%+×Ñ˜cÑ"Ø× Ñ ×'Ñ'¨¨Õ6r   c                 óF   • U R                   S   U l        U R                   S	 g )NrY   )r_   r`   ©r,   ri   s     r   ÚendPrefixMappingÚXMLGenerator.endPrefixMapping¢   s#   € Ø $× 1Ñ 1°"Ñ 5ˆÔØ×Ñ˜bÑ!r   c           	      ó  • U R                  5         U R                  SU-   5        UR                  5        H'  u  pU R                  SU< S[        U5      < 35        M)     U R                  (       a  SU l        g U R                  S5        g )Nr   Ú Ú=Tr   )ro   r\   r   r$   rc   rd   )r,   r-   Úattrsr   s       r   ÚstartElementÚXMLGenerator.startElement¦   sc   € Ø×*Ñ*Ô,Ø�‰�C˜$‘JÔØ"Ÿ[™[ž]‰MˆTØ�KŠK£D¬)°EÕ*:Ð;Ö<ñ +à×%×%Ø*.ˆDÕ'à�K‰K˜Õr   c                 ó€   • U R                   (       a  U R                  S5        SU l         g U R                  SU-  5        g ©Nz/>Fz</%s>rm   ©r,   r-   s     r   rn   ÚXMLGenerator.endElement°   s/   € Ø×&×&Ø�K‰K˜ÔØ*/ˆDÕ'à�K‰K˜ $™Õ'r   c           	      óø  • U R                  5         U R                  SU R                  U5      -   5        U R                   H<  u  pEU(       a  U R                  SU< SU< S35        M(  U R                  SU-  5        M>     / U l        UR	                  5        H6  u  pU R                  SU R                  U5      < S[        U5      < 35        M8     U R                  (       a  SU l        g U R                  S	5        g )
Nr   z xmlns:z="r"   z xmlns="%s"r„   r…   Tr   )ro   r\   rj   ra   r   r$   rc   rd   )r,   r-   Úqnamer†   ri   r|   r   s          r   ÚstartElementNSÚXMLGenerator.startElementNS·   s·   € Ø×*Ñ*Ô,Ø�‰�C˜$Ÿ+™+ dÓ+Ñ+Ô,à×3Ô3‰KˆFÞØ—’³»Ð<Ö=à—‘˜M¨CÑ/Ö0ñ	 4ð
 $&ˆÔ à"Ÿ[™[ž]‰MˆTØ�KŠK D§K¡K°Ö$5´yÀÕ7GÐHÖIñ +à×%×%Ø*.ˆDÕ'à�K‰K˜Õr   c                 óž   • U R                   (       a  U R                  S5        SU l         g U R                  SU R                  U5      -  5        g rŠ   )rd   r\   rj   ©r,   r-   rŽ   s      r   ÚendElementNSÚXMLGenerator.endElementNSÉ   s9   € Ø×&×&Ø�K‰K˜ÔØ*/ˆDÕ'à�K‰K˜ $§+¡+¨dÓ"3Ñ3Õ4r   c                 ó¼   • U(       aU  U R                  5         [        U[        5      (       d  [        XR                  5      nU R	                  [        U5      5        g g r*   )ro   rD   Ústrrb   r\   r   ©r,   Úcontents     r   Ú
charactersÚXMLGenerator.charactersÐ   sA   € ÞØ×.Ñ.Ô0Ü˜g¤s×+Ñ+Ü˜g§~¡~Ó6�Ø�K‰Kœ˜w›Õ(ð	 r   c                 óª   • U(       aL  U R                  5         [        U[        5      (       d  [        XR                  5      nU R	                  U5        g g r*   )ro   rD   r–   rb   r\   r—   s     r   ÚignorableWhitespaceÚ XMLGenerator.ignorableWhitespace×   s=   € ÞØ×.Ñ.Ô0Ü˜g¤s×+Ñ+Ü˜g§~¡~Ó6�Ø�K‰K˜Õ ð	 r   c                 óX   • U R                  5         U R                  SU< SU< S35        g )Nz<?r„   z?>)ro   r\   ©r,   Útargetr   s      r   ÚprocessingInstructionÚ"XMLGenerator.processingInstructionÞ   s   € Ø×*Ñ*Ô,Ø�Š£6«4Ð0Õ1r   )r`   rb   r^   r_   rd   rc   ra   r\   )Nz
iso-8859-1F)F)r2   r3   r4   r5   r[   rj   ro   rs   rv   r}   r�   r‡   rn   r�   r“   r™   rœ   r¡   r7   r1   r   r   rV   rV   p   sH   † ô
,òô"0ò(òò7ò
"òò(òò$5ò)ò!õ2r   rV   c                   óÄ   • \ rS rSrSrS!S jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!g)"ÚXMLFilterBaseéã   aE  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                 óN   • [         R                  R                  U 5        Xl        g r*   )r   Ú	XMLReaderr[   Ú_parent©r,   Úparents     r   r[   ÚXMLFilterBase.__init__ë   s   € Ü×Ñ×$Ñ$ TÔ*Ø�r   c                 ó:   • U R                   R                  U5        g r*   )Ú_err_handlerÚerror©r,   Ú	exceptions     r   r®   ÚXMLFilterBase.errorñ   s   € Ø×Ñ×Ñ 	Õ*r   c                 ó:   • U R                   R                  U5        g r*   )r­   Ú
fatalErrorr¯   s     r   r³   ÚXMLFilterBase.fatalErrorô   s   € Ø×Ñ×$Ñ$ YÕ/r   c                 ó:   • U R                   R                  U5        g r*   )r­   Úwarningr¯   s     r   r¶   ÚXMLFilterBase.warning÷   s   € Ø×Ñ×!Ñ! )Õ,r   c                 ó:   • U R                   R                  U5        g r*   )Ú_cont_handlerÚsetDocumentLocator)r,   Úlocators     r   rº   Ú XMLFilterBase.setDocumentLocatorü   s   € Ø×Ñ×-Ñ-¨gÕ6r   c                 ó8   • U R                   R                  5         g r*   )r¹   rs   rr   s    r   rs   ÚXMLFilterBase.startDocumentÿ   s   € Ø×Ñ×(Ñ(Õ*r   c                 ó8   • U R                   R                  5         g r*   )r¹   rv   rr   s    r   rv   ÚXMLFilterBase.endDocument  s   € Ø×Ñ×&Ñ&Õ(r   c                 ó:   • U R                   R                  X5        g r*   )r¹   r}   r{   s      r   r}   Ú XMLFilterBase.startPrefixMapping  s   € Ø×Ñ×-Ñ-¨fÕ:r   c                 ó:   • U R                   R                  U5        g r*   )r¹   r�   r€   s     r   r�   ÚXMLFilterBase.endPrefixMapping  s   € Ø×Ñ×+Ñ+¨FÕ3r   c                 ó:   • U R                   R                  X5        g r*   )r¹   r‡   )r,   r-   r†   s      r   r‡   ÚXMLFilterBase.startElement  ó   € Ø×Ñ×'Ñ'¨Õ4r   c                 ó:   • U R                   R                  U5        g r*   )r¹   rn   r‹   s     r   rn   ÚXMLFilterBase.endElement  s   € Ø×Ñ×%Ñ% dÕ+r   c                 ó<   • U R                   R                  XU5        g r*   )r¹   r�   )r,   r-   rŽ   r†   s       r   r�   ÚXMLFilterBase.startElementNS  s   € Ø×Ñ×)Ñ)¨$°uÕ=r   c                 ó:   • U R                   R                  X5        g r*   )r¹   r“   r’   s      r   r“   ÚXMLFilterBase.endElementNS  rÇ   r   c                 ó:   • U R                   R                  U5        g r*   )r¹   r™   r—   s     r   r™   ÚXMLFilterBase.characters  s   € Ø×Ñ×%Ñ% gÕ.r   c                 ó:   • U R                   R                  U5        g r*   )r¹   rœ   )r,   Úcharss     r   rœ   Ú!XMLFilterBase.ignorableWhitespace  s   € Ø×Ñ×.Ñ.¨uÕ5r   c                 ó:   • U R                   R                  X5        g r*   )r¹   r¡   rŸ   s      r   r¡   Ú#XMLFilterBase.processingInstruction  s   € Ø×Ñ×0Ñ0°Õ>r   c                 ó:   • U R                   R                  U5        g r*   )r¹   ÚskippedEntityr‹   s     r   rÖ   ÚXMLFilterBase.skippedEntity   s   € Ø×Ñ×(Ñ(¨Õ.r   c                 ó<   • U R                   R                  XU5        g r*   )Ú_dtd_handlerÚnotationDecl)r,   r-   ÚpublicIdÚsystemIds       r   rÚ   ÚXMLFilterBase.notationDecl%  s   € Ø×Ñ×&Ñ& t°xÕ@r   c                 ó<   • U R                   R                  XX45        g r*   )rÙ   ÚunparsedEntityDecl)r,   r-   rÛ   rÜ   Úndatas        r   rß   Ú XMLFilterBase.unparsedEntityDecl(  s   € Ø×Ñ×,Ñ,¨T¸XÕMr   c                 ó8   • U R                   R                  X5      $ r*   )Ú_ent_handlerÚresolveEntity)r,   rÛ   rÜ   s      r   rä   ÚXMLFilterBase.resolveEntity-  s   € Ø× Ñ ×.Ñ.¨xÓBÐBr   c                 ó  • U R                   R                  U 5        U R                   R                  U 5        U R                   R                  U 5        U R                   R	                  U 5        U R                   R                  U5        g r*   )r¨   ÚsetContentHandlerÚsetErrorHandlerÚsetEntityResolverÚsetDTDHandlerÚparse)r,   Úsources     r   rë   ÚXMLFilterBase.parse2  s\   € Ø�‰×&Ñ& tÔ,Ø�‰×$Ñ$ TÔ*Ø�‰×&Ñ& tÔ,Ø�‰×"Ñ" 4Ô(Ø�‰×Ñ˜6Õ"r   c                 ó:   • U R                   R                  U5        g r*   )r¨   Ú	setLocale)r,   Úlocales     r   rï   ÚXMLFilterBase.setLocale9  s   € Ø�‰×Ñ˜vÕ&r   c                 ó8   • U R                   R                  U5      $ r*   )r¨   Ú
getFeaturer‹   s     r   ró   ÚXMLFilterBase.getFeature<  s   € Ø�|‰|×&Ñ& tÓ,Ð,r   c                 ó:   • U R                   R                  X5        g r*   )r¨   Ú
setFeature)r,   r-   Ústates      r   rö   ÚXMLFilterBase.setFeature?  s   € Ø�‰×Ñ Õ,r   c                 ó8   • U R                   R                  U5      $ r*   )r¨   ÚgetPropertyr‹   s     r   rú   ÚXMLFilterBase.getPropertyB  s   € Ø�|‰|×'Ñ'¨Ó-Ð-r   c                 ó:   • U R                   R                  X5        g r*   )r¨   ÚsetProperty)r,   r-   r   s      r   rý   ÚXMLFilterBase.setPropertyE  s   € Ø�‰× Ñ  Õ-r   c                 ó   • U R                   $ r*   ©r¨   rr   s    r   Ú	getParentÚXMLFilterBase.getParentJ  s   € Ø�|‰|Ðr   c                 ó   • Xl         g r*   r   r©   s     r   Ú	setParentÚXMLFilterBase.setParentM  s   € Ø�r   r   r*   )"r2   r3   r4   r5   Ú__doc__r[   r®   r³   r¶   rº   rs   rv   r}   r�   r‡   rn   r�   r“   r™   rœ   r¡   rÖ   rÚ   rß   rä   rë   rï   ró   rö   rú   rý   r  r  r7   r1   r   r   r¤   r¤   ã   s–   † ñôò+ò0ò-ò
7ò+ò)ò;ò4ò5ò,ò>ò5ò/ò6ò?ò/ò
AòNò
Cò
#ò'ò-ò-ò.ò.ò
õr   r¤   c                 ó¶  • [        U [        R                  5      (       a  [        R                  " U 5      n [        U [        5      (       a  [
        R                  " U 5      n Oº[        U S5      (       a©  U n[
        R                  " 5       n [        UR                  S5      [        5      (       a  U R                  U5        OU R                  U5        [        US5      (       a:  [        UR                  [        5      (       a  U R                  UR                  5        U R                  5       Gc+  U R                  5       Gc  U R                  5       n[        R                   R#                  [        R                   R%                  U5      5      n[        R                   R'                  XC5      n[        R                   R)                  U5      (       a  U R                  U5        [+        US5      nO[U R                  [,        R.                  R1                  X5      5        [,        R2                  R5                  U R                  5       5      nU R                  U5        U $ )z~This function takes an InputSource and an optional base URL and
returns a fully resolved InputSource object ready for reading.Úreadr   r-   Úrb)rD   Ú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Ó.‰Ü	�˜×	 Ñ	 ØˆÜ×&Ò&Ó(ˆÜ�a—f‘f˜Q“i¤×%Ñ%Ø×%Ñ% aÕ(à× Ñ  Ô#Ü�1�f×Ñ¤*¨Q¯V©V´S×"9Ñ"9Ø×Ñ˜qŸv™vÔ&à× Ñ Ó"Ò*¨v×/CÑ/CÓ/EÒ/MØ×"Ñ"Ó$ˆÜ—7‘7—?‘?¤2§7¡7×#3Ñ#3°DÓ#9Ó:ˆÜŸ™Ÿ™ XÓ5ˆÜ�7‰7�>‰>˜-×(Ñ(Ø×Ñ˜}Ô-Ü�] DÓ)‰Aà×ÑœvŸ|™|×3Ñ3°DÓ@ÔAÜ—‘×&Ñ& v×'9Ñ'9Ó';Ó<ˆAà×Ñ˜QÔà€Mr   )Ú )r  r
  Úurllib.parser  Úurllib.requestrE   rG   r%  r   r   r   r   r   r$   rT   rZ   rV   r§   r¤   r$  r1   r   r   Ú<module>r(     sv   ðñ÷
 (Ó 'Û 	Û Ý Ý òð ô ð  ô &ð  ô ò.'0ôRp2�7×)Ñ)ô p2ôfk�I×'Ñ'ô kõ^r   