
    Ng9                     x   d Z ddlmZmZmZ ddlZddlZddl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 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mZ dZ ej        d          Z ej        d          j        Z G d de          Z G d de          Zd Z d Z! G d dej"                  Z"dS )a  Module for supporting the lxml.etree library. The idea here is to use as much
of the native library as possible, without using fragile hacks like custom element
names that break between releases. The downside of this is that we cannot represent
all possible trees; specifically the following are known to cause problems:

Text or comments as siblings of the root element
Docypes with no name

When any of these things occur, we emit a DataLossWarning
    )absolute_importdivisionunicode_literalsN)MutableMapping   )base   )DataLossWarning)	constants)etree)	_ihatexml)PY3binary_typeTz{([^}]*)}(.*)asdc                       e Zd Zd ZdS )DocumentTypec                 0    || _         || _        || _        d S N)namepublicIdsystemId)selfr   r   r   s       \/var/www/html/ai-engine/env/lib/python3.11/site-packages/html5lib/treebuilders/etree_lxml.py__init__zDocumentType.__init__)   s    	      N)__name__
__module____qualname__r    r   r   r   r   (   s#        ! ! ! ! !r   r   c                   6    e Zd Zd Zd Zd Z ee          ZdS )Documentc                 "    d | _         g | _        d S r   )_elementTree_childNodesr   s    r   r   zDocument.__init__0   s     r   c                     | j                                         }| j                                                                         D ]}|                    |j                   d S r   )r#   getrootitersiblingsaddnext_element)r   elementlasts      r   appendChildzDocument.appendChild4   s^     ((**%--//<<>> 	 	DW%&&&&&r   c                     | j         S r   )r$   r%   s    r   _getChildNodeszDocument._getChildNodes;   s    r   N)r   r   r   r   r-   r/   property
childNodesr   r   r   r!   r!   /   sL          ' ' '      .))JJJr   r!   c                     g t          j        d          dfd	 | d           d                              S )NTpreventDoubleDashCommentsr   c           
      j	   t          | d          st          | d          r                    d           | j        j        rr| j        j        s| j        j        sd| j        j        z  }n*d| j        j        d| j        j        d| j        j        d}                    d	d
|dz   z  |           |                                 }|                                (|                                }|                                (|' ||dz              |	                                }|%d S d S t          | t                    st          | t                    rNt          | t                    st          j        d         dk    sJ                     d	d
|z  d| d           d S                     d           | D ]} ||dz              d S | j        t           k    re                    d	d
|z  d| j        d           t          | d          r-| j        r(                    d	d
|z  d| j        d           d S d S d S t          | t&          j                  sJ t*          j                            | j                  }|r|                    d          }|                    d          }t2          j        |         }                    d	d
|z  d|d
                    |          d           n7                    d	d
|z  d                    | j                  d           t          | d          rg }| j                                        D ]\  }	}
t,                              |	          }|F|                                \  }}	                    |	          }	t2          j        |         }|d
|	}n                    |	          }|                    ||
f           t?          |          D ])\  }	}
                    d	d
|dz   z  |	d|
d           *| j        r'                    d	d
|dz   z  d| j        d           |dz  }| D ]} ||           t          | d          r0| j        r+                    d	d
|dz
  z  d| j        d           d S d S d S )Ntagr'   z	#document<!DOCTYPE %s>z
