
    f                         d Z ddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZmZ dZ G d d	e      Z G d
 dee      ZddZ	 ddZy)zDefused xml.dom.expatbuilder
    )print_functionabsolute_import)ExpatBuilder)
Namespaces   )DTDForbiddenEntitiesForbiddenExternalReferenceForbiddenzxml.dom.expatbuilderc                   8    e Zd ZdZ	 d	dZd Zd Zd Zd Zd Z	y)
DefusedExpatBuilderzDefused document builderNc                 Z    t        j                  | |       || _        || _        || _        y N)_ExpatBuilder__init__
forbid_dtdforbid_entitiesforbid_external)selfoptionsr   r   r   s        R/var/www/cvtools/html/venv/lib/python3.12/site-packages/defusedxml/expatbuilder.pyr   zDefusedExpatBuilder.__init__   s+     	tW-$..    c                     t        |||      r   )r   )r   namesysidpubidhas_internal_subsets        r   defused_start_doctype_declz.DefusedExpatBuilder.defused_start_doctype_decl   s    4..r   c                 "    t        ||||||      r   r	   )r   r   is_parameter_entityvaluebaser   r   notation_names           r   defused_entity_declz'DefusedExpatBuilder.defused_entity_decl    s      eT5%OOr   c                 "    t        |d ||||      r   r   )r   r   r"   r   r   r#   s         r   defused_unparsed_entity_declz0DefusedExpatBuilder.defused_unparsed_entity_decl%   s    dD%NNr   c                     t        ||||      r   )r
   )r   contextr"   r   r   s        r   #defused_external_entity_ref_handlerz7DefusedExpatBuilder.defused_external_entity_ref_handler)   s    ($uEEr   c                    t        j                  | |       | j                  r| j                  |_        | j
                  r"| j                  |_        | j                  |_	        | j                  r| j                  |_        y y r   )r   installr   r   StartDoctypeDeclHandlerr   r$   EntityDeclHandlerr&   UnparsedEntityDeclHandlerr   r)   ExternalEntityRefHandlerr   parsers     r   r+   zDefusedExpatBuilder.install,   sh    dF+??-1-L-LF*'+'?'?F$/3/P/PF,.2.V.VF+  r   )NFTT)
__name__
__module____qualname____doc__r   r   r$   r&   r)   r+    r   r   r   r      s.    " UY//P
OF
Wr   r   c                       e Zd ZdZd Zd Zy)DefusedExpatBuilderNSz2Defused document builder that supports namespaces.c                     t         j                  | |       | j                  j                  r| j                  |_        y y r   )r   r+   _optionsnamespace_declarationsstart_namespace_decl_handlerStartNamespaceDeclHandlerr0   s     r   r+   zDefusedExpatBuilderNS.install<   s2    ##D&1==///3/P/PF, 0r   c                 N    t         j                  |        | j                          y r   )r   reset_initNamespaces)r   s    r   r?   zDefusedExpatBuilderNS.resetA   s    !!$'r   N)r2   r3   r4   r5   r+   r?   r6   r   r   r8   r8   9   s    <Q
r   r8   c                    |rt         }nt        } ||||      }t        | t              r0t	        | d      }	 |j                  |      }|j                          |S |j                  |       }|S # |j                          w xY w)z{Parse a document, returning the resulting Document node.

    'file' may be either a file name or an open file object.
    r   r   r   rb)r8   r   
isinstancestropen	parseFileclose)	file
namespacesr   r   r   build_builderbuilderfpresults	            r   parserO   F   s    
 -+P_G $$	&&r*FHHJ M ""4(M HHJs   A. .B c                 X    |rt         }nt        } ||||      }|j                  |       S )zOParse a document from a string, returning the resulting
    Document node.
    rB   )r8   r   parseString)stringrJ   r   r   r   rK   rL   s          r   rQ   rQ   ^   s6     -+P_G v&&r   N)TFTT)r5   
__future__r   r   xml.dom.expatbuilderr   r   r   _Namespacescommonr   r	   r
   
__origin__r   r8   rO   rQ   r6   r   r   <module>rX      sM    6 > : O O#
$W- $WN
K)< 
2 VZ'r   