Ë
    òT•jc0  ã                   óÄ   — d Z ddlZddlZddlmZ g d¢Z G d„ d«      Z G d„ d«      Zd	„ Z	 G d
„ de
«      Z G d„ de
«      Z G d„ d«      Z[ G d„ d«      Z G d„ d«      Zy)z4Implementation of the DOM Level 3 'LS-Load' feature.é    N)Ú
NodeFilter)Ú
DOMBuilderÚDOMEntityResolverÚDOMInputSourcec                   ó\   — e 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)ÚOptionsz±Features object that has variables set for each DOMBuilder feature.

    The DOMBuilder class uses an instance of this class to pass settings to
    the ExpatBuilder class.
    é   TFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
namespacesÚnamespace_declarationsÚ
validationÚexternal_parameter_entitiesÚexternal_general_entitiesÚexternal_dtd_subsetÚvalidate_if_schemaÚvalidateÚdatatype_normalizationÚcreate_entity_ref_nodesÚentitiesÚwhitespace_in_element_contentÚcdata_sectionsÚcommentsÚcharset_overrides_xml_encodingÚinfosetÚsupported_mediatypes_onlyÚerrorHandlerÚfilter© ó    ú)/usr/lib/python3.12/xml/dom/xmlbuilder.pyr   r      sr   „ ñð €JØ!ÐØ€JØ"&ÐØ $ÐØÐØÐØ€HØ"ÐØ"ÐØ€HØ$(Ð!Ø€NØ€HØ%)Ð"Ø€GØ %Ðà€LØ�Fr"   r   c            
       óB  — e Zd ZdZdZdZdZdZdZdZ	eeee	fZ
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zi ddg“ddg“ddg“ddg“ddg“ddg“ddg“ddg“ddg“ddg“dddg“ddg“ddg“ddg“ddg“ddg“d d g“d!gd"gd#gg g d$¢d%gd&gd'gd(œ¥Zd)„ Zd*„ Zd+„ Zd,„ Zd-„ Zy).r   Nr	   é   é   é   c                 ó"   — t        «       | _        y ©N)r   Ú_options©Úselfs    r#   Ú__init__zDOMBuilder.__init__9   s   € Ü›	ˆ�r"   c                 ó   — | j                   S r)   ©ÚentityResolverr+   s    r#   Ú_get_entityResolverzDOMBuilder._get_entityResolver<   s   € Ø×"Ñ"Ð"r"   c                 ó   — || _         y r)   r/   )r,   r0   s     r#   Ú_set_entityResolverzDOMBuilder._set_entityResolver>   s
   € Ø,ˆÕr"   c                 ó   — | j                   S r)   ©r   r+   s    r#   Ú_get_errorHandlerzDOMBuilder._get_errorHandlerA   s   € Ø× Ñ Ð r"   c                 ó   — || _         y r)   r5   )r,   r   s     r#   Ú_set_errorHandlerzDOMBuilder._set_errorHandlerC   s
   € Ø(ˆÕr"   c                 ó   — | j                   S r)   ©r    r+   s    r#   Ú_get_filterzDOMBuilder._get_filterF   s   € Ø�{‰{Ðr"   c                 ó   — || _         y r)   r:   )r,   r    s     r#   Ú_set_filterzDOMBuilder._set_filterH   s	   € Øˆ�r"   c                 óh  — | j                  |«      rG|xr dxs d}	 | j                  t        |«      |f   }|D ]  \  }}t        | j                  ||«       Œ y t        j                  j                  dt        |«      z   «      ‚# t
        $ r$ t        j                  j                  d|›�«      d ‚w xY w)Nr	   r   zunsupported feature: zunknown feature: )ÚsupportsFeatureÚ	_settingsÚ_name_xformÚsetattrr*   ÚKeyErrorÚxmlÚdomÚNotSupportedErrÚNotFoundErrÚrepr)r,   ÚnameÚstateÚsettingsÚvalues        r#   Ú
