o
    òT·jÄ  ã                   @   sœ   d Z ddlZddlZejd dkZeejjdƒse	dƒ‚G dd„ de
ƒZG dd	„ d	eƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ ZdS )z1Common constants, exceptions and helpe functions
é    Né   ÚParserCreateÚpyexpatc                   @   s   e Zd ZdZdd„ ZdS )ÚDefusedXmlExceptionzBase exceptionc                 C   s   t | ƒS ©N)Ústr)Úself© r	   úT/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/defusedxml/common.pyÚ__repr__   s   zDefusedXmlException.__repr__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r	   r	   r	   r
   r      s    r   c                       ó(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )ÚDTDForbiddenz%Document type definition is forbiddenc                    s$   t t| ƒ ¡  || _|| _|| _d S r   )Úsuperr   Ú__init__ÚnameÚsysidÚpubid)r   r   r   r   ©Ú	__class__r	   r
   r      s   
zDTDForbidden.__init__c                 C   ó   d}|  | j| j| j¡S )Nz7DTDForbidden(name='{}', system_id={!r}, public_id={!r})©Úformatr   r   r   ©r   Útplr	   r	   r
   Ú__str__"   ó   zDTDForbidden.__str__©r   r   r   r   r   r   Ú__classcell__r	   r	   r   r
   r      s    r   c                       r   )ÚEntitiesForbiddenzEntity definition is forbiddenc                    s6   t t| ƒ ¡  || _|| _|| _|| _|| _|| _d S r   )	r   r"   r   r   ÚvalueÚbaser   r   Únotation_name)r   r   r#   r$   r   r   r%   r   r	   r
   r   *   s   
zEntitiesForbidden.__init__c                 C   r   )Nz<EntitiesForbidden(name='{}', system_id={!r}, public_id={!r})r   r   r	   r	   r
   r   3   r   zEntitiesForbidden.__str__r    r	   r	   r   r
   r"   '   s    	r"   c                       r   )ÚExternalReferenceForbiddenz,Resolving an external reference is forbiddenc                    s*   t t| ƒ ¡  || _|| _|| _|| _d S r   )r   r&   r   Úcontextr$   r   r   )r   r'   r$   r   r   r   r	   r
   r   ;   s
   
z#ExternalReferenceForbidden.__init__c                 C   s   d}|  | j| j¡S )Nz8ExternalReferenceForbidden(system_id='{}', public_id={}))r   r   r   r   r	   r	   r
   r   B   s   z"ExternalReferenceForbidden.__str__r    r	   r	   r   r
   r&   8   s    r&   c                   @   s   e Zd ZdZdS )ÚNotSupportedErrorzThe operation is not supportedN)r   r   r   r   r	   r	   r	   r
   r(   G   s    r(   c                 C   sz   | t j| j u s
J ‚| j}t|i i dgƒ t j| }tt|ƒƒ}t| ƒ ¡ D ]\}}| 	d¡s3||vr4q&t
|||ƒ q&|S )NÚ*Ú_)ÚsysÚmodulesr   Ú
__origin__Ú
__import__ÚsetÚdirÚvarsÚitemsÚ
startswithÚsetattr)Údefused_modÚstdlib_nameÚ
stdlib_modÚstdlib_namesr   Úobjr	   r	   r
   Ú_apply_defusingK   s   
r:   c                    sH   d
‡ ‡‡fdd„	}					d‡ ‡‡fdd„	}d‡ ‡fdd	„	}|||fS )zdFactory for functions needed by etree, dependent on whether
    cElementTree or ElementTree is used.NFTc                    s$   |d u rˆ ˆƒ |||d�}ˆ| |ƒS ©N)ÚtargetÚ
forbid_dtdÚforbid_entitiesÚforbid_externalr	   )ÚsourceÚparserr=   r>   r?   )ÚDefusedXMLParserÚ_TreeBuilderÚ_parser	   r
   Úparse\   s   ü
z(_generate_etree_functions.<locals>.parsec                    s&   |d u rˆ ˆƒ |||d�}ˆ| ||ƒS r;   r	   )r@   ÚeventsrA   r=   r>   r?   )rB   rC   Ú
_iterparser	   r
   Ú	iterparsef   s   üz,_generate_etree_functions.<locals>.iterparsec                    s$   ˆ ˆƒ |||d�}|  | ¡ | ¡ S r;   )ÚfeedÚclose)Útextr=   r>   r?   rA   )rB   rC   r	   r
   Ú
fromstringw   s   ü
z-_generate_etree_functions.<locals>.fromstring)NFTT)NNFTT)FTTr	   )rB   rC   rD   rG   rE   rH   rL   r	   )rB   rC   rG   rD   r
   Ú_generate_etree_functionsX   s   ú

rM   )r   r+   Úxml.parsers.expatÚxmlÚversion_infoÚPY3ÚhasattrÚparsersÚexpatÚImportErrorÚ
ValueErrorr   r   r"   r&   r(   r:   rM   r	   r	   r	   r
   Ú<module>   s   