o
    òT·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r7d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 g d¢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|< z1t | ¡}W |t j| < |dur-|t j|< nt j |d¡ t jd }|durA||_n3t|dƒrH|`n+|t j| < |durX|t j|< nt j |d¡ t jd }|durl||_w t|dƒrs|`w |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ÚpopÚ	importlibÚimport_moduler   Úhasattrr
   r   r   )Ú	pymodnameÚcmodnameÚpymodÚcmodÚ
pure_pymodÚ	etree_pkgÚ
_XMLParserÚ
_iterparse© r!   úY/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/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ur|rtdƒ‚tjdtd� || _|| _|| _	t
r(| j}n| j}| jr2| j|_| jr=| j|_| j|_| j	rF| j|_d S 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/   r0   r1   r!   r!   r"   r(   P   s,   
ýÿzDefusedXMLParser.__init__c                 C   s   t |||ƒ‚©N)r   )r;   ÚnameÚsysidÚpubidÚhas_internal_subsetr!   r!   r"   r3   v   s   z+DefusedXMLParser.defused_start_doctype_declc                 C   s   t ||||||ƒ‚r=   ©r   )r;   r>   Úis_parameter_entityÚvalueÚbaser?   r@   Únotation_namer!   r!   r"   r5   y   s   z$DefusedXMLParser.defused_entity_declc                 C   s   t |d ||||ƒ‚r=   rB   )r;   r>   rE   r?   r@   rF   r!   r!   r"   r7   ~   s   z-DefusedXMLParser.defused_unparsed_entity_declc                 C   s   t ||||ƒ‚r=   )r   )r;   ÚcontextrE   r?   r@   r!   r!   r"   r9   ‚   s   z4DefusedXMLParser.defused_external_entity_ref_handler)	Ú__name__Ú
__module__Ú__qualname__r)   r(   r3   r5   r7   r9   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   Ú_TreeBuilderr   Ú_parser   Úcommonr	   r   r
   r   r   r    r   r   r   r   Ú
__origin__r#   Úobjectr)   r$   rM   rL   rN   rK   Ú__all__r!   r!   r!   r"   Ú<module>   s4   
$
9
ÿ