HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/bs4/tests/__pycache__/test_soup.cpython-38.pyc
U

t�^�k�
@s�dZddlmZddlZddlZddlZddlZddlmZm	Z	ddl
mZmZddl
mZmZmZmZmZmZmZddlZddlmZmZmZddlmZmZmZddlZzdd	l
mZmZd
Z Wn&e!k
r�Z"zdZ W5dZ"["XYnXej#ddk�oej#d
kZ$Gdd�de�Z%Gdd�de�Z&Gdd�de�Z&Gdd�de�Z'Gdd�dej(�Z)Gdd�de�Z*Gdd�dej(�Z+Gdd�de�Z,Gdd�dej(�Z-dS)z#Tests of Beautiful Soup as a whole.�)�	set_traceN)�
BeautifulSoup�BeautifulStoneSoup)�TreeBuilder�ParserRejectedMarkup)�CharsetMetaAttributeValue�Comment�ContentMetaAttributeValue�SoupStrainer�NamespacedAttribute�Tag�NavigableString)�EntitySubstitution�
UnicodeDammit�EncodingDetector)�default_builder�SoupTest�skipIf)�LXMLTreeBuilder�LXMLTreeBuilderForXMLTF�)r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestConstructorcCs"d}|�|�}|�d|jj�dS)Nu
<h1>éé</h1>uéé��soup�assertEqualZh1�string��self�datar�r �5/usr/lib/python3/dist-packages/bs4/tests/test_soup.py�test_short_unicode_input3s
z(TestConstructor.test_short_unicode_inputcCs"d}|�|�}|�d|jj�dS)Nz<h1>foobar</h1>zfoobarrrr r r!�test_embedded_null8s
z"TestConstructor.test_embedded_nullcCs,d�d�}|j|dgd�}|�d|j�dS�N�
Räksmörgås�utf-8)Zexclude_encodingszwindows-1252)�encoderr�original_encoding)r�	utf8_datarr r r!�test_exclude_encodings=s
z&TestConstructor.test_exclude_encodingsc	Cs�Gdd�dt�}tddd�}tjdd��tdd|i|��}W5QRXt|j|�sVt�|�tdd	�|jj	�|�d
|jj
�|f|�}tjdd��}td|dd�}W5QRXt|dj�}|�
d
�s�t�|�||j�|�||j	�dS)Nc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZeZZ	dd�Z
d
S)z7TestConstructor.test_custom_builder_class.<locals>.Mockc[s"||_d|_d|_g|_g|_dS)NTF)�called_withZis_xmlZstore_line_numbersZcdata_list_attributesZpreserve_whitespace_tags)r�kwargsr r r!�__init__Fs
z@TestConstructor.test_custom_builder_class.<locals>.Mock.__init__cSsdS�Nr �rrr r r!�initialize_soupLszGTestConstructor.test_custom_builder_class.<locals>.Mock.initialize_soupcSs
||_dSr.)�fed�r�markupr r r!�feedNsz<TestConstructor.test_custom_builder_class.<locals>.Mock.feedcSsdSr.r �rr r r!�resetPsz=TestConstructor.test_custom_builder_class.<locals>.Mock.resetcSsdSr.r )r�ignorer r r!r7Rsz>TestConstructor.test_custom_builder_class.<locals>.Mock.ignorecs
dVdS)N)�prepared markupzoriginal encodingzdeclared encodingzcontains replacement charactersr �r�argsr,r r r!�prepare_markupUszFTestConstructor.test_custom_builder_class.<locals>.Mock.prepare_markupN)�__name__�
__module__�__qualname__r-r0r4r6r7Zset_up_substitutionsZcan_be_empty_elementr;r r r r!�MockEsr?�valueT)�varZconvertEntities��record��builder)rAr8)rEZ
ignored_valuerzCKeyword arguments to the BeautifulSoup constructor will be ignored.)rD)�object�dict�warnings�catch_warningsr�
isinstancerE�AssertionErrorrr+r1�str�message�
startswith)rr?r,rrE�w�msgr r r!�test_custom_builder_classBs*�
�z)TestConstructor.test_custom_builder_classcCs8Gdd�dt�}dd�}ddl}|jtdtd|d�dS)	Nc@seZdZdd�ZdS)z:TestConstructor.test_parser_markup_rejection.<locals>.Mockc_std��dS)NzNope.)rr9r r r!r4usz?TestConstructor.test_parser_markup_rejection.<locals>.Mock.feedN)r<r=r>r4r r r r!r?tsr?cs tdddfVtdddfVdS)NF)r3r9r r r!r;xszDTestConstructor.test_parser_markup_rejection.<locals>.prepare_markuprzoThe markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.rD)rE)r�reZassertRaisesRegexrr)rr?r;rRr r r!�test_parser_markup_rejectionqs�z,TestConstructor.test_parser_markup_rejectionc
Cs�d}|�|�}|j}|�d|d�|�ddg|d�|j|tdd�}|�d|jd�ddiddifD]V}tjd	d
��}|j|d|d�}W5QRX|j}|�ddg|d�|�d|d�qjdS)Nz&<a id=" an id " class=" a class "></a>z an id �id�a�class)rEZmulti_valued_attributesz	 a class �*TrBZan)rrUrrrHrI)rr3rrUZ
switcheroorOr r r!�test_cdata_list_attributes�s
z*TestConstructor.test_cdata_list_attributescspGdd�dt��Gdd�dt��Gdd�dt��|jdt�t�t�id�}t���fd	d
�|��D��slt�dS)Nc@seZdZdS)z9TestConstructor.test_replacement_classes.<locals>.TagPlusN�r<r=r>r r r r!�TagPlus�srZc@seZdZdS)z<TestConstructor.test_replacement_classes.<locals>.StringPlusNrYr r r r!�
StringPlus�sr[c@seZdZdS)z=TestConstructor.test_replacement_classes.<locals>.CommentPlusNrYr r r r!�CommentPlus�sr\z<a><b>foo</b>bar</a><!--whee-->)Zelement_classesc3s|]}t|���f�VqdSr.)rJ)�.0�x�r\r[rZr r!�	<genexpr>�s�z;TestConstructor.test_replacement_classes.<locals>.<genexpr>)rr
rr�allZrecursiveChildGeneratorrKr/r r_r!�test_replacement_classes�s ���z(TestConstructor.test_replacement_classesN)
r<r=r>r"r#r*rQrSrXrbr r r r!r1s/rc@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�TestWarningsTcCs"|�tjdd��}|�|�dS)N�P)rNrZNO_PARSER_SPECIFIED_WARNING�
assertTrue)r�sZis_there�vr r r!�_no_parser_specified�sz!TestWarnings._no_parser_specifiedc	Cs>tjdd��}|�d�}W5QRXt|dj�}|�|�dS)NTrB�<a><b></b></a>r�rHrIrrLrMZ_assert_no_parser_specified�rrOrrPr r r!�#test_warning_if_no_parser_specified�sz0TestWarnings.test_warning_if_no_parser_specifiedc	Cs@tjdd��}|�dd�}W5QRXt|dj�}|�|�dS)NTrBri�htmlrrjrkr r r!�*test_warning_if_parser_specified_too_vague�sz7TestWarnings.test_warning_if_parser_specified_too_vaguec	Cs4tjdd��}|�dd�}W5QRX|�g|�dS)NTrBri�html.parser)rHrIrr)rrOrr r r!�,test_no_warning_if_explicit_parser_specified�sz9TestWarnings.test_no_warning_if_explicit_parser_specifiedc	Cshtjdd��}|jdtd�d�}W5QRXt|dj�}|�d|k�|�d|k�|�d	|���dS)
NTrBri�b)�parseOnlyTheserrr�
parse_onlys<b></b>)	rHrIrr
rLrMrerr'rkr r r!�)test_parseOnlyThese_renamed_to_parse_only�sz6TestWarnings.test_parseOnlyThese_renamed_to_parse_onlyc	Csftjdd��}d}|j|dd�}W5QRXt|dj�}|�d|k�|�d|k�|�d|j�dS)	NTrBsé�utf8)�fromEncodingrrvZ
from_encoding)rHrIrrLrMrerr()rrOrurrPr r r!�*test_fromEncoding_renamed_to_from_encoding�sz7TestWarnings.test_fromEncoding_renamed_to_from_encodingcCs|jt|jddd�dS)Nz<a>T)Zno_such_argument)�assertRaises�	TypeErrorrr5r r r!�"test_unrecognized_keyword_argument�s�z/TestWarnings.test_unrecognized_keyword_argumentN)T)
r<r=r>rhrlrnrprtrwrzr r r r!rc�s
	rcc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)rcc	Cs�t��}|j}zBtjdd��}|�|�}W5QRXt|dj�}|�	d|k�W5|��Xtjdd��}|�|�}W5QRX|�
