§
     Mºfp  ã                   ó|   — d Z ddlmZ ddl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mZ  G d„ d	ee¦  «        ZdS )
zGTests to ensure that the html.parser tree builder generates good
trees.é    )Ú	set_traceN)ÚHTMLParserTreeBuilderÚParserRejectedMarkupÚXMLParsedAsHTMLWarning)ÚBeautifulSoupHTMLParseré   )ÚSoupTestÚHTMLTreeBuilderSmokeTestc                   óH   — 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
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Úmarkupr   s       úX/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/bs4/tests/test_htmlparser.pyÚtest_rejected_inputz-TestHTMLParserTreeBuilder.test_rejected_input   s¦   € ð
ð 
ð 
ˆ
ð !ð 	)ð 	)ˆFÝ”Õ3Ñ4Ô4ð )ð )Ø—y’y Ñ(Ô(�ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )øð	)ð 	)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_pickled2   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_tags;   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                 óP  — d}|                       |¦  «        }d|j        j        k    sJ ‚d|j        j        k    sJ ‚d|j                             d¦  «        j        k    sJ ‚|                       |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>r    é   Ú
sourcelineF)Ústore_line_numbersÚ	sourcepos)r   Úpr4   r6   ÚfindÚname)r   r   r   s      r   Útest_tracking_line_numbersz4TestHTMLParserTreeBuilder.test_tracking_line_numbersD   s¸   € ð UˆØ�yŠy˜Ñ Ô ˆØ�D”FÔ%Ò%Ð%Ð%Ð%Ø�D”FÔ$Ò$Ð$Ð$Ð$Ø˜tœvŸ{š{¨<Ñ8Ô8Ô=Ò=Ð=Ð=Ð=ð �yŠy˜°EˆyÑ:Ô:ˆØ˜tœvÔ0Ô5Ò5Ð5Ð5Ð5Ø˜dœfÔ.Ô3Ò3Ð3Ð3Ð3Ð3Ð3r   c                 óJ  ‡ ‡— dŠ‰                       ‰¦  «        }d|j        d         k    sJ ‚dg|j        d         k    sJ ‚d|j        d         k    sJ ‚ˆˆ 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Úidc                 óª   •— ‰                      ‰| ¬¦  «        }||j        d         k    sJ ‚dg|j        d         k    sJ ‚d|j        d         k    sJ ‚d S )N)Úon_duplicate_attributer=   r>   r?   r@   )r   Úa)rB   Úexpectedr   r   r   s      €€r   Úassert_attributezOTestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.assert_attribute`   sr   ø€ Ø—9’9ØÐ/Eð ñ ô ˆDð ˜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   )rF   Úurl2r<   )r   rC   r   ÚREPLACEÚIGNORE)r   r   rE   rM   r   s   `   @r   Útest_on_duplicate_attributez5TestHTMLParserTreeBuilder.test_on_duplicate_attributeR   sú   øø€ ð Oˆð �yŠy˜Ñ Ô ˆØ˜œ œÒ'Ð'Ð'Ð'Øˆw˜$œ& œ/Ò)Ð)Ð)Ð)Ø�t”v˜d”|Ò#Ð#Ð#Ð#ð	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	Ð˜˜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;rV   rW   )z&therefore;rV   rW   )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   r`   Úwithout_elementÚexpectÚwith_elements	            r   Útest_html5_attributesz/TestHTMLParserTreeBuilder.test_html5_attributesv   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   N)Ú__name__Ú
__module__Ú__qualname__r   Údefault_builderr   r   r   r*   r/   r1   r:   rQ   rh   r   r   r   r   r      s¡   € € € € € à+€Oð)ð )ð )ð,ð ð ðð ð ð>ð >ð >ð0ð 0ð 0ð9ð 9ð 9ð
4ð 4ð 4ð"?ð "?ð "?ðH*ð *ð *ð *ð *r   r   )Ú__doc__Úpdbr   r!   r   ÚwarningsÚbs4.builderr   r   r   Úbs4.builder._htmlparserr   r,   r	   r
   r   r   r   r   ú<module>rr      sÝ   ðð
ð 
ð Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð
 <Ð ;Ð ;Ð ;Ð ;Ð ;Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ðD*ð D*ð D*ð D*ð D* Ð*Bñ D*ô D*ð D*ð D*ð D*r   