ó â\e[c@`sddlmZmZmZddlmZddlZddlmZddl m Z ddl m Z ej d ƒZd „Ze eƒZdS( i(tabsolute_importtdivisiontunicode_literals(t OrderedDictN(t string_typesi(tbasei(tmoduleFactoryFactoryu {([^}]*)}(.*)c`s>|}|jdƒj‰dtjf‡fd†ƒY}tƒS(Nuasdt TreeWalkerc`s8eZdZ‡fd†Zd„Zd„Zd„ZRS(uË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|jt ƒstt|jƒƒ‚tj|jƒ}|r-|jƒ\}}nd}|j}tƒ}xmt|jjƒƒD]V\} } tj| ƒ}|r¡| ||jd ƒ|jd ƒfupublicIdusystemIdii(utextutail(u DOCUMENT_ROOTuDOCUMENT_FRAGMENT(t isinstancettupleRtTEXTtgetattrthasattrtgetrootttagtDOCUMENTtDOCTYPEttexttgettCOMMENTRtAssertionErrorttypet tag_regexptmatchtgroupstNoneRtlisttattribtitemstgrouptELEMENTtlen( tselftnodeteltt_tflagRt namespaceRtattrstnametvalue(tElementTreeCommentType(sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pytgetNodeDetails s8    '  "% cS`s t|tƒr$|\}}}}n|dgdf\}}}}|dkrRdS|jrk|||dfSt|ƒr˜|j|ƒ|dd|dfSdSdS(Nutextutaili(utextutail(RR RRRtappend(R R!telementtkeytparentsR$((sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pyt getFirstChildHs    cS`sÏt|tƒr$|\}}}}ndS|dkrht|ƒra|j|ƒ|dd|dfSdSnc|jr|dkr|||dfS|t|dƒdkrÇ|d|d|d|dfSdSdS(Nutextiutailiÿÿÿÿi(RR RRR+ttail(R R!R,R-R.R$((sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pytgetNextSiblingYs    cS`s³t|tƒr$|\}}}}ndS|dkrQ|s>|S|||dfSn^|jƒ}|sg|St|dƒj|ƒdksŒt‚|t|dƒj|ƒ|dfSdS(Nutextiÿÿÿÿi(RR RtpopRtcountRtindex(R R!R,R-R.R$tparent((sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pyt getParentNodems  %(t__name__t __module__t__doc__R*R/R1R6((R)(sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pyRs  (  (tCommentRRtNonRecursiveTreeWalkertlocals(tElementTreeImplementationt ElementTreeR((R)sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pytgetETreeBuildersn(t __future__RRRt collectionsRtretpip._vendor.sixRtRt_utilsRtcompileRR?tgetETreeModule(((sE/tmp/pip-install-0xiv62/pip/pip/_vendor/html5lib/treewalkers/etree.pyts  t