
    n9dM                        d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZmZmZ ddlmZmZmZ ddlmZmZmZmZmZ ddlmZmZmZ ddlZ G d	 d
e          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z# G d de          Z$ G d de          Z%dS )z#Tests of Beautiful Soup as a whole.    )	set_traceN)BeautifulSoupBeautifulStoneSoupGuessedAtParserWarningMarkupResemblesLocatorWarningdammit)builder_registryTreeBuilderParserRejectedMarkup)CommentSoupStrainerPYTHON_SPECIFIC_ENCODINGSTagNavigableString   )default_builderLXML_PRESENTSoupTestc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestConstructorc                 X    d}|                      |          }d|j        j        k    sJ d S )Nu   <h1>éé</h1>u   éésouph1stringselfdatar   s      3lib/python3.11/site-packages/bs4/tests/test_soup.pytest_short_unicode_inputz(TestConstructor.test_short_unicode_input)   s1    yy''''''    c                 X    d}|                      |          }d|j        j        k    sJ d S )Nz<h1>foo bar</h1>zfoo barr   r   s      r   test_embedded_nullz"TestConstructor.test_embedded_null.   s1    "yyTW^++++++r!   c                 z    d                     d          }|                     |dg          }d|j        k    sJ d S )Nu   Räksmörgåsutf-8)exclude_encodingszwindows-1252)encoder   original_encoding)r   	utf8_datar   s      r   test_exclude_encodingsz&TestConstructor.test_exclude_encodings3   sF    #**733	yywiy@@!7777777r!   c                 z    G d dt                     }t          dd          }t          j        d          5  t	          dd|i|}d d d            n# 1 swxY w Y   t          |j        |          sJ t          d	          |j        j        k    sJ d
|j        j        k    sJ  |di |}t          j        d          5 }t	          d|d          }d d d            n# 1 swxY w Y   t          |d         j
                  }|                    d          sJ ||j        k    sJ ||j        k    sJ d S )Nc                   :    e Zd Zd Zd Zd Zd Zd ZexZZ	d Z
dS )7TestConstructor.test_custom_builder_class.<locals>.Mockc                 Z    || _         d| _        d| _        g | _        g | _        i | _        d S )NTF)called_withis_xmlstore_line_numberscdata_list_attributespreserve_whitespace_tagsstring_containers)r   kwargss     r   __init__z@TestConstructor.test_custom_builder_class.<locals>.Mock.__init__<   s7    #) "*/'-/*02-)+&&&r!   c                     d S N r   r   s     r   initialize_soupzGTestConstructor.test_custom_builder_class.<locals>.Mock.initialize_soupC       r!   c                     || _         d S r8   )fed)r   markups     r   feedz<TestConstructor.test_custom_builder_class.<locals>.Mock.feedE   s    !r!   c                     d S r8   r9   r   s    r   resetz=TestConstructor.test_custom_builder_class.<locals>.Mock.resetG   r<   r!   c                     d S r8   r9   )r   ignores     r   rE   z>TestConstructor.test_custom_builder_class.<locals>.Mock.ignoreI   r<   r!   c              ?      K   dV  d S )N)prepared markupzoriginal encodingzdeclared encodingzcontains replacement charactersr9   r   argsr5   s      r   prepare_markupzFTestConstructor.test_custom_builder_class.<locals>.Mock.prepare_markupL   s      ttttttr!   N)__name__
__module____qualname__r6   r;   r@   rC   rE   set_up_substitutionscan_be_empty_elementrJ   r9   r!   r   Mockr-   ;   s        , , ,  " " "    :@@ #7u u u u ur!   rP   valueT)varconvertEntitiesrecord builder)rR   rG   )rW   ignored_valuer   zCKeyword arguments to the BeautifulSoup constructor will be ignored.)rV   r9   )objectdictwarningscatch_warningsr   
isinstancerW   r/   r>   strmessage
startswith)r   rP   r5   r   rW   wmsgs          r   test_custom_builder_classz)TestConstructor.test_custom_builder_class8   s   	u 	u 	u 	u 	u6 	u 	u 	u(  !	
 
 
 $D111 	= 	= <<T<V<<D	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=$,-----   DL$<<<<< DL$44444
 $....$D111 	Q G4  D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !A$,~~cddddd$,&&&&,,,,,,,s#   AAAC%%C),C)c                      G d dt                     }d }dd l}t          j        t                    5 }t          d|           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nc                       e Zd Zd ZdS ):TestConstructor.test_parser_markup_rejection.<locals>.Mockc                      t          d          )NzNope.)r   rH   s      r   r@   z?TestConstructor.test_parser_markup_rejection.<locals>.Mock.feedl   s    *7333r!   N)rK   rL   rM   r@   r9   r!   r   rP   rf   k   s#        4 4 4 4 4r!   rP   c              ?   >   K   t           d d dfV  t           d d dfV  d S )NF)r?   rH   s      r   rJ   zDTestConstructor.test_parser_markup_rejection.<locals>.prepare_markupo   s8       $e++++$e++++++r!   r   rV   )rW   zoThe markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.)r
   repytestraisesr   r   r^   rQ   )r   rP   rJ   ri   exc_infos        r   test_parser_markup_rejectionz,TestConstructor.test_parser_markup_rejectionh   s	   	4 	4 	4 	4 	4; 	4 	4 	4	, 	, 	, 				]/00 	,H"d++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, A  EH  IQ  IW  EX  EX  X  X  X  X  X  Xs   AAAc                    d}|                      |          }|j        }d|d         k    sJ ddg|d         k    sJ |                      |t          d           }d|j        d         k    sJ ddiddifD ]l}t          j        d	
          5 }|                      |d |          }d d d            n# 1 swxY w Y   |j        }ddg|d         k    sJ d|d         k    sJ md S )Nz&<a id=" an id " class=" a class "></a>z an id idaclass)rW   multi_valued_attributesz	 a class *TrT   an)r   rp   r   r[   r\   )r   r?   r   rp   
