HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib64/python3.10/site-packages/bs4/tests/__pycache__/test_soup.cpython-310.pyc
o

�h�M�@s,dZddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
mZddlmZmZmZddlmZmZmZmZmZddlmZmZmZddlZGd	d
�d
e�ZGdd�de�ZGd
d�de�Z Gdd�de�Z!Gdd�de�Z"Gdd�de�Z#Gdd�de�Z$Gdd�de�Z%dS)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@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestConstructorcC�"d}|�|�}d|jjksJ�dS)Nu
<h1>éé</h1>uéé��soup�h1�string��self�datar�r�F/usr/local/CyberCP/lib/python3.10/site-packages/bs4/tests/test_soup.py�test_short_unicode_input)�
z(TestConstructor.test_short_unicode_inputcCr)Nz<h1>foobar</h1>zfoobarrrrrr�test_embedded_null.r z"TestConstructor.test_embedded_nullcCs,d�d�}|j|dgd�}d|jksJ�dS)Nu
Räksmörgås�utf-8)�exclude_encodingszwindows-1252)�encoder�original_encoding)r�	utf8_datarrrr�test_exclude_encodings3s
z&TestConstructor.test_exclude_encodingscCsGdd�dt�}tddd�}tjdd��tdd|i|��}Wd�n1s(wYt|j|�s5J�tdd	�|jjks@J�d
|jjksHJ�|di|��}tjdd��}td|dd�}Wd�n1sgwYt	|dj
�}|�d
�szJ�||jks�J�||jks�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|_i|_dS)NTF)�called_with�is_xml�store_line_numbers�cdata_list_attributes�preserve_whitespace_tags�string_containers)r�kwargsrrr�__init__<s
z@TestConstructor.test_custom_builder_class.<locals>.Mock.__init__cS�dS�Nr�rrrrr�initialize_soupC�zGTestConstructor.test_custom_builder_class.<locals>.Mock.initialize_soupcSs
||_dSr1)�fed)r�markuprrr�feedEs
z<TestConstructor.test_custom_builder_class.<locals>.Mock.feedcSr0r1r�rrrr�resetGr4z=TestConstructor.test_custom_builder_class.<locals>.Mock.resetcSr0r1r)r�ignorerrrr:Ir4z>TestConstructor.test_custom_builder_class.<locals>.Mock.ignorecs�dVdS)N)�prepared markupzoriginal encodingzdeclared encodingzcontains replacement charactersr�r�argsr.rrr�prepare_markupLs�
zFTestConstructor.test_custom_builder_class.<locals>.Mock.prepare_markupN)�__name__�
__module__�__qualname__r/r3r7r9r:�set_up_substitutions�can_be_empty_elementr>rrrr�Mock;srD�valueT)�var�convertEntities��record��builder)rFr;)rK�
ignored_valuerzCKeyword arguments to the BeautifulSoup constructor will be ignored.)rJr)�object�dict�warnings�catch_warningsr�
isinstancerKr(r5�str�message�
startswith)rrDr.rrK�w�msgrrr�test_custom_builder_class8s*����z)TestConstructor.test_custom_builder_classcCslGdd�dt�}dd�}ddl}t�t��}td|d�Wd�n1s&wYdt|j�vs4J�dS)	Nc@�eZdZdd�ZdS)z:TestConstructor.test_parser_markup_rejection.<locals>.Mockc_std��)NzNope.)r
r<rrrr7lsz?TestConstructor.test_parser_markup_rejection.<locals>.Mock.feedN)r?r@rAr7rrrrrDksrDcs"�tdddfVtdddfVdS)NF)r6r<rrrr>os�zDTestConstructor.test_parser_markup_rejection.<locals>.prepare_markuprrJ)rKzoThe markup you provided was rejected by the parser. Trying a different parser or a different encoding may help.)r	�re�pytest�raisesr
rrRrE)rrDr>rY�exc_inforrr�test_parser_markup_rejectionhs�z,TestConstructor.test_parser_markup_rejectionc	Cs�d}|�|�}|j}d|dksJ�ddg|dksJ�|j|tdd�}d|jdks-J�ddiddifD]5}tjd	d
��}|j|d|d�}Wd�n1sPwY|j}ddg|dksbJ�d|dksjJ�q5dS)Nz&<a id=" an id " class=" a class "></a>z an id �id�a�class)rK�multi_valued_attributesz	 a class �*TrH�an)rr_rrOrP)rr6rr_�
switcheroorUrrr�test_cdata_list_attributes{s
��z*TestConstructor.test_cdata_list_attributescspGdd�dt��Gdd�dt��Gdd�dt��|jdt�t�t�id�}t���fd	d
�|��D��s6J�dS)Nc@�eZdZdS)z9TestConstructor.test_replacement_classes.<locals>.TagPlusN�r?r@rArrrr�TagPlus��rhc@rf)z<TestConstructor.test_replacement_classes.<locals>.StringPlusNrgrrrr�
StringPlus�rirjc@rf)z=TestConstructor.test_replacement_classes.<locals>.CommentPlusNrgrrrr�CommentPlus�rirkz<a><b>foo</b>bar</a><!--whee-->)�element_classesc3s �|]}t|���f�VqdSr1)rQ��.0�x�rkrjrhrr�	<genexpr>�s
��
�z;TestConstructor.test_replacement_classes.<locals>.<genexpr>)rrrr�all�recursiveChildGeneratorr2rrpr�test_replacement_classes�s���z(TestConstructor.test_replacement_classescCs�Gdd�dt�}Gdd�dt�}|jd||d�d�}t|jjdt�s%J�t|jjd|�s0J�|jjD]	}t||�s=J�q4g|jksEJ�dS)	Nc@rf)zATestConstructor.test_alternate_string_containers.<locals>.PStringNrgrrrr�PString�riruc@rf)zATestConstructor.test_alternate_string_containers.<locals>.BStringNrgrrrr�BString�rirvz4<div>Hello.<p>Here is <b>some <i>bolded</i></b> text)�b�p)r-r)	rrrQ�div�contentsrxrw�strings�string_container_stack)rrurvr�srrr� test_alternate_string_containers�s��	z0TestConstructor.test_alternate_string_containersN)r?r@rArr!r'rWr]rertr~rrrrr's0rc@sTeZdZej�dddg�dd��Zej�ddd�eD�d	g�d
d��Zdd
�Z	d	S)�
TestOutputz!eventual_encoding,actual_encoding)r"r")�utf-16r�cCs0|�d�}d|_d|�d�|j|d�ksJ�dS)N�<tag></tag>Tz<?xml version="1.0" encoding="z"?>
<tag></tag>��eventual_encoding)rr)�decode)rr��actual_encodingrrrr�test_decode_xml_declaration�s



