§
    ©öÉg  ã                   ón   — d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ  G d„ d	e¦  «        ZdS )
zGTests to ensure that the html.parser tree builder generates good
trees.é    N)Ú_DuplicateAttributeHandlerÚBeautifulSoupHTMLParserÚHTMLParserTreeBuilder)ÚParserRejectedMarkup)ÚAnyé   )ÚHTMLTreeBuilderSmokeTestc                   óN   — e Zd ZeZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ ZdS )ÚTestHTMLParserTreeBuilderc                 ó¤   — g d¢}|D ]H}t          j        t          ¦  «        5  |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒId S )N)s	   
<![ÿþþÍ s   <![n s   <![UNKNOWN[]]>)ÚpytestÚraisesr   Úsoup)ÚselfÚ
bad_markupÚmarkups      úe/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/bs4/tests/test_htmlparser.pyÚtest_rejected_inputz-TestHTMLParserTreeBuilder.test_rejected_input   s§   € ð

ð 

ð 

ˆ
ð !ð 	"ð 	"ˆFÝ”Õ3Ñ4Ô4ð "ð "Ø—	’	˜&Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "øð	"ð 	"s   ¢AÁA	ÁA	c                 ó   — d S ©N© ©r   s    r   Útest_namespaced_system_doctypez8TestHTMLParserTreeBuilder.test_namespaced_system_doctype(   ó   € àˆó    c                 ó   — d S r   r   r   s    r   Útest_namespaced_public_doctypez8TestHTMLParserTreeBuilder.test_namespaced_public_doctype,   r   r   c                 óÔ   — |                       d¦  «        }t          j        |d¦  «        }t          j        |¦  «        }t	          |j        t          |j        ¦  «        ¦  «        sJ ‚dS )zfUnlike most tree builders, HTMLParserTreeBuilder and will
        be restored after pickling.
        z<a><b>foo</a>é   N)r   ÚpickleÚdumpsÚloadsÚ