switcheroora   s         r   test_cdata_list_attributesz*TestConstructor.test_cdata_list_attributes{   ss    :yy   FAdG####W~7++++
 yyRVyWWdfWo----  ;d4 	- 	-J(555 [ yyzyZZ[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ A$<1T7****!G*,,,,,	- 	-s   B11B5	8B5	c           	      8    G d dt                      G d dt                     G d dt                    |                     dt           t          t          i          }t	          fd	|                                D                       sJ d S )
Nc                       e Zd ZdS )9TestConstructor.test_replacement_classes.<locals>.TagPlusNrK   rL   rM   r9   r!   r   TagPlusry              Dr!   r{   c                       e Zd ZdS )<TestConstructor.test_replacement_classes.<locals>.StringPlusNrz   r9   r!   r   
StringPlusr~      r|   r!   r   c                       e Zd ZdS )=TestConstructor.test_replacement_classes.<locals>.CommentPlusNrz   r9   r!   r   CommentPlusr      r|   r!   r   z<a><b>foo</b>bar</a><!--whee-->)element_classesc              3   >   K   | ]}t          |f          V  d S r8   )r]   ).0xr   r   r{   s     r   	<genexpr>z;TestConstructor.test_replacement_classes.<locals>.<genexpr>   sH       
 
 q7J<==
 
 
 
 
 
r!   )r   r   r   r   allrecursiveChildGenerator)r   r   r   r   r{   s     @@@r   test_replacement_classesz(TestConstructor.test_replacement_classes   s   	 	 	 	 	c 	 	 		 	 	 	 	 	 	 		 	 	 	 	' 	 	 	 yy-W  
 
  
 
 
 
 
 
1133
 
 
 
 
 	
 	
 	
 	
 	
r!   c                 t    G d dt                     } G d dt                     }|                     d||d          }t          |j        j        d         t                     sJ t          |j        j        d         |          sJ |j        j        D ]}t          ||          sJ g |j        k    sJ d S )	Nc                       e Zd ZdS )ATestConstructor.test_alternate_string_containers.<locals>.PStringNrz   r9   r!   r   PStringr      r|   r!   r   c                       e Zd ZdS )ATestConstructor.test_alternate_string_containers.<locals>.BStringNrz   r9   r!   r   BStringr      r|   r!   r   z4<div>Hello.<p>Here is <b>some <i>bolded</i></b> text)bp)r4   r   )	r   r   r]   divcontentsr   r   stringsstring_container_stack)r   r   r   r   ss        r    test_alternate_string_containersz0TestConstructor.test_alternate_string_containers   s   	 	 	 	 	o 	 	 		 	 	 	 	o 	 	 	 yyB! !  
 
 $(+A.@@@@@ $&/!,g66666  	* 	*Aa)))))) T0000000r!   N)rK   rL   rM   r    r#   r*   rc   rm   rv   r   r   r9   r!   r   r   r   '   s        ( ( (
