ó
    |chö#  ã                   óš   • S r SSKrSSKrSSKJr  SSKJr  SSKJrJ	r	  \R                  R                  \(       + SS9 " S	 S
\	5      5       rg)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                   óÖ   • \ rS rSrSr\S 5       rS rS rS r	S r
S rS	 rS
 rS rS rS rS rS rS rS rS r\R.                  R1                  SSSS/4/5      S 5       rS rSrg)ÚTestHTML5LibBuilderé   z"See ``HTML5TreeBuilderSmokeTest``.c                 ó   • SSK Jn  U$ )Nr   )ÚHTML5TreeBuilder)Úbs4.builderr   )Úselfr   s     Ú`/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/bs4/tests/test_html5lib.pyÚdefault_builderÚ#TestHTML5LibBuilder.default_builder   s   € å0àÐó    c                 óD  • [        S5      nSn[        R                  " SS9 n[        USUS9nS S S 5        WR	                  5       U R                  U5      :X  d   eWu  nUR                  [        :X  d   eS[        UR                  5      ;   d   eg ! , (       d  f       Ni= f)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_soupstrainerÚ%TestHTML5LibBuilder.test_soupstrainer   s˜   € ä Ó$ˆØ2ˆÜ×$Ò$¨DÒ1°QÜ  ¨ÀÑIˆD÷ 2à�{‰{‹} × 1Ñ 1°&Ó 9Ó9Ð9Ð9à‰	ˆØ×Ñ¤8Ó+Ð+Ð+ØEÌØ�O‰OóJ
ó 
ð 	
ñ 
÷ 2Õ1ús   ¢BÂ
Bc                 óN   • SnU R                  US5        U R                  S5        g)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_tablesÚ0TestHTML5LibBuilder.test_correctly_nested_tables)   s9   € ðð 	ð 	×ÑØð)ô	
ð 	×Ñð;õ	
r   c                 ój   • SnU R                  U5      nSUR                  R                  5       :X  d   eg )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_doctypeÚ<TestHTML5LibBuilder.test_xml_declaration_followed_by_doctypeA   s1   € ðˆð �y‰y˜Ó ˆà §¡§¡£Ó/Ð/Ñ/r   c                 óª   • SnU R                  U5      nSUR                  R                  5       :X  d   eS[        UR	                  S5      5      :X  d   eg )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_allr0   s      r   Útest_reparented_markupÚ*TestHTML5LibBuilder.test_reparented_markupO   sU   € Ø9ˆØ�y‰y˜Ó ˆàSØ�y‰y×ÑÓ!ó"ð	
ð"ð ”C˜Ÿ™ cÓ*Ó+Ó+Ð+Ñ+r   c                 óª   • SnU R                  U5      nSUR                  R                  5       :X  d   eS[        UR	                  S5      5      :X  d   eg )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>r4   r.   r5   r0   s      r   Ú+test_reparented_markup_ends_with_whitespaceÚ?TestHTML5LibBuilder.test_reparented_markup_ends_with_whitespaceX   sU   € Ø;ˆØ�y‰y˜Ó ˆàUØ�y‰y×ÑÓ!ó"ð	
ð"ð ”C˜Ÿ™ cÓ*Ó+Ó+Ð+Ñ+r   c                 ó¶   • SnU R                  U5      nUR                  SS9u  p4UR                  S5      u  pVUR                  UL d   eUR                  UL d   eg)zsVerify 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%   r8   Únext_element)r   r#   r%   Úspace1Úspace2Útbody1Útbody2s          r   Ú<test_reparented_markup_containing_identical_whitespace_nodesÚPTestHTML5LibBuilder.test_reparented_markup_containing_identical_whitespace_nodesa   sb   € ð @ˆØ�y‰y˜Ó ˆØŸ™¨c˜Ð2‰ˆØŸ™ wÓ/‰ˆØ×"Ñ" fÒ,Ð,Ð,Ø×"Ñ" fÒ,Ð,Ñ,r   c                 óì   • SnU R                  U5      nUR                  nSUR                  :X  d   eUR                  SS9nUR	                  SS9S   nXTR                  :X  d   eXER
                  :X  d   eg )NzF<div><a>aftermath<p><noscript>target</noscript>aftermath</a></p></div>Útargetr@   Ú	aftermathéÿÿÿÿ)r%   ÚnoscriptrC   Úfindr8   Úprevious_element)r   r#   r%   rN   rK   Úfinal_aftermaths         r   Ú*test_reparented_markup_containing_childrenÚ>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Ñ9r   c                 ól   • SnU R                  U5      n[        U5      R                  S5      (       d   eg)z(Processing instructions become comments.s   <?PITarget PIContent?>z<!--?PITarget PIContent?-->N)r%   r    Ú