setFeaturezDOMBuilder.setFeatureK   sµ   € Ø×Ñ Ô%Ø’K˜aÒ$ 1ˆEð8ØŸ>™>¬;°tÓ+<¸eÐ*DÑE�ð
 $,ò 8‘K�D˜%Ü˜DŸM™M¨4°Õ7ñ8ô —'‘'×%Ñ%Ð&9¼DÀ»JÑ&FÓGÐGøô ò CÜ—g‘g×-Ò-Ù15Ð7ó9Ø>BðCðCús   �B Â-B1c                 ó@   — t        | j                  t        |«      «      S r)   )Úhasattrr*   rA   )r,   rI   s     r#   r?   zDOMBuilder.supportsFeatureY   s   € Ü�t—}‘}¤k°$Ó&7Ó8Ð8r"   c                 óH   — t        |«      |xr dxs df}|| j                  v S )Nr	   r   )rA   r@   )r,   rI   rJ   Úkeys       r#   ÚcanSetFeaturezDOMBuilder.canSetFeature\   s)   € Ü˜4Ó  %¢+¨AÒ"2°Ð3ˆØ�d—n‘nÐ$Ð$r"   ©r   r   )r   r	   )r   r   )r   r   )r   r	   )r   r   )r   r	   ©r   r   ©r   r   )r   r	   ©r   r   )r   r	   )r   r   ©r   r	   ©r   r   )r   r	   )r   r   ©r   r	   ©r   r   ©r   r	   )	rS   rT   rU   rV   rX   )r   r	   rW   rY   r[   ©r   r   ©r   r   ©r   r	   )rY   rZ   r[   )r   r   )r   r	   r\   r]   r^   c                 óÖ  — t        |«      }	 t        | j                  |«      S # t        $ r¼ |dk(  r‹| j                  }|j                  xro |j
                  xra |j                  xrS |j                  xrE |j                  xs6 |j                  xs( |j                  xs |j                  xs |j                   cY S t        j                  j                  dt!        |«      z  «      ‚w xY w)Nr   zfeature %s not known)rA   Úgetattrr*   ÚAttributeErrorr   r   r   r   r   r   r   r   r   rD   rE   rG   rH   )r,   rI   ÚxnameÚoptionss       r#   Ú
getFeaturezDOMBuilder.getFeature¢   sñ   € Ü˜DÓ!ˆð	KÜ˜4Ÿ=™=¨%Ó0Ð0øÜò 	KØ�yÒ ØŸ-™-�Ø×6Ñ6ò <Ø#×AÑAò<à#×,Ñ,ò<ð $×BÑBò<ð ")×!?Ñ!?ò ";Ø$+×$>Ñ$>ò";à$+×$CÑ$Cò";ð %,×$4Ñ$4ò";ð %,×$:Ñ$:ð	<ò	=ô —'‘'×%Ñ%Ð&<¼tÀD»zÑ&IÓJÐJð	Kús   �# £BC(Â<,C(c                 óª   — | j                   r| j                   j                  d |«      }nt        «       j                  d |«      }| j                  |«      S r)   )r0   ÚresolveEntityr   Úparse)r,   ÚuriÚinputs      r#   ÚparseURIzDOMBuilder.parseURI´   sG   € Ø×ÒØ×'Ñ'×5Ñ5°d¸CÓ@‰Eä%Ó'×5Ñ5°d¸CÓ@ˆEØ�z‰z˜%Ó Ð r"   c                 ó.  — t        j                   | j                  «      }| j                  |_        | j                  |_        |j                  }|€5|j
                  r)dd l}|j                  j                  |j
                  «      }| j                  ||«      S ©Nr   )
