
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \Ä2  ã               @   s¶   d Z ddlZddlZddlZddlmZ dddg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[G dd„ dƒZdS )z4Implementation of the DOM Level 3 'LS-Load' feature.é    N)Ú
NodeFilterÚ
DOMBuilderÚDOMEntityResolverÚDOMInputSourcec               @   s\   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 )Ú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_entitiesZexternal_dtd_subsetÚvalidate_if_schemaZ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/lib64/python3.6/xml/dom/xmlbuilder.pyr      s(   r   c            5   @   sV  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d4d5gd6d7gd8d9gd:d;gd<d=gd>d?gd@dAgdBdCgdDdEgdFdGgdHdIdJgdKdLgdMdNgdOdPgdQdRgdSdTgdUdVgdWdXgdYdZgd[d\gd]g d^d_d`dadbdcdddedfdgg	dhdigdjdkgdldmgiZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ ZdS )nr   Nr   é   é   é   c             C   s   t ƒ | _d S )N)r   Ú_options)Úselfr   r   r   Ú__init__:   s    zDOMBuilder.__init__c             C   s   | j S )N)ÚentityResolver)r#   r   r   r   Ú_get_entityResolver=   s    zDOMBuilder._get_entityResolverc             C   s
   || _ d S )N)r%   )r#   r%   r   r   r   Ú_set_entityResolver?   s    zDOMBuilder._set_entityResolverc             C   s   | j S )N)r   )r#   r   r   r   Ú_get_errorHandlerB   s    zDOMBuilder._get_errorHandlerc             C   s
   || _ d S )N)r   )r#   r   r   r   r   Ú_set_errorHandlerD   s    zDOMBuilder._set_errorHandlerc             C   s   | j S )N)r   )r#   r   r   r   Ú_get_filterG   s    zDOMBuilder._get_filterc             C   s
   || _ d S )N)r   )r#   r   r   r   r   Ú_set_filterI   s    zDOMBuilder._set_filterc             C   sŽ   | j |ƒrv|rdpd}y| jt|ƒ|f }W n& tk
rR   tjjd|f ƒ‚Y qŠX x4|D ]\}}t| j||ƒ qZW ntjj	dt
|ƒ ƒ‚d S )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   Ú
setFeatureL   s    
zDOMBuilder.setFeaturec             C   s   t | jt|ƒƒS )N)Úhasattrr"   r.   )r#   r6   r   r   r   r,   Z   s    zDOMBuilder.supportsFeaturec             C   s   t |ƒ|rdpdf}|| jkS )Nr   r   )r.   r-   )r#   r6   r7   Úkeyr   r   r   ÚcanSetFeature]   s    zDOMBuilder.canSetFeaturer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c             C   sˆ   t |ƒ}yt| j|ƒS  tk
r‚   |dkrj| j}|joh|joh|joh|joh|jpf|j	pf|j
pf|jpf|j S tjjdt|ƒ ƒ‚Y nX d S )Nr   zfeature %s not known)r.   Úgetattrr"   ÚAttributeErrorr   r   r   r   r   r   r   r   r   r0   r1   r4   r5   )r#   r6   ZxnameÚoptionsr   r   r   Ú
getFeature£   s     zDOMBuilder.getFeaturec             C   s.   | j r| j jd |ƒ}ntƒ jd |ƒ}| j|ƒS )N)r%   ÚresolveEntityr   Úparse)r#   ÚuriÚinputr   r   r   ÚparseURIµ   s    zDOMBuilder.parseURIc             C   sR   t j | jƒ}| j|_| j|_|j}|d krF|jrFdd l}|jj|jƒ}| j	||ƒS )Nr   )
Úcopyr"   r   r   Ú
byteStreamÚsystemIdÚurllib.requestÚrequestZurlopenÚ_parse_bytestream)r#   rD   r?   ÚfpÚurllibr   r   r   rB   ¼   s    zDOMBuilder.parsec             C   s   || j krtdƒ‚tdƒ‚d S )Nznot a legal actionzHaven't written this yet...)Ú_legal_actionsÚ
ValueErrorÚNotImplementedError)r#   rD   ZcnodeÚactionr   r   r   ÚparseWithContextÆ   s    
zDOMBuilder.parseWithContextc             C   s    dd l }|jjj|ƒ}|j|ƒS )Nr   )Zxml.dom.expatbuilderr1   ZexpatbuilderZmakeBuilderZ	parseFile)r#   Ústreamr?   r0   Zbuilderr   r   r   rK   Ë   s    zDOMBuilder._parse_bytestream)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   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   )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   ZACTION_REPLACEZACTION_APPEND_AS_CHILDRENZACTION_INSERT_AFTERZACTION_INSERT_BEFORErN   r$   r&   r'   r(   r)   r*   r+   r9   r,   r<   r-   r@   rE   rB   rR   rK   r   r   r   r   r   -   s¤   

c             C   s   | j ƒ jddƒS )Nú-Ú_)ÚlowerÚreplace)r6   r   r   r   r.   Ñ   s    r.   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 ƒ }||_||_| jƒ j|ƒ|_| j|ƒ|_dd l}dd l	}|j
j|ƒ}|\}}}	}
}}|	r–|	jdƒ r–|j|	ƒd }	|||	|
||f}|j
j|ƒ|_|S )Nr   ú/)r   ÚpublicIdrH   Ú_get_openerÚopenrG   Ú_guess_media_encodingÚencodingÚ	posixpathZurllib.parserB   ZurlparseÚendswithÚdirnameZ
urlunparseÚbaseURI)r#   rZ   rH   Úsourcer_   rM   ÚpartsÚschemeZnetlocÚpathZparamsZqueryZfragmentr   r   r   rA   Ø   s    zDOMEntityResolver.resolveEntityc             C   s,   y| j S  tk
r&   | jƒ | _ | j S X d S )N)rX   r>   Ú_create_opener)r#   r   r   r   r[   î   s
    
zDOMEntityResolver._get_openerc             C   s   dd l }|jjƒ S )Nr   )rI   rJ   Zbuild_opener)r#   rM   r   r   r   rg   õ   s    z DOMEntityResolver._create_openerc             C   sF   |j jƒ }d|krBx.|jƒ D ]"}|jdƒr|jddƒd jƒ S qW d S )NzContent-Typezcharset=ú=r   )rG   ÚinfoZgetplistÚ
startswithÚsplitrV   )r#   rc   ri   Zparamr   r   r   r]   ù   s
    

z'DOMEntityResolver._guess_media_encodingN)rX   )r   r	   r
   Ú	__slots__rA   r[   rg   r]   r   r   r   r   r   Õ   s
   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   rG   ÚcharacterStreamÚ
stringDatar^   rZ   rH   rb   c             C   s.   d | _ d | _d | _d | _d | _d | _d | _d S )N)rG   rm   rn   r^   rZ   rH   rb   )r#   r   r   r   r$     s    zDOMInputSource.__init__c             C   s   | j S )N)rG   )r#   r   r   r   Ú_get_byteStream  s    zDOMInputSource._get_byteStreamc             C   s
   || _ d S )N)rG   )r#   rG   r   r   r   Ú_set_byteStream  s    zDOMInputSource._set_byteStreamc             C   s   | j S )N)rm   )r#   r   r   r   Ú_get_characterStream  s    z#DOMInputSource._get_characterStreamc             C   s
   || _ d S )N)rm   )r#   rm   r   r   r   Ú_set_characterStream  s    z#DOMInputSource._set_characterStreamc             C   s   | j S )N)rn   )r#   r   r   r   Ú_get_stringData  s    zDOMInputSource._get_stringDatac             C   s
   || _ d S )N)rn   )r#   Údatar   r   r   Ú_set_stringData  s    zDOMInputSource._set_stringDatac             C   s   | j S )N)r^   )r#   r   r   r   Ú_get_encoding  s    zDOMInputSource._get_encodingc             C   s
   || _ d S )N)r^   )r#   r^   r   r   r   Ú_set_encoding  s    zDOMInputSource._set_encodingc             C   s   | j S )N)rZ   )r#   r   r   r   Ú_get_publicId"  s    zDOMInputSource._get_publicIdc             C   s
   || _ d S )N)rZ   )r#   rZ   r   r   r   Ú_set_publicId$  s    zDOMInputSource._set_publicIdc             C   s   | j S )N)rH   )r#   r   r   r   Ú_get_systemId'  s    zDOMInputSource._get_systemIdc             C   s
   || _ d S )N)rH   )r#   rH   r   r   r   Ú_set_systemId)  s    zDOMInputSource._set_systemIdc             C   s   | j S )N)rb   )r#   r   r   r   Ú_get_baseURI,  s    zDOMInputSource._get_baseURIc             C   s
   || _ d S )N)rb   )r#   rC   r   r   r   Ú_set_baseURI.  s    zDOMInputSource._set_baseURIN)rG   rm   rn   r^   rZ   rH   rb   )r   r	   r
   rl   r$   ro   rp   rq   rr   rs   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r   r     s"    	c               @   s>   e Zd 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 )ÚDOMBuilderFilterzSElement filter which can be used to tailor construction of
    a DOM instance.
    r   r   r    r!   c             C   s   | j S )N)Ú
whatToShow)r#   r   r   r   Ú_get_whatToShowC  s    z DOMBuilderFilter._get_whatToShowc             C   s   | j S )N)ÚFILTER_ACCEPT)r#   Úelementr   r   r   Ú
acceptNodeF  s    zDOMBuilderFilter.acceptNodec             C   s   | j S )N)r�   )r#   r‚   r   r   r   ÚstartContainerI  s    zDOMBuilderFilter.startContainerN)r   r	   r
   r   r�   ZFILTER_REJECTZFILTER_SKIPZFILTER_INTERRUPTr   ZSHOW_ALLr   r€   rƒ   r„   r   r   r   r   r~   2  s   r~   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_AsyncDeprecatedPropertyc             C   s   |j }tjdj|d�tƒ d S )Nz+{cls}.async is deprecated; use {cls}.async_)Úcls)r   ÚwarningsÚwarnÚformatÚDeprecationWarning)r#   r†   Zclsnamer   r   r   rˆ   P  s    
z_AsyncDeprecatedProperty.warnc             C   s   | j |ƒ |d k	r|jS dS )NF)rˆ   Úasync_)r#   Úinstancer†   r   r   r   Ú__get__V  s    
z _AsyncDeprecatedProperty.__get__c             C   s   | j t|ƒƒ t|d|ƒ d S )Nr‹   )rˆ   Útyper3   )r#   rŒ   r8   r   r   r   Ú__set__\  s    z _AsyncDeprecatedProperty.__set__N)r   r	   r
   rˆ   r�   r�   r   r   r   r   r…   O  s   r…   c               @   sP   e Zd ZdZdZeƒ eƒ d< dd„ Zdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ ZdS )Ú
DocumentLSz=Mixin to create documents that conform to the load/save spec.FÚasyncc             C   s   dS )NFr   )r#   r   r   r   Ú
_get_asyncg  s    zDocumentLS._get_asyncc             C   s   |rt jjdƒ‚d S )Nz.asynchronous document loading is not supported)r0   r1   r2   )r#   Úflagr   r   r   Ú
_set_asyncj  s    zDocumentLS._set_asyncc             C   s   t dƒ‚d S )Nz'haven't figured out what this means yet)rP   )r#   r   r   r   Úaborto  s    zDocumentLS.abortc             C   s   t dƒ‚d S )Nzhaven't written this yet)rP   )r#   rC   r   r   r   Úloadu  s    zDocumentLS.loadc             C   s   t dƒ‚d S )Nzhaven't written this yet)rP   )r#   rc   r   r   r   ÚloadXMLx  s    zDocumentLS.loadXMLc             C   s*   |d kr| }n|j | k	r"tjjƒ ‚|jƒ S )N)ZownerDocumentr0   r1   ZWrongDocumentErrZtoxml)r#   Zsnoder   r   r   ÚsaveXML{  s
    

zDocumentLS.saveXMLN)r   r	   r
   r   r‹   r…   Úlocalsr’   r”   r•   r–   r—   r˜   r   r   r   r   r�   a  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   sF   |d k	rt jjdƒ‚|| jkr$tƒ S || jkr:t jjdƒ‚tdƒ‚d S )NzschemaType not yet supportedz'asynchronous builders are not supportedzunknown value for mode)r0   r1   r2   ÚMODE_SYNCHRONOUSr   ÚMODE_ASYNCHRONOUSrO   )r#   ÚmodeZ
schemaTyper   r   r   ÚcreateDOMBuilderŠ  s    

z$DOMImplementationLS.createDOMBuilderc             C   s   t dƒ‚d S )Nz-the writer interface hasn't been written yet!)rP   )r#   r   r   r   ÚcreateDOMWriter•  s    z#DOMImplementationLS.createDOMWriterc             C   s   t ƒ S )N)r   )r#   r   r   r   ÚcreateDOMInputSource™  s    z(DOMImplementationLS.createDOMInputSourceN)r   r	   r
   r›   rœ   rž   rŸ   r    r   r   r   r   rš   †  s
   rš   )r   rF   r‡   Zxml.domr0   Zxml.dom.NodeFilterr   Ú__all__r   r   r.   Úobjectr   r   r~   r…   r�   rš   r   r   r   r   Ú<module>   s"   
  %,1"