U
    muf                   	   @   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re \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 )zPython 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-d6x4jz3i/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   
