
    Ng"                         d dl mZmZmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY wd dlm	Z	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 Z ee          ZdS )    )absolute_importdivisionunicode_literals)MutableMapping)minidomNodeN   )base   )	constants)
namespaces)moduleFactoryFactoryc                        G d dt                      G fddt          j                   G  fddt          j                  }d t	                      S )Nc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
getDomBuilder.<locals>.AttrListc                     || _         d S Nelementselfr   s     U/var/www/html/ai-engine/env/lib/python3.11/site-packages/html5lib/treebuilders/dom.py__init__z(getDomBuilder.<locals>.AttrList.__init__   s    "DLLL    c                 X    t          | j        j                                                  S r   )iterr   
attributeskeysr   s    r   __iter__z(getDomBuilder.<locals>.AttrList.__iter__   s!    /4466777r   c                     t          |t                    rt          | j        j                            |          }||_        || j        j        |<   d S r   )
isinstancetupleNotImplementedErrorr   ownerDocumentcreateAttributevaluer   )r   namer'   attrs       r   __setitem__z+getDomBuilder.<locals>.AttrList.__setitem__   sN    $&& 5))|1AA$GG"
04'---r   c                 4    t          | j        j                  S r   )lenr   r   r   s    r   __len__z'getDomBuilder.<locals>.AttrList.__len__#   s    t|.///r   c                 X    t          | j        j                                                  S r   )listr   r   itemsr   s    r   r0   z%getDomBuilder.<locals>.AttrList.items&   s!    /5577888r   c                 X    t          | j        j                                                  S r   )r/   r   r   valuesr   s    r   r2   z&getDomBuilder.<locals>.AttrList.values)   s!    /6688999r   c                 h    t          |t                    rt          | j        j        |         j        S r   )r"   r#   r$   r   r   r'   r   r(   s     r   __getitem__z+getDomBuilder.<locals>.AttrList.__getitem__,   s-    $&& ;))|.t4::r   c                 X    t          |t                    rt          | j        j        |= d S r   )r"   r#   r$   r   r   r4   s     r   __delitem__z+getDomBuilder.<locals>.AttrList.__delitem__2   s-    $&& 2))L+D111r   N)__name__
__module____qualname__r   r    r*   r-   r0   r2   r5   r7    r   r   AttrListr      s        	# 	# 	#	8 	8 	8	5 	5 	5	0 	0 	0	9 	9 	9	: 	: 	:	; 	; 	;	2 	2 	2 	2 	2r   r<   c                       e Zd Zd Z ed           Zd ZddZd Zd Z	d Z
 fd	Zd
 Z eee          ZfdZd Zd Z ee          ZdS )"getDomBuilder.<locals>.NodeBuilderc                 ^    t           j                            | |j                   || _        d S r   )r
   r   r   nodeNamer   r   s     r   r   z+getDomBuilder.<locals>.NodeBuilder.__init__9   s(    ItW%5666"DLLLr   c                 H    t          | j        d          r| j        j        pd S )NnamespaceURI)hasattrr   rB   r   s    r   <lambda>z+getDomBuilder.<locals>.NodeBuilder.<lambda>=   s*    '$,*O*O +7!\6+?:> r   c                 R    | |_         | j                            |j                   d S r   )parentr   appendChildr   nodes     r   rG   z.getDomBuilder.<locals>.NodeBuilder.appendChild@   s'    DKL$$T\22222r   Nc                     | j         j                            |          }|r"| j                             ||j                    d S | j                             |           d S r   )r   r%   createTextNodeinsertBeforerG   )r   datarL   texts       r   
