Ë
    ò¦1h  ã                   óf   — 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y)
zGTests to ensure that the html.parser tree builder generates good
trees.é    N)Ú_DuplicateAttributeHandlerÚBeautifulSoupHTMLParserÚHTMLParserTreeBuilder)ÚParserRejectedMarkup)ÚAnyé   )ÚHTMLTreeBuilderSmokeTestc                   óL   — 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y)ÚTestHTMLParserTreeBuilderc                 ó˜   — g d¢}|D ]5  }t        j                  t        «      5  | j                  |«       d d d «       Œ7 y # 1 sw Y   ŒBxY w)N)s	   
<![ÿþþÍ s   <![n s   <![UNKNOWN[]]>)ÚpytestÚraisesr   Úsoup)ÚselfÚ
bad_markupÚmarkups      úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/bs4/tests/test_htmlparser.pyÚtest_rejected_inputz-TestHTMLParserTreeBuilder.test_rejected_input   sM   € ò

ˆ
ð !ò 	"ˆFÜ—‘Ô3Ó4ñ "Ø—	‘	˜&Ô!÷"ð "ñ	"÷"ð "ús   £A Á A		c                  ó   — y ©N© ©r   s    r   Útest_namespaced_system_doctypez8TestHTMLParserTreeBuilder.test_namespaced_system_doctype(   ó   € àó    c                  ó   — y r   r   r   s    r   Útest_namespaced_public_doctypez8TestHTMLParserTreeBuilder.test_namespaced_public_doctype,   r   r   c                 óÒ   — | j                  d«      }t        j                  |d«      }t        j                  |«      }t	        |j
                  t        |j
                  «      «      sJ ‚y)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   sM   € ð �y‰y˜Ó)ˆÜ—‘˜d AÓ&ˆÜ—‘˜fÓ%ˆÜ˜&Ÿ.™.¬$¨t¯|©|Ó*<Ô=Ð=Ñ=r   c                 óL   — | j                  dd«       | j                  dd«       y )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   s%   € Ø×ÑÐ6Ð8IÔJØ×ÑÐ*¨BÕ/r   c                 ó(   — | j                  dd«       y )Nz
foo &# barzfoo &amp;# barr,   r   s    r   Útest_empty_elementz,TestHTMLParserTreeBuilder.test_empty_element=   s   € ð 	×Ñ˜Ð'7Õ8r   c                 óx  — d}| j                  |«      }d|j                  j                  k(  sJ ‚d|j                  j                  k(  sJ ‚d|j                  j	                  d«      j
                  k(  sJ ‚| j                  |d¬«      }d |j                  j                  u sJ ‚d |j                  j                  u sJ ‚y )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‘F×%Ñ%Ò%Ð%Ð%Ø�D—F‘F×$Ñ$Ò$Ð$Ð$Ø˜tŸv™vŸ{™{¨<Ó8×=Ñ=Ò=Ð=Ð=ð �y‰y˜°EˆyÓ:ˆØ�t—v‘v×(Ñ(Ñ(Ð(Ð(Ø�t—v‘v×'Ñ'Ñ'Ð'Ñ'r   c                 ó\  ‡ ‡— dŠ‰ j                  ‰«      }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¢«       y )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 ‚||j                  d   k(  sJ ‚dg|j                  d   k(  sJ ‚d|j                  d   k(  sJ ‚y )N)rA   r=   r>   r?   r@   )r   Úa)rA   rB   r   r   r   s      €€r   Úassert_attributezOTestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.assert_attribute^   sn   ø€ ð —9‘9˜VÐ<R�9ÓSˆDØ—6‘6Ð%Ð%Ð%Ø˜tŸv™v f™~Ò-Ð-Ð-ð �7˜dŸf™f W™oÒ-Ð-Ð-Ø˜4Ÿ6™6 $™<Ò'Ð'Ñ'r   Úurl1c                 ód   — t        | |   t        «      s	| |   g| |<   | |   j                  |«       y r   )r#   ÚlistÚappend)ÚattrsÚkeyÚvalues      r   Ú
accumulatezITestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.accumulatep   s1   € Ü˜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‘v˜d‘|Ò#Ð#Ð#ð		(Ü$>ð		(ÜJMð		(àö		(ñ 	˜˜vÔ&ÙÔ0×8Ñ8¸&ÔAñ 	Ô0×7Ñ7¸Ô@ò	%ñ
 	˜Ò%=Õ>r   c                 óì   — dD ]o  \  }}}d|z  }| j                  |«      j                  }|j                  «       }d|j                  d«      z  }||k(  sJ ‚|j                  d¬«      }d|z  }||k(  rŒoJ ‚ y )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ˆOØ%¨×(=Ñ(=¸fÓ(EÑEˆFØ" fÒ,Ð,Ð,àŸ:™:°˜:Ó7ˆLØ%¨Ñ6ˆFØ 6Ó)Ð)Ð)ñ3	*r   c                 óÌ   — d}| j                  |«      }d|j                  j                  «       k(  sJ ‚d}| j                  |«      }d|j                  j                  «       k(  sJ ‚y )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—   sZ   € ð ,ˆØ�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ò9ò
(ò%?òN*ó@
Ar   r   )Ú__doc__r    r   Úbs4.builder._htmlparserr   r   r   Úbs4.exceptionsr   Útypingr   r+   r	   r   r   r   r   ú<module>ru      s8   ðñ
ó Û ÷ñ õ
 0Ý Ý &ôQAÐ 8õ QAr   