U o a@sddlmZmZmZddlmZddlmZddlm Z ddl m Z ddl m Z d d Z Gd d d eZGd ddeZGdddeZGdddeZGddde jZdS))absolute_importdivisionunicode_literals) text_type)etree) tag_regexp)base) _ihatexmlcCs*|dkr dSt|tr|S|ddSdS)Nasciistrict) isinstancerdecode)srlC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\html5lib\treewalkers\etree_lxml.py ensure_str s  rc@s,eZdZddZddZddZddZd S) RootcCs||_g|_z:|jjrD|jt|t|jjt|jjt|jj Wnt k rZYnXz | }Wnt k r|}YnX| dk r| }q|dk r|j|| }qd|_d|_dSN)Z elementtreechildrenZdocinfoZ internalDTDappendDoctyperZ root_name public_idZ system_urlAttributeErrorgetrootZ getpreviousgetnexttexttail)selfetnoderrr__init__s,          z Root.__init__cCs |j|Sr)rrkeyrrr __getitem__1szRoot.__getitem__cCsdSrrrrrrr4sz Root.getnextcCsdSNr rr&rrr__len__7sz 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&rrrrEszDoctype.getnextNr)r*r+r"rrrrrr;s rc@seZdZddZddZdS) FragmentRootcs$fdd|D_d__dS)Ncsg|]}t|qSr)FragmentWrapper).0childr&rr Ksz)FragmentRoot.__init__..)rrr)rrrr&rr"JszFragmentRoot.__init__cCsdSrrr&rrrrNszFragmentRoot.getnextNr/rrrrr0Isr0c@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_rootr5rrrr"Ss  zFragmentWrapper.__init__cCs t|j|Sr)getattrr5)rr-rrr __getattr___szFragmentWrapper.__getattr__cCs6|jj}||}|t|dkr.||dSdSdSr')r,rindexlen)rZsiblingsidxrrrrbs   zFragmentWrapper.getnextcCs |j|Sr)r5r#rrrr%jszFragmentWrapper.__getitem__cCs t|jSr)boolr5r&rrr__bool__mszFragmentWrapper.__bool__cCsdSrrr&rrr getparentpszFragmentWrapper.getparentcCs t|jSrstrr5r&rrr__str__sszFragmentWrapper.__str__cCs t|jSrr?r&rrr __unicode__vszFragmentWrapper.__unicode__cCs t|jSr)r:r5r&rrrr(yszFragmentWrapper.__len__N) r)r*r+r"r8rr%r=r>rArBr(rrrrr1Rs r1c@s4eZdZddZddZddZddZd d Zd S) TreeWalkercCsJt|trt||_t|}nt|_t|}tj||t |_ dSr) rlistsetfragmentChildrenr0rr NonRecursiveTreeWalkerr"r Z InfosetFilterfilter)rtreerrrr"~s   zTreeWalker.__init__c Cst|tr:|\}}|dks&td|tjtt||fSt|trLtjfSt|t rjtj |j |j |j fSt|trt|dstjt|jfS|jtjkrtjt|jfS|jtjkrtjt|jddfStt|j}|r|\}}nd}t|j}i}t|jD]P\}}t|}t|}t|}|rT|||d|df<n ||d|f<qtj||j !||t"|dkp|jfSdS)Nrr%Text nodes are text or tail, found %stagr rr)#rtupleAssertionErrorr ZTEXTrr7rZDOCUMENTrZDOCTYPEr-rr.r1r6r5rLrCommentCOMMENTrEntityZENTITYrmatchgroupsrDattribitemsgroupZELEMENTrHZ fromXmlNamer:) rr!r$rS namespacerLattrsr-valuerrrgetNodeDetailss>       zTreeWalker.getNodeDetailscCsBt|trtdt|s(|js(td|jr6|dfS|dSdS)NzText nodes have no childrenzNode has no childrenrr)rrNrOr:r)rr!rrr getFirstChilds zTreeWalker.getFirstChildcCsbt|trL|\}}|dks&td||dkrDt|r>|dSdSn|S|jrZ|dfS|S)NrJrKrrr)rrNrOr:rrrr!r$rrrgetNextSiblings zTreeWalker.getNextSiblingcCsJt|tr4|\}}|dks&td||dkrB|Sn||jkrBdS|S)NrJrKr)rrNrOrFr>r]rrr getParentNodes  zTreeWalker.getParentNodeN)r)r*r+r"r[r\r^r_rrrrrC}s  ) rCN) __future__rrrZpip._vendor.sixrlxmlrZtreebuilders.etreerr r robjectrrr0r1rGrCrrrrs      & +