o
    éT•jâ  ã                   @   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 )Néÿÿÿÿr   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 r�td||f ƒ‚|jr—|
|j7 }
|r¨| |d  }	|	jp£d	|
 |	_n| jp¬d	|
 | _| |= qtd| ƒ‚|jtkrÆt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

ÿ