startswithr0   s      r   Útest_processing_instructionÚ/TestHTML5LibBuilder.test_processing_instruction~   s1   € à.ˆØ�y‰y˜Ó ˆÜ�4‹y×#Ñ#Ð$A×BÑBÐBÑBr   c                 ój   • SnU R                  U5      nUR                  S5      u  p4X4:X  d   eX4Ld   eg )Ns   <a class="my_class"><p></a>Úa)r%   r8   )r   r#   r%   Úa1Úa2s        r   Útest_cloned_multivalue_nodeÚ/TestHTML5LibBuilder.test_cloned_multivalue_node„   s8   € Ø3ˆØ�y‰y˜Ó ˆØ—‘˜sÓ#‰ˆØ‹xˆˆxØŠ|Ð‰|r   c                 ój   • SnU R                  U5      nSUR                  R                  5       :X  d   eg )Ns   <table><td></tbody>Az><body>A<table><tbody><tr><td></td></tr></tbody></table></body>)r%   r6   r   r0   s      r   Útest_foster_parentingÚ)TestHTML5LibBuilder.test_foster_parenting‹   s7   € Ø,ˆØ�y‰y˜Ó ˆàLØ�y‰y×ÑÓ!ó"ð	
ñ"r   c                 ó  • SnU R                  U5      nU" S5       Vs/ s H  o3R                  5       PM       nU" S5       Vs/ s H  o3R                  5       PM       n[        UR                  S5      5      S:X  d   egs  snf s  snf )zh
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>
ÚscriptÚstyler.   r   N)r%   Úextractr7   r8   )r   r#   r%   Úss       r   Útest_extractionÚ#TestHTML5LibBuilder.test_extraction“   sq   € ðˆð
 �y‰y˜Ó ˆÙ" 8œnÓ-šn˜�‰Ž™nÑ-Ù" 7œmÓ,šm˜�‰Ž™mÑ,ä�4—=‘= Ó%Ó&¨!Ó+Ð+Ñ+ùò 	.ùÚ,s   žA?ÁBc                 óÀ   • SnU R                  U5      n/ nUR                  S5       H#  nUR                  UR                  S5      5        M%     [        U5      S:X  d   eg)zj
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%   r8   Úextendr7   )r   r#   r%   Úinputsri   s        r   Útest_empty_commentÚ&TestHTML5LibBuilder.test_empty_comment¥   sX   € ðˆð �y‰y˜Ó ˆØˆØ—M‘M &Ö)ˆDØ�M‰M˜$Ÿ-™-¨Ó0Ö1ñ *ä�6‹{˜aÓÐÑr   c                 ó|  • SnU R                  U5      nSUR                  R                  :X  d   eSUR                  R                  :X  d   eSUR                  R	                  S5      R
                  :X  d   eU R                  USS9nS UR                  R                  L d   eS UR                  R                  L d   eg )Nz=
   <p>

<sourceline>
<b>text</b></sourceline><sourcepos></p>r4   é   Ú
sourcelineF)Ústore_line_numbers)r%   r.   rq   Ú	sourceposrO   Únamer0   s      r   Útest_tracking_line_numbersÚ.TestHTML5LibBuilder.test_tracking_line_numbers»   s­   € ð UˆØ�y‰y˜Ó ˆØ�D—F‘F×%Ñ%Ó%Ð%Ð%Ø�D—F‘F×$Ñ$Ó$Ð$Ð$Ø˜tŸv™vŸ{™{¨<Ó8×=Ñ=Ó=Ð=Ð=ð �y‰y˜°EˆyÐ:ˆØ�t—v‘v×(Ñ(Ò(Ð(Ð(Ø�t—v‘v×'Ñ'Ò'Ð'Ñ'r   c                 ó   • g ©N© ©r   s    r   Útest_special_string_containersÚ2TestHTML5LibBuilder.test_special_string_containersÉ   s   € ð 	r   c                 óè   • S Hl  u  pnSU-  nU R                  U5      R                  nUR                  5       nSUR                  S5      -  nXg:X  d   eUR                  SS9nSU-  nX‡:X  a  Ml   e   g )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;r�   r‚   )z&therefore;r�   r‚   )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_attributesÚ)TestHTML5LibBuilder.test_html5_attributesÏ   s…   € ó>
Ñ9ˆM¨>ð" % }Ñ4ˆFØ—)‘)˜FÓ#×'Ñ'ˆCØ!Ÿj™j›lˆOØ%¨×(=Ñ(=¸fÓ(EÑEˆFØ"Ó,Ð,Ð,àŸ:™:°˜:Ð7ˆLØ%¨Ñ6ˆFØÕ)Ð)Ð)ò3>
r   z
name,value)Údocument_declared_encodingrˆ   Úexclude_encodingsrˆ   c                 ó  • U R                  5       nX0n[        R                  " SS9 n[        UR                  " S0 UD65        S S S 5        Wu  n[        UR                  5      nUSU SU S3:X  d   eg ! , (       d  f       N7= f)NTr   zYou provided a value for z0, but the html5lib tree builder doesn't support Ú.)rY   )r   r   r   ÚlistÚprepare_markupr    r!   )r   rt   ÚvalueÚbuilderÚkwargsr$   r&   Úmsgs           r   Útest_prepare_markup_warningsÚ0TestHTML5LibBuilder.test_prepare_markup_warningsó   sŒ   € ð ×&Ñ&Ó(ˆØ�ˆÜ×$Ò$¨DÒ1°QÜ�×'Ò'Ñ6¨vÑ6Ô7÷ 2à‰	ˆÜ�'—/‘/Ó"ˆàØ*¨4¨&Ð0`ÐaeÐ`fÐfgÐhóið	
ñi÷ 2Õ1ús   ¨A5Á5
Bc                 ó   • g rx   ry   rz   s    r   Útest_doctype_filteredÚ)TestHTML5LibBuilder.test_doctype_filtered  s   € ð 	r   ry   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úpropertyr   r'   r+   r1   r9   r<   rH   rR   rV   r\   r_   rf   rm   ru   r{   r’   ÚpytestÚmarkÚparametrizerž   r¡   Ú__static_attributes__ry   r   r   r
   r
      s¡   † ñ
 -àñ ó ð ò

ò
ò00ò,ò,ò	-ò:ò$Còò
ò,ò$ ò,(òò"*ðH ‡[�[×ÑØØ	/Ð2EÈÀxÐ1PÐQóñ
ó	ð
õr   r
   )r§   r©   r   Úbs4r   Ú
bs4.filterr   Ú r   r   rª   Úskipifr
   ry   r   r   Ú<module>r±      sU   ðÙ Jã Û å Ý #÷ð ‡�×ÑØÔØLð ð ôvÐ3ó vó	ñvr   