
    n9d                     R   d Z ddlZddlZddlZddlZddlmZmZ erddlm	Z	m
Z
 ddlmZmZ ddlmZmZmZ ddlmZmZmZmZ ej                            e d	
           G d dee                      Zej                            e d
           G d dee                      ZdS )z@Tests to ensure that the lxml tree builder generates good trees.    N   )LXML_PRESENTLXML_VERSION)LXMLTreeBuilderLXMLTreeBuilderForXML)BeautifulSoupBeautifulStoneSoup)CommentDoctypeSoupStrainer)HTMLTreeBuilderSmokeTestXMLTreeBuilderSmokeTestSOUP_SIEVE_PRESENTSoupTestz;lxml seems not to be present, not testing its tree builder.reasonc                       e Zd ZdZed             Zd Zd Zej	        
                    e pedk     d          d             Zd	 Zd
 ZdS )TestLXMLTreeBuilder!See ``HTMLTreeBuilderSmokeTest``.c                     t           S N)r   selfs    3lib/python3.11/site-packages/bs4/tests/test_lxml.pydefault_builderz#TestLXMLTreeBuilder.default_builder   s        c                     |                      dd           |                      dd           |                      dd           d S )Nz<p>foo&#10000000000000;bar</p>z<p>foobar</p>z<p>foo&#x10000000000000;bar</p>z<p>foo&#1000000000;bar</p>)assert_soupr   s    r   test_out_of_range_entityz,TestLXMLTreeBuilder.test_out_of_range_entity#   sf    ,o	? 	? 	?-	@ 	@ 	@(/	; 	; 	; 	; 	;r   c                     d S r    r   s    r   *test_entities_in_foreign_document_encodingz>TestLXMLTreeBuilder.test_entities_in_foreign_document_encoding+   s	     	r   )         r   z@Skipping doctype test for old version of lxml to avoid segfault.r   c                 ~    |                      d          }|j        d         }d|                                k    sJ d S )Nz
<!DOCTYPE>r    )soupcontentsstrip)r   r(   doctypes      r   test_empty_doctypez&TestLXMLTreeBuilder.test_empty_doctype4   s@    
 yy&&-"W]]__$$$$$$r   c                    t          j        d          5 }t          d          }d d d            n# 1 swxY w Y   dt          |j                  k    sJ |\  }|j        t          k    sJ dt          |j                  v sJ d S )NT)recordz<b />z<b/>z&BeautifulStoneSoup class is deprecated)warningscatch_warningsr	   strbfilename__file__message)r   wr(   warnings       r   %test_beautifulstonesoup_is_xml_parserz9TestLXMLTreeBuilder.test_beautifulstonesoup_is_xml_parser=   s     $D111 	/Q%g..D	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/TV$$$$	8++++73w;O;OOOOOOOs   266c                     |                      dd          }d|j        j        j        k    sJ d|j        j        j        k    sJ d S )Nz=
   <p>

<sourceline>
<b>text</b></sourceline><sourcepos></p>T)store_line_numbers
sourceline	sourcepos)r(   pr;   namer<   r   r(   s     r   test_tracking_line_numbersz.TestLXMLTreeBuilder.test_tracking_line_numbersG   s\     yyO#  
 
 tv055555df.3333333r   N)__name__
__module____qualname____doc__propertyr   r   r"   pytestmarkskipifr   r   r,   r8   r@   r!   r   r   r   r      s        
 ,+  X; ; ;   [4L94Q   % %	 %
P P P4 4 4 4 4r   r   z?lxml seems not to be present, not testing its XML tree builder.c                       e Zd ZdZed             Zd Zej        	                    e
 d          d             Zd ZdS )	TestLXMLXMLTreeBuilderr   c                     t           S r   )r   r   s    r   r   z&TestLXMLXMLTreeBuilder.default_builder]   s    $$r   c                     |                      d          }|j        ddddk    sJ |j        j        ddik    sJ |j        j        dddk    sJ |j        j        dddk    sJ |j        j        dddk    sJ d S )	Nam  <?xml version="1.1"?>
<root><tag xmlns="http://unprefixed-namespace.com">content</tag><prefix:tag2 xmlns:prefix="http://prefixed-namespace.com">content</prefix:tag2><prefix2:tag3 xmlns:prefix2="http://another-namespace.com"><subtag xmlns="http://another-unprefixed-namespace.com"><subsubtag xmlns="http://yet-another-unprefixed-namespace.com"></prefix2:tag3></root>z$http://www.w3.org/XML/1998/namespacezhttp://prefixed-namespace.comzhttp://another-namespace.com)xmlprefixprefix2rM   )rN   rM   )rO   rM   )r(   _namespacestagtag2subtag	subsubtagr?   s     r   test_namespace_indexingz.TestLXMLXMLTreeBuilder.test_namespace_indexinga   s   yy

 

& 955$
 $
 
 
 
 
 x#9(
 
 
 
 
 y$59)
 )
 
 
 
 

 {&59+
 +
 
 
 
 

 ~)59.
 .
 
 
 
 
 
 
r   zSoup Sieve not installedr   c                    |                      d          }|                    d          j        dk    sJ |                    d          j        dk    sJ |                    d          J |                    d|j        j                  j        dk    sJ |j                            d          j        dk    sJ |                    d          j        dk    sJ |                    d          j        dk    sJ |                    d	          j        dk    sJ |j                            d	          j        dk    sJ d S )
Nz<?xml version="1.1"?>
<root><tag xmlns="http://unprefixed-namespace.com">content</tag><prefix:tag2 xmlns:prefix="http://prefixed-namespace.com">content</tag><subtag xmlns:prefix="http://another-namespace-same-prefix.com"><prefix:tag3></subtag></root>rQ   zprefix|tag2rR   zprefix|tag3)
namespacestag3zprefix:tag2zprefix:tag3)r(   
select_oner>   rS   rP   findr?   s     r   /test_namespace_interaction_with_select_and_findzFTestLXMLXMLTreeBuilder.test_namespace_interaction_with_select_and_find   se    yy	
 	
 u%%*e3333}--2f<<<< }--555 dk&=  
 

&    {%%m4496AAAA yy$----yy'',6666yy'',6666{..3v======r   c                 8   |                      d          }t          |j        | j                  sJ t	          j        |          }t	          j        |          }d|j        j        k    sJ |j        |j        k    sJ t          |j        | j                  sJ d S )Nz<a>some markup</a>zsome markup)	r(   
isinstancebuilderr   pickledumpsloadsastring)r   r(   pickled	unpickleds       r   test_pickle_restores_builderz3TestLXMLXMLTreeBuilder.test_pickle_restores_builder   s     yy-..$,(<=====,t$$L))		 22222 DL0000)+T-ABBBBBBBr   N)rA   rB   rC   rD   rE   r   rU   rF   rG   rH   r   r[   rf   r!   r   r   rJ   rJ   V   s        
 ,+% % X%2
 2
 2
j ['A   %> %> %>NC C C C Cr   rJ   )rD   r_   rF   rer/   r'   r   r   bs4.builderr   r   bs4r   r	   bs4.elementr
   r   r   r   r   r   r   rG   rH   r   rJ   r!   r   r   <module>rk      s   F F   				  ( ( ( ( ( ( ( ( CBBBBBBBB        7 6 6 6 6 6 6 6 6 6            H   84 84 84 84 84($< 84 84	 84t L   qC qC qC qC qCX'> qC qC	 qC qC qCr   