3 \�2�@s�dZddlZddlZddlZddlmZdddgZGdd�d�ZGd d�d�Z d d �Z Gd d�de �Z Gd d�de �Z Gdd�d�Z[Gdd�d�ZGdd�d�Z[Gdd�d�ZdS)z4Implementation of the DOM Level 3 'LS-Load' feature.�N)� NodeFilter� DOMBuilder�DOMEntityResolver�DOMInputSourcec@s\eZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZdZdS)�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_entitiesZexternal_dtd_subset�validate_if_schemaZvalidate�datatype_normalization�create_entity_ref_nodes�entities�whitespace_in_element_content�cdata_sections�comments�charset_overrides_xml_encoding�infoset�supported_mediatypes_only� errorHandler�filter�rr�*/usr/lib64/python3.6/xml/dom/xmlbuilder.pyr s(rc5@sVeZdZdZdZdZdZdZdZdZ eeee fZ dd�Z dd �Z d d �Z d d �Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd4d5gd6d7gd8d9gd:d;gdd?gd@dAgdBdCgdDdEgdFdGgdHdIdJgdKdLgdMdNgdOdPgdQdRgdSdTgdUdVgdWdXgdYdZgd[d\gd]gd^d_d`dadbdcdddedfdgg dhdigdjdkgdldmgiZd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�ZdS)nrNr���cCs t�|_dS)N)r�_options)�selfrrr�__init__:szDOMBuilder.__init__cCs|jS)N)�entityResolver)r#rrr�_get_entityResolver=szDOMBuilder._get_entityResolvercCs ||_dS)N)r%)r#r%rrr�_set_entityResolver?szDOMBuilder._set_entityResolvercCs|jS)N)r)r#rrr�_get_errorHandlerBszDOMBuilder._get_errorHandlercCs ||_dS)N)r)r#rrrr�_set_errorHandlerDszDOMBuilder._set_errorHandlercCs|jS)N)r)r#rrr� _get_filterGszDOMBuilder._get_filtercCs ||_dS)N)r)r#rrrr� _set_filterIszDOMBuilder._set_filterc Cs�|j|�rv|rdpd}y|jt|�|f}Wn&tk rRtjjd|f��Yq�Xx4|D]\}}t|j||�qZWntjj dt |���dS)Nrrzunsupported feature: %rzunknown feature: ) �supportsFeature� _settings� _name_xform�KeyError�xml�dom�NotSupportedErr�setattrr"� NotFoundErr�repr)r#�name�stateZsettings�valuerrr� setFeatureLs  zDOMBuilder.setFeaturecCst|jt|��S)N)�hasattrr"r.)r#r6rrrr,ZszDOMBuilder.supportsFeaturecCst|�|rdpdf}||jkS)Nrr)r.r-)r#r6r7�keyrrr� canSetFeature]szDOMBuilder.canSetFeaturer rrrrrrrrrrrrrrr c Cs�t|�}y t|j|�Stk r�|dkrj|j}|joh|joh|joh|joh|jpf|j pf|j pf|j pf|j St jjdt|���YnXdS)Nrzfeature %s not known)r.�getattrr"�AttributeErrorrrrrr rrrrr0r1r4r5)r#r6Zxname�optionsrrr� getFeature�s  zDOMBuilder.getFeaturecCs.|jr|jjd|�}nt�jd|�}|j|�S)N)r%� resolveEntityr�parse)r#�uri�inputrrr�parseURI�szDOMBuilder.parseURIcCsRtj|j�}|j|_|j|_|j}|dkrF|jrFddl}|jj|j�}|j ||�S)Nr) �copyr"rr� byteStream�systemId�urllib.request�requestZurlopen�_parse_bytestream)r#rDr?�fp�urllibrrrrB�s zDOMBuilder.parsecCs||jkrtd��td��dS)Nznot a legal actionzHaven't written this yet...)�_legal_actions� ValueError�NotImplementedError)r#rDZcnode�actionrrr�parseWithContext�s zDOMBuilder.parseWithContextcCs ddl}|jjj|�}|j|�S)Nr)Zxml.dom.expatbuilderr1Z expatbuilderZ makeBuilderZ parseFile)r#�streamr?r0ZbuilderrrrrK�szDOMBuilder._parse_bytestream)r r)r r)r r)r r)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)r r)rr)rr)rr)rr)rr)rr)rr)rr)rr)rr)r r)r r)r r)r r)rr r r%rrZACTION_REPLACEZACTION_APPEND_AS_CHILDRENZACTION_INSERT_AFTERZACTION_INSERT_BEFORErNr$r&r'r(r)r*r+r9r,r<r-r@rErBrRrKrrrrr-s�  cCs|j�jdd�S)N�-�_)�lower�replace)r6rrrr.�sr.c@s0eZdZd Zdd�Zdd�Zdd�Zdd �Zd S) r�_openerc Cs�t�}||_||_|j�j|�|_|j|�|_ddl}ddl }|j j |�}|\}}} } } } | r�| j d� r�|j | �d} ||| | | | f}|j j|�|_|S)Nr�/)r�publicIdrH� _get_opener�openrG�_guess_media_encoding�encoding� posixpathZ urllib.parserBZurlparse�endswith�dirnameZ urlunparse�baseURI) r#rZrH�sourcer_rM�parts�schemeZnetloc�pathZparamsZqueryZfragmentrrrrA�s  zDOMEntityResolver.resolveEntityc Cs,y|jStk r&|j�|_|jSXdS)N)rXr>�_create_opener)r#rrrr[�s  zDOMEntityResolver._get_openercCsddl}|jj�S)Nr)rIrJZ build_opener)r#rMrrrrg�sz DOMEntityResolver._create_openercCsF|jj�}d|krBx.|j�D]"}|jd�r|jdd�dj�SqWdS)Nz Content-Typezcharset=�=r)rG�infoZgetplist� startswith�splitrV)r#rcriZparamrrrr]�s   z'DOMEntityResolver._guess_media_encodingN)rX)rr r � __slots__rAr[rgr]rrrrr�s c@s�eZdZd'Zdd �Zd d �Zd d �Zdd�Zdd�Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&S)(rrG�characterStream� stringDatar^rZrHrbcCs.d|_d|_d|_d|_d|_d|_d|_dS)N)rGrmrnr^rZrHrb)r#rrrr$szDOMInputSource.__init__cCs|jS)N)rG)r#rrr�_get_byteStreamszDOMInputSource._get_byteStreamcCs ||_dS)N)rG)r#rGrrr�_set_byteStreamszDOMInputSource._set_byteStreamcCs|jS)N)rm)r#rrr�_get_characterStreamsz#DOMInputSource._get_characterStreamcCs ||_dS)N)rm)r#rmrrr�_set_characterStreamsz#DOMInputSource._set_characterStreamcCs|jS)N)rn)r#rrr�_get_stringDataszDOMInputSource._get_stringDatacCs ||_dS)N)rn)r#�datarrr�_set_stringDataszDOMInputSource._set_stringDatacCs|jS)N)r^)r#rrr� _get_encodingszDOMInputSource._get_encodingcCs ||_dS)N)r^)r#r^rrr� _set_encodingszDOMInputSource._set_encodingcCs|jS)N)rZ)r#rrr� _get_publicId"szDOMInputSource._get_publicIdcCs ||_dS)N)rZ)r#rZrrr� _set_publicId$szDOMInputSource._set_publicIdcCs|jS)N)rH)r#rrr� _get_systemId'szDOMInputSource._get_systemIdcCs ||_dS)N)rH)r#rHrrr� _set_systemId)szDOMInputSource._set_systemIdcCs|jS)N)rb)r#rrr� _get_baseURI,szDOMInputSource._get_baseURIcCs ||_dS)N)rb)r#rCrrr� _set_baseURI.szDOMInputSource._set_baseURIN)rGrmrnr^rZrHrb)rr r rlr$rorprqrrrsrurvrwrxryrzr{r|r}rrrrrs" c@s>eZdZdZdZdZdZdZej Z dd�Z dd �Z d d �Z d S) �DOMBuilderFilterzSElement filter which can be used to tailor construction of a DOM instance. rrr r!cCs|jS)N)� whatToShow)r#rrr�_get_whatToShowCsz DOMBuilderFilter._get_whatToShowcCs|jS)N)� FILTER_ACCEPT)r#�elementrrr� acceptNodeFszDOMBuilderFilter.acceptNodecCs|jS)N)r�)r#r�rrr�startContainerIszDOMBuilderFilter.startContainerN)rr r r r�Z FILTER_REJECTZ FILTER_SKIPZFILTER_INTERRUPTrZSHOW_ALLrr�r�r�rrrrr~2sr~c@s$eZdZdd�Zdd�Zdd�ZdS)�_AsyncDeprecatedPropertycCs|j}tjdj|d�t�dS)Nz+{cls}.async is deprecated; use {cls}.async_)�cls)r�warnings�warn�format�DeprecationWarning)r#r�Zclsnamerrrr�Ps z_AsyncDeprecatedProperty.warncCs|j|�|dk r|jSdS)NF)r��async_)r#�instancer�rrr�__get__Vs z _AsyncDeprecatedProperty.__get__cCs|jt|��t|d|�dS)Nr�)r��typer3)r#r�r8rrr�__set__\sz _AsyncDeprecatedProperty.__set__N)rr r r�r�r�rrrrr�Osr�c@sPeZdZdZdZe�e�d<dd�Zdd�Zdd �Z d d �Z d d �Z dd�Z dS)� DocumentLSz=Mixin to create documents that conform to the load/save spec.F�asynccCsdS)NFr)r#rrr� _get_asyncgszDocumentLS._get_asynccCs|rtjjd��dS)Nz.asynchronous document loading is not supported)r0r1r2)r#�flagrrr� _set_asyncjszDocumentLS._set_asynccCs td��dS)Nz'haven't figured out what this means yet)rP)r#rrr�abortoszDocumentLS.abortcCs td��dS)Nzhaven't written this yet)rP)r#rCrrr�loaduszDocumentLS.loadcCs td��dS)Nzhaven't written this yet)rP)r#rcrrr�loadXMLxszDocumentLS.loadXMLcCs*|dkr|}n|j|k r"tjj��|j�S)N)Z ownerDocumentr0r1ZWrongDocumentErrZtoxml)r#Zsnoderrr�saveXML{s   zDocumentLS.saveXMLN) rr r r r�r��localsr�r�r�r�r�r�rrrrr�as r�c@s,eZdZdZdZdd�Zdd�Zdd�Zd S) �DOMImplementationLSrrcCsF|dk rtjjd��||jkr$t�S||jkr:tjjd��td��dS)NzschemaType not yet supportedz'asynchronous builders are not supportedzunknown value for mode)r0r1r2�MODE_SYNCHRONOUSr�MODE_ASYNCHRONOUSrO)r#�modeZ schemaTyperrr�createDOMBuilder�s  z$DOMImplementationLS.createDOMBuildercCs td��dS)Nz-the writer interface hasn't been written yet!)rP)r#rrr�createDOMWriter�sz#DOMImplementationLS.createDOMWritercCst�S)N)r)r#rrr�createDOMInputSource�sz(DOMImplementationLS.createDOMInputSourceN)rr r r�r�r�r�r�rrrrr��s  r�)r rFr�Zxml.domr0Zxml.dom.NodeFilterr�__all__rrr.�objectrrr~r�r�r�rrrr�s"   %,1"