isinstanceÚbuilderÚtype)r   ÚtreeÚdumpedÚloadeds       r   Útest_builder_is_pickledz1TestHTMLParserTreeBuilder.test_builder_is_pickled0   s]   € ð �yŠy˜Ñ)Ô)ˆÝ”˜d AÑ&Ô&ˆÝ”˜fÑ%Ô%ˆÝ˜&œ.­$¨t¬|Ñ*<Ô*<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=r   c                 ó^   — |                       dd¦  «         |                       dd¦  «         d S )Nz<br></br><br></br><br></br>z<br/><br/><br/>z</br></br></br>Ú ©Úassert_soupr   s    r   Ú)test_redundant_empty_element_closing_tagszCTestHTMLParserTreeBuilder.test_redundant_empty_element_closing_tags9   s7   € Ø×ÒÐ6Ð8IÑJÔJÐJØ×ÒÐ*¨BÑ/Ô/Ð/Ð/Ð/r   c                 ó2   — |                       dd¦  «         d S )Nz
foo &# barzfoo &amp;# barr,   r   s    r   Útest_empty_elementz,TestHTMLParserTreeBuilder.test_empty_element=   s!   € ð 	×Ò˜Ð'7Ñ8Ô8Ð8Ð8Ð8r   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   Úpr3   Ú	sourceposÚfindÚname©r   r   r   s      r   Útest_tracking_line_numbersz4TestHTMLParserTreeBuilder.test_tracking_line_numbersB   s²   € ð UˆØ�yŠy˜Ñ Ô ˆØ�D”FÔ%Ò%Ð%Ð%Ð%Ø�D”FÔ$Ò$Ð$Ð$Ð$Ø˜tœvŸ{š{¨<Ñ8Ô8Ô=Ò=Ð=Ð=Ð=ð �yŠy˜°EˆyÑ:Ô:ˆØ�t”vÔ(Ð(Ð(Ð(Ð(Ø�t”vÔ'Ð'Ð'Ð'Ð'Ð'Ð'r   c                 ól  ‡ ‡— dŠ‰                       ‰¦  «        }d|j        d         k    sJ ‚dg|j        d         k    sJ ‚d|j        d         k    sJ ‚dt          dt          d	d fˆˆ fd
„} |d d¦  «          |t          j        d¦  «          |t          j        d¦  «         d„ } ||g d¢¦  «         d S )Nz;<a class="cls" href="url1" href="url2" href="url3" id="id">Úurl3ÚhrefÚclsÚclassÚidÚon_duplicate_attributeÚexpectedÚreturnc                 ó¼   •— ‰                      ‰| ¬¦  «        }|j        €J ‚||j        d         k    sJ ‚dg|j        d         k    sJ ‚d|j        d         k    sJ ‚d S )N)rA   r=   r>   r?   r@   )r   Úa)rA   rB   r   r   r   s      €€r   Úassert_attributezOTestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.assert_attribute^   sx   ø€ ð —9’9˜VÐ<R�9ÑSÔSˆDØ”6Ð%Ð%Ð%Ø˜tœv fœ~Ò-Ð-Ð-Ð-ð �7˜dœf WœoÒ-Ð-Ð-Ð-Ø˜4œ6 $œ<Ò'Ð'Ð'Ð'Ð'Ð'r   Úurl1c                 óŠ   — t          | |         t          ¦  «        s| |         g| |<   | |                              |¦  «         d S r   )r#   ÚlistÚappend)ÚattrsÚkeyÚvalues      r   Ú
accumulatezITestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.accumulatep   sE   € Ý˜e Cœj­$Ñ/Ô/ð *Ø# Cœj˜\��c‘
Ø�#ŒJ×Ò˜eÑ$Ô$Ð$Ð$Ð$r   )rG   Úurl2r<   )r   rE   r   r   r   ÚREPLACEÚIGNORE)r   r   rF   rN   r   s   `   @r   Útest_on_duplicate_attributez5TestHTMLParserTreeBuilder.test_on_duplicate_attributeP   s  øø€ ð Oˆð �yŠy˜Ñ Ô ˆØ˜œ œÒ'Ð'Ð'Ð'Øˆw˜$œ& œ/Ò)Ð)Ð)Ð)Ø�t”v˜d”|Ò#Ð#Ð#Ð#ð		(Ý$>ð		(ÝJMð		(àð		(ð 		(ð 		(ð 		(ð 		(ð 		(ð 		(ð 	Ð˜˜vÑ&Ô&Ð&ØÐÕ0Ô8¸&ÑAÔAÐAð 	ÐÕ0Ô7¸Ñ@Ô@Ð@ð	%ð 	%ð 	%ð
 	Ð˜Ð%=Ð%=Ð%=Ñ>Ô>Ð>Ð>Ð>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   ÚdivÚencode)	r   Úinput_elementÚoutput_unicodeÚoutput_elementr   ra   Úwithout_elementÚexpectÚwith_elements	            r   Útest_html5_attributesz/TestHTMLParserTreeBuilder.test_html5_attributesw   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   c                 óÞ   — d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚d}|                       |¦  «        }d|j                             ¦   «         k    sJ ‚d S )Nz<p>a &nosuchentity b</p>z<p>a &amp;nosuchentity b</p>z<p>a &nosuchentity; b</p>)r   r5   Údecoder9   s      r   Útest_invalid_html_entityz2TestHTMLParserTreeBuilder.test_invalid_html_entity—   sl   € ð ,ˆØ�yŠy˜Ñ Ô ˆØ-°´·²±´Ò@Ð@Ð@Ð@à,ˆØ�yŠy˜Ñ Ô ˆØ-°´·²±´Ò@Ð@Ð@Ð@Ð@Ð@r   N)Ú__name__Ú
__module__Ú__qualname__r   Údefault_builderr   r   r   r)   r.   r0   r:   rR   ri   rl   r   r   r   r   r      s¶   € € € € € Ø+€Oð"ð "ð "ð*ð ð ðð ð ð>ð >ð >ð0ð 0ð 0ð9ð 9ð 9ð
(ð (ð (ð%?ð %?ð %?ðN*ð *ð *ð@
Að 
Að 
Að 
Að 
Ar   r   )Ú__doc__r    r   Úbs4.builder._htmlparserr   r   r   Úbs4.exceptionsr   Útypingr   r+   r	   r   r   r   r   ú<module>ru      sÖ   ðð
ð 
ð €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &ðQAð QAð QAð QAð QAÐ 8ñ QAô QAð QAð QAð QAr   