
    (ph                     f    S r SSKrSSKrSSKJrJrJr  SSKJr  SSK	J
r
  SSKJr   " S S	\5      rg)
zGTests to ensure that the html.parser tree builder generates good
trees.    N)_DuplicateAttributeHandlerBeautifulSoupHTMLParserHTMLParserTreeBuilder)ParserRejectedMarkup)Any   )HTMLTreeBuilderSmokeTestc                   T    \ rS rSr\rS rS rS rS r	S r
S rS rS	 rS
 rS rSrg)TestHTMLParserTreeBuilder   c                     / SQnU H7  n[         R                  " [        5         U R                  U5        S S S 5        M9     g ! , (       d  f       MK  = f)N)s	   
<![ s   <![n s   <![UNKNOWN[]]>)pytestraisesr   soup)self
bad_markupmarkups      L/var/www/html/venv/lib/python3.13/site-packages/bs4/tests/test_htmlparser.pytest_rejected_input-TestHTMLParserTreeBuilder.test_rejected_input   s=    


 !F34		&! 54 !44s   A
A	c                     g N r   s    r   test_namespaced_system_doctype8TestHTMLParserTreeBuilder.test_namespaced_system_doctype(           c                     g r   r   r   s    r   test_namespaced_public_doctype8TestHTMLParserTreeBuilder.test_namespaced_public_doctype,   r   r   c                     U R                  S5      n[        R                  " US5      n[        R                  " U5      n[	        UR
                  [        UR
                  5      5      (       d   eg)zVUnlike 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_pickled1TestHTMLParserTreeBuilder.test_builder_is_pickled0   sP     yy)dA&f%&..$t||*<====r   c                 L    U R                  SS5        U R                  SS5        g )Nz<br></br><br></br><br></br>z<br/><br/><br/>z</br></br></br> assert_soupr   s    r   )test_redundant_empty_element_closing_tagsCTestHTMLParserTreeBuilder.test_redundant_empty_element_closing_tags9   s%    68IJ*B/r   c                 (    U R                  SS5        g )Nz
foo &# barzfoo &amp;# barr1   r   s    r   test_empty_element,TestHTMLParserTreeBuilder.test_empty_element=   s     	'78r   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>r#      
sourcelineF)store_line_numbers)r   pr:   	sourceposfindnamer   r   r   s      r   test_tracking_line_numbers4TestHTMLParserTreeBuilder.test_tracking_line_numbersB   s     Uyy DFF%%%%%DFF$$$$$tvv{{<8===== yyEy:tvv(((((tvv'''''r   c                 f  ^ ^ SmT R                  T5      nSUR                  S   :X  d   eS/UR                  S   :X  d   eSUR                  S   :X  d   eS[        S[        S	S 4UU 4S
 jjnU" S S5        U" [        R
                  S5        U" [        R                  S5        S nU" U/ SQ5        g )Nz;<a class="cls" href="url1" href="url2" href="url3" id="id">url3hrefclsclassidon_duplicate_attributeexpectedreturnc                    > TR                  TU S9nUR                  c   eXR                  S   :X  d   eS/UR                  S   :X  d   eSUR                  S   :X  d   eg )N)rI   rE   rF   rG   rH   )r   a)rI   rJ   r   r   r   s      r   assert_attributeOTestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.assert_attribute^   sl     99V<R9SD66%%%vvf~--- 7dffWo---466$<'''r   url1c                 f    [        X   [        5      (       d  X   /X'   X   R                  U5        g r   )r'   listappend)attrskeyvalues      r   
accumulateITestHTMLParserTreeBuilder.test_on_duplicate_attribute.<locals>.accumulatep   s,    ej$//#j\
Je$r   )rP   url2rD   )r   rM   r   r   r   REPLACEIGNORE)r   r   rN   rW   r   s   `   @r   test_on_duplicate_attribute5TestHTMLParserTreeBuilder.test_on_duplicate_attributeP   s     O yy '''w$&&/)))tvvd|###		($>		(JM		(		( 		( 	v&088&A 	077@	%
 	%=>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;rb   rc   )z&therefore;rb   rc   )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   rl   without_elementexpectwith_elements	            r   test_html5_attributes/TestHTMLParserTreeBuilder.test_html5_attributesw   s    
>
9M>" %}4F))F#''C!jjlO%(=(=f(EEF",,,:::7L%6F)))3>
r   c                     SnU R                  U5      nSUR                  R                  5       :X  d   eSnU R                  U5      nSUR                  R                  5       :X  d   eg )Nz<p>a &nosuchentity b</p>z<p>a &amp;nosuchentity b</p>z<p>a &nosuchentity; b</p>)r   r<   decoder@   s      r   test_invalid_html_entity2TestHTMLParserTreeBuilder.test_invalid_html_entity   sZ     ,yy -@@@,yy -@@@r   r   N)__name__
__module____qualname____firstlineno__r   default_builderr   r   r    r-   r3   r6   rA   r\   rt   rx   __static_attributes__r   r   r   r   r      s<    +O"*>09
(%?N*@
Ar   r   )__doc__r$   r   bs4.builder._htmlparserr   r   r   bs4.exceptionsr   typingr   r0   r	   r   r   r   r   <module>r      s8   
   
 0  &QA 8 QAr   