o
    üÞhp!  ã                   @   sÜ   d Z ddlmZ zddlmZ ddlmZ W n ey+   ddlmZ ddl	mZ Y nw dZ
e
d Ze
d Ze
d Zd	ZG d
d„ dejƒZG dd„ deƒZddd„Zddd„Zdd„ Zddefdd„Zddedfdd„ZdS )a  
Limited XInclude support for the ElementTree package.

While lxml.etree has full support for XInclude (see
`etree.ElementTree.xinclude()`), this module provides a simpler, pure
Python, ElementTree compatible implementation that supports a simple
form of custom URL resolvers.
é    )Úetree)Úurljoin)Úurlopenz!{http://www.w3.org/2001/XInclude}ÚincludeÚfallbackÚ*é   c                   @   ó   e Zd ZdS )ÚFatalIncludeErrorN©Ú__name__Ú
__module__Ú__qualname__© r   r   úS/var/www/html/premium_crap/venv/lib/python3.10/site-packages/lxml/ElementInclude.pyr
   K   ó    r
   c                   @   r	   )ÚLimitedRecursiveIncludeErrorNr   r   r   r   r   r   O   r   r   Nc                 C   sH   t | dƒ}|dkrt |¡ ¡ }n| ¡ }|sd}| |¡}| ¡  |S )NÚrbÚxmlúutf-8)Úopenr   ÚparseÚgetrootÚreadÚdecodeÚclose)Úhrefr   ÚencodingÚfileÚdatar   r   r   Údefault_loader`   s   

r    c                 C   s^   |dkrt  | |¡ ¡ }|S d| v rt| ƒ}nt| dƒ}| ¡ }| ¡  |s(d}| |¡}|S )Nr   z://r   r   )r   r   r   r   r   r   r   r   )r   r   r   Úparserr   Úfr   r   r   Ú_lxml_default_loaderq   s   ÷


r#   c                    s   d‡ fdd„	}|S )Nc                    s   ˆ | ||ƒS ©Nr   )r   r   r   r!   ©Úloaderr   r   Úload…   s   z_wrap_et_loader.<locals>.load©NNr   )r&   r'   r   r%   r   Ú_wrap_et_loader„   s   r)   c                 C   s‚   |d u rd}n
|dk rt d| ƒ‚|d u r/t| dƒr!| }|  ¡ } n|  ¡ }t|dƒr.|jj}n	t| dƒr8|  ¡ } t| |||ƒ d S )Néÿÿÿÿr   z;expected non-negative depth or None for 'max_depth', got %rr   Údocinfo)Ú
ValueErrorÚhasattrr   Úgetroottreer+   ÚURLÚ_include)Úelemr&   Úbase_urlÚ	max_depthÚtreer   r   r   r   œ   s   


€
c                 C   sö  |d ur	t |ƒ}nt}|d u rtƒ }|  ¡ j}t|  t¡ƒ}|D ]Ø}|jt	krØt
|| d¡ƒ}	| dd¡}
| ¡ }|
dkrŒ|	|v rGtd|	 ƒ‚|dkrQtd|	 ƒ‚||	|
|d�}|d u rdtd|	|
f ƒ‚t|||	|d	 |	h|B ƒ}|jr}|jpxd
|j |_|d u r…|  S | ||¡ q |
dkrÒ||	|
| d¡d�}|d u r¦td|	|
f ƒ‚| ¡ }|d ur·|jp²d
| |_n|d u r¿|  S |jpÃd
| |jpÉd
 |_| |¡ q td|
 ƒ‚|jtkrò| ¡ }|d urñ|jt	krñtd|j ƒ‚q td|j ƒ‚| S )Nr   r   r   z recursive include of %r detectedr   z5maximum xinclude depth reached when including file %s)r!   zcannot load %r as %ré   Ú Útextr   )r   z)unknown parse type in xi:include tag (%r)z0xi:fallback tag must be child of xi:include (%r)z0Invalid element found in XInclude namespace (%r))r)   r#   Úsetr.   r!   ÚlistÚiterÚXINCLUDE_ITER_TAGÚtagÚXINCLUDE_INCLUDEr   ÚgetÚ	getparentr
   r   r0   ÚtailÚreplaceÚgetpreviousr7   ÚremoveÚXINCLUDE_FALLBACK)r1   r&   r2   r3   Ú_parent_hrefsÚload_includer!   Úinclude_elementsÚer   r   ÚparentÚnoder7   Úpredecessorr   r   r   r0   °   sz   

ÿ
ÿÿ
ÿ
ÿÿ
ÿ€ÿr0   r$   r(   )Ú__doc__Úlxmlr   Úurlparser   Úurllib2r   ÚImportErrorÚurllib.parseÚurllib.requestÚXINCLUDEr=   rD   r;   ÚDEFAULT_MAX_INCLUSION_DEPTHÚLxmlSyntaxErrorr
   r   r    r#   r)   r   r0   r   r   r   r   Ú<module>   s2   +	ý


ÿÿ