o
    tf                     @   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	   Z/var/www/html/software/conda/envs/catlas/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   Z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)Zdefused_modZstdlib_nameZ
stdlib_modZstdlib_namesr   objr	   r	   r
   _apply_defusingK   s   
r5   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parserr8   r9   r:   )DefusedXMLParser_TreeBuilder_parser	   r
   parse\   s   
z(_generate_etree_functions.<locals>.parsec                    s&   |d u r  |||d}| ||S r6   r	   )r;   eventsr<   r8   r9   r:   )r=   r>   
_iterparser	   r
   	iterparsef   s   z,_generate_etree_functions.<locals>.iterparsec                    s$     |||d}| |  | S r6   )feedclose)textr8   r9   r:   r<   )r=   r>   r	   r
   
fromstringw   s   
z-_generate_etree_functions.<locals>.fromstring)NFTT)NNFTT)FTTr	   )r=   r>   r?   rB   r@   rC   rG   r	   )r=   r>   rB   r?   r
   _generate_etree_functionsX   s   

rH   )r   r*   Zxml.parsers.expatxmlversion_infoPY3hasattrparsersexpatImportError
ValueErrorr   r   r!   r%   r'   r5   rH   r	   r	   r	   r
   <module>   s   