�z&TestOutput.test_decode_xml_declarationr�cCsg|]}|�qSrrrmrrr�
<listcomp>�szTestOutput.<listcomp>NcCs(tdd�}d|_d|j|d�ksJ�dS)Nr��html.parserTz!<?xml version="1.0"?>
<tag></tag>r�)rr)r�)rr�rrrr�Mtest_decode_xml_declaration_with_missing_or_python_internal_eventual_encoding�s


�zXTestOutput.test_decode_xml_declaration_with_missing_or_python_internal_eventual_encodingcCsV|�d�}d|jdd�ksJ�d|jdd�ksJ�d|��ks!J�d|��ks)J�dS)Nr�s<tag></tag>r")�encodingz
<tag>
</tag>
)rr$�encode_contents�decode_contents�prettifyr2rrr�test�s

zTestOutput.test)
r?r@rArZ�mark�parametrizer�r
r�r�rrrrr�s��

�
	rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ej�
dgd��dd��Zej�
dgd��dd��Zdd�Zdd�Zdd�Zdd�Zd S)!�TestWarningscCs<|D]}t|j|�r|jtksJ�|Sqtd||f��)Nz%s warning not found in %r)rQrS�filename�__file__�	Exception)rrO�clsrUrrr�_assert_warnings�zTestWarnings._assert_warningcCs2|�|t�}t|j�}|�tjdd��sJ�dS)N�<)r�rrRrSrTr�NO_PARSER_SPECIFIED_WARNING)rrU�warningrSrrr�_assert_no_parser_specifieds
z(TestWarnings._assert_no_parser_specifiedcCsBtjdd��}td�}Wd�n1swY|�|�dS�NTrH�<a><b></b></a>�rOrPrr��rrUrrrr�#test_warning_if_no_parser_specifieds
�z0TestWarnings.test_warning_if_no_parser_specifiedcCsDtjdd��
}tdd�}Wd�n1swY|�|�dS)NTrHr��htmlr�r�rrr�*test_warning_if_parser_specified_too_vagues�z7TestWarnings.test_warning_if_parser_specified_too_vaguecCsFtjdd��
}|�d�}Wd�n1swYg|ks!J�dSr��rOrPrr�rrr�,test_no_warning_if_explicit_parser_specifieds�z9TestWarnings.test_no_warning_if_explicit_parser_specifiedcCs�tjdd��}tddtd�d�}Wd�n1swY|�|t�}t|j�}d|vs0J�d|vs6J�d	|��ks>J�dS)
NTrHr�r�rw)�parseOnlyTheser��
parse_onlys<b></b>)	rOrPrrr��DeprecationWarningrRrSr$)rrUrr�rVrrr�)test_parseOnlyThese_renamed_to_parse_only"s��
z6TestWarnings.test_parseOnlyThese_renamed_to_parse_onlycCs~tjdd��}d}t|ddd�}Wd�n1swY|�|t�}t|j�}d|vs0J�d|vs6J�d|jks=J�dS)	NTrHsér��utf8)�fromEncodingr��
from_encoding)rOrPrr�r�rRrSr%)rrUr�rr�rVrrr�*test_fromEncoding_renamed_to_from_encoding.s��
z7TestWarnings.test_fromEncoding_renamed_to_from_encodingcCs>t�t��|jddd�Wd�dS1swYdS)Nz<a>T)�no_such_argument)rZr[�	TypeErrorrr8rrr�"test_unrecognized_keyword_argument:s"�z/TestWarnings.test_unrecognized_keyword_argument�	extension)zmarkup.htmlz
markup.htmzmarkup.HTMLz
markup.txtzmarkup.xhtmlz
markup.xmlz/home/user/filezc:\userilecCs^tjdd��}td|d�}|�|t�}dt|j�vsJ�Wd�dS1s(wYdS)NTrHr6r�zlooks more like a filename�rOrPrr�rrRrS)rr�rUrr�rrr�test_resembles_filename_warning>s
"�z,TestWarnings.test_resembles_filename_warning)�
markuphtmlz
markup.comrJz	markup.jscCsJtjdd��}|�d|�}Wd�n1swYg|ks#J�dS)NTrHr6r�)rr�rUrrrr�"test_resembles_filename_no_warningKs�z/TestWarnings.test_resembles_filename_no_warningcCstd}tjdd��
}t|d�}Wd�n1swY|�|t�}dt|j�vs,J�|t|j��d�vs8J�dS)Nshttp://www.crummybytes.com/TrHr��looks more like a URLr�)rOrPrr�rrRrSr$�r�url�warning_listrr�rrr�test_url_warning_with_bytes_urlWs��z,TestWarnings.test_url_warning_with_bytes_urlcCsnd}tjdd��
}t|d�}Wd�n1swY|�|t�}dt|j�vs,J�|t|j�vs5J�dS)Nzhttp://www.crummyunicode.com/TrHr�r�r�r�rrr�!test_url_warning_with_unicode_urlas��z.TestWarnings.test_url_warning_with_unicode_urlcC�Ptjdd��
}|�d�}Wd�n1swYtdd�|D��r&J�dS)NTrHs$http://www.crummybytes.com/ is greatcs��|]
}dt|j�vVqdS�r�N�rRrS�rnrUrrrrqr���zETestWarnings.test_url_warning_with_bytes_and_space.<locals>.<genexpr>�rOrPr�any�rr�rrrr�%test_url_warning_with_bytes_and_spacems��z2TestWarnings.test_url_warning_with_bytes_and_spacecCr�)NTrHz&http://www.crummyunicode.com/ is greatcsr�r�r�r�rrrrqxr�zGTestWarnings.test_url_warning_with_unicode_and_space.<locals>.<genexpr>r�r�rrr�'test_url_warning_with_unicode_and_spaceus��z4TestWarnings.test_url_warning_with_unicode_and_spaceN)r?r@rAr�r�r�r�r�r�r�r�rZr�r�r�r�r�r�r�r�rrrrr��s.�
�

