
    Ng2                         d dl mZmZmZ d dlmZ d dl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  ej        d          ZddZ ee          ZdS )    )absolute_importdivisionunicode_literals)	text_typeN)copy   )base   )	_ihatexml)	constants)
namespaces)moduleFactoryFactoryz{([^}]*)}(.*)Fc           
      v   	
  		                     d          j        
 G 	fddt          j                   G 	fdd           G fdd           G fdd	           G fd
d          
fd	
fd} G  fddt          j                  }t                      S )Nasdc                       e Zd Zd fd	Zd Zd Zd Z eee          Zd Z	d Z
 ee
e	          Zd Zd	 Z eee          Zd
 Zd Z eee          Zd Zd Zd Zd ZddZd Zd ZdS ) getETreeBuilder.<locals>.ElementNc                    || _         || _                            |                     ||                    | _        |t
          d         | j         f| _        n| j        | j         f| _        d | _        g | _        g | _	        d S )Nhtml)
_name
_namespaceElement_getETreeTag_elementr   	nameTupleparent_childNodes_flags)selfname	namespaceElementTrees      W/var/www/html/ai-engine/env/lib/python3.11/site-packages/html5lib/treebuilders/etree.py__init__z)getETreeBuilder.<locals>.Element.__init__   s    DJ'DO'//0A0A$BK1M 1M N NDM !+F!3TZ!?!%$*!<DK!DDKKK    c                      ||}nd|d|}|S )N{} )r   r   r    	etree_tags       r"   r   z-getETreeBuilder.<locals>.Element._getETreeTag%   s,      		 ! )2		448	r$   c                 h    || _         |                     | j         | j                  | j        _        d S N)r   r   r   r   tag)r   r   s     r"   _setNamez)getETreeBuilder.<locals>.Element._setName,   s-    DJ $ 1 1$*do N NDMr$   c                     | j         S r+   )r   r   s    r"   _getNamez)getETreeBuilder.<locals>.Element._getName0   s
    :r$   c                 h    || _         |                     | j        | j                   | j        _        d S r+   )r   r   r   r   r,   )r   r    s     r"   _setNamespacez.getETreeBuilder.<locals>.Element._setNamespace5   s-    'DO $ 1 1$*do N NDMr$   c                     | j         S r+   )r   r/   s    r"   _getNamespacez.getETreeBuilder.<locals>.Element._getNamespace9   s
    ?"r$   c                     | j         j        S r+   )r   attribr/   s    r"   _getAttributesz/getETreeBuilder.<locals>.Element._getAttributes>   s    =''r$   c                     | j         j        }|                                 |rK|                                D ]8\  }}t	          |t
                    rd|d         d|d         }n|}|||<   7d S d S )Nr&   r
   r'   r   )r   r6   clearitems
isinstancetuple)r   
attributes	el_attribkeyvaluer   s         r"   _setAttributesz/getETreeBuilder.<locals>.Element._setAttributesA   s    ,IOO , #-"2"2"4"4 , ,JC!#u-- # #+.q6663q66:"&+IdOO, ,, ,r$   c                     | j         S r+   )r   r/   s    r"   _getChildNodesz/getETreeBuilder.<locals>.Element._getChildNodesP   s    ##r$   c                 \    | j         d d = g | _        |D ]}|                     |           d S r+   )r   r   insertChild)r   r@   elements      r"   _setChildNodesz/getETreeBuilder.<locals>.Element._setChildNodesS   sH    aaa !D  * *  ))))* *r$   c                 \    t          | j        j        pt          | j                            S )z,Return true if the node has children or text)boolr   textlenr/   s    r"   
hasContentz+getETreeBuilder.<locals>.Element.hasContent[   s$    *@c$-.@.@AAAr$   c                     | j                             |           | j                            |j                   | |_        d S r+   )r   appendr   r   r   nodes     r"   appendChildz,getETreeBuilder.<locals>.Element.appendChild_   <    ##D)))M  ///DKKKr$   c                     t          | j                                      |j                  }| j                            ||j                   | |_        d S r+   )listr   indexinsertr   )r   rP   refNoderU   s       r"   insertBeforez-getETreeBuilder.<locals>.Element.insertBefored   sG    ''--g.>??EM  666DKKKr$   c                     | j                             |           | j                            |j                   d |_        d S r+   )r   remover   r   rO   s     r"   removeChildz,getETreeBuilder.<locals>.Element.removeChildi   rR   r$   c                 h   t          | j                  s/| j        j        sd| j        _        | j        xj        |z  c_        d S |A| j        d         j        sd| j        d         _        | j        d         xj        |z  c_        d S t	          | j                  }|                    |j                  }|dk    rJ| j        |dz
           j        sd| j        |dz
           _        | j        |dz
           xj        |z  c_        d S | j        j        sd| j        _        | j        xj        |z  c_        d S )N r   r   )rK   r   rJ   tailrT   rU   )r   datarX   childrenrU   s        r"   
