o
    JAfc0                     @   s   	 d dl Z d dlZd dlmZ g dZG dd dZG dd dZdd	 ZG d
d de	Z
G dd de	ZG dd dZ[G dd dZG dd dZdS )    N)
NodeFilter)
DOMBuilderDOMEntityResolverDOMInputSourcec                   @   sZ   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S )Options   TFN)__name__
__module____qualname__
namespacesnamespace_declarations
validationexternal_parameter_entitiesexternal_general_entitiesZ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 r   r   )/usr/lib/python3.10/xml/dom/xmlbuilder.pyr      s*    	r   c                
   @   s`  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d Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zd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d0gd1gd2Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< ZdS )=r   Nr            c                 C   s   t  | _d S N)r   _optionsselfr   r   r   __init__9   s   zDOMBuilder.__init__c                 C      | j S r"   entityResolverr$   r   r   r   _get_entityResolver<      zDOMBuilder._get_entityResolverc                 C   
   || _ d S r"   r(   )r%   r)   r   r   r   _set_entityResolver>      
zDOMBuilder._set_entityResolverc                 C   r'   r"   r   r$   r   r   r   _get_errorHandlerA   r+   zDOMBuilder._get_errorHandlerc                 C   r,   r"   r/   )r%   r   r   r   r   _set_errorHandlerC   r.   zDOMBuilder._set_errorHandlerc                 C   r'   r"   r   r$   r   r   r   _get_filterF   r+   zDOMBuilder._get_filterc                 C   r,   r"   r2   )r%   r   r   r   r   _set_filterH   r.   zDOMBuilder._set_filterc                 C   s   |  |r8|r	dp
d}z| jt||f }W n ty'   tjd|f d w |D ]\}}t| j|| q*d S tj	dt
| )Nr   r   zunsupported feature: %rzunknown feature: )supportsFeature	_settings_name_xformKeyErrorxmldomNotSupportedErrsetattrr#   NotFoundErrrepr)r%   namestateZsettingsvaluer   r   r   
setFeatureK   s   
zDOMBuilder.setFeaturec                 C   s   t | jt|S r"   )hasattrr#   r7   )r%   r?   r   r   r   r5   Y      zDOMBuilder.supportsFeaturec                 C   s   t ||rdpdf}|| jv S )Nr   r   )r7   r6   )r%   r?   r@   keyr   r   r   canSetFeature\   s   
zDOMBuilder.canSetFeature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   )	rG   rH   rI   rJ   rL   )r   r   rK   rM   rO   r   r   r   r   r   r   )rM   rN   rO   )r   r   )r   r   rP   rQ   rR   c                 C   s   t |}zt| j|W S  tyA   |dkr7| j}|jo4|jo4|jo4|jo4|jp3|j	p3|j
p3|jp3|j  Y S tjdt| w )Nr   zfeature %s not known)r7   getattrr#   AttributeErrorr   r   r   r   r   r   r   r   r   r9   r:   r=   r>   )r%   r?   Zxnameoptionsr   r   r   
getFeature   s2   	zDOMBuilder.getFeaturec                 C   s.   | j r| j d |}nt d |}| |S r"   )r)   resolveEntityr   parse)r%   uriinputr   r   r   parseURI   s   
zDOMBuilder.parseURIc                 C   sR   t  | j}| j|_| j|_|j}|d u r#|jr#dd l}|j|j}| 	||S Nr   )
copyr#   r   r   
byteStreamsystemIdurllib.requestrequesturlopen_parse_bytestream)r%   rZ   rU   fpurllibr   r   r   rX      s   zDOMBuilder.parsec                 C   s   || j vr	tdtd)Nznot a legal actionzHaven't written this yet...)_legal_actions
ValueErrorNotImplementedError)r%   rZ   Zcnodeactionr   r   r   parseWithContext   s   
zDOMBuilder.parseWithContextc                 C   s    dd l }|jj|}||S r\   )Zxml.dom.expatbuilderr:   ZexpatbuilderZmakeBuilderZ	parseFile)r%   streamrU   r9   Zbuilderr   r   r   rc      s   
zDOMBuilder._parse_bytestream)r   r	   r
   r)   r   r   ZACTION_REPLACEZACTION_APPEND_AS_CHILDRENZACTION_INSERT_AFTERZACTION_INSERT_BEFORErf   r&   r*   r-   r0   r1   r3   r4   rB   r5   rF   r6   rV   r[   rX   rj   rc   r   r   r   r   r   ,   s    		 "%=
r   c                 C   s   |   ddS )N-_)lowerreplace)r?   r   r   r   r7      rD   r7   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )r   )_openerc                 C   s   t  }||_||_|  ||_| ||_dd l}dd l	}|j
|}|\}}}	}
}}|	rJ|	dsJ||	d }	|||	|
||f}|j
||_|S )Nr   /)r   publicIdr_   _get_openeropenr^   _guess_media_encodingencoding	posixpathurllib.parserX   urlparseendswithdirname
urlunparsebaseURI)r%   rr   r_   sourcerw   re   partsschemenetlocpathparamsqueryfragmentr   r   r   rW      s   zDOMEntityResolver.resolveEntityc                 C   s,   z| j W S  ty   |  | _ | j  Y S w r"   )rp   rT   _create_openerr$   r   r   r   rs      s   

zDOMEntityResolver._get_openerc                 C   s   dd l }|j S r\   )r`   ra   Zbuild_opener)r%   re   r   r   r   r      s   
z DOMEntityResolver._create_openerc                 C   sJ   |j  }d|v r!| D ]}|dr |ddd    S qd S d S )NzContent-Typezcharset==r   )r^   infoZgetplist
startswithsplitrn   )r%   r~   r   Zparamr   r   r   ru      s   

