
    dc0                         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dS )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dS )OptionszFeatures 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     $  /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/dom/xmlbuilder.pyr   r      s          J!J"& $H""H$(!NH%)"G %LFFFr"   r   c            
       D   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dS ).r   Nr	            c                 ,    t                      | _        d S 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                     || _         d S 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                     || _         d S 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                     || _         d S r)   r:   )r,   r    s     r#   _set_filterzDOMBuilder._set_filterH   s    r"   c                 r   |                      |          rt|rdpd}	 | j        t          |          |f         }|D ]\  }}t          | j        ||           d S # t
          $ r$ t          j                            d|          d w xY wt          j        	                    dt          |          z             )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    %% 	HKa$1E8>;t+<+<e*DE
 $, 8 8KD%DM477778 8	  C C Cg---1579 9>BCC '%%&9DJJ&FGGGs   A .Bc                 F    t          | j        t          |                    S r)   )hasattrr*   rA   )r,   rI   s     r#   r?   zDOMBuilder.supportsFeatureY   s    t}k$&7&7888r"   c                 >    t          |          |rdpdf}|| j        v S )Nr	   r   )rA   r@   )r,   rI   rJ   keys       r#   canSetFeaturezDOMBuilder.canSetFeature\   s*    4  %+A"23dn$$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                 d   t          |          }	 t          | j        |          S # t          $ r |dk    rI| j        }|j        o8|j        o1|j        o*|j        o#|j        p|j	        p|j
        p|j        p|j         cY S t          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0 	K 	K 	Ky  -6 <#A<#,< $B< ")!? ";$+$>";$+$C"; %,$4"; %,$:	<	= = = '%%&<tDzz&IJJJ	Ks   & AB/?0B/c                     | j         r| j                             d |          }n"t                                          d |          }|                     |          S r)   )r0   resolveEntityr   parse)r,   uriinputs      r#   parseURIzDOMBuilder.parseURI   sU     	A'55dC@@EE%''55dC@@Ezz%   r"   c                     t          j         | j                  }| j        |_        | j        |_        |j        }|*|j        r#dd l}|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   st    )DM**#0:'*:!!!!''77B%%b'222r"   c                 P    || 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2!"?@@@r"   c                 r    dd l }|j        j                            |          }|                    |          S rl   )xml.dom.expatbuilderrE   expatbuildermakeBuilder	parseFile)r,   streamrc   rD   builders        r#   rs   zDOMBuilder._parse_bytestream   s:    ####'&227;;  (((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 H H9 9 9% % %;%)(+; 	&)(+;
 	; 	),+.; 	),+.; 	+.-0; 	+.-0; 	"%$';" 	'*),#;& 	'*),';* 	*+;0 	1;4 	-0/25;8 	-0/29;< 	! #=;@ 	! #A;D 	E;J  203 203	3 	3 	3 -+.  s; ; ;IzK K K$! ! !3 3 3A A A
) ) ) ) )r"   r   c                 R    |                                                      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dS )r   )_openerc                    |J t                      }||_        ||_        |                                                     |          |_        |                     |          |_        dd l}dd l	}|j
                            |          }|\  }}}	}
}}|	rT|	                    d          s?|                    |	          dz   }	|||	|
||f}|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3H== 44V<< 	'&&&&&&&%%h//8=5feX 	<c** 	<$$T**S0DFD&%AE#\44U;;FNr"   c                 r    	 | j         S # t          $ r# |                                 | _         | j         cY S w xY wr)   )r   ra   _create_openerr+   s    r#   r   zDOMEntityResolver._get_opener   sK    	 < 	  	  	 ..00DL<	 s   	 *66c                 <    dd l }|j                                        S rl   )rp   rq   build_opener)r,   ru   s     r#   r   z DOMEntityResolver._create_opener   s"    ~**,,,r"   c                     |j                                         }d|v r\|                                D ]I}|                    d          r0|                    dd          d                                         c S Hd S d S )NzContent-Typezcharset==r	   )rn   infogetplist
startswithsplitr   )r,   r   r   params       r#   r   z'DOMEntityResolver._guess_media_encoding   s     %%''T!! : :##J// : ;;sA..q17799999: "!: :r"   N)r
   r   r   	__slots__rf   r   r   r   r!   r"   r#   r   r      sU        I  ,     - - -: : : : :r"   r   c                   l    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S )r   rn   characterStream
stringDatar   r   ro   r   c                 h    d | _         d | _        d | _        d | _        d | _        d | _        d | _        d S r)   r   r+   s    r#   r-   zDOMInputSource.__init__  s8    #r"   c                     | j         S r)   rn   r+   s    r#   _get_byteStreamzDOMInputSource._get_byteStream  
    r"   c                     || _         d S 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                     || _         d S 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                     || _         d S 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                     || _         d S 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                     || _         d S 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                     || _         d S 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                     || _         d S 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      s        @I    % % %$ $ $/ / /      ! ! !  ! ! !  ! ! !      r"   r   c                   B    e Zd ZdZdZdZdZdZej	        Z
d Zd Zd Zd	S )
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  sj          MMK$J  " " "" " " " "r"   r   c                   :    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	S )

DocumentLSz=Mixin to create documents that conform to the load/save spec.Fc                     dS )NFr!   r+   s    r#   
_get_asynczDocumentLS._get_asyncS  s    ur"   c                 H    |rt           j                            d          d S )Nz.asynchronous document loading is not supported)rD   rE   rF   )r,   flags     r#   
_set_asynczDocumentLS._set_asyncV  s7     	B'))@B B B	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 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                     || }n'|j         | urt          j                                        |                                S r)   )ownerDocumentrD   rE   WrongDocumentErrtoxml)r,   snodes     r#   saveXMLzDocumentLS.saveXMLg  s>    =EE ,,'**,,,{{}}r"   N)r
   r   r   r   async_r   r   r   r   r   r  r!   r"   r#   r   r   N  s|        GGF  B B B
7 7 7> > >> > >    r"   r   c                   (    e Zd ZdZdZd Zd Zd ZdS )DOMImplementationLSr	   r%   c                     |t           j                            d          || j        k    rt	                      S || j        k    rt           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  sw    !')).0 0 04(((<<4)))'))9; ; ;12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  sM        	3 	3 	3= = =         r"   r  )r   rm   xml.domrD   xml.dom.NodeFilterr   __all__r   r   rA   objectr   r   r   r   r  r!   r"   r#   <module>r     s   : :   ) ) ) ) ) ) @
?
?       @a) a) a) a) a) a) a) a)H* * *): ): ): ): ): ): ): ):X. . . . .V . . .b" " " " " " " "4        B                   r"   