o
    f                     @   s~   d dl Z ddlmZ d dlmZ dZed Zed ZdZG d	d
 d
e	Z
G dd de
ZdddZddefddZdd ZdS )    N   )ElementTree)urljoinz!{http://www.w3.org/2001/XInclude}includefallback   c                   @      e Zd ZdS )FatalIncludeErrorN__name__
__module____qualname__ r   r   //usr/lib/python3.10/xml/etree/ElementInclude.pyr	   C       r	   c                   @   r   )LimitedRecursiveIncludeErrorNr
   r   r   r   r   r   G   r   r   c                 C   s   |dkr#t | d}t| }W d    |S 1 sw   Y  |S |s'd}t | d|d}| }W d    |S 1 s>w   Y  |S )NxmlrbzUTF-8r)encoding)openr   parsegetrootread)hrefr   r   filedatar   r   r   default_loaderW   s   


r   c                 C   sV   |d u rd}n
|dk rt d| t| dr|  } |d u r t}t| |||t  d S )Nr   z;expected non-negative depth or None for 'max_depth', got %rr   )
ValueErrorhasattrr   r   _includeset)elemloaderbase_url	max_depthr   r   r   r   t   s   
c                 C   s  d}|t | k r| | }|jtkr|d}|rt||}|dd}|dkrv||v r1td| |dkr;td| || |||}	|	d u rQtd||f t|	}	t	|	|||d | |
| |jrq|	jpld	|j |	_|	| |< nX|d
kr||||d}
|
d u rtd||f |jr|
|j7 }
|r| |d  }	|	jpd	|
 |	_n| jpd	|
 | _| |= qtd| |jtkrtd|j t	||||| |d7 }|t | k sd S d S )Nr   r   r   r   zrecursive include of %sz5maximum xinclude depth reached when including file %szcannot load %r as %rr    textr   z)unknown parse type in xi:include tag (%r)z0xi:fallback tag must be child of xi:include (%r))lentagXINCLUDE_INCLUDEgetr   r	   r   addcopyr!   removetailr(   XINCLUDE_FALLBACK)r#   r$   r%   r&   _parent_hrefsier   r   noder(   r   r   r   r!      sf   











r!   )N)r.   r'   r   urllib.parser   XINCLUDEr+   r1   DEFAULT_MAX_INCLUSION_DEPTHSyntaxErrorr	   r   r   r   r!   r   r   r   r   <module>   s   2