, , ,
8 8 8
.- .- .-`X X X&- - -:
 
 
81 1 1 1 1r!   r   c                       e Zd Zej                            dddg          d             Zej                            dd eD             dgz             d             Zd	 Z	dS )

TestOutputz!eventual_encoding,actual_encoding)r%   r%   )utf-16r   c                 ~    |                      d          }d|_        d| d|                    |          k    sJ d S )N<tag></tag>Tz<?xml version="1.0" encoding="z"?>
<tag></tag>eventual_encoding)r   r0   decode)r   r   actual_encodingr   s       r   test_decode_xml_declarationz&TestOutput.test_decode_xml_declaration   s`     yy''RRRR;;1B;CCD D D D D Dr!   r   c                     g | ]}|S r9   r9   )r   r   s     r   
<listcomp>zTestOutput.<listcomp>   s    CCCAaCCCr!   Nc                 l    t          dd          }d|_        d|                    |          k    sJ d S )Nr   html.parserTz!<?xml version="1.0"?>
<tag></tag>r   )r   r0   r   )r   r   r   s      r   Mtest_decode_xml_declaration_with_missing_or_python_internal_eventual_encodingzXTestOutput.test_decode_xml_declaration_with_missing_or_python_internal_eventual_encoding   sS     ]M::5;;1B;CCD D D D D Dr!   c                    |                      d          }d|                    d          k    sJ d|                    d          k    sJ d|                                k    sJ d|                                k    sJ d S )Nr   s   <tag></tag>r%   )encodingz<tag>
</tag>
)r   r'   encode_contentsdecode_contentsprettifyr:   s     r   testzTestOutput.test   s     yy''g!>!>>>>>!5!5w!5!G!GGGGG 4 4 6 66666 DMMOO333333r!   )
rK   rL   rM   rj   markparametrizer   r   r   r   r9   r!   r   r   r      s        [+ .
 E E E [CC)BCCCtfL E E E4 4 4 4 4r!   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                            d	g d
          d             Zej                            d	g d          d             Zd Zd Zd Zd ZdS )TestWarningsc                     |D ]-}t          |j        |          r|j        t          k    sJ |c S .t	          |d|          )Nz warning not found in )r]   r_   filename__file__	Exception)r   r[   clsra   s       r   _assert_warningzTestWarnings._assert_warning  sa     	 	A!)S)) zX---- XXFGGGr!   c                     |                      |t                    }t          |j                  }|                    t
          j        d d                   sJ d S )N<   )r   r   r^   r_   r`   r   NO_PARSER_SPECIFIED_WARNING)r   ra   warningr_   s       r   _assert_no_parser_specifiedz(TestWarnings._assert_no_parser_specified  sS    &&q*@AAgo&&!!-"KCRC"PQQQQQQQr!   c                     t          j        d          5 }t          d          }d d d            n# 1 swxY w Y   |                     |           d S NTrT   <a><b></b></a>r[   r\   r   r   r   ra   r   s      r   #test_warning_if_no_parser_specifiedz0TestWarnings.test_warning_if_no_parser_specified  s    $D111 	3Q !122D	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3((+++++s   266c                     t          j        d          5 }t          dd          }d d d            n# 1 swxY w Y   |                     |           d S )NTrT   r   htmlr   r   s      r   *test_warning_if_parser_specified_too_vaguez7TestWarnings.test_warning_if_parser_specified_too_vague  s    $D111 	;Q !16::D	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;((+++++s   377c                     t          j        d          5 }|                     d          }d d d            n# 1 swxY w Y   g |k    sJ d S r   r[   r\   r   r   s      r   ,test_no_warning_if_explicit_parser_specifiedz9TestWarnings.test_no_warning_if_explicit_parser_specified  s    $D111 	/Q99-..D	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/Qwwwwww   8<<c                 H   t          j        d          5 }t          ddt          d                    }d d d            n# 1 swxY w Y   |                     |t
                    }t          |j                  }d|v sJ d|v sJ d	|                                k    sJ d S )
NTrT   r   r   r   )parseOnlyTheser   
parse_onlys   <b></b>)	r[   r\   r   r   r   DeprecationWarningr^   r_   r'   )r   ra   r   r   rb   s        r   )test_parseOnlyThese_renamed_to_parse_onlyz6TestWarnings.test_parseOnlyThese_renamed_to_parse_only"  s    $D111 	Q  -+C00  D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 &&q*<=='/""3&&&&s""""T[[]]******s    AA	Ac                    t          j        d          5 }d}t          |dd          }d d d            n# 1 swxY w Y   |                     |t                    }t          |j                  }d|v sJ d|v sJ d|j        k    sJ d S )	NTrT   s   ér   utf8)fromEncodingr   from_encoding)r[   r\   r   r   r   r^   r_   r(   )r   ra   r   r   r   rb   s         r   *test_fromEncoding_renamed_to_from_encodingz7TestWarnings.test_fromEncoding_renamed_to_from_encoding.  s    $D111 	QD m&  D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 &&q*<=='/""$$$$#%%%%///////s   7;;c                     t          j        t                    5  |                     dd           d d d            d S # 1 swxY w Y   d S )Nz<a>T)no_such_argument)rj   rk   	TypeErrorr   rB   s    r   "test_unrecognized_keyword_argumentz/TestWarnings.test_unrecognized_keyword_argument:  s    ]9%% 	4 	4IIedI333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   ?AA	extension)zmarkup.htmlz
markup.htmzmarkup.HTMLz
markup.txtzmarkup.xhtmlz
markup.xmlz/home/user/filezc:\userilec                     t          j        d          5 }t          d|z   d          }|                     |t                    }dt          |j                  v sJ 	 d d d            d S # 1 swxY w Y   d S )NTrT   r?   r   zlooks more like a filenamer[   r\   r   r   r   r^   r_   )r   r   ra   r   r   s        r   test_resembles_filename_warningz,TestWarnings.test_resembles_filename_warning>  s     $D111 	HQ I!5}EED**1.KLLG/3w3G3GGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   AA++A/2A/)
markuphtmlz
markup.comrV   z	markup.jsc                     t          j        d          5 }|                     d|z             }d d d            n# 1 swxY w Y   g |k    sJ d S )NTrT   r?   r   )r   r   ra   r   s       r   "test_resembles_filename_no_warningz/TestWarnings.test_resembles_filename_no_warningK  s     $D111 	3Q99X	122D	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3Qwwwwwws   ;??c                 @   d}t          j        d          5 }t          |d          }d d d            n# 1 swxY w Y   |                     |t                    }dt          |j                  v sJ |t          |j                                      d          vsJ d S )Ns   http://www.crummybytes.com/TrT   r   looks more like a URLr   )r[   r\   r   r   r   r^   r_   r'   r   urlwarning_listr   r   s        r   test_url_warning_with_bytes_urlz,TestWarnings.test_url_warning_with_bytes_urlW  s    ,$D111 	5\ m44D	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5&&7
 
 '#go*>*>>>>>#go..55f========   599c                    d}t          j        d          5 }t          |d          }d d d            n# 1 swxY w Y   |                     |t                    }dt          |j                  v sJ |t          |j                  vsJ d S )Nzhttp://www.crummyunicode.com/TrT   r   r   r   r   s        r   !test_url_warning_with_unicode_urlz.TestWarnings.test_url_warning_with_unicode_urla  s    -$D111 	5\ !m44D	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 &&7
 
 '#go*>*>>>>>#go........r   c                     t          j        d          5 }|                     d          }d d d            n# 1 swxY w Y   t          d |D                       rJ d S )NTrT   s$   http://www.crummybytes.com/ is greatc              3   B   K   | ]}d t          |j                  v V  dS r   Nr^   r_   r   ra   s     r   r   zETestWarnings.test_url_warning_with_bytes_and_space.<locals>.<genexpr>r  C       . . /#ai..@ . . . . . .r!   r[   r\   r   anyr   r   r   s      r   %test_url_warning_with_bytes_and_spacez2TestWarnings.test_url_warning_with_bytes_and_spacem  s     $D111 	F\99DEED	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F . . ,. . . . . 	. 	. 	. 	. 	.r   c                     t          j        d          5 }|                     d          }d d d            n# 1 swxY w Y   t          d |D                       rJ d S )NTrT   z&http://www.crummyunicode.com/ is greatc              3   B   K   | ]}d t          |j                  v V  dS r   r   r   s     r   r   zGTestWarnings.test_url_warning_with_unicode_and_space.<locals>.<genexpr>x  r   r!   r   r   s      r   'test_url_warning_with_unicode_and_spacez4TestWarnings.test_url_warning_with_unicode_and_spaceu  s    $D111 	G\99EFFD	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G . . ,. . . . . 	. 	. 	. 	. 	.r   N)rK   rL   rM   r   r   r   r   r   r   r   r   rj   r   r   r   r   r   r   r   r   r9   r!   r   r   r      sR       H H HR R R
, , ,
, , ,
  

+ 
+ 
+
0 
0 
04 4 4 [	K 	K 	K 
H H 
H [555  	 > > >
/ 
/ 
/. . .. . . . .r!   r   c                       e Zd Zd ZdS )TestSelectiveParsingc                     d}t          d          }|                     ||          }|                                dk    sJ d S )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   r?   strainerr   s       r   test_parse_with_soupstrainerz1TestSelectiveParsing.test_parse_with_soupstrainer~  sI    9$$yyHy55{{}} BBBBBBBr!   N)rK   rL   rM   r   r9   r!   r   r   r   |  s(        C C C C Cr!   r   c                   j    e Zd ZdZd Zej                            e d          d             Z	d Z
dS )
TestNewTagz(Test the BeautifulSoup.new_tag() method.c                     |                      d          }|                    ddddi          }t          |t                    sJ d|j        k    sJ t          dd          |j        k    sJ d |j        k    sJ d S )NrV   foobaznameza name)barattrs)r  r   )r   new_tagr]   r   r   rZ   r  parent)r   r   r  s      r   test_new_tagzTestNewTag.test_new_tag  s    yy}},,u%7I,JJ'3'''''$$$$H--->>>>w~%%%%%%r!   z-lxml not installed, cannot parse XML document)reasonc                     t          dd          }|                    d          }|                    d          }d|                                k    sJ d|                                k    sJ d S )NrV   xmlbrr      <br/>s   <p/>r   r  r'   )r   xml_soupxml_brxml_ps       r   5test_xml_tag_inherits_self_closing_rules_from_builderz@TestNewTag.test_xml_tag_inherits_self_closing_rules_from_builder  ss    
 !U++!!$''  %% 6==??****%,,..((((((r!   c                     t          dd          }|                    d          }|                    d          }d|                                k    sJ d|                                k    sJ d S )NrV   r   r	  r   r
  s   <p></p>r  )r   	html_souphtml_brhtml_ps       r   1test_tag_inherits_self_closing_rules_from_builderz<TestNewTag.test_tag_inherits_self_closing_rules_from_builder  ss    !"m44	##D))""3'' 7>>++++++V]]__,,,,,,r!   N)rK   rL   rM   __doc__r  rj   r   skipifr   r  r  r9   r!   r   r   r     sv        22& & & [>   ) )	 )- - - - -r!   r   c                       e Zd ZdZd Zd ZdS )TestNewStringz+Test the BeautifulSoup.new_string() method.c                     |                      d          }|                    d          }d|k    sJ t          |t                    sJ d S NrV   r   )r   
new_stringr]   r   r   r   r   s      r   'test_new_string_creates_navigablestringz5TestNewString.test_new_string_creates_navigablestring  sK    yy}}OOE""zzzz!_-------r!   c                     |                      d          }|                    dt                    }d|k    sJ t          |t                    sJ d S r  )r   r  r   r]   r  s      r   3test_new_string_can_create_navigablestring_subclasszATestNewString.test_new_string_can_create_navigablestring_subclass  sM    yy}}OOE7++zzzz!W%%%%%%%r!   N)rK   rL   rM   r  r  r  r9   r!   r   r  r    s8        55. . .& & & & &r!   r  c                       e Zd Zd Zd ZdS )
TestPicklec                     |                      d          }t          j        |          }t          j        |          }d|j        j        k    sJ d S )Nz<a>some markup</a>some markup)r   pickledumpsloadsrp   r   r   r   pickled	unpickleds       r   test_normal_picklezTestPickle.test_normal_pickle  sN    yy-..,t$$L))		 2222222r!   c                     |                      d          }d |_        t          j        |          }t          j        |          }d|j        k    sJ d S )Nr#  )r   rW   r$  r%  r&  r   r'  s       r   test_pickle_with_no_builderz&TestPickle.test_pickle_with_no_builder  sT     yy'',t$$L))		 0000000r!   N)rK   rL   rM   r*  r,  r9   r!   r   r!  r!    s2        3 3 31 1 1 1 1r!   r!  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestEncodingConversionc                 l    d| _         | j                             d          | _        | j        dk    sJ d S )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)   rB   s    r   setup_methodz#TestEncodingConversion.setup_method  s?     U*11'::~!r!   c                 J   t           j        }t          j        t          j                   	 d }|t           _        d}|                     |          }|                                }t          |t                    sJ || 	                    |                                          k    sJ |j
                                        dk    sJ 	 t          j        t          j                   |t           _        d S # t          j        t          j                   |t           _        w xY w)Nc                     d S r8   r9   )r^   s    r   noopz>TestEncodingConversion.test_ascii_in_unicode_out.<locals>.noop  s    tr!   s   <foo>a</foo>r%   )r   chardet_dammitloggingdisableWARNINGr   r   r]   r^   document_forr(   lowerNOTSET)r   chardetr4  asciisoup_from_asciiunicode_outputs         r   test_ascii_in_unicode_outz0TestEncodingConversion.test_ascii_in_unicode_out  s    '(((	,   %)F!#E"ii..O,3355Nnc22222!T%6%6u||~~%F%FFFFF"4::<<GGGGGOGN+++$+F!!! OGN+++$+F!++++s   BC6 6,D"c                     |                      | j                  }|                                | j        k    sJ |j        j        dk    sJ |j        d k    sJ d S Nu   Sacré bleu!)r   r0  r   r   r   r(   r   soup_from_unicodes     r   test_unicode_in_unicode_outz2TestEncodingConversion.test_unicode_in_unicode_out  sk     !IId&788 ''))T->>>>> $+/????? 2d::::::r!   c                     |                      | j                  }|                                | j        k    sJ |j        j        dk    sJ d S rB  )r   r)   r   r0  r   r   )r   soup_from_utf8s     r   test_utf8_in_unicode_outz/TestEncodingConversion.test_utf8_in_unicode_out  sU     4>22$$&&$*;;;;;!(,<<<<<<<r!   c                 z    |                      | j                  }|                    d          | j        k    sJ d S )Nr%   )r   r0  r'   r)   rC  s     r   test_utf8_outz$TestEncodingConversion.test_utf8_out  s>     IId&788 ''00DNBBBBBBr!   N)rK   rL   rM   r1  r@  rE  rH  rJ  r9   r!   r   r.  r.    sg        @ @ @, , ,(; ; ;= = =C C C C Cr!   r.  )&r  pdbr   r6  osr$  rj   systempfilebs4r   r   r   r   r   bs4.builderr	   r
   r   bs4.elementr   r   r   r   r   rV   r   r   r   r[   r   r   r   r   r   r  r!  r.  r9   r!   r   <module>rR     s   ) )        				   



                       
                      
 l1 l1 l1 l1 l1h l1 l1 l1^&4 &4 &4 &4 &4 &4 &4 &4Rz. z. z. z. z.8 z. z. z.zC C C C C8 C C C -  -  -  -  -  -  -  -D& & & & &H & & &1 1 1 1 1 1 1 1$0C 0C 0C 0C 0CX 0C 0C 0C 0C 0Cr!   