insertTextz-getDomBuilder.<locals>.NodeBuilder.insertTextD   s_    <-<<TBBD /))$0DEEEEE((.....r   c                 ^    | j                             |j         |j                    | |_        d S r   )r   rL   rF   )r   rI   refNodes      r   rL   z/getDomBuilder.<locals>.NodeBuilder.insertBeforeK   s)    L%%dlGODDDDKKKr   c                 |    |j         j        | j         k    r| j                             |j                    d |_        d S r   )r   
parentNoderemoveChildrF   rH   s     r   rT   z.getDomBuilder.<locals>.NodeBuilder.removeChildO   s7    |&$,66((666DKKKr   c                     | j                                         rY| j         j        }| j                             |           |j                             |           | j                                         Yg | _        d S r   )r   hasChildNodes
firstChildrT   rG   
childNodes)r   	newParentchilds      r   reparentChildrenz3getDomBuilder.<locals>.NodeBuilder.reparentChildrenT   st    ,,,.. 5/((///!--e444 ,,,.. 5 !DOOOr   c                 $     | j                   S r   r   )r   r<   s    r   getAttributesz0getDomBuilder.<locals>.NodeBuilder.getAttributes[   s    8DL)))r   c                 L   |rt          |                                          D ]\  }}t          |t                    rH|d         |d         dz   |d         z   }n|d         }| j                            |d         ||           b| j                            ||           ~d S d S )Nr   :r	   r   )r/   r0   r"   r#   r   setAttributeNSsetAttribute)r   r   r(   r'   qualifiedNames        r   setAttributesz0getDomBuilder.<locals>.NodeBuilder.setAttributes^   s     )#'
(8(8(:(:#;#; 
) 
)KD%!$.. 	)7.-1!Ws]T!W-DMM,0GM33DG]49; ; ; ; 11 %) ) ) )) )
) 
)r   c                 J     | j                             d                    S )NF)r   	cloneNoder   NodeBuilders    r   re   z,getDomBuilder.<locals>.NodeBuilder.cloneNodem   s#    ;t|55e<<===r   c                 4    | j                                         S r   )r   rV   r   s    r   
hasContentz-getDomBuilder.<locals>.NodeBuilder.hasContentp   s    <--///r   c                 T    | j         t          d         | j        fS | j         | j        fS )Nhtml)	namespacer   r(   r   s    r   getNameTuplez/getDomBuilder.<locals>.NodeBuilder.getNameTuples   s+    ~%!&)4944~ty00r   r   )r8   r9   r:   r   propertyrl   rG   rO   rL   rT   r[   r]   rc   r   re   ri   rm   	nameTuple)r<   rg   s   r   rg   r>   8   s       	# 	# 	# H ? ? @ @		3 	3 	3	/ 	/ 	/ 	/	 	 		 	 	
	! 	! 	!	* 	* 	* 	* 	*	) 	) 	) Xm];;
	> 	> 	> 	> 	>	0 	0 	0	1 	1 	1 H\**			r   rg   c                   r    e Zd Z fdZ fdZdfd	ZfdZfdZd ZfdZ	d	 Z
d
 ZddZZdZdS )"getDomBuilder.<locals>.TreeBuilderc                                                                          d d d           | _        t          j        |           S r   )getDOMImplementationcreateDocumentdomweakrefproxy)r   Doms    r   documentClassz0getDomBuilder.<locals>.TreeBuilder.documentClass|   s8    //11@@tTRRDH=&&&r   c                    |d         }|d         }|d         }                                 }|                    |||          }| j                             |                     t          k    r| j        |_        d S d S )Nr(   publicIdsystemId)rs   createDocumentTypedocumentrG   r   ru   r%   )	r   tokenr(   r{   r|   domimpldoctyperx   rg   s	          r   insertDoctypez0getDomBuilder.<locals>.TreeBuilder.insertDoctype   s    =DZ(HZ(H..00G00xJJGM%%kk'&:&:;;;g~~(,%%% ~r   Nc                     |"| j         | j                            |          }n| j                            ||          } |          S r   )defaultNamespaceru   createElementcreateElementNS)r   r(   rl   rI   rg   s       r   elementClassz/getDomBuilder.<locals>.TreeBuilder.elementClass   sO     T%:%Bx--d33x//	4@@;t$$$r   c                 J     | j                             |                    S r   )ru   createComment)r   rM   rg   s     r   commentClassz/getDomBuilder.<locals>.TreeBuilder.commentClass   s#    ;tx55d;;<<<r   c                 H     | j                                                   S r   )ru   createDocumentFragmentrf   s    r   fragmentClassz0getDomBuilder.<locals>.TreeBuilder.fragmentClass   s!    ;tx>>@@AAAr   c                 D    | j                             |j                   d S r   )ru   rG   r   rH   s     r   rG   z.getDomBuilder.<locals>.TreeBuilder.appendChild   s     H  .....r   c                      |          S r   r;   )r   r   testSerializers     r   r   z1getDomBuilder.<locals>.TreeBuilder.testSerializer   s    !>'***r   c                     | j         S r   )ru   r   s    r   getDocumentz.getDomBuilder.<locals>.TreeBuilder.getDocument   s	    8Or   c                 J    t           j                            |           j        S r   )r
   TreeBuildergetFragmentr   r   s    r   r   z.getDomBuilder.<locals>.TreeBuilder.getFragment   s    #//55==r   c                    |}|| k    r#t           j                            | ||           d S t          | j        d          rdt
          j        | j        j        vrLt          | j        j                  | j        _        | j        j        	                    t
          j                   | j        
                    | j                            |                     d S )N_child_node_types)r
   r   rO   rC   ru   r   	TEXT_NODEr   r/   appendrG   rK   )r   rM   rF   s      r   rO   z-getDomBuilder.<locals>.TreeBuilder.insertText   s    D~~ ++D$????? 48%899 J~TX-GGG59$(:T5U5U2299$.III$$TX%<%<T%B%BCCCCCr   r   )r8   r9   r:   ry   r   r   r   r   rG   r   r   r   rO   implementationr(   )rx   DomImplementationrg   r   s   r   r   rq   {   s       	' 	' 	' 	' 	'		1 		1 		1 		1 		1 		1	% 	% 	% 	% 	% 	%	= 	= 	= 	= 	=	B 	B 	B 	B 	B	/ 	/ 	/	+ 	+ 	+ 	+ 	+	 	 		> 	> 	>	D 	D 	D 	D +r   r   c                     |                                   g dfd	 | d           d                              S )Nr   c                    | j         t          j        k    r| j        rr| j        s| j        r>| j        pd}| j        pd}                    dd|z  d| j        d|d|d	           nP                    dd|z  d| j        d           n*                    dd|z  d	           n| j         t          j        k    r                    d
           n| j         t          j        k    r                    d           n| j         t          j	        k    r&                    dd|z  d| j
        d           ny| j         t          j        k    r&                    dd|z  d| j
        d           n>t          | d          r)| j        "t          j        | j                 d| j        }n| j        }                    dd|z  d|d           |                                 rg }t%          t'          | j                            D ]n}| j                            |          }|j        }|j        }|j        }	|	rt          j        |	         d|j        }n|j        }|                    ||f           ot1          |          D ])\  }}                    dd|dz   z  |d|d           *|dz  }| j        D ]}
 |