z'DOMEntityResolver._guess_media_encodingN)r   r	   r
   	__slots__rW   rs   r   ru   r   r   r   r   r      s    r   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd S )!r   r^   characterStream
stringDatarv   rr   r_   r}   c                 C   s.   d | _ d | _d | _d | _d | _d | _d | _d S r"   r   r$   r   r   r   r&     s   
zDOMInputSource.__init__c                 C   r'   r"   r^   r$   r   r   r   _get_byteStream  r+   zDOMInputSource._get_byteStreamc                 C   r,   r"   r   )r%   r^   r   r   r   _set_byteStream  r.   zDOMInputSource._set_byteStreamc                 C   r'   r"   r   r$   r   r   r   _get_characterStream  r+   z#DOMInputSource._get_characterStreamc                 C   r,   r"   r   )r%   r   r   r   r   _set_characterStream  r.   z#DOMInputSource._set_characterStreamc                 C   r'   r"   r   r$   r   r   r   _get_stringData  r+   zDOMInputSource._get_stringDatac                 C   r,   r"   r   )r%   datar   r   r   _set_stringData  r.   zDOMInputSource._set_stringDatac                 C   r'   r"   rv   r$   r   r   r   _get_encoding  r+   zDOMInputSource._get_encodingc                 C   r,   r"   r   )r%   rv   r   r   r   _set_encoding  r.   zDOMInputSource._set_encodingc                 C   r'   r"   rr   r$   r   r   r   _get_publicId!  r+   zDOMInputSource._get_publicIdc                 C   r,   r"   r   )r%   rr   r   r   r   _set_publicId#  r.   zDOMInputSource._set_publicIdc                 C   r'   r"   r_   r$   r   r   r   _get_systemId&  r+   zDOMInputSource._get_systemIdc                 C   r,   r"   r   )r%   r_   r   r   r   _set_systemId(  r.   zDOMInputSource._set_systemIdc                 C   r'   r"   r}   r$   r   r   r   _get_baseURI+  r+   zDOMInputSource._get_baseURIc                 C   r,   r"   r   r%   rY   r   r   r   _set_baseURI-  r.   zDOMInputSource._set_baseURIN)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"    	r   c                   @   s<   e Zd Z	 dZdZdZdZejZ	dd Z
dd Zd	d
 ZdS )DOMBuilderFilterr   r   r    r!   c                 C   r'   r"   )
whatToShowr$   r   r   r   _get_whatToShowB  r+   z DOMBuilderFilter._get_whatToShowc                 C   r'   r"   FILTER_ACCEPTr%   elementr   r   r   
acceptNodeE  r+   zDOMBuilderFilter.acceptNodec                 C   r'   r"   r   r   r   r   r   startContainerH  r+   zDOMBuilderFilter.startContainerN)r   r	   r
   r   ZFILTER_REJECTZFILTER_SKIPZFILTER_INTERRUPTr   ZSHOW_ALLr   r   r   r   r   r   r   r   r   1  s    	r   c                   @   sB   e Zd Z	 dZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )
DocumentLSFc                 C   s   dS )NFr   r$   r   r   r   
_get_asyncS  s   zDocumentLS._get_asyncc                 C   s   |rt jdd S )Nz.asynchronous document loading is not supported)r9   r:   r;   )r%   flagr   r   r   
_set_asyncV  s
   zDocumentLS._set_asyncc                 C      t d)Nz'haven't figured out what this means yetrh   r$   r   r   r   abort[  s   zDocumentLS.abortc                 C   r   Nzhaven't written this yetr   r   r   r   r   loada     zDocumentLS.loadc                 C   r   r   r   )r%   r~   r   r   r   loadXMLd  r   zDocumentLS.loadXMLc                 C   s0   |d u r
| }| S |j | urtj | S r"   )ZownerDocumentr9   r:   ZWrongDocumentErrZtoxml)r%   Zsnoder   r   r   saveXMLg  s   

zDocumentLS.saveXMLN)
r   r	   r
   Zasync_r   r   r   r   r   r   r   r   r   r   r   N  s    r   c                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
DOMImplementationLSr   r   c                 C   sB   |d ur
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)r9   r:   r;   MODE_SYNCHRONOUSr   MODE_ASYNCHRONOUSrg   )r%   modeZ
schemaTyper   r   r   createDOMBuilders  s   

z$DOMImplementationLS.createDOMBuilderc                 C   r   )Nz-the writer interface hasn't been written yet!r   r$   r   r   r   createDOMWriter~  s   z#DOMImplementationLS.createDOMWriterc                 C   s   t  S r"   )r   r$   r   r   r   createDOMInputSource  r+   z(DOMImplementationLS.createDOMInputSourceN)r   r	   r
   r   r   r   r   r   r   r   r   r   r   o  s    r   )r]   Zxml.domr9   Zxml.dom.NodeFilterr   __all__r   r   r7   objectr   r   r   r   r   r   r   r   r   <module>   s      %,1!