0{Y@sddlmZmZmZyddlmZWnAek rsyddlmZWnek rneZYnXYnXddl Z e j Z ddl Z ddl m Z ddlmZddlmZe jd Zd d ZeeZdS) )absolute_importdivisionunicode_literals) OrderedDictN) text_type)_base)moduleFactoryFactoryz {([^}]*)}(.*)cs>|}|jdjGfdddtj}tS)NZasdcsLeZdZdZfddZddZddZdd Zd S) z#getETreeBuilder..TreeWalkeraGiven 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 st|trL|\}}}}|d krCtjt||fS|}nt|dsj|j}n|jd krtjfS|jdkrtj |j |j d|j dfS|jkrtj |j fSt |jtkstt |jtj|j}|r0|j\}}nd}|j}t} xmt|jjD]V\} } tj| }|r| | |jd |jd fpublicIdsystemIdrr )ztextztail)rr) isinstancetuplerZTEXTgetattrhasattrgetrootr ZDOCUMENTZDOCTYPEr getCOMMENTtyperAssertionError tag_regexpmatchgroupsrlistattribitemsgroupZELEMENTlen) selfnodeeltkeyparentsflagr namespacer attrsnamevalue)ElementTreeCommentTypeA/tmp/pip-ok8sy_ze-build/pip/_vendor/html5lib/treewalkers/etree.pygetNodeDetails)s8    *  "% z2getETreeBuilder..TreeWalker.getNodeDetailscSst|tr$|\}}}}n|dgdf\}}}}|dkrRdS|jrk|||dfSt|r|j||dd|dfSdSdS)Nr r r)ztextztail)rrr r"append)r#r$elementr&r'r(r.r.r/ getFirstChildQs    z1getETreeBuilder..TreeWalker.getFirstChildcSst|tr$|\}}}}ndS|dkrht|ra|j||dd|dfSdSnc|jr|dkr|||dfS|t|ddkr|d|d|d|dfSdSdS)Nr rr rr4)rrr"r1r )r#r$r2r&r'r(r.r.r/getNextSiblingbs    z2getETreeBuilder..TreeWalker.getNextSiblingcSst|tr$|\}}}}ndS|dkrQ|s>|S|||dfSn9|j}|sg|S|t|dj||dfSdS)Nr rr4)rrpoprindex)r#r$r2r&r'r(parentr.r.r/ getParentNodevs  z1getETreeBuilder..TreeWalker.getParentNodeN)__name__ __module__ __qualname____doc__r0r3r5r9r.)r-r.r/ TreeWalkers (  r>)Commentr rZNonRecursiveTreeWalkerlocals)ZElementTreeImplementation ElementTreer>r.)r-r/getETreeBuildersmrB) __future__rrr collectionsr ImportErrorZ ordereddictdictgettext_reZpip._vendor.sixrrutilsr compilerrBgetETreeModuler.r.r.r/s       s