0{Y@sddlmZmZmZddlmZmZddlZejZddl m Z e j Z e j Ze jZe jZe jZe jZdZddlmZmZdjeZd d d Zd d ZGdddeZGdddeZ dS))absolute_importdivisionunicode_literals) text_type string_typesN)Nodez <#UNKNOWN#>) voidElementsspaceCharactersTcCs>|dkr|rdSdSnt|tr0|St|SdS)z4sz&TreeWalker.emptyTag..EmptyTagrFr rrzVoid element has children) r rAssertionErrorrallitemsrr_)rrr attrs hasChildrenrrremptyTag1s-!   zTreeWalker.emptyTagcCs|dks-t|ts-tt|t|tsNtt|tdd|jDsstidd6t|d6t|d6tdd|jDd6S) NcssT|]J\\}}}|dks0t|toKt|toKt|tVqdS)N)r r)rrr r!rrrr"Bsz&TreeWalker.startTag..StartTagrr rcssE|];\\}}}t|dt|ft|dfVqdS)FN)r)rrr r!rrrr"Jsr) r rr$rr%r&rrdict)rrr r(rrrstartTag?s-!     zTreeWalker.startTagcCs}|dks-t|ts-tt|t|tsNtt|idd6t|dd6t|d6id6S)NEndTagrFr rr)r rr$rr)rrr rrrendTagNs -!  zTreeWalker.endTagccst|ts!tt|t|}|jt}|dt|t|}|rxidd6|d6Vn|}|jt}|t|d}|ridd6|d6Vn|ridd6|d6VndS)NSpaceCharactersrr Characters) r rr$rrlstripr lenrstrip)rrZmiddleleftrightrrrtextWs!  zTreeWalker.textcCs9t|ts!tt|idd6t|d6S)NCommentrr)r rr$rr)rrrrrcommentgs!zTreeWalker.commentNTcCst|stt|t|s<tt|t|sZtt|idd6t|d6t|d6t|d6t|d6S)NDoctyperr publicIdsystemIdcorrect)rr$rr)rr r;r<r=rrrdoctypels    zTreeWalker.doctypecCs9t|ts!tt|idd6t|d6S)NEntityrr )r rr$rr)rr rrrentityws!zTreeWalker.entitycCs|jtd|S)NzUnknown node type: )rr')rZnodeTyperrrunknown|szTreeWalker.unknown)__name__ __module__ __qualname__rrrr*r-r/r7r9r>r@rArrrrr's        rc@sLeZdZddZddZddZddZd d Zd S) NonRecursiveTreeWalkercCs tdS)N)r)rnoderrrgetNodeDetailssz%NonRecursiveTreeWalker.getNodeDetailscCs tdS)N)r)rrFrrr getFirstChildsz$NonRecursiveTreeWalker.getFirstChildcCs tdS)N)r)rrFrrrgetNextSiblingsz%NonRecursiveTreeWalker.getNextSiblingcCs tdS)N)r)rrFrrr getParentNodesz$NonRecursiveTreeWalker.getParentNodec cst|j}xd|dk ro|j|}|d|dd}}d}|tkre|j|Vn |tkrx|j|D] }|VqWn|tkr|\}}}}|tkrx%|j||||D] }|VqWd}qn|j |||Vni|t kr&|j |dVnH|t krG|j |dVn'|tkr\d}n|j|dV|r|j|} nd} | dk r| }q x|dk rk|j|}|d|dd}}|tkr|\}}}}|tkr|j||Vqn|j|kr4d}Pn|j|} | dk rY| }Pq|j|}qWq WdS)NrFT)rrGDOCTYPEr>TEXTr7ELEMENTr r*r-COMMENTr9ENTITYr@DOCUMENTrArHr/rIrJ) r currentNodedetailsrr)tokenrr attributesZ firstChildZ nextSiblingrrrrsZ                  zNonRecursiveTreeWalker.__iter__N)rBrCrDrGrHrIrJrrrrrrEs     rE)! __future__rrrZpip._vendor.sixrrgettextr'xml.domrZ DOCUMENT_NODErQZDOCUMENT_TYPE_NODErLZ TEXT_NODErMZ ELEMENT_NODErNZ COMMENT_NODErOZ ENTITY_NODErPUNKNOWN constantsr r joinrrobjectrrErrrrs"         Y