
    Ng                         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dS )    )absolute_importdivisionunicode_literals)	text_type)OrderedDict)etree   )
tag_regexp   )base)	_ihatexmlc                 d    | d S t          | t                    r| S |                     dd          S )Nasciistrict)
isinstancer   decode)ss    [/var/www/html/ai-engine/env/lib/python3.11/site-packages/html5lib/treewalkers/etree_lxml.py
ensure_strr      s7    yt	Ay	!	! +xx***    c                   &    e Zd Zd Zd Zd Zd ZdS )Rootc           
         || _         g | _        	 |j        j        ro| j                            t          | t          |j        j                  t          |j        j                  t          |j        j	                                       n# t          $ r Y nw xY w	 |                                }n# t          $ r |}Y nw xY w|                                (|                                }|                                (|0| j                            |           |                                }|0d | _        d | _        d S 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__   sZ   	z% Q$$WT-7
8L-M-M-7
8L-M-M-7
8M-N-N&P &P Q Q Q  	 	 	D		::<<DD 	 	 	DDD	   ,##%%D   ,M  &&&<<>>D  				s$   A;B 
BBB2 2C Cc                     | j         |         S r   )r   r*   keys     r   __getitem__zRoot.__getitem__3   s    }S!!r   c                     d S r    r*   s    r   r'   zRoot.getnext6       tr   c                     dS Nr   r3   r4   s    r   __len__zRoot.__len__9   s    qr   N)__name__
__module____qualname__r-   r1   r'   r8   r3   r   r   r   r      sP          6" " "      r   r   c                       e Zd Zd Zd ZdS )r    c                 Z    || _         || _        || _        || _        d | _        d | _        d S r   )	root_nodenamer"   	system_idr(   r)   )r*   r>   r?   r"   r@   s        r   r-   zDoctype.__init__>   s0    "	""				r   c                 &    | 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    =   s2          * * * * *r   r    c                       e Zd Zd Zd ZdS )FragmentRootc                 J      fd|D              _         d x _         _        d S )Nc                 0    g | ]}t          |          S r3   )FragmentWrapper).0childr*   s     r   
<listcomp>z)FragmentRoot.__init__.<locals>.<listcomp>M   s#    LLL%u55LLLr   )r   r(   r)   )r*   r   s   ` r   r-   zFragmentRoot.__init__L   s0    LLLL8LLL $$	DIIIr   c                     d S r   r3   r4   s    r   r'   zFragmentRoot.getnextP   r5   r   NrB   r3   r   r   rD   rD   K   s2        % % %    r   rD   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )rG   c                    || _         || _        t          | j        d          rt          | j        j                  | _        nd | _        t          | j        d          r t          | j        j                  | _        d S d | _        d S )Nr(   r)   )r>   objhasattrr   r(   r)   )r*   fragment_rootrN   s      r   r-   zFragmentWrapper.__init__U   sv    &48V$$ 	"48=11DIIDI48V$$ 	"48=11DIIIDIIIr   c                 ,    t          | j        |          S r   )getattrrN   )r*   r?   s     r   __getattr__zFragmentWrapper.__getattr__a   s    tx&&&r   c                     | j         j        }|                    |           }|t          |          dz
  k     r||dz            S d S r7   )r>   r   indexlen)r*   siblingsidxs      r   r'   zFragmentWrapper.getnextd   sG    >*nnT""X"""C!G$$4r   c                     | j         |         S r   )rN   r/   s     r   r1   zFragmentWrapper.__getitem__l   s    x}r   c                 *    t          | j                  S r   )boolrN   r4   s    r   __bool__zFragmentWrapper.__bool__o   s    DH~~r   c                     d S r   r3   r4   s    r   	getparentzFragmentWrapper.getparentr   r5   r   c                 *    t          | j                  S r   strrN   r4   s    r   __str__zFragmentWrapper.__str__u       48}}r   c                 *    t          | j                  S r   r`   r4   s    r   __unicode__zFragmentWrapper.__unicode__x   rc   r   c                 *    t          | j                  S r   )rV   rN   r4   s    r   r8   zFragmentWrapper.__len__{   rc   r   N)r9   r:   r;   r-   rS   r'   r1   r\   r^   rb   re   r8   r3   r   r   rG   rG   T   s        
 
 