insertTextz+getETreeBuilder.<locals>.Element.insertTextn   s>   t}%% /}) ,)+DM&""d*""""%}R(- 0-/DM"%*b!&&$.&&&&  .. |'<==199=38 ;8:eai05M%!),11T91111=- 0-/*M&&$.&&&&r$   c                      t          |           | j        | j                  }| j        j        r#t          | j        j                  |j        _        |S r+   )typer   r    r   r6   r   )r   rF   s     r"   	cloneNodez*getETreeBuilder.<locals>.Element.cloneNode   sH     d4jjDN;;G}# E*.t}/C*D*D 'Nr$   c                 H   |j         r+|j         d         j        xj        | j        j        z  c_        nC|j        j        sd|j        _        | j        j        |j        xj        | j        j        z  c_        d| j        _        t          j                            | |           d S )Nr^   r]   )
childNodesr   r_   rJ   r	   NodereparentChildren)r   	newParents     r"   ri   z1getETreeBuilder.<locals>.Element.reparentChildren   s    # B$R(166$-:LL666 ). 1.0I&+=%1&++t}/AA++!#DMI&&tY77777r$   r+   )__name__
__module____qualname__r#   r   r-   r0   propertyr   r2   r4   r    r7   rA   r=   rC   rG   rg   rL   rQ   rX   r[   rb   re   ri   r!   s   r"   r   r      s}       	 	 	 	 	 		 	 		O 	O 	O	 	 	 x(++	O 	O 	O	# 	# 	# H]M::		( 	( 	(	, 	, 	, Xnn==
	$ 	$ 	$	* 	* 	* Xnn==
	B 	B 	B	 	 	
	 	 	
	 	 	
	/ 	/ 	/ 	/.	 	 			8 		8 		8 		8 		8r$   r   c                   >    e Zd Z fdZd Zd Z eee          ZdS ) getETreeBuilder.<locals>.Commentc                 f                         |          | _        d | _        g | _        g | _        d S r+   )Commentr   r   r   r   )r   r`   r!   s     r"   r#   z)getETreeBuilder.<locals>.Comment.__init__   s4     (//55DMDK!DDKKKr$   c                     | j         j        S r+   r   rJ   r/   s    r"   _getDataz)getETreeBuilder.<locals>.Comment._getData   s    =%%r$   c                     || j         _        d S r+   ru   r   r@   s     r"   _setDataz)getETreeBuilder.<locals>.Comment._setData   s    !&DMr$   N)rk   rl   rm   r#   rv   ry   rn   r`   ro   s   r"   rs   rq      sY        	 	 	 	 		& 	& 	&	' 	' 	' x(++r$   rs   c                   b    e Zd Z fdZd Zd Z eee          Zd Zd Z	 eee	          Z
dS )%getETreeBuilder.<locals>.DocumentTypec                 h                         | d           || j        _        || _        || _        d S )N
<!DOCTYPE>)r#   r   rJ   publicIdsystemId)r   r   r~   r   r   s       r"   r#   z.getETreeBuilder.<locals>.DocumentType.__init__   s5    T<000!%DM$DM$DMMMr$   c                 8    | j                             dd          S )Nr~   r]   r   getr/   s    r"   _getPublicIdz2getETreeBuilder.<locals>.DocumentType._getPublicId       =$$Z444r$   c                 D    || j                             d|           d S d S )Nr~   r   setrx   s     r"   _setPublicIdz2getETreeBuilder.<locals>.DocumentType._setPublicId   .     !!*e44444 ! r$   c                 8    | j                             dd          S )Nr   r]   r   r/   s    r"   _getSystemIdz2getETreeBuilder.<locals>.DocumentType._getSystemId   r   r$   c                 D    || j                             d|           d S d S )Nr   r   rx   s     r"   _setSystemIdz2getETreeBuilder.<locals>.DocumentType._setSystemId   r   r$   N)rk   rl   rm   r#   r   r   rn   r~   r   r   r   r   s   r"   DocumentTyper{      s        	% 	% 	% 	% 	%	5 	5 	5	5 	5 	5 8L,77	5 	5 	5	5 	5 	5 8L,77r$   r   c                       e Zd Z fdZdS )!getETreeBuilder.<locals>.Documentc                 4                         | d           d S )NDOCUMENT_ROOTr#   r   r   s    r"   r#   z*getETreeBuilder.<locals>.Document.__init__   s    T?33333r$   Nrk   rl   rm   r#   r   s   r"   Documentr      s.        	4 	4 	4 	4 	4 	4 	4r$   r   c                       e Zd Z fdZdS ))getETreeBuilder.<locals>.DocumentFragmentc                 4                         | d           d S )NDOCUMENT_FRAGMENTr   r   s    r"   r#   z2getETreeBuilder.<locals>.DocumentFragment.__init__   s     T#677777r$   Nr   r   s   r"   DocumentFragmentr      s.        	8 	8 	8 	8 	8 	8 	8r$   r   c                 ^    g dfd	 | d           d                               S )Nr   c           	      0   t          | d          s|                                 } | j        dk    r|                     d          s|                     d          rT|                     d          pd}|                     d          pd}                    d| j        d|d|d	           n                    d| j        d
           n| j        dk    r                    d           | j        '                    dd|dz   z  d| j        d           | j        t          d          t          | d          r#t          | j	                  rt          d          n| j        k    r&                    dd|z  d| j        d           nt          | j        t                    s'J dt          | j                  d| j                    t                              | j                  }|| j        }n0|                                \  }}t           j        |         }|d|}                    dd|z  d|d
           t          | d          rg }| j	                                        D ]k\  }}	t                              |          }|1|                                \  }}t           j        |         }|d|}
n|}
|                    |
|	f           lt'          |          D ])\  }}	                    dd|dz   z  |d|	d           *| j        r'                    dd|dz   z  d| j        d           |dz  }| D ]} ||           | j        r)                    dd|dz
  z  d| j        d           d S d S )Nr,   r}   r~   r   r]   
<!DOCTYPE z "" "">>r   z	#document| r
   "Document node cannot have tailr6   $Document node cannot have attributesz<!-- z -->zExpected unicode, got z, <=")hasattrgetrootr,   r   rN   rJ   r_   	TypeErrorrK   r6   r;   r   rd   
tag_regexpmatchgroupsr   prefixesr:   sorted)rF   indentr~   r   nsmatchr   nsprefixr=   r@   attr_stringchildElementTreeCommentTypervserializeElements               r"   r   zAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElement   s,   7E** ,!//++{l**;;z** Agkk*.E.E A&{{:66<"H&{{:66<"HIII&|||XXXxxxA B B B B III?@@@@//		+&&&<+IIISFQJ-?-?-?NOOO<+#$DEEE7H-- L#gn2E2E L#$JKKK 666			cFlllGLLLIJJJJ!'+y99 V V V6:7;6G6G6G6GUV V V$**7;77?";DD&~~//HB&/3F&,ffdd3D			sV|||TTT:;;;7H-- T!#J'.~';';'='= @ @e","2"24"8"8".'.~~'7'7HB%.%7%;F5;VVTT*BKK*.K"));*>????'-j'9'9 T Te			#!2D2DdddEEE"RSSSS< PIIISFQJ-?-?-?NOOOaKF  0 0  ////| L			
);););W\\\JKKKKKL Lr$   
)r   )join)rF   r   r   r   s    @@r"   testSerializerz'getETreeBuilder.<locals>.testSerializer   s`    6	L 6	L 6	L 6	L 6	L 6	L 6	L 6	Ln 	!$$$yy}}r$   c                     g t          j                    fd |            d                              S )z4Serialize an element and its child nodes to a stringc           	         t          | j                  r|                                 } | j        dk    r|                     d          s|                     d          rT|                     d          pd}|                     d          pd}                    d| j        d|d|d           n                    d| j        d	           n| j        d
k    r|| j                            | j                   | j        t          d          t          | d          r#t          | j                  rt          d          | D ]} 	|           n| j        k    r                    d| j        d           n| j        s2                    d                    | j                  d	           nYd                    fd| j                                        D                       }                    d| j        d|d	           | j        r                    | j                   | D ]} 	|                               d| j        d	           | j        r                    | j                   d S d S )Nr}   r~   r   r]   r   z	 PUBLIC "r   r   r   r   r   r6   r   z<!--z-->r   r   c                 L    g | ] \  }}                     |          d |d!S )r   r   )fromXmlName).0r   r@   filters      r"   
<listcomp>zOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>)  sR     %C %C %C'D% **40000%%%&9 %C %C %Cr$   z</)r;   r!   r   r,   r   rN   rJ   r_   r   r   rK   r6   r   r   r:   )
rF   r~   r   r   attrr!   r   r   r   r   s
        r"   r   z;getETreeBuilder.<locals>.tostring.<locals>.serializeElement  s   ';#:;; ,!//++{l**;;z** Agkk*.E.E A&{{:66<"H&{{:66<"HIII&|||XXXxxxA B B B B III?@@@@//<+IIgl+++<+#$DEEE7H-- L#gn2E2E L#$JKKK$ , ,E$$U++++,  666			78888 ~ ?III(:(:7;(G(G(G(GIJJJJ88 %C %C %C %C+2>+?+?+A+A%C %C %C D DD III7;;;=>>>< ,IIgl+++$ , ,E$$U++++			W[[[2333| (		','''''( (r$   r]   )r   InfosetFilterr   )rF   r   r   r   r!   r   s    @@@r"   tostringz!getETreeBuilder.<locals>.tostring  sj    (**+	( +	( +	( +	( +	( +	( +	( +	( +	(Z 	!!!wwr{{r$   c                   B    e Zd ZZZZ ZZZfdZ	fdZ
d ZdS )$getETreeBuilder.<locals>.TreeBuilderc                      |          S r+   r(   )r   rF   r   s     r"   r   z3getETreeBuilder.<locals>.TreeBuilder.testSerializerD  s    !>'***r$   c                     r| j         j        S | j        '| j         j                            d| j        z            S | j         j                            d          S )Nz{%s}htmlr   )documentr   defaultNamespacefind)r   fullTrees    r"   getDocumentz0getETreeBuilder.<locals>.TreeBuilder.getDocumentG  sb     ?}--(4=166"T%::< < <  =166v>>>r$   c                 J    t           j                            |           j        S r+   )r	   TreeBuildergetFragmentr   r/   s    r"   r   z0getETreeBuilder.<locals>.TreeBuilder.getFragmentQ  s    #//55>>r$   N)rk   rl   rm   documentClassdoctypeClasselementClasscommentClassfragmentClassimplementationr   r   r   )rs   r   r   r   r   ElementTreeImplementationr   r   s   r"   r   r   <  st         #(2	+ 	+ 	+ 	+ 	+	? 	? 	? 	? 	?	? 	? 	? 	? 	?r$   r   )rs   r,   r	   rh   r   locals)r   r   r   r   rs   r   r   r   r   r!   r   r   s   ``  @@@@@@@@r"   getETreeBuilderr      s   +K(0077;}8 }8 }8 }8 }8 }8 }8$) }8 }8 }8~, , , , , , ,' , , ,"8 8 8 8 8 8 8w 8 8 824 4 4 4 4 4 47 4 4 48 8 8 8 8 8 87 8 8 8< < < < <|4 4 4 4 4 4l? ? ? ? ? ? ? ? ? ? ? ? ? ?d& ? ? ?0 88Or$   )F)
__future__r   r   r   sixr   rer   r]   r	   r   r   r   _utilsr   compiler   r   getETreeModuler(   r$   r"   <module>r      s    B B B B B B B B B B       				                         " " " " " " ) ) ) ) ) )RZ((
A A A AH
 &%o66r$   