<!DOCTYPE z "z" "z">| r	   r   "z#document-fragmentz<!-- z -->tailr   <>attrib=") hasattrappenddocinfointernalDTD	public_id
system_url	root_namer'   getpreviousgetnext
isinstancestrbytessysversion_infor6   comment_typetextr;   r   _Elementetree_builders
tag_regexpmatchgroupr   prefixesfromXmlNamer>   itemsgroupssorted)r+   indentdtd_strnext_elementnsmatchnsr6   prefix
attributesr   valueattr_stringchildinfosetFilterrvserializeElements                r   rf   z(testSerializer.<locals>.serializeElementE   s   w&& D	Lw	** ?		+&&&?. 	G#O5 8#O68"1GO4M"M $O555#O555#O666#8 III
););WWEFFF&00"..00<#/#;#;#=#=L #..00<".$$\6A:>>>#/#7#7#9#9L #..... GS)) ?Z-G-G ?!'3//K33CA3F!3K3K3K3K			vwww?@@@@@ 		.///$+ ? ?L$$\6A:>>>>? ?[L((III#,,,EFFFw'' FGL F			vw|||DEEEEEF F F F gu~66666$/55gkBBG"]]1%%mmA&&"+B/			#,,,*7*C*CC*H*H*H*HJ K K K K 			sV|||'4'@'@'M'M'M'MO P P P w)) P
#*>#7#7#9#9 	< 	<KD%(..t44G*#*>>#3#3D,88>>!*!3B!717&>&3&?&?&E&E%%{E&:;;;;#)*#5#5 P PKD%IIIcVaZ.@.@$$$NOOOO| L			
);););W\\\JKKKaKF  0 0  ////w'' LGL L			
);););W\\\JKKKKKL L L Lr   
)r   )r   InfosetFilterjoin)r+   rd   re   rf   s    @@@r   testSerializerrj   A   s{    	B+dKKKMEL EL EL EL EL EL EL ELL Wa   99R==r   c                 V    g fd |            d                               S )z4Serialize an element and its child nodes to a stringc                 V   t          | d          sg| j        j        r=| j        j        r| j        j        }nd| j        j        z  }                    |            |                                            n| j        t          k    r                    d| j	        d           n| j
        s                    d| j        d           nWd                    d | j
                                        D                       }                    d| j        d|d           | j	        r                    | j	                   | D ]} |                               d	| j        d           t          | d
          r#| j        r                    | j                   d S d S d S )Nr6   r7   z<!--z-->r<   r=   r9   c                 $    g | ]\  }}|d |dS )r?   r:   r   ).0r   ra   s      r   
