
    (phX                     h   S r SSKrSSKr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KJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  S
SKJrJrJr  SSKrSSKJr   " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r&g)z#Tests of Beautiful Soup as a whole.    N)Iterable)BeautifulSoupGuessedAtParserWarningdammit)TreeBuilder)AttributeValueListXMLAttributeDictCommentPYTHON_SPECIFIC_ENCODINGSTagNavigableString)SoupStrainerParserRejectedMarkup)MarkupResemblesLocatorWarning   )default_builderLXML_PRESENTSoupTest)Typec                       \ rS rSrS rS rS rS rS rS r	S r
S	 r\R                  R                  S
SSS /5      S 5       rSrg)TestConstructor+   c                 b    SnU R                  U5      nSUR                  R                  :X  d   eg )Nu   <h1>éé</h1>u   éésouph1stringselfdatar   s      F/var/www/html/venv/lib/python3.13/site-packages/bs4/tests/test_soup.pytest_short_unicode_input(TestConstructor.test_short_unicode_input,   s*    yy'''    c                 b    SnU R                  U5      nSUR                  R                  :X  d   eg )Nz<h1>foo bar</h1>zfoo barr   r   s      r"   test_embedded_null"TestConstructor.test_embedded_null1   s*    "yyTWW^^+++r%   c                 l    SR                  S5      nU R                  US/S9nSUR                  :X  d   eg )Nu   Räksmörgåsutf-8)exclude_encodingszwindows-1252)encoder   original_encoding)r    	utf8_datar   s      r"   test_exclude_encodings&TestConstructor.test_exclude_encodings6   s:    #**73	yywiy@!7!7777r%   c                     " S S[         5      n[        SSS9n[        R                  " SS9   [	        SSU0UD6nS S S 5        [        WR                  U5      (       d   e[        SS	9UR                  R                  :X  d   eS
UR                  R                  :X  d   eU" S0 UD6n[        R                  " SS9 n[	        SUSS9nS S S 5        [        WS   R                  5      nUR                  S5      (       d   eXCR                  :X  d   eX$R                  :X  d   eg ! , (       d  f       N= f! , (       d  f       Nr= f)Nc                   @    \ rS rSrS rS rS rS rS r\=r	r
S rSrg	)
7TestConstructor.test_custom_builder_class.<locals>.Mock>   c                     Xl         SU l        SU l        / U l        / U l        0 U l        [        U l        [        U l	        g )NTF)
called_withis_xmlstore_line_numberscdata_list_attributespreserve_whitespace_tagsstring_containersr	   attribute_dict_classr   attribute_value_list_class)r    kwargss     r"   __init__@TestConstructor.test_custom_builder_class.<locals>.Mock.__init__?   s?    #) "*/'-/*02-)+&,<)2D/r%   c                     g N r    r   s     r"   initialize_soupGTestConstructor.test_custom_builder_class.<locals>.Mock.initialize_soupI       r%   c                     Xl         g rB   )fed)r    markups     r"   feed<TestConstructor.test_custom_builder_class.<locals>.Mock.feedL   s    !r%   c                     g rB   rC   r    s    r"   reset=TestConstructor.test_custom_builder_class.<locals>.Mock.resetO   rG   r%   c                     g rB   rC   )r    ignores     r"   rR   >TestConstructor.test_custom_builder_class.<locals>.Mock.ignoreR   rG   r%   c              ?      #    Sv   g 7f)N)prepared markupzoriginal encodingzdeclared encodingzcontains replacement charactersrC   r    argsr>   s      r"   prepare_markupFTestConstructor.test_custom_builder_class.<locals>.Mock.prepare_markupW   s      s   )	r<   r=   r6   r9   rI   r7   r:   r8   r;   N)__name__
__module____qualname____firstlineno__r?   rE   rK   rO   rR   set_up_substitutionscan_be_empty_elementrX   __static_attributes__rC   r%   r"   Mockr3   >   s0    E" ;A@ #7r%   ra   valueT)varconvertEntitiesrecord builder)rc   rU   )rh   ignored_valuer   zCKeyword arguments to the BeautifulSoup constructor will be ignored.)rg   rC   )objectdictwarningscatch_warningsr   
isinstancerh   r6   rI   strmessage
startswith)r    ra   r>   r   rh   wmsgs          r"   test_custom_builder_class)TestConstructor.test_custom_builder_class;   s3   	6 	B  !	
 $$D1 <T<V<D 2$,,---- DLL$<$<<<< DLL$4$4444
 ..$$D1Q "D 2 !A$,,~~Q
 
 	
 
 ,,&&&,,,,,+ 21 21s   D#<D4#
D14
Ec                      " S S[         5      nS n[        R                  " [        5       n[	        SUS9  S S S 5        S[        WR                  5      ;   d   eg ! , (       d  f       N*= f)Nc                       \ rS rSrS rSrg):TestConstructor.test_parser_markup_rejection.<locals>.Mock   c                     [        S5      e)NzNope.r   rV   s      r"   rK   ?TestConstructor.test_parser_markup_rejection.<locals>.Mock.feed   s    *733r%   rC   N)rZ   r[   r\   r]   rK   r`   rC   r%   r"   ra   rx      s    4r%   ra   c              ?   ,   #    US S S4v   US S S4v   g 7fNFrC   )r    rJ   rW   r>   s       r"   rX   DTestConstructor.test_parser_markup_rejection.<locals>.prepare_markup   s%      $e++$e++s   rg   )rh   zoThe markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.)r   pytestraisesr   r   ro   rb   )r    ra   rX   exc_infos       r"   test_parser_markup_rejection,TestConstructor.test_parser_markup_rejection|   s]    	4; 	4	, ]]/0H"d+ 1 ~8>>"#	
# 10s   A
A*c                    SnU R                  U5      nUR                  nSUS   :X  d   eSS/US   :X  d   eU R                  U[        S S9nSUR                  S   :X  d   eSS0SS04 HU  n[        R                  " S	S
9   U R                  US US9nS S S 5        UR                  nSS/US   :X  d   eSUS   :X  a  MU   e   g ! , (       d  f       N7= f)Nz&<a id=" an id " class=" a class "></a>z an id idaclass)rh   multi_valued_attributesz	 a class *Tre   an)r   r   r   rl   rm   )r    rJ   r   r   
switcheroos        r"   test_cdata_list_attributes*TestConstructor.test_cdata_list_attributes   s     :yy  FFAdG###W~7+++
 yyRVyWdffWo---  ;d4J((5 yyD* !  6 A$<1T7***!G*,,, 555s   C
C	c           	         ^^^  " S S[         5      m " S S[        5      m " S S[        5      mU R                  S[         T[        T[        T0S9n[	        UUU4S	 jUR
                   5       5      (       d   eg )
Nc                       \ rS rSrSrg)9TestConstructor.test_replacement_classes.<locals>.TagPlus   rC   NrZ   r[   r\   r]   r`   rC   r%   r"   TagPlusr          r%   r   c                       \ rS rSrSrg)<TestConstructor.test_replacement_classes.<locals>.StringPlus   rC   Nr   rC   r%   r"   
StringPlusr      r   r%   r   c                       \ rS rSrSrg)=TestConstructor.test_replacement_classes.<locals>.CommentPlus   rC   Nr   rC   r%   r"   CommentPlusr      r   r%   r   z<a><b>foo</b>bar</a><!--whee-->)element_classesc              3   B   >#    U  H  n[        UTTT45      v   M     g 7frB   )rn   ).0xr   r   r   s     r"   	<genexpr>;TestConstructor.test_replacement_classes.<locals>.<genexpr>   s&      
GW!Jq7J<==GWs   )r   r   r
   r   alldescendants)r    r   r   r   r   s     @@@r"   test_replacement_classes(TestConstructor.test_replacement_classes   s    	c 		 		' 	 yy-W  
  
GKGWGW
 
 
 	
 
r%   c                     " S S[         5      n " S S[         5      nU R                  SUUS.S9n[        UR                  R                  S   [         5      (       d   e[        UR
                  R                  S   U5      (       d   eUR                  R                   H  n[        XB5      (       a  M   e   / UR                  :X  d   eg )	Nc                       \ rS rSrSrg)ATestConstructor.test_alternate_string_containers.<locals>.PString   rC   Nr   rC   r%   r"   PStringr      r   r%   r   c                       \ rS rSrSrg)ATestConstructor.test_alternate_string_containers.<locals>.BString   rC   Nr   rC   r%   r"   BStringr      r   r%   r   z4<div>Hello.<p>Here is <b>some <i>bolded</i></b> text)bp)r;   r   )	r   r   rn   divcontentsr   r   stringsstring_container_stack)r    r   r   r   ss        r"    test_alternate_string_containers0TestConstructor.test_alternate_string_containers   s    	o 		o 	 yyB  
 $((++A.@@@@ $&&//!,g6666 Aa))))  
 T00000r%   
bad_markupr   Fc                     gr}   rC   )r   s    r"   <lambda>TestConstructor.<lambda>   s    r%   c                     [         R                  " [        5       n[        US5        S S S 5        SU< S3[	        WR
                  5      ;   d   eg ! , (       d  f       N/= f)Nhtml.parserz'Incoming markup is of an invalid type: z?. Markup must be a string, a bytestring, or an open filehandle.)r   r   	TypeErrorr   ro   rb   )r    r   r   s      r"   test_invalid_markup_type(TestConstructor.test_invalid_markup_type   sY    ]]9%*m4 & 6j^  DC  D8>>"#	
# &%s   A
ArC   N)rZ   r[   r\   r]   r#   r'   r/   rt   r   r   r   r   r   markparametrizer   r`   rC   r%   r"   r   r   +   sY    (
,
8
?-B
*->
61B [[\Auo+FG
 H
r%   r   c                       \ rS rSr\R
                  R                  SSS/5      S 5       r\R
                  R                  S\ V Vs/ s H  oPM     snn S/-   5      S 5       r	S	 r
S
rgs  snn f )
TestOutput   z!eventual_encoding,actual_encoding)r*   r*   )utf-16r   c                 f    U R                  S5      nSUl        SU S3UR                  US9:X  d   eg )N<tag></tag>Tz<?xml version="1.0" encoding="z"?>
<tag></tag>eventual_encoding)r   r7   decode)r    r   actual_encodingr   s       r"   test_decode_xml_declaration&TestOutput.test_decode_xml_declaration   sG     yy',_,==MN{{->{?@	
@r%   r   Nc                 T    [        SS5      nSUl        SUR                  US9:X  d   eg )Nr   r   Tz!<?xml version="1.0"?>
<tag></tag>r   )r   r7   r   )r    r   r   s      r"   Mtest_decode_xml_declaration_with_missing_or_python_internal_eventual_encodingXTestOutput.test_decode_xml_declaration_with_missing_or_python_internal_eventual_encoding
  s=     ]M:3t{{/ 8C 8
 
 	
 
r%   c                     U R                  S5      nSUR                  SS9:X  d   eSUR                  SS9:X  d   eSUR                  5       :X  d   eSUR	                  5       :X  d   eg )Nr   s   <tag></tag>r*   )encodingz<tag>
</tag>
)r   r,   encode_contentsdecode_contentsprettifyrD   s     r"   testTestOutput.test  sr     yy'g!>>>>!5!5w!5!GGGG 4 4 6666 DMMO333r%   rC   )rZ   r[   r\   r]   r   r   r   r   r   r   r   r`   )r   r   s   00r"   r   r      s}    [[+ 	




 [[)BC)BAa)BCtfL



4 Ds   A)r   c                   \   \ rS rSrS\\R                     S\\   S\R                  4S jr	S\\R                     SS4S jr
S	 rS
 rS rS rS rS rS r\R&                  R)                  S/ SQ5      S 5       r\R&                  R)                  S/ SQ5      S 5       rS rS rS rS rSrg)TestWarningsi$  rl   clsreturnc                     U H8  n[        UR                  U5      (       d  M   UR                  [        :X  d   eUs  $    [	        U< SU< 35      e)Nz warning not found in )rn   rp   filename__file__	Exception)r    rl   r   rr   s       r"   _assert_warningTestWarnings._assert_warning,  sH     A!))S))zzX---  XFGGr%   rr   Nc                     U R                  U[        5      n[        UR                  5      nUR	                  [        R
                  S S 5      (       d   eg )N<   )r   r   ro   rp   rq   MESSAGE)r    rr   warningrp   s       r"   _assert_no_parser_specified(TestWarnings._assert_no_parser_specified5  sH    &&q*@Agoo&!!"8"@"@""EFFFFr%   c                     [         R                  " SS9 n[        S5        S S S 5        U R                  W5        g ! , (       d  f       N = fNTre   <a><b></b></a>rl   rm   r   r   r    rr   s     r"   #test_warning_if_no_parser_specified0TestWarnings.test_warning_if_no_parser_specified:  s7    $$D1Q*+ 2((+ 21s	   ;
A	c                     [         R                  " SS9 n[        SS5        S S S 5        U R                  W5        g ! , (       d  f       N = f)NTre   r   htmlr   r   s     r"   *test_warning_if_parser_specified_too_vague7TestWarnings.test_warning_if_parser_specified_too_vague?  s9    $$D1Q*F3 2((+ 21s	   <
A
c                     [         R                  " SS9 nU R                  S5        S S S 5        / W:X  d   eg ! , (       d  f       N= fr   rl   rm   r   r   s     r"   ,test_no_warning_if_explicit_parser_specified9TestWarnings.test_no_warning_if_explicit_parser_specifiedD  s8    $$D1QII&' 2Qww 21	   8
Ac                    [        SSS9n[        R                  " SS9 nU R                  SUS9  S S S 5        U R	                  W[
        5      n[        UR                  5      nUR                  S5      (       d   eg ! , (       d  f       NR= f)	Nr   r   )namer   Tre   r   
parse_onlyz7The given value for parse_only will exclude everything:)	r   rl   rm   r   r   UserWarningro   rp   rq   )r    strainerrr   r   rs   s        r"   +test_warning_if_strainer_filters_everything8TestWarnings.test_warning_if_strainer_filters_everythingI  ss    S5$$D1QII&8I< 2&&q+6'//"~~WXXXX	 21s   A<<
B
c                 *   [         R                  " SS9 n[        SS[        S5      S9nS S S 5        U R	                  W[
        5      n[        UR                  5      nSU;   d   eSU;   d   eS	WR                  5       :X  d   eg ! , (       d  f       N`= f)
NTre   r   r   r   )parseOnlyTheser  r   s   <b></b>)	rl   rm   r   r   r   DeprecationWarningro   rp   r,   )r    rr   r   r   rs   s        r"   )test_parseOnlyThese_renamed_to_parse_only6TestWarnings.test_parseOnlyThese_renamed_to_parse_onlyQ  s    $$D1Q  +C0D 2 &&q*<='//"3&&&s"""T[[]*** 21s   B
Bc                    [         R                  " SS9 nSn[        USSS9nS S S 5        U R                  W[        5      n[        UR                  5      nSU;   d   eSU;   d   eSWR                  :X  d   eg ! , (       d  f       N\= f)	NTre   s   ér   utf8)fromEncodingr	  from_encoding)rl   rm   r   r   r  ro   rp   r-   )r    rr   r  r   r   rs   s         r"   *test_fromEncoding_renamed_to_from_encoding7TestWarnings.test_fromEncoding_renamed_to_from_encoding^  s    $$D1QD }6JD 2 &&q*<='//"$$$#%%%///// 21s   A99
Bc                     [         R                  " [        5         U R                  SSS9  S S S 5        g ! , (       d  f       g = f)Nz<a>T)no_such_argument)r   r   r   r   rN   s    r"   "test_unrecognized_keyword_argument/TestWarnings.test_unrecognized_keyword_argumenth  s*    ]]9%IIedI3 &%%s	   5
ArJ   )zmarkup.htmlz
markup.htmzmarkup.HTMLz
markup.txtzmarkup.xhtmlz
markup.xmlz/home/user/file.txtz/c:\user\file.html\\server\share\path\file.XhTmlc                     [         R                  " SS9 n[        US5        U R                  U[        5      nS[        UR                  5      ;   d   e S S S 5        g ! , (       d  f       g = f)NTre   r   zlooks more like a filenamerl   rm   r   r   r   ro   rp   )r    rJ   rr   r   s       r"   test_resembles_filename_warning,TestWarnings.test_resembles_filename_warningl  sT      $$D1Q&-0**1.KLG/3w3GGGG 211s   >A
A+)r   
markuphtmlz
markup.comrg   z	markup.jsz
markup.jpgzmarkup.markupz/home/user/filez)c:\user\file.html\\server\share\path\filezAlog message containing a url http://www.url.com/ right there.htmlztwo  consecutive  spaces.htmlztwo//consecutive//slashes.htmlz4looks/like/a/filename/but/oops/theres/a#comment.htmlztwo
lines.htmlzcontains?.htmlzcontains*.htmlzcontains#.htmlzcontains&.htmlzcontains;.htmlzcontains>.htmlzcontains<.htmlzcontains$.htmlzcontains|.htmlzcontains:.htmlz:-at-the-front.htmlc                     [         R                  " SS9 nU R                  U5        S S S 5        / W:X  d   eg ! , (       d  f       N= f)NTre   r   )r    rJ   rr   s      r"   "test_resembles_filename_no_warning/TestWarnings.test_resembles_filename_no_warning  s:    P $$D1QIIf 2Qww 21r   c                 2   Sn[         R                  " SS9 n[        US5        S S S 5        U R                  W[        5      nS[        UR                  5      ;   d   eU[        UR                  5      R                  S5      ;  d   eg ! , (       d  f       Nj= f)Ns   http://www.crummybytes.com/Tre   r   looks more like a URLr  )rl   rm   r   r   r   ro   rp   r,   r    urlwarning_listr   s       r"   test_url_warning_with_bytes_url,TestWarnings.test_url_warning_with_bytes_url  s{    ,$$D1\#}- 2&&|5RS&#goo*>>>>#goo.55f====	 21s   B
Bc                    Sn[         R                  " SS9 n[        US5        S S S 5        U R                  W[        5      nS[        UR                  5      ;   d   eU[        UR                  5      ;  d   eg ! , (       d  f       N[= f)Nzhttp://www.crummyunicode.com/Tre   r   r  r  r  s       r"   !test_url_warning_with_unicode_url.TestWarnings.test_url_warning_with_unicode_url  st    -$$D1\ #}- 2 &&|5RS&#goo*>>>>#goo.... 21s   A99
Bc                     [         R                  " SS9 nU R                  S5        S S S 5        [        S W 5       5      (       a   eg ! , (       d  f       N(= f)NTre   s$   http://www.crummybytes.com/ is greatc              3   R   #    U  H  nS [        UR                  5      ;   v   M     g7fr  Nro   rp   r   rr   s     r"   r   ETestWarnings.test_url_warning_with_bytes_and_space.<locals>.<genexpr>       W,Q.#aii.@,   %'rl   rm   r   anyr    r  s     r"   %test_url_warning_with_bytes_and_space2TestWarnings.test_url_warning_with_bytes_and_space  sI     $$D1\II=> 2W,WWWWWW 21   A		
Ac                     [         R                  " SS9 nU R                  S5        S S S 5        [        S W 5       5      (       a   eg ! , (       d  f       N(= f)NTre   z&http://www.crummyunicode.com/ is greatc              3   R   #    U  H  nS [        UR                  5      ;   v   M     g7fr%  r&  r'  s     r"   r   GTestWarnings.test_url_warning_with_unicode_and_space.<locals>.<genexpr>  r)  r*  r+  r-  s     r"   'test_url_warning_with_unicode_and_space4TestWarnings.test_url_warning_with_unicode_and_space  sG    $$D1\II>? 2W,WWWWWW 21r0  rC   )rZ   r[   r\   r]   r   rl   WarningMessager   Warningr   r   r   r   r   r   r  r  r  r   r   r   r  r  r  r!  r.  r4  r`   rC   r%   r"   r   r   $  s    H !8!89H@DWH		 	 HGXh6M6M-N GSW G
,
,

Y+04 [[		
HH [[ 	
#HI#H>/XXr%   r   c                       \ rS rSrS rSrg)TestSelectiveParsingi  c                 h    Sn[        S5      nU R                  XS9nUR                  5       S:X  d   eg )Nz&No<b>Yes</b><a>No<b>Yes <c>Yes</c></b>r   r   s   <b>Yes</b><b>Yes <c>Yes</c></b>)r   r   r,   )r    rJ   r   r   s       r"   test_parse_with_soupstrainer1TestSelectiveParsing.test_parse_with_soupstrainer  s6    9$yyy5{{} BBBBr%   rC   N)rZ   r[   r\   r]   r;  r`   rC   r%   r"   r9  r9    s    Cr%   r9  c                   n    \ rS rSrSrS r\R                  R                  \	(       + SS9S 5       r
S rSrg	)

TestNewTagi  z(Test the BeautifulSoup.new_tag() method.c                    U R                  S5      nUR                  SSSSS0S9n[        U[        5      (       d   eSUR                  :X  d   eUR
                  S:X  d   e[        SSS9UR                  :X  d   eS UR                  L d   eUR                  S5      nS UR
                  L d   eUR                  SS S	9nS UR
                  L d   eUR                  SSS	9nSUR
                  :X  d   eg )
Nrg   footxtbazr   za name)r   barattrs)rC  r   )r   )	r   new_tagrn   r   r   r   rk   rD  parent)r    r   rE  s      r"   test_new_tagTestNewTag.test_new_tag  s    yy},,uUfhEW,X'3''''$$$~~&&&H->>>w~~%%% ,,u%w~~%%%,,uT,2w~~%%% ,,uR,0W^^###r%   z-lxml not installed, cannot parse XML document)reasonc                     [        SS5      nUR                  S5      nUR                  S5      nSUR                  5       :X  d   eSUR                  5       :X  d   eg )Nrg   xmlbrr      <br/>s   <p/>r   rE  r,   )r    xml_soupxml_brxml_ps       r"   5test_xml_tag_inherits_self_closing_rules_from_builder@TestNewTag.test_xml_tag_inherits_self_closing_rules_from_builder  sZ     !U+!!$'  % 6==?***%,,.(((r%   c                     [        SS5      nUR                  S5      nUR                  S5      nSUR                  5       :X  d   eSUR                  5       :X  d   eg )Nrg   r   rL  r   rM  s   <p></p>rN  )r    	html_souphtml_brhtml_ps       r"   1test_tag_inherits_self_closing_rules_from_builder<TestNewTag.test_tag_inherits_self_closing_rules_from_builder  sY    !"m4	##D)""3' 7>>++++V]]_,,,r%   rC   N)rZ   r[   r\   r]   __doc__rG  r   r   skipifr   rR  rX  r`   rC   r%   r"   r>  r>    s@    2$& [[!P  ))-r%   r>  c                   $    \ rS rSrSrS rS rSrg)TestNewStringi  z+Test the BeautifulSoup.new_string() method.c                     U R                  S5      nUR                  S5      nSU:X  d   e[        U[        5      (       d   eg Nrg   r@  )r   
new_stringrn   r   r    r   r   s      r"   'test_new_string_creates_navigablestring5TestNewString.test_new_string_creates_navigablestring  s<    yy}OOE"zz!_----r%   c                     U R                  S5      nUR                  S[        5      nSU:X  d   e[        U[        5      (       d   eg r_  )r   r`  r
   rn   ra  s      r"   3test_new_string_can_create_navigablestring_subclassATestNewString.test_new_string_can_create_navigablestring_subclass  s>    yy}OOE7+zz!W%%%%r%   rC   N)rZ   r[   r\   r]   rZ  rb  re  r`   rC   r%   r"   r]  r]    s    5.&r%   r]  c                        \ rS rSrS rS rSrg)
TestPicklei  c                     U R                  S5      n[        R                  " U5      n[        R                  " U5      nSUR                  R
                  :X  d   eg )Nz<a>some markup</a>some markup)r   pickledumpsloadsr   r   r    r   pickled	unpickleds       r"   test_normal_pickleTestPickle.test_normal_pickle  sE    yy-.,,t$LL)		 2 2222r%   c                     U R                  S5      nS Ul        [        R                  " U5      n[        R                  " U5      nSUR
                  :X  d   eg )Nrj  )r   rh   rk  rl  rm  r   rn  s       r"   test_pickle_with_no_builder&TestPickle.test_pickle_with_no_builder  sI     yy',,t$LL)		 0 0000r%   rC   N)rZ   r[   r\   r]   rq  rt  r`   rC   r%   r"   rh  rh    s    31r%   rh  c                   2    \ rS rSrS rS rS rS rS rSr	g)	TestEncodingConversioni%  c                 v    SU l         U R                   R                  S5      U l        U R                  S:X  d   eg )NuU   <html><head><meta charset="utf-8"/></head><body><foo>Sacré bleu!</foo></body></html>r*   sU   <html><head><meta charset="utf-8"/></head><body><foo>Sacré bleu!</foo></body></html>)unicode_datar,   r.   rN   s    r"   setup_method#TestEncodingConversion.setup_method)  sB     U**11': NNmn	
nr%   c                 N   [         R                  n[        R                  " [        R                  5         S nU[         l        SnU R                  U5      nUR                  5       n[        U[        5      (       d   eXPR                  UR                  5       5      :X  d   eUR                  R                  5       S:X  d   e [        R                  " [        R                  5        U[         l        g ! [        R                  " [        R                  5        U[         l        f = f)Nc                     g rB   rC   )ro   s    r"   noop>TestEncodingConversion.test_ascii_in_unicode_out.<locals>.noop9  s    r%   s   <foo>a</foo>r*   )r   _chardet_dammitloggingdisableWARNINGr   r   rn   ro   document_forr-   lowerNOTSET)r    chardetr~  asciisoup_from_asciiunicode_outputs         r"   test_ascii_in_unicode_out0TestEncodingConversion.test_ascii_in_unicode_out2  s     (((	- &*F"#E"ii.O,335Nnc2222!%6%6u||~%FFFF"44::<GGGOOGNN+%,F" OOGNN+%,F"s   BC3 31D$c                     U R                  U R                  5      nUR                  5       U R                  :X  d   eUR                  R                  S:X  d   eUR
                  b   eg Nu   Sacré bleu!)r   ry  r   r@  r   r-   r    soup_from_unicodes     r"   test_unicode_in_unicode_out2TestEncodingConversion.test_unicode_in_unicode_outH  sc     !IId&7&78 '')T->->>>> $$++/???? 22:::r%   c                     U R                  U R                  5      nUR                  5       U R                  :X  d   eUR                  R
                  S:X  d   eg r  )r   r.   r   ry  r@  r   )r    soup_from_utf8s     r"   test_utf8_in_unicode_out/TestEncodingConversion.test_utf8_in_unicode_outP  sN     4>>2$$&$*;*;;;;!!((,<<<<r%   c                 |    U R                  U R                  5      nUR                  S5      U R                  :X  d   eg )Nr*   )r   ry  r,   r.   r  s     r"   test_utf8_out$TestEncodingConversion.test_utf8_outW  s4     IId&7&78 ''0DNNBBBr%   )ry  r.   N)
rZ   r[   r\   r]   rz  r  r  r  r  r`   rC   r%   r"   rw  rw  %  s    
-,;=Cr%   rw  )'rZ  r  rk  r   typingr   bs4r   r   r   bs4.builderr   bs4.elementr   r	   r
   r   r   r   
bs4.filterr   bs4.exceptionsr   bs4._warningsr   rg   r   r   r   rl   r   r   r   r   r9  r>  r]  rh  rw  rC   r%   r"   <module>r     s    )     
  $
 
  H
h H
V+4 +4\eX8 eXPC8 C+- +-\&H & 1 1&5CX 5Cr%   