Úcopyr*   r    r   Ú
byteStreamÚsystemIdÚurllib.requestÚrequestÚurlopenÚ_parse_bytestream)r,   ri   rc   ÚfpÚurllibs        r#   rg   zDOMBuilder.parse»   ss   € Ü—)‘)˜DŸM™MÓ*ˆØŸ™ˆŒØ#×0Ñ0ˆÔØ×ÑˆØˆ:˜'×*Ò*Û!Ø—‘×'Ñ'¨¯©Ó7ˆBØ×%Ñ% b¨'Ó2Ð2r"   c                 óJ   — || j                   vrt        d«      ‚t        d«      ‚)Nznot a legal actionzHaven't written this yet...)Ú_legal_actionsÚ
ValueErrorÚNotImplementedError)r,   ri   ÚcnodeÚactions       r#   ÚparseWithContextzDOMBuilder.parseWithContextÅ   s(   € Ø˜×,Ñ,Ñ,ÜÐ1Ó2Ð2Ü!Ð"?Ó@Ð@r"   c                 óv   — dd l }|j                  j                  j                  |«      }|j	                  |«      S rl   )Úxml.dom.expatbuilderrE   ÚexpatbuilderÚmakeBuilderÚ	parseFile)r,   Ústreamrc   rD   Úbuilders        r#   rs   zDOMBuilder._parse_bytestreamÊ   s0   € Û#Ø—'‘'×&Ñ&×2Ñ2°7Ó;ˆØ× Ñ  Ó(Ð(r"   )r
   r   r   r0   r   r    ÚACTION_REPLACEÚACTION_APPEND_AS_CHILDRENÚACTION_INSERT_AFTERÚACTION_INSERT_BEFORErw   r-   r1   r3   r6   r8   r;   r=   rM   r?   rR   r@   rd   rj   rg   r|   rs   r!   r"   r#   r   r   ,   s  „ Ø€NØ€LØ€Fà€NØ !ÐØÐØÐà$Ð&?Ø)Ð+?ðA€Nò"ò#ò-ò!ò)òòòHò9ò%ð;Ø%Ø)ð(+ð;ð 	&Ø)ð(+ð;ð
 	Øðð;ð 	)Ø,ð+.ð;ð 	)Ø,ð+.ð;ð 	+Ø.ð-0ð;ð 	+Ø.ð-0ð;ð 	"Ø%ð$'ð;ð" 	'Ø*ð),ð#;ð& 	'Ø*ð),ð';ð* 	Ø*Øðð+;ð0 	Øðð1;ð4 	-Ø0ð/2ð5;ð8 	-Ø0ð/2ð9;ð< 	Ø!ð #ð=;ð@ 	Ø!ð #ðA;ðD 	ØððE;ðJ ðð 2ð03ð 2ð03àò	3ð -ð+.ð ðð ðòs;€IòzKò$!ò3òAó
)r"   r   c                 óB   — | j                  «       j                  dd«      S )Nú-Ú_)ÚlowerÚreplace)rI   s    r#   rA   rA   Ð   s   € Ø�:‰:‹<×Ñ  SÓ)Ð)r"   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)r   )Ú_openerc                 ó¨  — |€J ‚t        «       }||_        ||_        | j                  «       j	                  |«      |_        | j                  |«      |_        dd l}dd l	}|j                  j                  |«      }|\  }}}	}
}}|	rM|	j                  d«      s<|j                  |	«      dz   }	|||	|
||f}|j                  j                  |«      |_        |S )Nr   ú/)r   ÚpublicIdro   Ú_get_openerÚopenrn   Ú_guess_media_encodingÚencodingÚ	posixpathÚurllib.parserg   ÚurlparseÚendswithÚdirnameÚ
urlunparseÚbaseURI)r,   r‘   ro   Úsourcer–   ru   ÚpartsÚschemeÚnetlocÚpathÚparamsÚqueryÚfragments                r#   rf   zDOMEntityResolver.resolveEntity×   sÏ   € ØÐ#Ð#Ð#ÜÓ!ˆØ"ˆŒØ"ˆŒØ ×,Ñ,Ó.×3Ñ3°HÓ=ˆÔð ×4Ñ4°VÓ<ˆŒ÷ 	'Ø—‘×%Ñ% hÓ/ˆØ8=Ñ5ˆ�˜˜f e¨Xá˜Ÿ™ cÔ*Ø×$Ñ$ TÓ*¨SÑ0ˆDØ˜F D¨&°%¸ÐAˆEØ#Ÿ\™\×4Ñ4°UÓ;ˆFŒNàˆr"   c                 ó|   — 	 | j                   S # t        $ r$ | j                  «       | _         | j                   cY S w xY wr)   )rŽ   ra   Ú_create_openerr+   s    r#   r’   zDOMEntityResolver._get_openerí   s:   € ð	 Ø—<‘<ÐøÜò 	 Ø×.Ñ.Ó0ˆDŒLØ—<‘<Òð	 ús   ‚ Ž*;º;c                 ó>   — dd l }|j                  j                  «       S rl   )rp   rq   Úbuild_opener)r,   ru   s     r#   r¦   z DOMEntityResolver._create_openerô   s   € ÛØ�~‰~×*Ñ*Ó,Ð,r"   c                 óØ   — |j                   j                  «       }d|v rL|j                  «       D ]8  }|j                  d«      sŒ|j	                  dd«      d   j                  «       c S  y y )NzContent-Typezcharset=ú=r	   )rn   ÚinfoÚgetplistÚ
startswithÚsplitr‹   )r,   r�   r«   Úparams       r#   r”   z'DOMEntityResolver._guess_media_encodingø   se   € Ø× Ñ ×%Ñ%Ó'ˆØ˜TÑ!ØŸ™›ò :�Ø×#Ñ# JÕ/Ø Ÿ;™; s¨AÓ.¨qÑ1×7Ñ7Ó9Ò9ñ:ð "r"   N)r
   r   r   Ú	__slots__rf   r’   r¦   r”   r!   r"   r#   r   r   Ô   s   „ Ø€Iòò, ò-ó:r"   r   c                   ój   — e 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)r   ©rn   ÚcharacterStreamÚ
