
    Mwg                         d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZ ddlmZ dd	lmZ d
 Z G d de      Z G d de      Z G d de      Z G d de      Z G d dej*                        Zy)    )absolute_importdivisionunicode_literals)	text_type)OrderedDict)etree   )
tag_regexp   )base)	_ihatexmlc                 P    | y t        | t              r| S | j                  dd      S )Nasciistrict)
isinstancer   decode)ss    V/var/www/horilla/myenv/lib/python3.12/site-packages/html5lib/treewalkers/etree_lxml.py
ensure_strr      s*    y	Ay	!xx**    c                   $    e Zd Zd Zd Zd Zd Zy)Rootc           
         || _         g | _        	 |j                  j                  r~| j                  j	                  t        | t        |j                  j                        t        |j                  j                        t        |j                  j                                     	 |j                         }|j                         !|j                         }|j                         !|.| j                  j	                  |       |j                         }|.d | _        d | _        y # t        $ r Y w xY w# t        $ r |}Y w xY wN)elementtreechildrendocinfointernalDTDappendDoctyper   	root_name	public_id
system_urlAttributeErrorgetrootgetpreviousgetnexttexttail)selfetnodes      r   __init__zRoot.__init__   s   	zz%%$$WT-7

8L8L-M-7

8L8L-M-7

8M8M-N&P Q	::<D  ,##%D  ,MM  &<<>D  		  		
  	D	s$   BD% %D4 %	D10D14EEc                      | j                   |   S r   )r   r*   keys     r   __getitem__zRoot.__getitem__3   s    }}S!!r   c                      y r    r*   s    r   r'   zRoot.getnext6       r   c                      yNr   r3   r4   s    r   __len__zRoot.__len__9   s    r   N)__name__