<listcomp>z6tostring.<locals>.serializeElement.<locals>.<listcomp>   s?     !L !L !L%0T5 15eee!< !L !L !Lr   z</r;   )r@   rB   rC   doctyperF   rA   r'   r6   rN   rO   r>   ri   rW   r;   )r+   r[   attrrc   re   rf   s       r   rf   z"tostring.<locals>.serializeElement   s   w&& 	0* #?* J%o5GG-0IIG		'"""W__..////[L((IIIW\\\34444 > ;			GKKK12222xx !L !L4;N4H4H4J4J!L !L !L M M			w{{{DDD9:::| (		','''  ( (  ''''III.///7F## 	$ 	$IIgl#####	$ 	$ 	$ 	$r    )ri   )r+   re   rf   s    @@r   tostringrs      sK    	B$ $ $ $ $ $@ W772;;r   c                   l     e Zd ZeZeZdZdZeZ	e
ZddZd Zd Zd Zd Zd Zdd	Zd fd
	Zd Z xZS )TreeBuilderNFc                 h   t          j        t          |          t          j        d          x| _        || _         G fddt                     G fddj                  } G fdd	j	                  }|| _
        || _        t          j                            | |           d S )
N)fullTreeTr3   c                   D    e Zd Zd Z fdZd Zd Zd Zd Zd Z	d Z
d	S )
(TreeBuilder.__init__.<locals>.Attributesc                     || _         d S r   )r*   r   r+   s     r   r   z1TreeBuilder.__init__.<locals>.Attributes.__init__   s     'r   c                     t          |t                    r(d|d         d                    |d                   }n                    |          }|S )N{r	   }r   )rI   tuplecoerceAttribute)r   keyr   rd   s      r   
_coerceKeyz3TreeBuilder.__init__.<locals>.Attributes._coerceKey   s\    c5)) > >'*1vvv}/L/LSQRV/T/T/TUDD(88==Dr   c                     | j         j         j        |                     |                   }t          s*t	          |t
                    r|                    d          }|S )Nascii)r*   r>   r   r   rI   r   decoder   r   ra   s      r   __getitem__z4TreeBuilder.__init__.<locals>.Attributes.__getitem__   sO    .5dooc6J6JK 2z%== 2!LL11Er   c                 T    || j         j         j        |                     |          <   d S r   r*   r>   r   r   s      r   __setitem__z4TreeBuilder.__init__.<locals>.Attributes.__setitem__   s&    FK&-dooc.B.BCCCr   c                 P    | j         j         j        |                     |          = d S r   r   )r   r   s     r   __delitem__z4TreeBuilder.__init__.<locals>.Attributes.__delitem__   s$    M*1$//#2F2FGGGr   c                 >    t          | j        j        j                  S r   )iterr*   r>   r%   s    r   __iter__z1TreeBuilder.__init__.<locals>.Attributes.__iter__   s    DM29:::r   c                 >    t          | j        j        j                  S r   )lenr*   r>   r%   s    r   __len__z0TreeBuilder.__init__.<locals>.Attributes.__len__   s    4=18999r   c                 H    | j         j         j                                        S r   )r*   r>   clearr%   s    r   r   z.TreeBuilder.__init__.<locals>.Attributes.clear   s    }-4::<<<r   N)r   r   r   r   r   r   r   r   r   r   r   )rd   s   r   
Attributesry      s        ( ( (      L L LH H H; ; ;: : := = = = =r   r   c                       e Zd Z fdZfdZfdZ eee          Zd Zd Z	 eee	          Z
d	fd	Zd ZdS )
%TreeBuilder.__init__.<locals>.Elementc                                          |          }j                            | ||            |           | _        d S )N)	namespace)coerceElementElementr   _attributes)r   r   r   r   builderrd   s      r   r   z.TreeBuilder.__init__.<locals>.Element.__init__   sK    $22488((ty(III#-:d#3#3   r   c                                          |          | _        |                     | j        | j                  | j        _        d S r   )r   _name_getETreeTag
_namespacer*   r6   )r   r   rd   s     r   _setNamez.TreeBuilder.__init__.<locals>.Element._setName   sA    *88>>
$($5$5J%1 %1!!!r   c                 8                         | j                  S r   )rV   r   )r   rd   s    r   _getNamez.TreeBuilder.__init__.<locals>.Element._getName   s    $00<<<r   c                     | j         S r   )r   r%   s    r   _getAttributesz4TreeBuilder.__init__.<locals>.Element._getAttributes   s    ''r   c                 f    | j         }|                                 |                    |           d S r   )r`   r   update)r   ra   r`   s      r   _setAttributesz4TreeBuilder.__init__.<locals>.Element._setAttributes   s5    !_
  """!!%(((((r   Nc                 j                         |          }j                            | ||           d S r   )coerceCharactersr   
insertText)r   datainsertBeforer   rd   s      r   r   z0TreeBuilder.__init__.<locals>.Element.insertText   s6    $55d;;**4|DDDDDr   c                      t          |           | j        | j                  }| j        j        r)|j        j                            | j        j                   |S r   )typer   r   r*   r>   r   r{   s     r   	cloneNodez/TreeBuilder.__init__.<locals>.Element.cloneNode  sO    $$t**TY??=' I$+224=3GHHHr   r   )r   r   r   r   r   r   r0   r   r   r   r`   r   r   )r   r   rd   s   r   r   r      s        4 4 4 4 4 4 4
1 1 1 1 1
= = = = = 8Hh//D( ( () ) )
 "..AAJE E E E E E E    r   r   c                   D    e Zd Z fdZfdZd Z eee          ZdS )%TreeBuilder.__init__.<locals>.Commentc                 h                         |          }j                            | |           d S r   )coerceCommentCommentr   )r   r   r   rd   s     r   r   z.TreeBuilder.__init__.<locals>.Comment.__init__  s4    $22488((t44444r   c                 J                         |          }|| j        _        d S r   )r   r*   rO   )r   r   rd   s     r   _setDataz.TreeBuilder.__init__.<locals>.Comment._setData  s&    $22488%)"""r   c                     | j         j        S r   )r*   rO   r%   s    r   _getDataz.TreeBuilder.__init__.<locals>.Comment._getData  s    }))r   N)r   r   r   r   r   r   r0   r   )r   rd   s   r   r   r   
  sh        5 5 5 5 5 5* * * * ** * * 8Hh//DDDr   r   )rQ   getETreeModuler   r   rh   rd   namespaceHTMLElementsr   r   r   elementClasscommentClassr   ru   r   )r   r   rw   r   r   r   r   rd   s        @@@r   r   zTreeBuilder.__init__   s!    /III-6-D_c-d-d-dd*%:"	= 	= 	= 	= 	= 	= 	= 	= 	= 	=@"	 "	 "	 "	 "	 "	 "	 "	 "	go "	 "	 "	H	0 	0 	0 	0 	0 	0 	0 	0go 	0 	0 	0 $#!!$(=>>>>>r   c                 x    t           j                            |            | j        | _        g | _        d | _        d S r   )r   ru   resetinsertCommentInitialinsertCommentinitial_commentsrp   r%   s    r   r   zTreeBuilder.reset  s7    t$$$!6 "r   c                      t          |          S r   )rj   r{   s     r   rj   zTreeBuilder.testSerializer#  s    g&&&r   c                 d    t           r| j        j        S | j        j                                        S r   )rw   documentr#   r'   r%   s    r   getDocumentzTreeBuilder.getDocument&  s,     	8=--=-55777r   c                     g }| j         d         j        }|j        r|                    |j                   |                    t          |                     |j        r|                    |j                   |S )Nr   )openElementsr*   rO   rA   extendlistr;   )r   fragmentr+   s      r   getFragmentzTreeBuilder.getFragment,  sp    #A&/< 	*OOGL)))W&&&< 	*OOGL)))r   c                 0   |d         }|d         }|d         }|s#t          j        dt                     d | _        d S | j                            |          }||k    rt          j        dt                     |                     |||          }|| _        d S )Nr   r   r   z#lxml cannot represent empty doctypez%lxml cannot represent non-xml doctype)warningswarnr
   rp   rd   r   doctypeClass)r   tokenr   r   r   coercedNamerp   s          r   insertDoctypezTreeBuilder.insertDoctype6  s    V}$$ 		#M?QQQDLLL,::4@@Kd""EWWW''XxHHG"DLLLr   c                 p    ||| j         u sJ | j         j        J | j                            |           d S r   )r   r#   r   rA   )r   r   parents      r   r   z TreeBuilder.insertCommentInitialF  sG    ~4=!8!8!8!8})111$$T*****r   c                    || j         k    rL| j         j                                        d         j        t          k    rt          j        dt                     t          t          |           
                    ||           d S )Nz@lxml cannot represent adjacent comments beyond the root elements)r   r#   r'   r6   rN   r   r   r
   superru   r   )r   r   r   	__class__s      r   insertCommentMainzTreeBuilder.insertCommentMainK  sn    dm##*2244R8<LLM\^mnnnk4  ..tV<<<<<r   c                    d}| j         rC| j         j        sJ |d| j         j        z  z  }| j         j        | j         j        |d| j                            | j         j        pd          z  z  }| j         j        r| j         j        }|                    d          dk    rI|                    d          dk    r0t          j        dt                     |
                    dd          }|                    d          dk    r	|d	|z  z  }n|d
