
    h	                         d dl mZmZ d dlZd dlZd dlmc mZ ddl	m
Z
  G d de      Zd Z e       Z G d d	e      Z G d
 de      ZeZd Zd Z e       ZeseZd ZddZy)    )print_functionunicode_literalsN   )PY2c                       e Zd Zy)BadXMLN)__name__
__module____qualname__     C/jellyfin/media/venv/lib/python3.12/site-packages/copyparty/dxml.pyr   r   
   s    r   r   c                     d} d}t         j                  j                  |d       }|st        j                  S t         j                  j                  |       }d t         j                  |<   t        j                  |       }| |f||ffD ];  \  }}|r|t         j                  |<   t         j                  j                  |d        = |t         j                  d   _        t        j                  |_        |j                  S )Nzxml.etree.ElementTree_elementtreez	xml.etree)	sysmodulespopET	XMLParser	importlibimport_moduleElementTree
ParseError)pncncmodpmodretnamemods          r   get_ETr!      s    	 B	B;;??2t$D||;;??2DCKKO

!
!"
%C4j2t*- (	c #CKKKKOOD$'	( ,0CKK(]]CN==r   c                   $     e Zd Z fdZd Z xZS )_DXMLParserc                    t        j                         }t        t        |   |       t
        r| j                  n| j                  }| j                  |_	        | j                  |_
        | j                  |_        | j                  |_        y )N)target)r   TreeBuildersuper
DXMLParser__init__r   _parserparsernopeStartDoctypeDeclHandlerEntityDeclHandlerUnparsedEntityDeclHandlerExternalEntityRefHandler)selftbp	__class__s      r   r)   z_DXMLParser.__init__)   sb    ^^j$((3DLLT[[$(II!"ii&*ii#%)YY"r   c                 8    t        dj                  ||            )Nz{}, {})r   format)r1   akas      r   r,   z_DXMLParser.nope3   s    X__Q+,,r   )r	   r
   r   r)   r,   __classcell__)r4   s   @r   r#   r#   (   s    /-r   r#   c                       e Zd Zd Zy)_NGc                     t        d      )Nzdxml selftest failed)r   )r1   s    r   __int__z_NG.__int__8   s    +,,r   N)r	   r
   r   r=   r   r   r   r;   r;   7   s    -r   r;   c                 X    t               }|j                  |        |j                         S N)r(   feedclose)txtr+   s     r   	parse_xmlrC   ?   s!    \F
KK<<>r   c                      d} d}d}| ||fD ]0  }	 t        |       d}t        ||fz  t        j                          y y# t        $ r Y ?w xY w)NzD<!DOCTYPE d [
<!ENTITY a "nice_bakuretsu">
]>
<root>&a;&a;&a;</root>zK<!DOCTYPE d [
<!ENTITY a SYSTEM "file:///etc/hostname">
]>
<root>&a;</root>z*<!DOCTYPE d SYSTEM "a.dtd">
<root>a</root>z"WARNING: dxml selftest failed:
%s
)fileFT)rC   printr   stderrr   )qbeembdtdrB   ts        r   selftestrL   E   so    C
CC S# 	cN6A!sf*3::.   		s   ,A  	AAc                 >    t        j                  |       }||_        |S r?   )r   Elementtext)r   rO   els      r   mktnodrQ   g   s    	D	BBGIr   c                 V    t        j                  |       }||j                  |       |S r?   )r   rN   append)r   sub_elrP   s      r   mkenodrU   m   s'    	D	B
		&Ir   r?   )
__future__r   r   r   r   xml.etree.ElementTreeetreer   r   r)   r   	Exceptionr   r!   r   r#   r;   r(   rC   rL   DXML_OKrQ   rU   r   r   r   <module>r[      su    7  
 " " 	Y 	. X	-) --) -
 
: *Jr   