__module____qualname__r-   r1   r'   r8   r3   r   r   r   r      s    6"r   r   c                       e Zd Zd Zd Zy)r    c                 X    || _         || _        || _        || _        d | _        d | _        y r   )	root_nodenamer"   	system_idr(   r)   )r*   r>   r?   r"   r@   s        r   r-   zDoctype.__init__>   s,    "	""		r   c                 4    | j                   j                  d   S r7   )r>   r   r4   s    r   r'   zDoctype.getnextG   s    ~~&&q))r   Nr9   r:   r;   r-   r'   r3   r   r   r    r    =   s    *r   r    c                       e Zd Zd Zd Zy)FragmentRootc                 h    |D cg c]  }t        | |       c}| _        d x| _        | _        y c c}w r   )FragmentWrapperr   r(   r)   )r*   r   childs      r   r-   zFragmentRoot.__init__L   s/    CKL%u5L $$	DI Ms   /c                      y r   r3   r4   s    r   r'   zFragmentRoot.getnextP   r5   r   NrB   r3   r   r   rD   rD   K   s    %r   rD   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)rF   c                 (   || _         || _        t        | j                  d      r%t        | j                  j                        | _        nd | _        t        | j                  d      r%t        | j                  j
                        | _        y d | _        y )Nr(   r)   )r>   objhasattrr   r(   r)   )r*   fragment_rootrK   s      r   r-   zFragmentWrapper.__init__U   sb    &488V$"488==1DIDI488V$"488==1DIDIr   c                 .    t        | j                  |      S r   )getattrrK   )r*   r?   s     r   __getattr__zFragmentWrapper.__getattr__a   s    txx&&r   c                     | j                   j                  }|j                  |       }|t        |      dz
  k  r||dz      S y r7   )r>   r   indexlen)r*   siblingsidxs      r   r'   zFragmentWrapper.getnextd   sB    >>**nnT"X""C!G$$r   c                      | j                   |   S r   )rK   r/   s     r   r1   zFragmentWrapper.__getitem__l   s    xx}r   c                 ,    t        | j                        S r   )boolrK   r4   s    r   __bool__zFragmentWrapper.__bool__o   s    DHH~r   c                      y r   r3   r4   s    r   	getparentzFragmentWrapper.getparentr   r5   r   c                 ,    t        | j                        S r   strrK   r4   s    r   __str__zFragmentWrapper.__str__u       488}r   c                 ,    t        | j                        S r   r]   r4   s    r   __unicode__zFragmentWrapper.__unicode__x   r`   r   c                 ,    t        | j                        S r   )rS   rK   r4   s    r   r8   zFragmentWrapper.__len__{   r`   r   N)r9   r:   r;   r-   rP   r'   r1   rY   r[   r_   rb   r8   r3   r   r   rF   rF   T   s/    
'r   rF   c                   *    e Zd Zd Zd Zd Zd Zd Zy)
TreeWalkerc                    t        |t              rt        |      | _        t	        |      }nt               | _        t        |      }t        j                  j                  | |       t        j                         | _        y r   )r   listsetfragmentChildrenrD   r   r   NonRecursiveTreeWalkerr-   r   InfosetFilterfilter)r*   trees     r   r-   zTreeWalker.__init__   s[    dD!$'ID!%D$'ED!:D##,,T48--/r   c                 @   t        |t              r8|\  }}|dv s
J d|z         t        j                  t	        t        ||            fS t        |t              rt        j                  fS t        |t              r2t        j                  |j                  |j                  |j                  fS t        |t              r1t        |d      s%t        j                  t	        |j                        fS |j                   t"        j$                  k(  r%t        j&                  t	        |j(                        fS |j                   t"        j*                  k(  r(t        j,                  t	        |j(                        dd fS t/        j0                  t	        |j                               }|r|j3                         \  }}nd }t	        |j                         }t5               }t7        |j8                  j;                               D ]_  \  }}t	        |      }t	        |      }t/        j0                  |      }|r&|||j=                  d      |j=                  d      f<   Y||d |f<   a t        j>                  || j@                  jC                  |      |tE        |      dkD  xs |j(                  fS )Nr(   r)   %Text nodes are text or tail, found %stagr   r	   r   )#r   tupler   TEXTr   rO   r   DOCUMENTr    DOCTYPEr?   r"   r@   rF   rL   rK   rq   r   CommentCOMMENTr(   EntityENTITYr
   matchgroupsr   rg   attribitemsgroupELEMENTrl   fromXmlNamerS   )	r*   r,   r0   r{   	namespacerq   attrsr?   values	            r   getNodeDetailszTreeWalker.getNodeDetails   s	   dE"ID#**Y,SVY,YY*99js);<<<d#MM##g&<<DNNDNNJJo.wtU7K99j222XX&<<DII!666XX%;;
499 5a ;;; $$Z%9:E!&	3 	 *ME#DKK$5$5$78 0e!$'"5)"((.>CE5;;q>5;;q>:;*/E4,'0 LL)T[[-D-DS-I3t9q=5DII7 7r   c                     t        |t              rJ d       t        |      s|j                  sJ d       |j                  r|dfS |d   S )NzText nodes have no childrenzNode has no childrenr(   r   )r   rs   rS   r(   )r*   r,   s     r   getFirstChildzTreeWalker.getFirstChild   sK    dE*I,II*4yDII='==%99&>!7Nr   c                     t        |t              r9|\  }}|dv s
J d|z         |dk(  rt        |      r|d   S y |j                         S |j                  r|dfS |j                         S )Nro   rp   r(   r   r)   )r   rs   rS   r'   r)   r*   r,   r0   s      r   getNextSiblingzTreeWalker.getNextSibling   ss    dE"ID#**Y,SVY,YY*f} t97N||~%!%f~>>r   c                     t        |t              r*|\  }}|dv s
J d|z         |dk(  r|S |j                         S || j                  v ry |j                         S )Nro   rp   r(   )r   rs   ri   r[   r   s      r   getParentNodezTreeWalker.getParentNode   sk    dE"ID#**Y,SVY,YY*f}
 ~~ T***~~r   N)r9   r:   r;   r-   r   r   r   r   r3   r   r   re   re      s    	0'7R? 
 r   re   N)
__future__r   r   r   sixr   collectionsr   lxmlr   treebuilders.etreer
    r   r   r   objectr   r    rD   rF   rj   re   r3   r   r   <module>r      sh    B B  #  +  +#6 #L*f *4 (f (VX ,, X r   