' ' '                r   rG   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )
TreeWalkerc                 ,   t          |t                    r$t          |          | _        t	          |          }n"t                      | _        t          |          }t          j                            | |           t          j
                    | _        d S r   )r   listsetfragmentChildrenrD   r   r   NonRecursiveTreeWalkerr-   r   InfosetFilterfilter)r*   trees     r   r-   zTreeWalker.__init__   su    dD!! 	$'IID!%%DD$'EED!::D#,,T4888-//r   c                 8   t          |t                    r?|\  }}|dv sJ d|z              t          j        t	          t          ||                    fS t          |t                    rt          j        fS t          |t                    rt          j	        |j
        |j        |j        fS t          |t                    r0t          |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/          j        t	          |j                            }|r|                                \  }}nd }t	          |j                  }t5                      }t7          |j                                                  D ]n\  }}t	          |          }t	          |          }t/          j        |          }|r.|||                    d          |                    d          f<   g||d |f<   ot          j        || j         !                    |          |tE          |          dk    p|j        fS )Nr(   r)   %Text nodes are text or tail, found %stagr   r	   r   )#r   tupler   TEXTr   rR   r   DOCUMENTr    DOCTYPEr?   r"   r@   rG   rO   rN   rt   r   CommentCOMMENTr(   EntityENTITYr
   matchgroupsr   rj   attribitemsgroupELEMENTro   fromXmlNamerV   )	r*   r,   r0   r~   	namespacert   attrsr?   values	            r   getNodeDetailszTreeWalker.getNodeDetails   sQ   dE"" &	7ID#****,SVY,Y***9js););<<<<d## !	7M##g&& 	7<DNDNJJo.. 	7wtU7K7K 	79j2222X&&<DI!6!666X%%;
49 5 5ad ;;; $Z%9%9::E +!&	33 	 **MME#DK$5$5$7$788 0 0e!$''"5))"(.. 0>CE5;;q>>5;;q>>:;;*/E4,''L)T[-D-DS-I-I3t99q=5DI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   rv   rV   r(   )r*   r,   s     r   getFirstChildzTreeWalker.getFirstChild   s`    dE**II,IIII4yy=DI=='====9 	&>!7Nr   c                     t          |t                    rI|\  }}|dv sJ d|z              |dk    rt          |          r|d         S d S |                                S |j        r|dfn|                                S )Nrr   rs   r(   r   r)   )r   rv   rV   r'   r)   r*   r,   r0   s      r   getNextSiblingzTreeWalker.getNextSibling   s    dE"" 	&ID#****,SVY,Y***f}} t99  7N4||~~%!%>f~~>r   c                     t          |t                    r|\  }}|dv sJ d|z              |dk    r|S n|| j        v rd S |                                S )Nrr   rs   r(   )r   rv   rl   r^   r   s      r   getParentNodezTreeWalker.getParentNode   sv    dE"" 	ID#****,SVY,Y***f}}  T***4~~r   N)r9   r:   r;   r-   r   r   r   r   r3   r   r   rh   rh      s`        	0 	0 	0'7 '7 '7R  ? ? ? 
  
  
  
  
 r   rh   N)
__future__r   r   r   sixr   collectionsr   lxmlr   treebuilders.etreer
    r   r   r   objectr   r    rD   rG   rm   rh   r3   r   r   <module>r      s   B B B B B B B B B B       # # # # # #       + + + + + +            + + +# # # # #6 # # #L* * * * *f * * *    4   ( ( ( ( (f ( ( (VX  X  X  X  X , X  X  X  X  X r   