
    Ngp!                         d Z ddlmZ 	 ddlmZ ddlmZ n# e$ r ddlmZ ddl	mZ Y nw xY wdZ
e
dz   Ze
dz   Ze
dz   Zd	Z G d
 dej                  Z G d de          ZddZddZd ZddefdZddedf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__     O/var/www/html/ai-engine/env/lib/python3.11/site-packages/lxml/ElementInclude.pyr   r   K           Dr   r   c                       e Zd ZdS )LimitedRecursiveIncludeErrorNr   r   r   r   r   r   O   r   r   r   Nc                    t          | d          }|dk    r't          j        |                                          }n-|                                }|sd}|                    |          }|                                 |S )Nrbxmlutf-8)openr   parsegetrootreaddecodeclose)hrefr   encodingfiledatas        r   default_loaderr$   `   st    dD~~{4  ((**yy{{ 	H{{8$$JJLLLKr   c                 ,   |dk    r(t          j        | |                                          }ned| 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#   fs         r   _lxml_default_loaderr(   q   s    ~~{4((0022D==AAT4  Avvxx				 	H{{8$$Kr   c                      d fd	}|S )Nc                      | ||          S Nr   )r    r   r!   r&   loaders       r   loadz_wrap_et_loader.<locals>.load   s    vdE8,,,r   NNr   )r,   r-   s   ` r   _wrap_et_loaderr/      s&    - - - - - -Kr   c                 `   |d}n|dk     rt          d|z            |Xt          | d          r| }|                                 } n|                                 }t          |d          r|j        j        }n$t          | d          r|                                 } t          | |||           d S )Nr   z;expected non-negative depth or None for 'max_depth', got %rr   docinfo)
ValueErrorhasattrr   getroottreer2   URL_include)elemr,   base_url	max_depthtrees        r   r   r      s    			QVYbbccc4## 	&D<<>>DD##%%D4## 	(|'H	y	!	! ||~~T68Y/////r   c           	      &   |t          |          }nt          }|t                      }|                                 j        }t          |                     t                              }|D ]#}|j        t          k    rt          ||                    d                    }	|                    dd          }
|                                }|
dk    r|	|v rt          d|	z            |dk    rt          d|	z             ||	|
|          }|t          d|	d	|
          t          |||	|d
z
  |	h|z            }|j        r|j        pd|j        z   |_        ||c S |                    ||           |
dk    r ||	|
|                    d                    }|t          d|	d	|
          |                                }||j        pd|z   |_        n!||c S |j        pd|z   |j        pdz   |_        |                    |           t          d|
z            |j        t*          k    r?|                                }|'|j        t          k    rt          d|j        z            t          d|j        z            | S )Nr    r   r   z recursive include of %r detectedr   z5maximum xinclude depth reached when including file %s)r&   zcannot load z as     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(   setr5   r&   listiterXINCLUDE_ITER_TAGtagXINCLUDE_INCLUDEr   get	getparentr   r   r7   tailreplacegetpreviousr?   removeXINCLUDE_FALLBACK)r8   r,   r9   r:   _parent_hrefsload_includer&   include_elementser    r   parentnoder?   predecessors                  r   r7   r7      s   &v..+&F		#$$& &  4 45$$$8QUU6]]33DEE'5))E[[]]F~~=((+:TA   >>6ORVVX X X#|D%???<++26$$>    fdIMD6MCYZZ6 ;!%bAF :DI>KKKq$''''&#|D%!%%
:K:KLLL<++26$$>    mmoo*(3(8(>B$'FK$$^KKK#);#4""<""MFKa    '?%G   U'''[[]]F!fj4D&D&D'FN   $BQUJ   Kr   r+   r.   )__doc__lxmlr   urlparser   urllib2r   ImportErrorurllib.parseurllib.requestXINCLUDErE   rL   rC   DEFAULT_MAX_INCLUSION_DEPTHLxmlSyntaxErrorr   r   r$   r(   r/   r   r7   r   r   r   <module>r^      s  X       '       ' ' '$$$$$$&&&&&&&&'
 /i' z) sN    	 	 	 	 	- 	 	 		 	 	 	 	#4 	 	 	"
 
 
 
"   &  0 10 0 0 0( 2$D D D D D Ds    ++