stringDatar•   r‘   ro   rœ   c                 óf   — d | _         d | _        d | _        d | _        d | _        d | _        d | _        y r)   r²   r+   s    r#   r-   zDOMInputSource.__init__  s4   € ØˆŒØ#ˆÔØˆŒØˆŒØˆŒØˆŒØˆ�r"   c                 ó   — | j                   S r)   ©rn   r+   s    r#   Ú_get_byteStreamzDOMInputSource._get_byteStream  ó   € Ø�‰Ðr"   c                 ó   — || _         y r)   r·   )r,   rn   s     r#   Ú_set_byteStreamzDOMInputSource._set_byteStream  s	   € Ø$ˆ�r"   c                 ó   — | j                   S r)   ©r³   r+   s    r#   Ú_get_characterStreamz#DOMInputSource._get_characterStream  s   € Ø×#Ñ#Ð#r"   c                 ó   — || _         y r)   r½   )r,   r³   s     r#   Ú_set_characterStreamz#DOMInputSource._set_characterStream  s
   € Ø.ˆÕr"   c                 ó   — | j                   S r)   ©r´   r+   s    r#   Ú_get_stringDatazDOMInputSource._get_stringData  r¹   r"   c                 ó   — || _         y r)   rÂ   )r,   Údatas     r#   Ú_set_stringDatazDOMInputSource._set_stringData  s	   € Øˆ�r"   c                 ó   — | j                   S r)   ©r•   r+   s    r#   Ú_get_encodingzDOMInputSource._get_encoding  ó   € Ø�}‰}Ðr"   c                 ó   — || _         y r)   rÈ   )r,   r•   s     r#   Ú_set_encodingzDOMInputSource._set_encoding  ó	   € Ø ˆ�r"   c                 ó   — | j                   S r)   ©r‘   r+   s    r#   Ú_get_publicIdzDOMInputSource._get_publicId!  rÊ   r"   c                 ó   — || _         y r)   rÏ   )r,   r‘   s     r#   Ú_set_publicIdzDOMInputSource._set_publicId#  rÍ   r"   c                 ó   — | j                   S r)   ©ro   r+   s    r#   Ú_get_systemIdzDOMInputSource._get_systemId&  rÊ   r"   c                 ó   — || _         y r)   rÔ   )r,   ro   s     r#   Ú_set_systemIdzDOMInputSource._set_systemId(  rÍ   r"   c                 ó   — | j                   S r)   ©rœ   r+   s    r#   Ú_get_baseURIzDOMInputSource._get_baseURI+  s   € Ø�|‰|Ðr"   c                 ó   — || _         y r)   rÙ   ©r,   rh   s     r#   Ú_set_baseURIzDOMInputSource._set_baseURI-  s	   € Øˆ�r"   N)r
   r   r   r°   r-   r¸   r»   r¾   rÀ   rÃ   rÆ   rÉ   rÌ   rÐ   rÒ   rÕ   r×   rÚ   rÝ   r!   r"   r#   r   r      sU   „ ð@€Iòòò%ò$ò/òòòò!òò!òò!òór"   r   c                   óJ   — e Zd ZdZdZdZdZdZej                  Z
d„ Zd„ Zd„ Zy	)
ÚDOMBuilderFilterzSElement filter which can be used to tailor construction of
    a DOM instance.
    r	   r%   r&   r'   c                 ó   — | j                   S r)   )Ú
