o ù7]hÇã@sjddlmZmZmZddlmZddlZddlmZddl m Z ddl m Z e  d ¡Zd d „Ze eƒZdS) é)Úabsolute_importÚdivisionÚunicode_literals)Ú OrderedDictN)Ú string_typesé)Úbaseé)ÚmoduleFactoryFactoryz {([^}]*)}(.*)cs,|}| d¡j‰G‡fdd„dtjƒ}tƒS)NÚasdcs4eZdZdZ‡fdd„Zdd„Zdd„Zdd „Zd S) z#getETreeBuilder..TreeWalkeraË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ƒr|\}}}}|dvrtjt||ƒfS|}t|dƒs"| ¡}|jdvr+tjfS|jdkr>tj |j |  d¡|  d¡fS|jˆkrItj |j fSt|jt ƒsVJt|jƒƒ‚t |j¡}|re| ¡\}}nd}|j}tƒ}t|j ¡ƒD]\} } t | ¡}|rŒ| || d¡| d¡f<qt| |d| f<qttj|||t|ƒpž|j fS) N©ÚtextÚtailÚtag)Ú DOCUMENT_ROOTÚDOCUMENT_FRAGMENTz ÚpublicIdÚsystemIdrr )Ú isinstanceÚtuplerÚTEXTÚgetattrÚhasattrÚgetrootrÚDOCUMENTÚDOCTYPEr ÚgetÚCOMMENTrÚtypeÚ tag_regexpÚmatchÚgroupsrÚlistÚattribÚitemsÚgroupÚELEMENTÚlen) ÚselfÚnodeÚeltÚ_Úflagr Ú namespacerÚattrsÚnameÚvalue©ÚElementTreeCommentType©úH/usr/lib/python3/dist-packages/pip/_vendor/html5lib/treewalkers/etree.pyÚgetNodeDetails s<     ÿ    ÿz2getETreeBuilder..TreeWalker.getNodeDetailscSspt|tƒr |\}}}}n |dgdf\}}}}|dvrdS|jr%|||dfSt|ƒr6| |¡|dd|dfSdS)Nr r r)rrr r'Úappend©r(r)ÚelementÚkeyÚparentsr,r3r3r4Ú getFirstChildHs   z1getETreeBuilder..TreeWalker.getFirstChildcSs˜t|tƒr |\}}}}ndS|dkr%t|ƒr#| |¡|dd|dfSdS|jr2|dkr2|||dfS|t|dƒdkrJ|d|d|d|dfSdS)Nr rréÿÿÿÿr)rrr'r6rr7r3r3r4ÚgetNextSiblingYs   z2getETreeBuilder..TreeWalker.getNextSiblingcSs|t|tƒr |\}}}}ndS|dkr|s|S|||dfS| ¡}|s$|St|dƒ |¡dks1J‚|t|dƒ |¡|dfS)Nr r<r)rrÚpopr"ÚcountÚindex)r(r)r8r9r:r,Úparentr3r3r4Ú getParentNodems  z1getETreeBuilder..TreeWalker.getParentNodeN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r5r;r=rBr3r1r3r4Ú TreeWalkers  ( rG)ÚCommentrrÚNonRecursiveTreeWalkerÚlocals)ÚElementTreeImplementationÚ ElementTreerGr3r1r4ÚgetETreeBuilders nrM)Ú __future__rrrÚ collectionsrÚreÚpip._vendor.sixrÚrÚ_utilsr ÚcompilerrMÚgetETreeModuler3r3r3r4Ús      u