§
    ©öÉgö#  ã                   ó¤   — d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ej
                             e d¬¦  «         G d	„ d
e	¦  «        ¦   «         ZdS )zDTests to ensure that the html5lib tree builder generates good trees.é    N)ÚBeautifulSoup)ÚSoupStraineré   )ÚHTML5LIB_PRESENTÚHTML5TreeBuilderSmokeTestz?html5lib seems not to be present, not testing its tree builder.)Úreasonc                   óÚ   — e Zd ZdZed„ ¦   «         Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             ddddgfg¦  «        d„ ¦   «         Zd„ ZdS )ÚTestHTML5LibBuilderz"See ``HTML5TreeBuilderSmokeTest``.c                 ó   — ddl m} |S )Nr   )ÚHTML5TreeBuilder)Úbs4.builderr   )Úselfr   s     úc/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/bs4/tests/test_html5lib.pyÚdefault_builderz#TestHTML5LibBuilder.default_builder   s   € à0Ð0Ð0Ð0Ð0Ð0àÐó    c                 ó\  — t          d¦  «        }d}t          j        d¬¦  «        5 }t          |d|¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         |                      |¦  «        k    sJ ‚|\  }|j        t          k    sJ ‚dt          |j	        ¦  «        v sJ ‚d S )NÚbz<p>A <b>bold</b> statement.</p>T©ÚrecordÚhtml5lib)Ú
parse_onlyz4the html5lib tree builder doesn't support parse_only)
r   ÚwarningsÚcatch_warningsr   ÚdecodeÚdocument_forÚfilenameÚ__file__ÚstrÚmessage)r   ÚstrainerÚmarkupÚwÚsoupÚwarnings         r   Útest_soupstrainerz%TestHTML5LibBuilder.test_soupstrainer   s  € å Ñ$Ô$ˆØ2ˆÝÔ$¨DÐ1Ñ1Ô1ð 	J°QÝ  ¨ÀÐIÑIÔIˆDð	Jð 	Jð 	Jñ 	Jô 	Jð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jøøøð 	Jð 	Jð 	Jð 	Jà�{Š{‰}Œ} × 1Ò 1°&Ñ 9Ô 9Ò9Ð9Ð9Ð9à‰	ˆØÔ¥8Ò+Ð+Ð+Ð+ØEÍØŒOñJ
ô J
ð 
ð 
ð 
ð 
ð 
ð 
s   §AÁA
ÁA
c                 ó`   — d}|                       |d¦  «         |                       d¦  «         dS )z8html5lib inserts <tbody> tags where other parsers don't.z[<table id="1"><tr><td>Here's another table:<table id="2"><tr><td>foo</td></tr></table></td>z†<table id="1"><tbody><tr><td>Here's another table:<table id="2"><tbody><tr><td>foo</td></tr></tbody></table></td></tr></tbody></table>z{<table><thead><tr><td>Foo</td></tr></thead><tbody><tr><td>Bar</td></tr></tbody><tfoot><tr><td>Baz</td></tr></tfoot></table>N)Úassert_soup)r   r!   s     r   Útest_correctly_nested_tablesz0TestHTML5LibBuilder.test_correctly_nested_tables)   sW   € ðð 	ð 	×ÒØð)ñ	
ô 	
ð 	
ð 	×Òð;ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ór   — d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚d S )Nzy<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
   <p>foo</p>
  </body>
</html>s
   <p>foo</p>)r#   ÚpÚencode©r   r!   r#   s      r   Ú(test_xml_declaration_followed_by_doctypez<TestHTML5LibBuilder.test_xml_declaration_followed_by_doctypeA   s=   € ðˆð �yŠy˜Ñ Ô ˆà ¤§¢¡¤Ò/Ð/Ð/Ð/Ð/Ð/r   c                 óÂ   — d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚dt          |                     d¦  «        ¦  «        k    sJ ‚d S )Nz%<p><em>foo</p>
<p>bar<a></a></em></p>zD<body><p><em>foo</em></p><em>
</em><p><em>bar<a></a></em></p></body>é   r*   ©r#   Úbodyr   ÚlenÚfind_allr,   s      r   Útest_reparented_markupz*TestHTML5LibBuilder.test_reparented_markupO   sm   € Ø9ˆØ�yŠy˜Ñ Ô ˆàSØŒy×ÒÑ!Ô!ò"ð "ð "ð "ð •C˜Ÿš cÑ*Ô*Ñ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   c                 óÂ   — d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚dt          |                     d¦  «        ¦  «        k    sJ ‚d S )Nz&<p><em>foo</p>
<p>bar<a></a></em></p>
zE<body><p><em>foo</em></p><em>
</em><p><em>bar<a></a></em></p>
</body>r/   r*   r0   r,   s      r   Ú+test_reparented_markup_ends_with_whitespacez?TestHTML5LibBuilder.test_reparented_markup_ends_with_whitespaceX   sm   € Ø;ˆØ�yŠy˜Ñ Ô ˆàUØŒy×ÒÑ!Ô!ò"ð "ð "ð "ð •C˜Ÿš cÑ*Ô*Ñ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   c                 óÂ   — d}|                       |¦  «        }|                     d¬¦  «        \  }}|                     d¦  «        \  }}|j        |u sJ ‚|j        |u sJ ‚dS )zƒVerify that we keep the two whitespace nodes in this
        document distinct when reparenting the adjacent <tbody> tags.
        z,<table> <tbody><tbody><ims></tbody> </table>ú ©ÚstringÚtbodyN)r#   r3   Únext_element)r   r!   r#   Úspace1Úspace2Útbody1Útbody2s          r   Ú<test_reparented_markup_containing_identical_whitespace_nodeszPTestHTML5LibBuilder.test_reparented_markup_containing_identical_whitespace_nodesa   su   € ð @ˆØ�yŠy˜Ñ Ô ˆØŸš¨c˜Ñ2Ô2‰ˆ�ØŸš wÑ/Ô/‰ˆ�ØÔ" fÐ,Ð,Ð,Ð,ØÔ" fÐ,Ð,Ð,Ð,Ð,Ð,r   c                 óô   — d}|                       |¦  «        }|j        }d|j        k    sJ ‚|                     d¬¦  «        }|                     d¬¦  «        d         }||j        k    sJ ‚||j        k    sJ ‚d S )NzF<div><a>aftermath<p><noscript>target</noscript>aftermath</a></p></div>Útargetr9   Ú	aftermathéÿÿÿÿ)r#   Únoscriptr<   Úfindr3   Úprevious_element)r   r!   r#   rF   rC   Úfinal_aftermaths         r   Ú*test_reparented_markup_containing_childrenz>TestHTML5LibBuilder.test_reparented_markup_containing_childrenl   s•   € àTð 	ð �yŠy˜Ñ Ô ˆØ”=ˆØ˜8Ô0Ò0Ð0Ð0Ð0Ø—’ (�Ñ+Ô+ˆð Ÿ-š-¨{˜-Ñ;Ô;¸BÔ?ˆð
  &Ô"5Ò5Ð5Ð5Ð5Ø˜Ô9Ò9Ð9Ð9Ð9Ð9Ð9r   c                 ó|   — d}|                       |¦  «        }t          |¦  «                             d¦  «        sJ ‚dS )z(Processing instructions become comments.s   <?PITarget PIContent?>z<!--?PITarget PIContent?-->N)r#   r   Ú
startswithr,   s      r   Útest_processing_instructionz/TestHTML5LibBuilder.test_processing_instruction~   s?   € à.ˆØ�yŠy˜Ñ Ô ˆÝ�4‰yŒy×#Ò#Ð$AÑBÔBÐBÐBÐBÐBÐBr   c                 ó€   — d}|                       |¦  «        }|                     d¦  «        \  }}||k    sJ ‚||usJ ‚d S )Ns   <a class="my_class"><p></a>Úa)r#   r3   )r   r!   r#   Úa1Úa2s        r   Útest_cloned_multivalue_nodez/TestHTML5LibBuilder.test_cloned_multivalue_node„   sK   € Ø3ˆØ�yŠy˜Ñ Ô ˆØ—’˜sÑ#Ô#‰ˆˆBØ�RŠxˆxˆxˆxØ˜ˆ|ˆ|ˆ|ˆ|ˆ|ˆ|r   c                 ór   — d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚d S )Ns   <table><td></tbody>Az><body>A<table><tbody><tr><td></td></tr></tbody></table></body>)r#   r1   r   r,   s      r   Útest_foster_parentingz)TestHTML5LibBuilder.test_foster_parenting‹   sJ   € Ø,ˆØ�yŠy˜Ñ Ô ˆàLØŒy×ÒÑ!Ô!ò"ð "ð "ð "ð "ð "r   c                 óØ   — d}|                       |¦  «        }d„  |d¦  «        D ¦   «          d„  |d¦  «        D ¦   «          t          |                     d¦  «        ¦  «        dk    sJ ‚dS )	z€
        Test that extraction does not destroy the tree.

        https://bugs.launchpad.net/beautifulsoup/+bug/1782928
        zW
<html><head></head>
<style>
</style><script></script><body><p>hello</p></body></html>
c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © ©Úextract©Ú.0Úss     r   ú
<listcomp>z7TestHTML5LibBuilder.test_extraction.<locals>.<listcomp>    s    € Ð-Ð-Ð-˜ˆ�Š‰ŒÐ-Ð-Ð-r   Úscriptc                 ó6   — g | ]}|                      ¦   «         ‘ŒS rW   rX   rZ   s     r   r]   z7TestHTML5LibBuilder.test_extraction.<locals>.<listcomp>¡   s    € Ð,Ð,Ð,˜ˆ�Š‰ŒÐ,Ð,Ð,r   Ústyler*   r   N)r#   r2   r3   r,   s      r   Útest_extractionz#TestHTML5LibBuilder.test_extraction“   s   € ðˆð
 �yŠy˜Ñ Ô ˆØ-Ð-˜d˜d 8™nœnÐ-Ñ-Ô-Ð-Ø,Ð,˜d˜d 7™mœmÐ,Ñ,Ô,Ð,å�4—=’= Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ð+Ð+r   c                 óâ   — d}|                       |¦  «        }g }|                     d¦  «        D ]*}|                     |                     d¦  «        ¦  «         Œ+t          |¦  «        dk    sJ ‚dS )z‚
        Test that empty comment does not break structure.

        https://bugs.launchpad.net/beautifulsoup/+bug/1806598
        zI
<html>
<body>
<form>
<!----><input type="text">
</form>
</body>
</html>
ÚformÚinputr   N)r#   r3   Úextendr2   )r   r!   r#   Úinputsrc   s        r   Útest_empty_commentz&TestHTML5LibBuilder.test_empty_comment¥   sz   € ðˆð �yŠy˜Ñ Ô ˆØˆØ—M’M &Ñ)Ô)ð 	2ð 	2ˆDØ�MŠM˜$Ÿ-š-¨Ñ0Ô0Ñ1Ô1Ð1Ð1Ý�6‰{Œ{˜aÒÐÐÐÐÐr   c                 ó4  — d}|                       |¦  «        }d|j        j        k    sJ ‚d|j        j        k    sJ ‚d|j                             d¦  «        j        k    sJ ‚|                       |d¬¦  «        }d |j        j        u sJ ‚d |j        j        u sJ ‚d S )Nz=
   <p>

<sourceline>
<b>text</b></sourceline><sourcepos></p>r/   é   Ú
sourcelineF)Ústore_line_numbers)r#   r*   rj   Ú	sourceposrG   Únamer,   s      r   Útest_tracking_line_numbersz.TestHTML5LibBuilder.test_tracking_line_numbers»   s²   € ð UˆØ�yŠy˜Ñ Ô ˆØ�D”FÔ%Ò%Ð%Ð%Ð%Ø�D”FÔ$Ò$Ð$Ð$Ð$Ø˜tœvŸ{š{¨<Ñ8Ô8Ô=Ò=Ð=Ð=Ð=ð �yŠy˜°EˆyÑ:Ô:ˆØ�t”vÔ(Ð(Ð(Ð(Ð(Ø�t”vÔ'Ð'Ð'Ð'Ð'Ð'Ð'r   c                 ó   — d S ©NrW   ©r   s    r   Útest_special_string_containersz2TestHTML5LibBuilder.test_special_string_containersÉ   s	   € ð 	ˆr   c                 ó  — dD ]|\  }}}d|z  }|                       |¦  «        j        }|                     ¦   «         }d|                     d¦  «        z  }||k    sJ ‚|                     d¬¦  «        }d|z  }||k    sJ ‚Œ}d S )N))z&RightArrowLeftArrow;u   â‡„s   &rlarr;)z&models;u   âŠ§s   &models;)z&Nfr;u   ð�”‘s   &Nfr;)z&ngeqq;u   â‰§Ì¸s   &ngeqq;)z&not;õ   Â¬s   &not;)z&Not;u   â«¬s   &Not;)z&quot;ú"ó   ")z&there4;õ   âˆ´ó   &there4;)z&Therefore;rw   rx   )z&therefore;rw   rx   )z&fjlig;Úfjs   fj)z&sqcup;u   âŠ”s   &sqcup;)z&sqcups;u   âŠ”ï¸€s   &sqcups;)z&apos;ú'ó   ')z&verbar;ú|ó   |z<div>%s</div>s   <div>%s</div>Úutf8Úhtml)Ú	formatter)r#   Údivr+   )	r   Úinput_elementÚoutput_unicodeÚoutput_elementr!   r�   Úwithout_elementÚexpectÚwith_elements	            r   Útest_html5_attributesz)TestHTML5LibBuilder.test_html5_attributesÏ   s«   € ð>
ð 	*ð 	*Ñ9ˆM˜>¨>ð" % }Ñ4ˆFØ—)’)˜FÑ#Ô#Ô'ˆCØ!Ÿjšj™lœlˆOØ%¨×(=Ò(=¸fÑ(EÔ(EÑEˆFØ" fÒ,Ð,Ð,Ð,àŸ:š:°˜:Ñ7Ô7ˆLØ%¨Ñ6ˆFØ 6Ò)Ð)Ð)Ð)Ð)ð3	*ð 	*r   z
name,value)Údocument_declared_encodingr~   Úexclude_encodingsr~   c                 ó  — |                       ¦   «         }||i}t          j        d¬¦  «        5 }t           |j        di |¤Ž¦  «         d d d ¦  «         n# 1 swxY w Y   |\  }t          |j        ¦  «        }|d|› d|› d�k    sJ ‚d S )NTr   rO   zYou provided a value for z0, but the html5lib tree builder doesn't support ú.)rO   )r   r   r   ÚlistÚprepare_markupr   r   )r   rm   ÚvalueÚbuilderÚkwargsr"   r$   Úmsgs           r   Útest_prepare_markup_warningsz0TestHTML5LibBuilder.test_prepare_markup_warningsó   sú   € ð ×&Ò&Ñ(Ô(ˆØ˜�ˆÝÔ$¨DÐ1Ñ1Ô1ð 	8°QÝÐ'�Ô'Ð6Ð6¨vÐ6Ð6Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8à‰	ˆÝ�'”/Ñ"Ô"ˆàØh¨4ÐhÐhÐaeÐhÐhÐhòið ið ið ið ið is   ®AÁAÁAc                 ó   — d S rp   rW   rq   s    r   Útest_doctype_filteredz)TestHTML5LibBuilder.test_doctype_filtered  s	   € ð 	ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r%   r(   r-   r4   r6   rA   rJ   rM   rR   rT   ra   rg   rn   rr   rˆ   ÚpytestÚmarkÚparametrizer“   r•   rW   r   r   r
   r
      sl  € € € € € ð
 -Ð,àð ð  ñ „Xð ð

ð 
ð 
ð
ð 
ð 
ð00ð 0ð 0ð,ð ,ð ,ð,ð ,ð ,ð	-ð 	-ð 	-ð:ð :ð :ð$Cð Cð Cðð ð ð
ð 
ð 
ð,ð ,ð ,ð$ ð  ð  ð,(ð (ð (ðð ð ð"*ð "*ð "*ðH „[×ÒØØ	/Ð2EÈÀxÐ1PÐQñô ð
ð 
ñ	ô ð
ðð ð ð ð r   r
   )r™   r›   r   Úbs4r   Ú
bs4.filterr   Ú r   r   rœ   Úskipifr
   rW   r   r   ú<module>r¢      s×   ðØ JÐ Jà €€€Ø €€€à Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð „×ÒØÐØLð ñ ô ðvð vð vð vð vÐ3ñ vô vñ	ô ðvð vð vr   