
    hp!                         S r SSKJr   SSKJr  SSKJr  Sr
\
S-   r\
S-   r\
S-   rS	r " S
 S\R                  5      r " S S\5      rSS jrSS jrS rSS\4S jrSS\S4S jrg! \ a    SSKJr  SSK	Jr   Nff = f)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                       \ rS rSrSrg)FatalIncludeErrorK    N__name__
__module____qualname____firstlineno____static_attributes__r       E/var/www/html/env/lib/python3.13/site-packages/lxml/ElementInclude.pyr   r   K       r   r   c                       \ rS rSrSrg)LimitedRecursiveIncludeErrorO   r   Nr   r   r   r   r   r   O   r   r   r   Nc                     [        U S5      nUS:X  a%  [        R                  " U5      R                  5       nO*UR	                  5       nU(       d  SnUR                  U5      nUR                  5         U$ )Nrbxmlutf-8)openr   parsegetrootreaddecodeclose)hrefr   encodingfiledatas        r   default_loaderr(   `   s[    dD~{{4 ((*yy{H{{8$JJLKr   c                    US:X  a&  [         R                  " X5      R                  5       nU$ SU ;   a  [        U 5      nO[	        U S5      nUR                  5       nUR                  5         U(       d  SnUR                  U5      nU$ )Nr   z://r   r   )r   r   r    r   r   r!   r#   r"   )r$   r   r%   parserr'   fs         r   _lxml_default_loaderr,   q   st    ~{{4(002 K D=AT4 Avvx		H{{8$Kr   c                    ^  SU 4S jjnU$ )Nc                    > T" XU5      $ Nr   )r$   r   r%   r*   loaders       r   load_wrap_et_loader.<locals>.load   s    d8,,r   NNr   )r0   r1   s   ` r   _wrap_et_loaderr4      s    -Kr   c                 P   Uc  SnOUS:  a  [        SU-  5      eUc\  [        U S5      (       a  U nU R                  5       n OU R                  5       n[        US5      (       a  UR                  R
                  nO![        U S5      (       a  U R                  5       n [        XX#5        g )Nr   z;expected non-negative depth or None for 'max_depth', got %rr    docinfo)
ValueErrorhasattrr    getroottreer7   URL_include)elemr0   base_url	max_depthtrees        r   r   r      s    		QVYbbcc4##D<<>D##%D4##||''H	y	!	!||~T8/r   c           	      .   Ub  [        U5      nO[        nUc
  [        5       nU R                  5       R                  n[        U R                  [        5      5      nU GH3  nUR                  [        :X  Ga  [        X(R                  S5      5      n	UR                  SS5      n
UR                  5       nU
S:X  a  X;   a  [        SU	-  5      eUS:X  a  [        SU	-  5      eU" XUS9nUc  [        SU	< S	U
< 35      e[        XXS
-
  U	1U-  5      nUR                   (       a'  UR                   =(       d    SUR                   -   Ul        Uc  Us  $ UR#                  X5        GM  U
S:X  a  U" XUR                  S5      S9nUc  [        SU	< S	U
< 35      eUR%                  5       nUb  UR                   =(       d    SU-   Ul        O:Uc  Us  $ UR&                  =(       d    SU-   UR                   =(       d    S-   Ul        UR)                  U5        GM  [        SU
-  5      eUR                  [*        :X  aE  UR                  5       nUb/  UR                  [        :w  a  [        SUR                  -  5      eGM  GM  [        SUR                  -  5      e   U $ )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))r4   r,   setr:   r*   listiterXINCLUDE_ITER_TAGtagXINCLUDE_INCLUDEr   get	getparentr   r   r<   tailreplacegetpreviousrD   removeXINCLUDE_FALLBACK)r=   r0   r>   r?   _parent_hrefsload_includer*   include_elementser$   r   parentnoderD   predecessors                  r   r<   r<      so   &v.+&&F		#$& 55$$8UU6]3DEE'5)E[[]F~(+:TA  >6ORVVX X#D?<+26>   dMD6MCYZ66!%bAFF :DI>Kq'&#D!%%
:KL<+26>   mmo*(3(8(8(>B$'FK$^K#);;#4""<""MFKa '?%G  UU''[[]F!fjj4D&D'FN  'E!
 $BQUUJ e j Kr   r/   r3   )__doc__lxmlr   urlparser   urllib2r   ImportErrorurllib.parseurllib.requestXINCLUDErJ   rQ   rH   DEFAULT_MAX_INCLUSION_DEPTHLxmlSyntaxErrorr   r   r(   r,   r4   r   r<   r   r   r   <module>rc      s   X '  /i' z) sN    	-- 		#4 	"
"&0 10( 2$Do  '$&'s   A( (A=<A=