dt|��dS)NTrBrzlooks like a filename)�tempfileZNamedTemporaryFile�name�closerHrIrrLrMrer�len)rZ
filehandle�filenamerOrrPr r r!�test_disk_file_warning�s
z#TestWarnings.test_disk_file_warningc	Cs>tjdd��}|�d�}W5QRX|�tdd�|D���dS)NTrBshttp://www.crummybytes.com/css|]}dt|j�kVqdS�zlooks like a URLN�rLrM�r]rOr r r!r`s�z?TestWarnings.test_url_warning_with_bytes_url.<locals>.<genexpr>�rHrIrre�any�rZwarning_listrr r r!�test_url_warning_with_bytes_url�s
�z,TestWarnings.test_url_warning_with_bytes_urlc	Cs>tjdd��}|�d�}W5QRX|�tdd�|D���dS)NTrBzhttp://www.crummyunicode.com/css|]}dt|j�kVqdSr�r�r�r r r!r`	s�zATestWarnings.test_url_warning_with_unicode_url.<locals>.<genexpr>r�r�r r r!�!test_url_warning_with_unicode_urls
�z.TestWarnings.test_url_warning_with_unicode_urlc	Cs>tjdd��}|�d�}W5QRX|�tdd�|D���dS)NTrBs$http://www.crummybytes.com/ is greatcss|]}dt|j�kVqdSr�r�r�r r r!r`s�zETestWarnings.test_url_warning_with_bytes_and_space.<locals>.<genexpr>�rHrIrZassertFalser�r�r r r!�%test_url_warning_with_bytes_and_spaces
�z2TestWarnings.test_url_warning_with_bytes_and_spacec	Cs>tjdd��}|�d�}W5QRX|�tdd�|D���dS)NTrBz%http://www.crummyuncode.com/ is greatcss|]}dt|j�kVqdSr�r�r�r r r!r`s�zGTestWarnings.test_url_warning_with_unicode_and_space.<locals>.<genexpr>r�r�r r r!�'test_url_warning_with_unicode_and_spaces
�z4TestWarnings.test_url_warning_with_unicode_and_spaceN)r<r=r>r�r�r�r�r�r r r r!rc�s
c@seZdZdd�ZdS)�TestSelectiveParsingcCs.d}td�}|j||d�}|�|��d�dS)Nz&No<b>Yes</b><a>No<b>Yes <c>Yes</c></b>rq)rss<b>Yes</b><b>Yes <c>Yes</c></b>)r
rrr')rr3Zstrainerrr r r!�test_parse_with_soupstrainersz1TestSelectiveParsing.test_parse_with_soupstrainerN)r<r=r>r�r r r r!r�sr�c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestEntitySubstitutionz1Standalone tests of the EntitySubstitution class.cCs
t|_dSr.)r�subr5r r r!�setUp$szTestEntitySubstitution.setUpcCsd}|�|j�|�d�dS)Nufoo∀☃õbarufoo&forall;☃&otilde;bar�rr��substitute_html�rrfr r r!�test_simple_html_substitution's�z4TestEntitySubstitution.test_simple_html_substitutioncCs&d}t|�}|�|j�|j�d�dS)Ns��foo��z&lsquo;&rsquo;foo&ldquo;&rdquo;)rrr�r�r3)rZquotes�dammitr r r!�test_smart_quote_substitution.s
�z4TestEntitySubstitution.test_smart_quote_substitutioncCsd}|�|j�|d�|�dS)N�Welcome to "my bar"F�rr�Zsubstitute_xmlr�r r r!�Itest_xml_converstion_includes_no_quotes_if_make_quoted_attribute_is_false6sz`TestEntitySubstitution.test_xml_converstion_includes_no_quotes_if_make_quoted_attribute_is_falsecCs0|�|j�dd�d�|�|j�dd�d�dS)NZWelcomeTz	"Welcome"z	Bob's Barz"Bob's Bar"r�r5r r r!�6test_xml_attribute_quoting_normally_uses_double_quotes:s��zMTestEntitySubstitution.test_xml_attribute_quoting_normally_uses_double_quotescCsd}|�|j�|d�d�dS)Nr�Tz'Welcome to "my bar"'r�r�r r r!�Otest_xml_attribute_quoting_uses_single_quotes_when_value_contains_double_quotes@s�zfTestEntitySubstitution.test_xml_attribute_quoting_uses_single_quotes_when_value_contains_double_quotescCsd}|�|j�|d�d�dS)N�Welcome to "Bob's Bar"Tz""Welcome to &quot;Bob's Bar&quot;"r�r�r r r!�btest_xml_attribute_quoting_escapes_single_quotes_when_value_contains_both_single_and_double_quotesEs
�zyTestEntitySubstitution.test_xml_attribute_quoting_escapes_single_quotes_when_value_contains_both_single_and_double_quotescCsd}|�|j�|�|�dS)Nr�r�)rZquotedr r r!�<test_xml_quotes_arent_escaped_when_value_is_not_being_quotedKszSTestEntitySubstitution.test_xml_quotes_arent_escaped_when_value_is_not_being_quotedcCs|�|j�d�d�dS)Nzfoo<bar>zfoo&lt;bar&gt;r�r5r r r!�'test_xml_quoting_handles_angle_bracketsOs
�z>TestEntitySubstitution.test_xml_quoting_handles_angle_bracketscCs|�|j�d�d�dS)NzAT&TzAT&amp;Tr�r5r r r!�#test_xml_quoting_handles_ampersandsTsz:TestEntitySubstitution.test_xml_quoting_handles_ampersandscCs|�|j�d�d�dS)N�&Aacute;T&Tz&amp;Aacute;T&amp;Tr�r5r r r!�Etest_xml_quoting_including_ampersands_when_they_are_part_of_an_entityWs
�z\TestEntitySubstitution.test_xml_quoting_including_ampersands_when_they_are_part_of_an_entitycCs|�|j�d�d�dS)Nr�z&Aacute;T&amp;T)rr�Z"substitute_xml_containing_entitiesr5r r r!�Dtest_xml_quoting_ignoring_ampersands_when_they_are_part_of_an_entity\s
�z[TestEntitySubstitution.test_xml_quoting_ignoring_ampersands_when_they_are_part_of_an_entitycCsd}|�|j�|�|�dS)z:There's no need to do this except inside attribute values.zBob's "bar"Nr�)r�textr r r!� test_quotes_not_html_substitutedasz7TestEntitySubstitution.test_quotes_not_html_substitutedN)r<r=r>�__doc__r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r!r�"sr�csNeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zee	d�dd
��Z
�ZS)�TestEncodingConversioncs4tt|���d|_|j�d�|_|�|jd�dS)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>)�superr�r��unicode_datar'r)rr5��	__class__r r!r�ks�zTestEncodingConversion.setUpc	Cs�tjj}t�tj�zbdd�}|tj_d}|�|�}|��}|�	t
|t��|�||�
|����|�|j��d�W5t�tj�|tj_XdS)NcSsdSr.r �rLr r r!�noopzsz>TestEncodingConversion.test_ascii_in_unicode_out.<locals>.noops<foo>a</foo>r&)�bs4r��chardet_dammit�logging�disable�WARNING�NOTSETr�decodererJrLrZdocument_forr(�lower)r�chardetr��asciiZsoup_from_asciiZunicode_outputr r r!�test_ascii_in_unicode_outts
z0TestEncodingConversion.test_ascii_in_unicode_outcCs@|�|j�}|�|��|j�|�|jjd�|�|jd�dS�NuSacré bleu!)rr�rr��foorr(�rZsoup_from_unicoder r r!�test_unicode_in_unicode_out�sz2TestEncodingConversion.test_unicode_in_unicode_outcCs2|�|j�}|�|��|j�|�|jjd�dSr�)rr)rr�r�r�r)rZsoup_from_utf8r r r!�test_utf8_in_unicode_out�sz/TestEncodingConversion.test_utf8_in_unicode_outcCs$|�|j�}|�|�d�|j�dS)Nr&)rr�rr'r)r�r r r!�
test_utf8_out�sz$TestEncodingConversion.test_utf8_outzQBad HTMLParser detected; skipping test of non-ASCII characters in attribute name.cCs(d}|�|�|�j�d�|�d��dS)Nu <div><a ☃="snowman"></a></div>ru)rrZdivr'r2r r r!�1test_attribute_name_containing_unicode_characters�szHTestEncodingConversion.test_attribute_name_containing_unicode_characters)r<r=r>r�r�r�r�r�r�PYTHON_3_PRE_3_2r��
__classcell__r r r�r!r�gs	�r�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&S)'�TestUnicodeDammitz"Standalone tests of UnicodeDammit.cCsd}t|�}|�|j|�dS)NuI'm already Unicode! ☃�rr�unicode_markup�rr3r�r r r!�test_unicode_input�sz$TestUnicodeDammit.test_unicode_inputcCsd}t|�}|�|jd�dS)N�<foo>����</foo>u<foo>‘’“”</foo>r�r�r r r!�test_smart_quotes_to_unicode�s�z.TestUnicodeDammit.test_smart_quotes_to_unicodecCs"d}t|dd�}|�|jd�dS)Nr�Zxml�Zsmart_quotes_toz+<foo>&#x2018;&#x2019;&#x201C;&#x201D;</foo>r�r�r r r!�!test_smart_quotes_to_xml_entities�s�z3TestUnicodeDammit.test_smart_quotes_to_xml_entitiescCs"d}t|dd�}|�|jd�dS)Nr�rmr�z'<foo>&lsquo;&rsquo;&ldquo;&rdquo;</foo>r�r�r r r!�"test_smart_quotes_to_html_entities�s�z4TestUnicodeDammit.test_smart_quotes_to_html_entitiescCs"d}t|dd�}|�|jd�dS)Nr�r�r�z<foo>''""</foo>r�r�r r r!�test_smart_quotes_to_ascii�s�z,TestUnicodeDammit.test_smart_quotes_to_asciicCs0d}t|�}|�|j��d�|�|jd�dS)NsSacré bleu! ☃r&uSacré bleu! ☃�rrr(r�r�)rrur�r r r!�test_detect_utf8�sz"TestUnicodeDammit.test_detect_utf8cCs4d}t|dg�}|�|j��d�|�|jd�dS)Ns���
iso-8859-8uםולשr�)r�hebrewr�r r r!�test_convert_hebrew�sz%TestUnicodeDammit.test_convert_hebrewcCs6d}t|�}|�|j��d�|�|j�d�|�dS)Nsケータイ Watchr&)rrr(r�r�r')r�utf_8r�r r r!�/test_dont_see_smart_quotes_where_there_are_none�szATestUnicodeDammit.test_dont_see_smart_quotes_where_there_are_nonecCs,d�d�}t|dg�}|�|j��d�dS)Nr%r&r��r'rrr(r��rr)r�r r r!� test_ignore_inappropriate_codecs�s
z2TestUnicodeDammit.test_ignore_inappropriate_codecscCs6d�d�}dD]"}t||g�}|�|j��d�qdS)Nr%r&)z.utf8z...z
utF---16.!r�)rr)Zbad_encodingr�r r r!�test_ignore_invalid_codecs�s
z,TestUnicodeDammit.test_ignore_invalid_codecscCsLd�d�}t|dgd�}|�|j��d�t|ddgd�}|�|jd�dSr$r�r�r r r!r*�s
�z(TestUnicodeDammit.test_exclude_encodingscCs"td�}t|j�}d|kst�dS)Ns'<?xml version="1.0" encoding="UTF-�" ?>uutf-�)r�list�	encodingsrK)rZdetectedr�r r r!�Ptest_encoding_detector_replaces_junk_in_encoding_name_with_replacement_character�s
�
zbTestUnicodeDammit.test_encoding_detector_replaces_junk_in_encoding_name_with_replacement_charactercCs(dD]}t|dd�}|�d|j�qdS)N)s&<html><meta charset="euc-jp" /></html>s&<html><meta charset='euc-jp' /></html>s$<html><meta charset=euc-jp /></html>s#<html><meta charset=euc-jp/></html>T��is_html�euc-jp)rrr(�rrr�r r r!� test_detect_html5_style_meta_tag�s�z2TestUnicodeDammit.test_detect_html5_style_meta_tagc	Cs�d}tjj}t�tj�zPdd�}|tj_t|�}|�d|j	�|�
d|jk�t|d�}|�
|j	�W5t�tj�|tj_XdS)NsT<?xml version="1.0" encoding="UTF-8"?>
<html><b>بتر</b>
<i>��ѐ����</i></html>cSsdSr.r r�r r r!r�szBTestUnicodeDammit.test_last_ditch_entity_replacement.<locals>.noopTu�ro)
r�r�r�r�r�r�r�rrZcontains_replacement_charactersrer�r)r�docr�r�r�rr r r!�"test_last_ditch_entity_replacements
z4TestUnicodeDammit.test_last_ditch_entity_replacementcCs,d}t|�}|�d|j�|�d|j�dS)Ns��<a>��</a>u<a>áé</a>zutf-16le)rrr�r(r�r r r!�test_byte_order_mark_removed#sz.TestUnicodeDammit.test_byte_order_mark_removedcCsPd�d�}d�d�}|||}|�t|jd�t�|�}|�d|�d��dS)Nu	☃☃☃ruu“Hi, I like Windows!”�windows_1252u+☃☃☃“Hi, I like Windows!”☃☃☃)r'rx�UnicodeDecodeErrorr�r�	detwingler)rrur�r�Zfixedr r r!�test_detwingle*s
��
�z TestUnicodeDammit.test_detwinglecCs>dD]4}|�d�}|�|�d��t�|�}|�||�qdS)N)uœuₓu𐐓ru��)r're�endswithrr�r)rZtricky_unicode_char�input�outputr r r!�+test_detwingle_ignores_multibyte_charactersBs


z=TestUnicodeDammit.test_detwingle_ignores_multibyte_characterscCs�d}|�d�}d}|�d�}tj}|�d||dd��|�d||dd��|�d||dd��|�d||��|�d||��d	d
}|�d|||��|�d|||��|�d|||ddd��|�d||dd��|�d|d
|dd��dS)Nz0<html><head><meta charset="utf-8"></head></html>r�z,<?xml version="1.0" encoding="ISO-8859-1" ?>Fr�r&Tz
iso-8859-1� i�)r��search_entire_document)r��a)r'rZfind_declared_encodingr)rZhtml_unicodeZ
html_bytesZxml_unicodeZ	xml_bytes�mZspacerr r r!�test_find_declared_encodingQs2

�
��z-TestUnicodeDammit.test_find_declared_encodingN)r<r=r>r�r�r�r�r�r�r�r�r�r�r�r*r�r�r�r�r�r�r�r r r r!r��s&#r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestNamedspacedAttributecCs.tdd�}|�|d�td�}|�|d�dS)NZxmlns�rr�rrUr r r!� test_name_may_be_none_or_missing�s
z9TestNamedspacedAttribute.test_name_may_be_none_or_missingcCstdd�}|�d|�dS)NrUrqza:br�r�r r r!�6test_attribute_is_equivalent_to_colon_separated_string�s
zOTestNamedspacedAttribute.test_attribute_is_equivalent_to_colon_separated_stringcCsptddd�}tddd�}|�||�tddd�}|�||�tddd�}|�||�tddd�}|�||�dS)NrUrq�c�z)rrZassertNotEqual)rrUrqr��d�er r r!�;test_attributes_are_equivalent_if_prefix_and_name_identical�szTTestNamedspacedAttribute.test_attributes_are_equivalent_if_prefix_and_name_identicalN)r<r=r>r�r�r�r r r r!r�sr�c@seZdZdd�Zdd�ZdS)�)TestAttributeValueWithCharsetSubstitutioncCs8td�}|�d|�|�d|j�|�d|�d��dS)Nr�ru)rr�original_valuer'�rr@r r r!�!test_content_meta_attribute_value�szKTestAttributeValueWithCharsetSubstitution.test_content_meta_attribute_valuecCs8td�}|�d|�|�d|j�|�d|�d��dS)Nztext/html; charset=euc-jpztext/html; charset=utf8ru)r	rr�r'r�r r r!r��sN)r<r=r>r�r r r r!r��sr�).r�Zpdbrr�Zunittest�sysr{r�rrZbs4.builderrrZbs4.elementrrr	r
rrr
Z
bs4.dammitrrrZbs4.testingrrrrHrrZLXML_PRESENT�ImportErrorr��version_infor�rrcr�ZTestCaser�r�r�r�r�r r r r!�<module>s:$
,/	E<]