whatToShowr+   s    r#   Ú_get_whatToShowz DOMBuilderFilter._get_whatToShowB  r¹   r"   c                 ó   — | j                   S r)   ©ÚFILTER_ACCEPT©r,   Úelements     r#   Ú
acceptNodezDOMBuilderFilter.acceptNodeE  ó   € Ø×!Ñ!Ð!r"   c                 ó   — | j                   S r)   rä   ræ   s     r#   ÚstartContainerzDOMBuilderFilter.startContainerH  ré   r"   N)r
   r   r   r   rå   ÚFILTER_REJECTÚFILTER_SKIPÚFILTER_INTERRUPTr   ÚSHOW_ALLrá   râ   rè   rë   r!   r"   r#   rß   rß   1  s8   „ ñð €MØ€MØ€KØÐà×$Ñ$€Jòò"ó"r"   rß   c                   ó8   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
Ú
DocumentLSz=Mixin to create documents that conform to the load/save spec.Fc                  ó   — y)NFr!   r+   s    r#   Ú
_get_asynczDocumentLS._get_asyncS  s   € Ør"   c                 óF   — |rt         j                  j                  d«      ‚y )Nz.asynchronous document loading is not supported)rD   rE   rF   )r,   Úflags     r#   Ú
_set_asynczDocumentLS._set_asyncV  s&   € ÙÜ—'‘'×)Ñ)Ø@óBð Bð r"   c                 ó   — t        d«      ‚)Nz'haven't figured out what this means yet©ry   r+   s    r#   ÚabortzDocumentLS.abort[  s   € ô "Ø5ó7ð 	7r"   c                 ó   — t        d«      ‚©Nzhaven't written this yetrø   rÜ   s     r#   ÚloadzDocumentLS.loada  ó   € Ü!Ð"<Ó=Ð=r"   c                 ó   — t        d«      ‚rû   rø   )r,   r�   s     r#   ÚloadXMLzDocumentLS.loadXMLd  rý   r"   c                 ó¢   — |€| }|j	                  «       S |j                   | urt        j                  j                  «       ‚|j	                  «       S r)   )ÚownerDocumentrD   rE   ÚWrongDocumentErrÚtoxml)r,   Úsnodes     r#   ÚsaveXMLzDocumentLS.saveXMLg  sI   € Øˆ=ØˆEð �{‰{‹}Ðð × Ñ ¨Ñ,Ü—'‘'×*Ñ*Ó,Ð,Ø�{‰{‹}Ðr"   N)r
   r   r   r   Úasync_ró   rö   rù   rü   rÿ   r  r!   r"   r#   rñ   rñ   N  s)   „ ÙGà€FòòBò
7ò>ò>ór"   rñ   c                   ó&   — e Zd ZdZdZd„ Zd„ Zd„ Zy)ÚDOMImplementationLSr	   r%   c                 óè   — |�t         j                  j                  d«      ‚|| j                  k(  r
t	        «       S || j
                  k(  rt         j                  j                  d«      ‚t        d«      ‚)NzschemaType not yet supportedz'asynchronous builders are not supportedzunknown value for mode)rD   rE   rF   ÚMODE_SYNCHRONOUSr   ÚMODE_ASYNCHRONOUSrx   )r,   ÚmodeÚ
schemaTypes      r#   ÚcreateDOMBuilderz$DOMImplementationLS.createDOMBuilders  sl   € ØÐ!Ü—'‘'×)Ñ)Ø.ó0ð 0à�4×(Ñ(Ò(Ü“<ÐØ�4×)Ñ)Ò)Ü—'‘'×)Ñ)Ø9ó;ð ;äÐ1Ó2Ð2r"   c                 ó   — t        d«      ‚)Nz-the writer interface hasn't been written yet!rø   r+   s    r#   ÚcreateDOMWriterz#DOMImplementationLS.createDOMWriter~  s   € Ü!Ø;ó=ð 	=r"   c                 ó   — t        «       S r)   )r   r+   s    r#   ÚcreateDOMInputSourcez(DOMImplementationLS.createDOMInputSource‚  s   € ÜÓÐr"   N)r
   r   r   r
  r  r  r  r  r!   r"   r#   r  r  o  s   „ ØÐØÐò	3ò=ó r"   r  )r   rm   Úxml.domrD   Úxml.dom.NodeFilterr   Ú__all__r   r   rA   Úobjectr   r   rß   rñ   r  r!   r"   r#   ú<module>r     st   ðÙ :ã Û å )ò @€÷ñ ÷@a)ñ a)òH*ô):˜ô ):ôX.�Vô .÷b"ñ "ð4 ÷ñ ÷B ò  r"   