B o«µ]p!ã@sÞdZddlmZyddlmZddlmZWn,ek rXddlmZddl mZYnXdZ e dZ e dZ e dZ d ZGd d „d ejƒZGd d „d eƒZddd„Zddd„Zdd„Zddefdd„Zddedfdd„ZdS)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}ÚincludeZfallbackÚ*éc@s eZdZdS)ÚFatalIncludeErrorN)Ú__name__Ú __module__Ú __qualname__©r r úF/opt/alt/python37/lib64/python3.7/site-packages/lxml/ElementInclude.pyrKsrc@s eZdZdS)ÚLimitedRecursiveIncludeErrorN)r r r r r r r rOsrNcCsHt|dƒ}|dkr"t |¡ ¡}n| ¡}|s2d}| |¡}| ¡|S)NÚrbÚxmlzutf-8)ÚopenrÚparseÚgetrootÚreadÚdecodeÚclose)ÚhrefrÚencodingÚfileÚdatar r r Údefault_loader`s  rcCs\|dkrt ||¡ ¡}n>d|kr,t|ƒ}n t|dƒ}| ¡}| ¡|sNd}| |¡}|S)Nrz://rzutf-8)rrrrrrrr)rrrÚparserrÚfr r r Ú_lxml_default_loaderqs   rcsd‡fdd„ }|S)Ncs ˆ|||ƒS)Nr )rrrr)Úloaderr r Úload…sz_wrap_et_loader..load)NNr )rr r )rr Ú_wrap_et_loader„sr!cCs‚|dkrd}n|dkr"td|ƒ‚|dkr^t|dƒrB|}| ¡}n| ¡}t|dƒrp|jj}nt|dƒrp| ¡}t||||ƒdS)Néÿÿÿÿrz;expected non-negative depth or None for 'max_depth', got %rrÚdocinfo)Ú ValueErrorÚhasattrrÚ getroottreer#ZURLÚ_include)ÚelemrÚbase_urlÚ max_depthZtreer r r rœs      cCs|dk rt|ƒ}nt}|dkr$tƒ}| ¡j}t| t¡ƒ}�xÒ|D�]È}|jt k�rÆt ||  d¡ƒ} |  dd¡} |  ¡} | dk�r"| |kr˜t d| ƒ‚|dkr¬td| ƒ‚|| | |d�} | dkrÒt d| | fƒ‚t| || |d | h|Bƒ} |j�r| jpüd |j| _| dk�r| S|  || ¡n¢| d k�r¸|| | |  d ¡d �} | dk�rZt d| | fƒ‚| ¡}|dk �r€|j�pvd | |_n,| dk�rŽ| S| j�p˜d | |j�p¦d | _|  |¡n t d| ƒ‚qD|jtk�r|  ¡} | dk �r| jt k�rt d|jƒ‚qDt d|jƒ‚qDW|S)Nrrrz recursive include of %r detectedrz5maximum xinclude depth reached when including file %s)rzcannot load %r as %réÚÚtextr)rz)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 getparentrrr'ÚtailÚreplaceZ getpreviousr-ÚremoveÚXINCLUDE_FALLBACK)r(rr)r*Z _parent_hrefsZ load_includerZinclude_elementsÚerrÚparentZnoder-Z predecessorr r r r'°sh                r')N)NN)Ú__doc__ZlxmlrZurlparserZurllib2rÚ ImportErrorZ urllib.parseZurllib.requestZXINCLUDEr3r8r1ZDEFAULT_MAX_INCLUSION_DEPTHZLxmlSyntaxErrorrrrrr!rr'r r r r Ú3s*