a lj@sddlmZmZmZddlmZddlmZddlm Z ddl m Z ddl m Z dd l mZd d ZGd d d eZGdddeZGdddeZGdddeZGddde jZdS))absolute_importdivisionunicode_literals) text_type) OrderedDict)etree) tag_regexp)base) _ihatexmlcCs*|dur dSt|tr|S|ddSdS)Nasciistrict) isinstancerdecode)srO/usr/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py ensure_strs  rc@s,eZdZddZddZddZddZd S) RootcCs||_g|_z:|jjrD|jt|t|jjt|jjt|jj Wnt yXYn0z | }Wnt y||}Yn0| dur| }q~|dur|j|| }qd|_d|_dSN)Z elementtreechildrenZdocinfoZ internalDTDappendDoctyperZ root_name public_idZ system_urlAttributeErrorZgetrootZ getpreviousgetnexttexttail)selfetnoderrr__init__s,            z Root.__init__cCs |j|Sr)rrkeyrrr __getitem__3szRoot.__getitem__cCsdSrrrrrrr6sz Root.getnextcCsdSNr rr&rrr__len__9sz Root.__len__N)__name__ __module__ __qualname__r"r%rr(rrrrrsrc@seZdZddZddZdS)rcCs(||_||_||_||_d|_d|_dSr) root_nodenamer system_idrr)rr,r-rr.rrrr">s zDoctype.__init__cCs |jjdSr')r,rr&rrrrGszDoctype.getnextNr)r*r+r"rrrrrr=s rc@seZdZddZddZdS) FragmentRootcs$fdd|D_d__dS)Ncsg|]}t|qSr)FragmentWrapper).0childr&rr Mz)FragmentRoot.__init__..)rrr)rrrr&rr"LszFragmentRoot.__init__cCsdSrrr&rrrrPszFragmentRoot.getnextNr/rrrrr0Ksr0c@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)r1cCsT||_||_t|jdr(t|jj|_nd|_t|jdrJt|jj|_nd|_dS)Nrr)r,objhasattrrrr)rZ fragment_rootr6rrrr"Us  zFragmentWrapper.__init__cCs t|j|Sr)getattrr6)rr-rrr __getattr__aszFragmentWrapper.__getattr__cCs6|jj}||}|t|dkr.||dSdSdSr')r,rindexlen)rZsiblingsidxrrrrds   zFragmentWrapper.getnextcCs |j|Sr)r6r#rrrr%lszFragmentWrapper.__getitem__cCs t|jSr)boolr6r&rrr__bool__oszFragmentWrapper.__bool__cCsdSrrr&rrr getparentrszFragmentWrapper.getparentcCs t|jSrstrr6r&rrr__str__uszFragmentWrapper.__str__cCs t|jSrr@r&rrr __unicode__xszFragmentWrapper.__unicode__cCs t|jSr)r;r6r&rrrr({szFragmentWrapper.__len__N) r)r*r+r"r9rr%r>r?rBrCr(rrrrr1Ts r1c@s4eZdZddZddZddZddZd d Zd S) TreeWalkercCsJt|trt||_t|}nt|_t|}tj||t |_ dSr) rlistsetfragmentChildrenr0rr NonRecursiveTreeWalkerr"r Z InfosetFilterfilter)rZtreerrrr"s   zTreeWalker.__init__c Cst|tr:|\}}|dvs&Jd|tjtt||fSt|trLtjfSt|trjtj |j |j |j fSt|t rt|dstjt|jfS|jtjkrtjt|jfS|jtjkrtjt|jddfStt|j}|r|\}}nd}t|j}t}t|jD]P\}}t|}t|}t|}|rV|||d|df<n ||d|f<qtj||j !||t"|dkp|jfSdS)Nrr%Text nodes are text or tail, found %stagr rr)#rtupler ZTEXTrr8rZDOCUMENTrZDOCTYPEr-rr.r1r7r6rLrCommentCOMMENTrZEntityZENTITYr matchgroupsrrEZattribitemsgroupZELEMENTrIZ fromXmlNamer;) rr!r$rQ namespacerLattrsr-valuerrrgetNodeDetailss<       zTreeWalker.getNodeDetailscCsBt|trJdt|s(|js(Jd|jr6|dfS|dSdS)NzText nodes have no childrenzNode has no childrenrr)rrNr;r)rr!rrr getFirstChilds zTreeWalker.getFirstChildcCsbt|trL|\}}|dvs&Jd||dkrDt|r>|dSdSn|S|jrZ|dfS|S)NrJrKrrr)rrNr;rrrr!r$rrrgetNextSiblings zTreeWalker.getNextSiblingcCsJt|tr4|\}}|dvs&Jd||dkrB|Sn||jvrBdS|S)NrJrKr)rrNrGr?rZrrr getParentNodes  zTreeWalker.getParentNodeN)r)r*r+r"rXrYr[r\rrrrrDs  ) rDN)Z __future__rrrZpip._vendor.sixr collectionsrZlxmlrZtreebuilders.etreer r r robjectrrr0r1rHrDrrrrs       & +