
    (ph                     N    S SK r S SKJr  S SKJrJrJr  SSKJr   " S S\5      r	g)    N)Tag)	FormatterHTMLFormatterXMLFormatter   )SoupTestc                   \   \ rS rSrS rS rS r\R                  R                  SSSSS	S
SSS\
" 5       S4S/
5      S 5       rS r\R                  R                  S\" SS9S4\" SS9S4\" SS9S4\" SS9S4/5      S 5       r\R                  R                  S/ SQ5      S 5       rS rSrg )!TestFormatter   c                     [        5       n[        SS9nSUS'   SUS'   SS/UR                  U5      :X  d   eS Ul        / UR                  U5      :X  d   eS	UR                  :X  d   eg )
Ntag)name1b2a)r   r   )r   r    )r   r   
attributesattrsindent)self	formatterr   s      K/var/www/html/venv/lib/python3.13/site-packages/bs4/tests/test_formatter.pytest_default_attributes%TestFormatter.test_default_attributes   sz    K	uoCC
 J'9+?+?+DDDD 	Y))#....i&&&&&    c                      " S S[         5      nU R                  S5      nU" 5       nUR                  US9nUR                  UR                  :X  d   eSU:X  d   eg )Nc                       \ rS rSrS rSrg)=TestFormatter.test_sort_attributes.<locals>.UnsortedFormatter#   c              3      #    Xl         [        UR                  R                  5       5       H  u  p#US:X  a  M  X#4v   M     g 7f)Nignore)called_withsortedr   items)r   r   kvs       r   r   HTestFormatter.test_sort_attributes.<locals>.UnsortedFormatter.attributes$   s8     #& "399??#45DAH} $J 6s   AA)r#   N)__name__
__module____qualname____firstlineno__r   __static_attributes__ r   r   UnsortedFormatterr   #   s    r   r/   z*<p cval="1" aval="2" ignore="ignored"></p>r   z<p aval="2" cval="1"></p>)r   soupdecoder#   p)r   r/   r1   r   decodeds        r   test_sort_attributes"TestFormatter.test_sort_attributes    s_    		 	 yyEF%'	++	+2 $$...*g555r   c                    S H'  n[         R                  U   nSUR                  L a  M'   e   [        R                  S    nSUR                  L d   e[         R                  S   nSUR                  L d   e[	        SS9nSUR                  L d   eS H[  nU R                  U5      nS HA  nSUR                  R                  S	S
9:X  d   eSUR                  R                  SS
9:X  a  MA   e   M]     g )N)htmlminimalNFhtml5T)empty_attributes_are_booleans)z<option selected></option>z<option selected=""></option>)r8   r9   xmlNs   <option selected=""></option>r8   r0   s   <option selected></option>)r   REGISTRYr;   r   r   r1   optionencode)r   r   r   markupr1   s        r   "test_empty_attributes_are_booleans0TestFormatter.test_empty_attributes_are_booleans4   s    .D%..t4IICCCCC . !))$/		?????!**73	y>>>>> DA	y>>>>> VF99V$D=	74;;;M;M$ <N <    58J8J% 9K 9   	 > Vr   zindent,expect)N<a>
<b>
text
</b>
</a>
)rC   )r   rC   ) rC   )r   <a>
 <b>
  text
 </b>
</a>
)   z<a>
  <b>
    text
  </b>
</a>
)	z<a>
	<b>
		text
	</b>
</a>
)abcz#<a>
abc<b>
abcabctext
abc</b>
</a>
rF   )s   bytesrF   c                     U R                  S5      n[        US9nUR                  US9U:X  d   eUR                  US9U:w  d   eg )Nz<a><b>text</b></a>r   r0   )r1   r   prettifyr?   )r   r   expectr1   r   s        r   test_indentTestFormatter.test_indentQ   sQ    & yy-.V,	}}y}1V;;; {{Y{/6999r   c                 <    [        5       nUR                  S:X  d   eg )Nr   )r   r   )r   r   s     r   test_default_indent_value'TestFormatter.test_default_indent_valuel   s    K	3&&&r   zformatter,expectr   rK   z<p>
 a
</p>
rG   z<p>
  a
</p>
rH   z<p>
	a
</p>
c                 b    U R                  S5      nX#R                  R                  US9:X  d   eg )Nz<p>a</p>r0   )r1   r3   rL   )r   r   rM   r1   s       r   test_indent_subclasses$TestFormatter.test_indent_subclassesp   s-     yy$9====r   zs,expect_html,expect_html5)	)	foo & barzfoo &amp; barrV   )foo&zfoo&amp;rW   )
foo&&& barzfoo&amp;&amp;&amp; barrX   )x=1&y=2zx=1&amp;y=2rY   )&123z&amp;123rZ   )&abcz&amp;abcr[   )
foo &0 barzfoo &amp;0 barr\   )foo &lolwat barzfoo &amp;lolwat barr]   )z&nosuchentity;&amp;nosuchentity;r^   c                     [         R                  S   R                  U5      U:X  d   e[         R                  S   R                  U5      U:X  d   e[         R                  S   R                  U5      U:X  d   eg )Nr8   r:   z
html5-4.12)r   r=   
substitute)r   sexpect_htmlexpect_html5s       r   test_entity_substitution&TestFormatter.test_entity_substitution{   sp    $ %%f-88;{JJJ%%g.99!<LLL%%l3>>qA[PPPr   c                    SnU R                  U5      nSUR                  R                  :X  d   eUR                  R                  S-   UR                  l        SUR                  R                  :X  d   eSnX2R                  R                  SS9:X  d   eX2R                  R                  SS9:X  d   eS	nU R                  U5      nS
UR                  R                  SS9:X  d   eS	UR                  R                  SS9:X  d   eg )Nuf   <p>Some division signs: ÷ &divide; &#247; &#xf7;. These are made with: ÷ &amp;divide; &amp;#247;</p>uI   Some division signs: ÷ ÷ ÷ ÷. These are made with: ÷ &divide; &#247;z &#xf7;uP   Some division signs: ÷ ÷ ÷ ÷. These are made with: ÷ &divide; &#247; &#xf7;z<p>Some division signs: &divide; &divide; &divide; &divide;. These are made with: &divide; &amp;divide; &amp;#247; &amp;#xf7;</p>r8   r0   r:   z<p>a & b</p>z<p>a &amp; b</p>)r1   r3   stringr2   )r   r@   r1   rM   s       r   test_entity_round_trip$TestFormatter.test_entity_round_trip   s     zyy Wvv}}	

 	1 _vv}}	
 U88889999yy !TVV]]V]%DDDD!AAAAr   r.   N)r)   r*   r+   r,   r   r5   rA   pytestmarkparametrizeobjectrN   rQ   r   r   rT   rd   rh   r-   r.   r   r   r
   r
      s    '&6(: [[20/037:?X9::	
 	:! 	:' [[/!$&78!$&89#%67&(:;		
(>(> [[$	
"Q#"Q
Br   r
   )
rj   bs4.elementr   bs4.formatterr   r   r   rE   r   r
   r.   r   r   <module>rp      s*      
 ^BH ^Br   