o
    p¨Êh¶  ã                   @   sî   d Z ddlmZm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 er-ddlZndd	lmZ 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rYeƒ \ZZZG dd„ deƒZe 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)ÚTreeBuilder)Úparse)Útostringé   )ÚPY3)Ú	XMLParser)Ú	iterparse)Ú
ParseError)ÚDTDForbiddenÚEntitiesForbiddenÚExternalReferenceForbiddenÚ_generate_etree_functionsúxml.etree.ElementTreec                  C   s~   d} d}t j | d¡}t j |d¡}dt j|< t | ¡}|dur&|t j|< nt j |¡ |t j| < |j}|j}|j}|||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   Ú_elementtreeN)ÚsysÚmodulesÚpopÚ	importlibÚimport_moduler	   r
   r   )Ú	pymodnameÚcmodnameÚpymodÚcmodÚ
pure_pymodÚ
_XMLParserÚ
_iterparser   © r   úH/var/www/html/env/lib/python3.10/site-packages/defusedxml/ElementTree.pyÚ_get_py3_cls    s   



r    c                   @   s<   e Zd Z			ddd„Zdd„ Zd	d
„ Zdd„ Zdd„ ZdS )ÚDefusedXMLParserr   NFTc                 C   sn   t  | |||¡ || _|| _|| _tr| j}n| j}| jr!| j|_	| jr,| j
|_| j|_| jr5| j|_d S d S ©N)r   Ú__init__Ú
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ÚhtmlÚtargetÚencodingr$   r%   r&   r'   r   r   r   r#   @   s   ÿzDefusedXMLParser.__init__c                 C   s   t |||ƒ‚r"   )r   )r1   ÚnameÚsysidÚpubidÚhas_internal_subsetr   r   r   r)   T   s   z+DefusedXMLParser.defused_start_doctype_declc                 C   s   t ||||||ƒ‚r"   ©r   )r1   r5   Úis_parameter_entityÚvalueÚbaser6   r7   Únotation_namer   r   r   r+   X   s   z$DefusedXMLParser.defused_entity_declc                 C   s   t |d ||||ƒ‚r"   r9   )r1   r5   r<   r6   r7   r=   r   r   r   r-   \   s   z-DefusedXMLParser.defused_unparsed_entity_declc                 C   s   t ||||ƒ‚r"   )r   )r1   Úcontextr<   r6   r7   r   r   r   r/   a   s   z4DefusedXMLParser.defused_external_entity_ref_handler)r   NNFTT)Ú__name__Ú
__module__Ú__qualname__r#   r)   r+   r-   r/   r   r   r   r   r!   >   s    
þr!   )ÚXMLÚXMLParseÚXMLTreeBuilderÚ
fromstringr
   r   r   )Ú__doc__Ú
__future__r   r   r   Úxml.etree.ElementTreer   Ú_TreeBuilderr   Ú_parser   Úcommonr   r   r	   r   r
   r   r   r   r   r   r   Ú
__origin__r    r!   rD   rC   rE   rB   Ú__all__r   r   r   r   Ú<module>   s2   
)
þ