|z  z  }n|dz  }|dz  }| j         j        |d         k    rt          j        dt                     |dz  }t          j        |          }| j        D ]7}|                     |d                   }|                    |j                   8|                                 | _        |                                | j        _        |d         }|                    d| j                  }||}	nd|d|}	|	|_        |                     ||          }
||
_        | j        j                            |
           | j                            |
           | j        | _        d S )Nrr   z<!DOCTYPE %sz PUBLIC "%s" 'r   r:   z6DOCTYPE system cannot contain single and double quotesU00027z"%s"z'%s'z''r=   r   zGlxml cannot represent doctype with a different name to the root elementz$<THIS_SHOULD_NEVER_APPEAR_PUBLICLY/>r   r   r}   r~   )rp   r   r   r   rd   coercePubidfindr   r   r
   replacer   
fromstringr   r   addpreviousr*   documentClassr   getroottreer#   getdefaultNamespacer6   r   r$   rA   r   r   r   )r   r   docStrsysidrootcomment_tokencommentr   r   	etree_tagroot_elements              r   
insertRootzTreeBuilder.insertRootQ  s   
 < 	z<$$$$nt|'888F%1L)5? .::4<;P;VTVWWY Z<( 
# L1Ezz#!++

310D0D &^`oppp %c8 < <zz#!++&5.0&5.0dNFcMF| E&M11gixyyy88'' "2 	/ 	/M''f(=>>GW-.... **,,%)%5%5%7%7" V}IIk4+@AA	II  %.IItt4I ((y99 $!((666  ... "3r   )Fr   )r   r   r   r!   r   r   r   r   r   fragmentClassr   implementationr   r   rj   r   r   r   r   r   r   __classcell__)r   s   @r   ru   ru      s        MLLLMNZ? Z? Z? Z?x  ' ' '8 8 8  # # # + + + +
= = = = = =74 74 74 74 74 74 74r   ru   )#__doc__
__future__r   r   r   r   rerL   collections.abcr   ImportErrorcollectionsrr   r   r   r
   r   rQ   r   
lxml.etreesixr   r   rw   compilerR   r   r6   rN   objectr   r!   rj   rs   ru   r   r   r   <module>r      s  	 	 C B B B B B B B B B  				 



+....... + + +********+       ' ' ' ' ' '       % % % % % %                             RZ((
u}U##'! ! ! ! !6 ! ! !* * * * *v * * *$L L L^& & &RO4 O4 O4 O4 O4$" O4 O4 O4 O4 O4s   ! //