509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ì0¨Zô  ã               @   s¼   d Z ddlmZ yddlmZ ddlmZ W n, ek
rX   ddlmZ ddl	mZ Y nX dZ
e
d Ze
d Ze
d ZG d	d
„ d
ejƒZddd„Zddd„Zdd„ Zddd„Zd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}ÚincludeZfallbackÚ*c               @   s   e Zd ZdS )ÚFatalIncludeErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú&/usr/lib64/python3.6/ElementInclude.pyr   G   s   r   Nc             C   sH   t | dƒ}|dkr"tj|ƒjƒ }n|jƒ }|s2d}|j|ƒ}|jƒ  |S )NÚrbÚxmlzutf-8)Úopenr   ÚparseÚgetrootÚreadÚdecodeÚclose)Úhrefr   ÚencodingÚfileÚdatar   r   r   Údefault_loaderW   s    

r   c             C   s\   |dkrt j| |ƒjƒ }n>d| kr,t| ƒ}n
t| dƒ}|jƒ }|jƒ  |sNd}|j|ƒ}|S )Nr   z://r   zutf-8)r   r   r   r   r   r   r   r   )r   r   r   Úparserr   Úfr   r   r   Ú_lxml_default_loaderg   s    


r   c                s   d‡ fdd„	}|S )Nc                s   ˆ | ||ƒS )Nr   )r   r   r   r   )Úloaderr   r   Úloadz   s    z_wrap_et_loader.<locals>.load)NNr   )r   r   r   )r   r   Ú_wrap_et_loadery   s    r   c             C   s`   |d kr<t | dƒr | }| jƒ } n| jƒ }t |dƒrN|jj}nt | dƒrN| jƒ } t| ||d� d S )Nr   Údocinfo)Úbase_url)Úhasattrr   Úgetroottreer    ZURLÚ_include)Úelemr   r!   Ztreer   r   r   r   �   s    




c             C   sú  |d k	rt |ƒ}nt}|d kr$tƒ }| jƒ j}t| jtƒƒ}�x¶|D �]¬}|jt	k�rªt
||jdƒƒ}|jddƒ}	|jƒ }
|	dk�r||kr˜td| ƒ‚|j|ƒ |||	|d�}|d krÈtd||	f ƒ‚t|||ƒ}|jrì|jpâd|j |_|
d krø|S |
j||ƒ n¢|	dk�rœ|||	|jd	ƒd
�}|d k�r>td||	f ƒ‚|jƒ }|d k	�rd|j�pZd| |_n,|
d k�rr|S |
j�p|d| |j�pŠd |
_|
j|ƒ ntd|	 ƒ‚qD|jtk�rä|jƒ }
|
d k	�rò|
jt	k�ròtd|j ƒ‚qDtd|j ƒ‚qDW | S )Nr   r   r   z recursive include of %r detected)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   ÚgetZ	getparentr   Úaddr$   ÚtailÚreplaceZgetpreviousr'   ÚremoveÚXINCLUDE_FALLBACK)r%   r   Z_parent_hrefsr!   Zload_includer   Zinclude_elementsÚer   r   ÚparentZnoder'   Zpredecessorr   r   r   r$   š   sd    








r$   )N)NN)NN)NNN)Ú__doc__Zlxmlr   Zurlparser   Zurllib2r   ÚImportErrorZurllib.parseZurllib.requestZXINCLUDEr-   r3   r+   ZLxmlSyntaxErrorr   r   r   r   r   r$   r   r   r   r   Ú<module>3   s"   


