ž 7’Rec@sðddlmZmZmZyddlmZWnAek rsyddlmZWnek rneZYnXYnXddl Z e j Z ddl Z ddl m Z ddlmZddlmZe jd ƒZd d „ZeeƒZdS( i(uabsolute_importudivisionuunicode_literals(u OrderedDictN(u text_typei(u_basei(umoduleFactoryFactoryu {([^}]*)}(.*)cs>|}|jdƒj‰G‡fdd†dtjƒ}tƒS(NuasdcsP|EeZdZdZ‡fdd†Zdd„Zdd„Zdd „Zd S( u#getETreeBuilder..TreeWalkeruËGiven the particular ElementTree representation, this implementation, to avoid using recursion, returns "nodes" as tuples with the following content: 1. The current element 2. The index of the element relative to its parent 3. A stack of ancestor elements 4. A flag "text", "tail" or None to indicate if the current node is a text node; either the text or tail of the current element (1) c sát|tƒrL|\}}}}|d krCtjt||ƒfS|}nt|dƒsj|jƒ}n|jd krƒtjfS|jdkrºtj |j |j dƒ|j dƒfS|jˆkrÙtj |j fSt |jƒtkstt |jƒƒ‚tj|jƒ}|r0|jƒ\}}nd}|j}tƒ} xmt|jjƒƒD]V\} } tj| ƒ}|r¤| | |jd ƒ|jd ƒfupublicIdusystemIdii(utextutail(u DOCUMENT_ROOTuDOCUMENT_FRAGMENT(u isinstanceutupleu_baseuTEXTugetattruhasattrugetrootutaguDOCUMENTuDOCTYPEutextugetuCOMMENTutypeu text_typeuAssertionErroru tag_regexpumatchugroupsuNoneu OrderedDictulistuattribuitemsugroupuELEMENTulen( uselfunodeueltukeyuparentsuflagumatchu namespaceutaguattrsunameuvalue(uElementTreeCommentType(u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyugetNodeDetails)s8    *  "% u2getETreeBuilder..TreeWalker.getNodeDetailscSs t|tƒr$|\}}}}n|dgdf\}}}}|dkrRdS|jrk|||dfSt|ƒr˜|j|ƒ|dd|dfSdSdS(Nutextutaili(utextutail(u isinstanceutupleuNoneutextulenuappend(uselfunodeuelementukeyuparentsuflag((u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyu getFirstChildQs    u1getETreeBuilder..TreeWalker.getFirstChildcSsÏt|tƒr$|\}}}}ndS|dkrht|ƒra|j|ƒ|dd|dfSdSnc|jr|dkr|||dfS|t|dƒdkrÇ|d|d|d|dfSdSdS(Nutextiutailiiÿÿÿÿiÿÿÿÿ(u isinstanceutupleuNoneulenuappendutail(uselfunodeuelementukeyuparentsuflag((u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyugetNextSiblingbs    u2getETreeBuilder..TreeWalker.getNextSiblingcSsŽt|tƒr$|\}}}}ndS|dkrQ|s>|S|||dfSn9|jƒ}|sg|S|t|dƒj|ƒ|dfSdS(Nutextiiÿÿÿÿ(u isinstanceutupleuNoneupopulistuindex(uselfunodeuelementukeyuparentsuflaguparent((u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyu getParentNodevs  u1getETreeBuilder..TreeWalker.getParentNodeN(u__name__u __module__u __qualname__u__doc__ugetNodeDetailsu getFirstChildugetNextSiblingu getParentNode(u __locals__(uElementTreeCommentType(u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyu TreeWalkers  (  u TreeWalker(uCommentutagu_baseuNonRecursiveTreeWalkerulocals(uElementTreeImplementationu ElementTreeu TreeWalker((uElementTreeCommentTypeu?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyugetETreeBuildersmugetETreeBuilder(u __future__uabsolute_importudivisionuunicode_literalsu collectionsu OrderedDictu ImportErroru ordereddictudictugettextu_ureupip._vendor.sixu text_typeuu_baseuutilsumoduleFactoryFactoryucompileu tag_regexpugetETreeBuilderugetETreeModule(((u?/tmp/pip-zej_zi-build/pip/_vendor/html5lib/treewalkers/etree.pyus       s