r�c@rX)�TestSelectiveParsingcCs.d}td�}|j||d�}|��dksJ�dS)Nz&No<b>Yes</b><a>No<b>Yes <c>Yes</c></b>rw)r�s<b>Yes</b><b>Yes <c>Yes</c></b>)rrr$)rr6�strainerrrrr�test_parse_with_soupstrainer~sz1TestSelectiveParsing.test_parse_with_soupstrainerN)r?r@rAr�rrrrr�|sr�c@s:eZdZdZdd�Zejjedd�dd��Z	dd	�Z
d
S)�
TestNewTagz(Test the BeautifulSoup.new_tag() method.cCsb|�d�}|jddddid�}t|t�sJ�d|jksJ�tddd�|jks(J�d|jks/J�dS)NrJ�foo�baz�nameza name)�bar�attrs)r�r�)r�new_tagrQrr�rNr��parent)rrr�rrr�test_new_tag�s
zTestNewTag.test_new_tagz-lxml not installed, cannot parse XML document)�reasoncC�Btdd�}|�d�}|�d�}d|��ksJ�d|��ksJ�dS)NrJ�xml�brrx�<br/>s<p/>�rr�r$)r�xml_soup�xml_br�xml_prrr�5test_xml_tag_inherits_self_closing_rules_from_builder�s