|           d S )N | z
<!DOCTYPE z "z" "z">>z<!DOCTYPE >z	#documentz#document-fragmentz<!-- z -->"rB   <r   z=")nodeTyper   DOCUMENT_TYPE_NODEr(   r{   r|   r   DOCUMENT_NODEDOCUMENT_FRAGMENT_NODECOMMENT_NODE	nodeValuer   rC   rB   r   prefixesr@   hasAttributesranger,   r   itemr'   	localNamesortedrX   )r   indentr{   r|   r(   r   ir)   r'   nsrZ   rvserializeElements              r   r   z?getDomBuilder.<locals>.testSerializer.<locals>.serializeElement   sV   4#:::< 	B' U7+; U#*#3#9r#*#3#9r			#&<<<xxx#S T T T T 			fglll"STTTTIII#,,,@AAAA!T%777		+&&&&!T%@@@		.////!T%666			cFlllG<M<M<MNOOOO!T^33			vw7H7H7HIJJJJG^44 ,,8&/&89M&N&N&N&-&6&68DD #+D			sV|||TTT:;;;((** T!#J"3w'9#:#:;; 	9 	9&166q99#} $
!. 1.7.@.D.D.Ddnn#UDD#'=D"))4-8888'-j'9'9 T Te			#!2D2DdddEEE"RSSSSaKF + 0 0  ////0 0r   
)r   )	normalizejoin)r   r   r   s    @@r   r   z%getDomBuilder.<locals>.testSerializer   sd    -	0 -	0 -	0 -	0 -	0 -	0 -	0\ 	!$$$yy}}r   )r   r
   r   r   locals)r   r   r<   rx   rg   r   s   ` @@@@r   getDomBuilderr      s    
C"2 "2 "2 "2 "2> "2 "2 "2HA+ A+ A+ A+ A+ A+ A+ A+di A+ A+ A+F8 8 8 8 8 8 8 8 8 8d& 8 8 8t4 4 4l 88Or   )
__future__r   r   r   collections.abcr   ImportErrorcollectionsxml.domr   r   rv   r   r
   r   r   _utilsr   r   getDomModuler;   r   r   <module>r      s   B B B B B B B B B B+....... + + +********+ ! ! ! ! ! ! ! !              " " " " " " ) ) ) ) ) )Z Z Z| $#M22s    !!