U
    jÕÕj   ã                	   @   s  d Z ddlmZmZ ddlZddlZddlmZ ddlmZ	 ddlm
Z ddlmZ dd	lmZ ernddlZndd
lmZ ddlmZ ddlmZmZmZmZ dZdd„ Zer¸eƒ \ZZeƒ ZG dd„ deƒZe Z ZZeee	eeƒ\Z
ZZeZ dddddddddg	Z!dS )z%Defused xml.etree.ElementTree facade
é    )Úprint_functionÚabsolute_importN)Ú
ParseError)ÚTreeBuilder)Úparse)Útostringé   )ÚPY3)Ú	XMLParser)Ú	iterparse)ÚDTDForbiddenÚEntitiesForbiddenÚExternalReferenceForbiddenÚ_generate_etree_functionsúxml.etree.ElementTreec               
   C   s®   d} d}t j | d¡}t j |d¡}dt j|< zt | ¡}W 5 |t j| < |dk	r\|t j|< nt j |d¡ t jd }|dk	r„||_nt|dƒr’|`X |j}|j}t	|_	||fS )z„Python 3.3 hides the pure Python code but defusedxml requires it.

    The code is based on test.support.import_fresh_module().
    r   Ú_elementtreeNz	xml.etreeÚElementTree)
ÚsysÚmodulesÚpopr   ÚhasattrÚ	importlibÚimport_moduler
   r   r   )Z	pymodnameZcmodnameZpymodZcmodZ	etree_pkgZ
pure_pymodÚ
_XMLParserÚ
_iterparse© r   ú:/tmp/pip-unpacked-wheel-xc2j09cz/defusedxml/ElementTree.pyÚ_get_py3_cls$   s(    



r   c                   @   sB   e Zd Zedddddfdd„Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚDefusedXMLParserNFTc                 C   sŽ   t j| ||d� |tk	r4|r&tdƒ‚ntjdtd� || _|| _|| _	t
rR| j}n| j}| jrf| j|_| jr|| j|_| j|_| j	rŠ| j|_d S )N)ÚtargetÚencodingz#'html=True' is no longer supported.zW'html' keyword argument is no longer supported. Pass in arguments as keyword arguments.)Úcategory)r   Ú__init__Ú	_sentinelÚ	TypeErrorÚwarningsÚwarnÚDeprecationWarningÚ
forbid_dtdÚforbid_entitiesÚforbid_externalr	   ÚparserÚ_parserÚdefused_start_doctype_declÚStartDoctypeDeclHandlerÚdefused_entity_declÚEntityDeclHandlerÚdefused_unparsed_entity_declÚUnparsedEntityDeclHandlerÚ#defused_external_entity_ref_handlerÚExternalEntityRefHandler)ÚselfÚhtmlr   r    r(   r)   r*   r+   r   r   r   r"   P   s*    

ýzDefusedXMLParser.__init__c                 C   s   t |||ƒ‚d S ©N)r   )r5   ÚnameÚsysidÚpubidZhas_internal_subsetr   r   r   r-   v   s    z+DefusedXMLParser.defused_start_doctype_declc                 C   s   t ||||||ƒ‚d S r7   ©r   )r5   r8   Úis_parameter_entityÚvalueÚbaser9   r:   Únotation_namer   r   r   r/   y   s    z$DefusedXMLParser.defused_entity_declc                 C   s   t |d ||||ƒ‚d S r7   r;   )r5   r8   r>   r9   r:   r?   r   r   r   r1   ~   s    z-DefusedXMLParser.defused_unparsed_entity_declc                 C   s   t ||||ƒ‚d S r7   )r   )r5   Úcontextr>   r9   r:   r   r   r   r3   ‚   s    z4DefusedXMLParser.defused_external_entity_ref_handler)	Ú__name__Ú
__module__Ú__qualname__r#   r"   r-   r/   r1   r3   r   r   r   r   r   O   s   ù
&r   r   ÚXMLÚXMLParser
   ÚXMLTreeBuilderÚ
fromstringr   r   r   )"Ú__doc__Ú
__future__r   r   r   r%   Úxml.etree.ElementTreer   r   Z_TreeBuilderr   Ú_parser   Úcommonr	   r   r
   r   r   r   r   r   r   r   Ú
__origin__r   Úobjectr#   r   rF   rE   rG   rD   Ú__all__r   r   r   r   Ú<module>   sJ   
$
9   ÿ
÷