z@TestNewTag.test_xml_tag_inherits_self_closing_rules_from_buildercCr�)NrJr�r�rxr�s<p></p>r�)r�	html_soup�html_br�html_prrr�1test_tag_inherits_self_closing_rules_from_builder�s



z<TestNewTag.test_tag_inherits_self_closing_rules_from_builderN)r?r@rA�__doc__r�rZr��skipifrr�r�rrrrr��s�

r�c@s eZdZdZdd�Zdd�ZdS)�
TestNewStringz+Test the BeautifulSoup.new_string() method.cCs2|�d�}|�d�}d|ksJ�t|t�sJ�dS�NrJr�)r�
new_stringrQr�rrr}rrr�'test_new_string_creates_navigablestring�s

z5TestNewString.test_new_string_creates_navigablestringcCs4|�d�}|�dt�}d|ksJ�t|t�sJ�dSr�)rr�rrQr�rrr�3test_new_string_can_create_navigablestring_subclass�s
zATestNewString.test_new_string_can_create_navigablestring_subclassN)r?r@rAr�r�r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�
TestPicklecCs2|�d�}t�|�}t�|�}d|jjksJ�dS)Nz<a>some markup</a>�some markup)r�pickle�dumps�loadsr_r�rr�pickled�	unpickledrrr�test_normal_pickle�s


zTestPickle.test_normal_picklecCs6|�d�}d|_t�|�}t�|�}d|jksJ�dS)Nr�)rrKr�r�r�rr�rrr�test_pickle_with_no_builder�s



z&TestPickle.test_pickle_with_no_builderN)r?r@rAr�r�rrrrr��sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestEncodingConversioncCs&d|_|j�d�|_|jdksJ�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>)�unicode_datar$r&r8rrr�setup_method�sz#TestEncodingConversion.setup_methodc	Cs�tj}t�tj�z9dd�}|t_d}|�|�}|��}t|t�s#J�||�	|���ks.J�|j
��dks7J�Wt�tj�|t_dSt�tj�|t_w)NcSr0r1r)rRrrr�noop�r4z>TestEncodingConversion.test_ascii_in_unicode_out.<locals>.noops<foo>a</foo>r")
r�chardet_dammit�logging�disable�WARNINGrr�rQrR�document_forr%�lower�NOTSET)r�chardetr��ascii�soup_from_ascii�unicode_outputrrr�test_ascii_in_unicode_out�s

�z0TestEncodingConversion.test_ascii_in_unicode_outcCs@|�|j�}|��|jksJ�|jjdksJ�|jdksJ�dS�NuSacré bleu!)rr�r�r�rr%�r�soup_from_unicoderrr�test_unicode_in_unicode_out�sz2TestEncodingConversion.test_unicode_in_unicode_outcCs2|�|j�}|��|jksJ�|jjdksJ�dSr)rr&r�r�r�r)r�soup_from_utf8rrr�test_utf8_in_unicode_out�sz/TestEncodingConversion.test_utf8_in_unicode_outcCs$|�|j�}|�d�|jksJ�dS)Nr")rr�r$r&rrrr�
test_utf8_out�sz$TestEncodingConversion.test_utf8_outN)r?r@rAr�rrrrrrrrr��sr�)&r��pdbrr��osr�rZ�sys�tempfile�bs4rrrrr�bs4.builderrr	r
�bs4.elementrrr
rrrJrrrrOrrr�r�r�r�r�r�rrrr�<module>s,0)}	"