__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

��g7�����SrSSKrSSKrSSKrSSKJr SSKJr SSKJ	r	J
r
JrJrJ
r
 SSKJr SSKJr "S	S
\5r"SS\5r"S
S\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS\5r"SS \5r"S!S"\5r"S#S$\5r"S%S&\5r /S'Qr!"S(S)\5r""S*S+\5r#g),a8Tests for Beautiful Soup's tree traversal methods.

The tree traversal methods are the main advantage of using Beautiful
Soup over just using a parser.

Different parsers will build different Beautiful Soup trees given the
same markup, but all Beautiful Soup trees can be traversed with the
methods tested here.
�N)�
BeautifulSoup)�builder_registry)�!AttributeResemblesVariableWarning�CData�Comment�NavigableString�Tag)�SoupStrainer�)�SoupTestc�B�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�TestFind�z&Basic tests of the find() method.
    c�h�URS5nURS5RS:Xdeg)Nz <a>1</a><b>2</b><a>3</a><b>4</b>�b�2)�soup�find�string��selfrs  �5/usr/lib/python3/dist-packages/bs4/tests/test_tree.py�
test_find_tag�TestFind.test_find_tag"s-���y�y�;�<���y�y��~�$�$��+�+�+�c�P�URS5nURSS9S:Xdeg)Nu<h1>Räksmörgås</h1>�
Räksmörgås�r)rrrs  r�test_unicode_text_find�TestFind.test_unicode_text_find&s*���y�y�1�2���y�y��y�0�O�C�C�Crc�z�URS5n[U5 SURSS9R:Xdeg)Nu&<h1 id="Räksmörgås">here it is</h1>z
here it isr��id)r�strr�textrs  r�test_unicode_attribute_find�$TestFind.test_unicode_attribute_find*s7���y�y�A�B���D�	��t�y�y�O�y�<�A�A�A�A�Arc�d�URS5nS[UR55:Xdeg)z)Test an optimization that finds all tags.�<a>foo</a><b>bar</b>�N�r�len�find_allrs  r�test_find_everything�TestFind.test_find_everything/s*���y�y�/�0���C��
�
��(�(�(�(rc�f�URS5nS[URS55:Xdeg)z;Test an optimization that finds all tags with a given name.z<a>foo</a><b>bar</b><a>baz</a>r*�aNr+rs  r�test_find_everything_with_name�'TestFind.test_find_everything_with_name4s-���y�y�9�:���C��
�
�c�*�+�+�+�+rc�"�URS5nSUR5R:XdeSURS5R5R:XdeSURS5R	5R:Xdeg)Nz<div></div><p></p>�div�p�rr�name�find_previous_sibling�find_next_siblingrs  r�test_find_with_no_arguments�$TestFind.test_find_with_no_arguments9sv���y�y�-�.����	�	��(�(�(�(�(���	�	�#��<�<�>�C�C�C�C�C��d�i�i��&�8�8�:�?�?�?�?�?rc�"�URS5nSUR5R:XdeSURS5R5R:XdeSURS5R	5R:Xdeg)Nz"text<div>text</div>text<p>text</p>r5r6r7rs  r�+test_find_with_no_arguments_only_finds_tags�4TestFind.test_find_with_no_arguments_only_finds_tags?sv���y�y�=�>����	�	��(�(�(�(�(���	�	�#��<�<�>�C�C�C�C�C��d�i�i��&�8�8�:�?�?�?�?�?r�N)
�__name__�
__module__�__qualname__�__firstlineno__�__doc__rrr&r.r2r;r>�__static_attributes__r@rrrrs.���,�D�B�
)�
,�
@�@rrc�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestFindAll�Fz%Basic tests of the find_all() method.c�0�URS5nS[URR55:XdeS[UR	S5R55:XdeS[UR	S5R
55:Xdeg)Nz/<body>text<div>text</div>text<p>text</p></body>r*rr6r5)rr,�bodyr-r�find_previous_siblings�find_next_siblingsrs  r�/test_find_all_with_no_arguments_only_finds_tags�;TestFindAll.test_find_all_with_no_arguments_only_finds_tagsIsz���y�y�J�K���C��	�	�*�*�,�-�-�-�-��C��	�	�#��=�=�?�@�@�@�@��C��	�	�%�(�;�;�=�>�>�>�>rc��URS5nURSS9S/:XdeURSS/S9SS/:XdeUR[R"S5S9/SQ:XdeURSS9/SQ:Xdeg)	z'You can search the tree for text nodes.u<html>Foo<b>bar</b>»</html>�barr�Fooz.*)rRrQ�»TN)rr-�re�compilers  r�test_find_all_text_nodes�$TestFindAll.test_find_all_text_nodesOs����y�y�9�:���}�}�E�}�*�u�g�5�5�5��}�}�U�E�N�}�3��u�~�E�E�E��}�}�B�J�J�t�$4�}�5�9O�O�O�O��}�}�D�}�)�-C�C�C�Crc�4�URS5nURURSSS9/SQ5 URURSSS9S/5 URURSSS9/S	Q5 URURSS
S9/S	Q5 g)z7You can limit the number of items returned by find_all.z(<a>1</a><a>2</a><a>3</a><a>4</a><a>5</a>r1���limit)�1r�3rr\�
)r\rr]�4�5rN�r�assert_selectsr-rs  r�test_find_all_limit�TestFindAll.test_find_all_limit\s����y�y�C�D�����D�M�M�#�Q�M�7��I����D�M�M�#�Q�M�7�#��?����D�M�M�#�R�M�8�:S�T�	
���D�M�M�#�Q�M�7�9R�Src��URS5nURU"SSS9S/5 URURSS9S/5 g)	Nz!<a>1</a><b>2<a id='foo'>3</a></b>r1rrZr\�foor"r])rrbrrs  r�%test_calling_a_tag_is_calling_findall�1TestFindAll.test_calling_a_tag_is_calling_findallfsG���y�y�<�=�����D��A�.���6����D�F�F�e�F�,�s�e�4rc�F�URS5n/nURU5 [R"SS9n/UR	U5:XdeUunUR
[:Xde[UR5nUS:XdeSSS5 g!,(df   g=f)N�<a></a>T��recordzLIgnoring nested list [[...]] to avoid the possibility of infinite recursion.)	r�append�warnings�catch_warningsr-�filename�__file__r$�message)rr�selfref�w�warning�msgs      r�Ttest_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursion�`TestFindAll.test_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursionks����y�y��#�������w���
$�
$�D�
1�Q�����w�/�/�/�/��I�W��#�#�x�/�/�/��g�o�o�&�C��a�b�
�b�
2�
1�
1�s�AB�
B c��URS5nURS5n[US5(deURS5n[US5(deURSS9n[US5(deg)z%All find_all calls return a ResultSetrjr1�sourceTrfrN)rr-�hasattr�rr�results   r�test_find_all_resultset�#TestFindAll.test_find_all_resultsetsu���y�y��#�����s�#���v�x�(�(�(�(����t�$���v�x�(�(�(�(����e��,���v�x�(�(�(�(rr@N)rArBrCrDrErNrVrcrgrwr~rFr@rrrHrHFs%��/�?�D�T�5�
�(
)rrHc��\rSrSrSrSrg)�TestFindAllBasicNamespaces�c��URS5nSURS5R:XdeSURSS0S9R:Xdeg)Nz0<mathml:msqrt>4</mathml:msqrt><a svg:fill="red">r_zmathml:msqrtr1zsvg:fill�red��attrs)rrrr8rs  r�test_find_by_namespaced_name�7TestFindAllBasicNamespaces.test_find_by_namespaced_name�sR���y�y�K�L���d�i�i��/�6�6�6�6�6��d�i�i�z�5�&9�i�:�?�?�?�?�?rr@N)rArBrCrDr�rFr@rrr�r��s��@rr�c�^�\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrg)�TestFindAllByName�z&Test ways of finding tags by tag name.Nc�0�URS5Ulg)Nz�<a>First tag.</a>
                                  <b>Second tag.</b>
                                  <c>Third <a>Nested tag.</a> tag.</c>�r�tree�rs r�setup_method�TestFindAllByName.setup_method�s���I�I�J�K��	rc�^�URURRS5SS/5 g�Nr1�
First tag.�Nested tag.�rbr�r-r�s r�test_find_all_by_tag_name�+TestFindAllByName.test_find_all_by_tag_name�s&�����D�I�I�.�.�s�3�l�M�5R�Src�2�URURRSSS9S/5 URURRSSS9SS/5 URURRS[R"S5S9SS/5 g)Nr1r�rTr��tag�rbr�r-rTrUr�s r�test_find_all_by_name_and_text�0TestFindAllByName.test_find_all_by_name_and_text�s�������I�I���s�<��8�<�.�	
�	
����I�I���s�4��0�<��2O�	
�	
����I�I���s�2�:�:�e�+<��=�
�=�)�	
rc�p�URURRRS5S/5 g)Nr1r�)rbr��cr-r�s r�!test_find_all_on_non_root_element�3TestFindAllByName.test_find_all_on_non_root_element�s'�����D�I�I�K�K�0�0��5�
��Grc�J�URURS5SS/5 gr�)rbr�r�s r�%test_calling_element_invokes_find_all�7TestFindAllByName.test_calling_element_invokes_find_all�s�����D�I�I�c�N�\�=�,I�Jrc�p�URURR[S55SS/5 gr�)rbr�r-r
r�s r�test_find_all_by_tag_strainer�/TestFindAllByName.test_find_all_by_tag_strainer�s.������I�I���|�C�0�1�L�-�3P�	
rc�b�URURRSS/5/SQ5 g)Nr1r�r�zSecond tag.r�r�r�s r�test_find_all_by_tag_names�,TestFindAllByName.test_find_all_by_tag_names�s)������I�I����S�z�*�,X�	
rc�d�URURRSSS.5/SQ5 g)NT)r1rr�r�r�s r�test_find_all_by_tag_dict�+TestFindAllByName.test_find_all_by_tag_dict�s*������I�I���T��5�6�8�	
rc��URURR[R"S55/SQ5 g)Nz^[ab]$r�r�r�s r�test_find_all_by_tag_re�)TestFindAllByName.test_find_all_by_tag_re�s.������I�I���r�z�z�(�3�4�8�	
rc�r�SnURS5nURURU5SS/5 g)Nc�>�URURS5:H$)Nr#)r8�get�r�s r�id_matches_name�RTestFindAllByName.test_find_all_with_tags_matching_method.<locals>.id_matches_name�s���8�8�s�w�w�t�}�,�,rz�<a id="a">Match 1.</a>
                            <a id="1">Does not match.</a>
                            <b id="b">Match 2.</a>zMatch 1.zMatch 2.ra)rr�r�s   r�'test_find_all_with_tags_matching_method�9TestFindAllByName.test_find_all_with_tags_matching_method�s<��	-��y�y�6�7��	
���D�M�M�/�:�Z��<T�Urc�R�URS5nURSS5nURS[R"S55nUR	SSS/5upESUR
:XdeSUR
:XdeSUR
:XdeSUR
:Xdeg)NzH<div class='a b'>1</div><div class='a c'>2</div><div class='a d'>3</div>r5za dza br]r\)rrrTrUr-r)rr�r1�r2�r3�r4s      r�%test_find_with_multi_valued_attribute�7TestFindAllByName.test_find_with_multi_valued_attribute�s����y�y�V�
���Y�Y�u�e�
$��
�Y�Y�u�b�j�j��0�
1�����u�u�e�n�5����b�i�i�����b�i�i�����b�i�i�����b�i�i���r�r���returnN)rArBrCrDrEr�r�r�r�r�r�r�r�r�r�r�rFr@rrr�r��sA��0�K�
T�
�H�K�
�

�

�
�
V�
 rr�c�t�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrg)�TestFindAllByAttribute��c�h�URS5nURURSS9SS/5 g)Nz�
                         <a id="first">Matching a.</a>
                         <a id="second">
                          Non-matching <b id="first">Matching b.</b>a.
                         </a>�firstr"zMatching a.zMatching b.ra�rr�s  r�test_find_all_by_attribute_name�6TestFindAllByAttribute.test_find_all_by_attribute_name�s9���y�y�!�"��
	
���D�M�M�W�M�5�
�}�7U�Vrc�X�SRS5nSRS5nURU5nUR/URUS9:XdeUR/URUR	S5S9:XdeUR/(dURUS/S95eg)Nuםולש�utf8u<a title="םולש"></a>)�titlezsomething else)�encoderr1r-�decode)r�peace�datars    r�%test_find_all_by_utf8_attribute_value�<TestFindAllByAttribute.test_find_all_by_utf8_attribute_value�s����!�!�&�)��)�0�0��8���y�y�������x�4�=�=�u�=�5�5�5�5����x�4�=�=�u�|�|�F�/C�=�D�D�D�D����x�G����e�5E�-F��G�G�xrc���URS5nURURSS9S/5 URURSS0S9S/5 URURSS	0S9S
/5 g)Na0
                         <a name="name1" class="class1">Name match.</a>
                         <a name="name2" class="class2">Class match.</a>
                         <a name="name3" class="class3">Non-match.</a>
                         <name1>A tag called 'name1'.</name1>
                         �name1�r8zA tag called 'name1'.r8r�zName match.�class�class2zClass match.rar�s  r�test_find_all_by_attribute_dict�6TestFindAllByAttribute.test_find_all_by_attribute_dict�s}���y�y����	
���D�M�M�w�M�7�:Q�9R�S����D�M�M���0A�M�B�]�O�T����D�M�M��(�0C�M�D�~�FV�Wrc��URS5nURURSSS9S/5 URURSSS9S/5 URURSS	S9S/5 URURSS5S/5 URURSS
9SS/5 URURSS5S/5 URURSS	5S/5 g)Nz�
                         <a class="1">Class 1.</a>
                         <a class="2">Class 2.</a>
                         <b class="1">Class 1.</b>
                         <c class="3 4">Class 3 and 4.</c>
                         r1r\��class_zClass 1.r�r]zClass 3 and 4.r_r�rar�s  r�test_find_all_by_class�-TestFindAllByAttribute.test_find_all_by_classs����y�y����	
���D�M�M�#�c�M�:�Z�L�I����D�M�M�#�c�M�:�=M�<N�O����D�M�M�#�c�M�:�=M�<N�O�	
���D�M�M�#�s�3�j�\�B����D�M�M��M�4�z�:�6N�O����D�M�M�#�s�3�6F�5G�H����D�M�M�#�s�3�6F�5G�Hrc�p�URS5nURS[R"S5S9nUR	US/5 URS[R"S5S9nUR	US/5 URS[R"S5S9nUR	US/5 g)Nz#<gar class='foo bar'>Found it</gar>�gar�or��Found itr1zo b)rr-rTrUrb)rr��fs   r�0test_find_by_class_when_multiple_classes_present�GTestFindAllByAttribute.test_find_by_class_when_multiple_classes_presents����y�y�>�?���M�M�%��
�
�3��M�8�����A�
�|�,��M�M�%��
�
�3��M�8�����A�
�|�,�
�M�M�%��
�
�5�(9�M�:�����A�
�|�,rc�*�URS5nURURS[R"S55S/5 SnURURSU5/5 SnURURSU5S/5 g)Nz<a class='bar'>Found it</a>r1�bar�c��[U5S:�$�NrY�r,��values r�big_attribute_value�nTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.big_attribute_value/s���u�:��>�!rc��[U5S:*$r�r�r�s r�small_attribute_value�pTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.small_attribute_value4s���u�:��?�"r�rrbr-rTrU)rrr�r�s    r�:test_find_all_with_non_dictionary_for_attrs_finds_by_class�QTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class*s���y�y�6�7�����D�M�M�#�r�z�z�$�/?�@�:�,�O�	"�	
���D�M�M�#�/B�C�R�H�	#�	
���D�M�M�#�/D�E�
�|�Trc�X�URS5nURS5up#X#/(dURSS55eU/(dURSS55eU/URSSS9:XdeU/URSS5:Xde/URSS5:Xdeg)Nz*<a class="foo bar"></a><a class="foo"></a>r1rfrQzfoo barr�zbar foo�rr-)rrr1�a2s    r�:test_find_all_with_string_for_attrs_finds_multiple_classes�QTestFindAllByAttribute.test_find_all_with_string_for_attrs_finds_multiple_classes9s����y�y�E�F���
�
�c�"����w�1��
�
�c�5�1�1�w��s�-�D�M�M�#�u�-�-�s��s�d�m�m�C�	�m�:�:�:�:��s�d�m�m�C��3�3�3�3��T�]�]�3�	�2�2�2�2rc��URS5n[SS0S9nURURU5S/5 g)Nzi
                         <a id="first">Match.</a>
                         <a id="second">Non-match.</a>r#r�r�zMatch.)rr
rbr-)rr��strainers   r�'test_find_all_by_attribute_soupstrainer�>TestFindAllByAttribute.test_find_all_by_attribute_soupstrainerEs@���y�y�:�;�� �t�W�o�6�����D�M�M�(�3�h�Z�@rc�h�URS5nURURSSS9S/5 g)N��<a id="1">ID present.</a>
                            <a>No ID present.</a>
                            <a id="">ID is empty.</a>r1r"zNo ID present.rar�s  r�$test_find_all_with_missing_attribute�;TestFindAllByAttribute.test_find_all_with_missing_attributeMs:���y�y�9�:��	
���D�M�M�#�$�M�7�:J�9K�Lrc�h�URS5nURURSS9SS/5 g)NrTr"zID present.zID is empty.rar�s  r�$test_find_all_with_defined_attribute�;TestFindAllByAttribute.test_find_all_with_defined_attributeUs9���y�y�9�:��	
���D�M�M�T�M�2�]�N�4S�Trc��URS5nSS/nURURSS9U5 URURSS9U5 g)Nz[<a id=1>Unquoted attribute.</a>
                            <a id="1">Quoted attribute.</a>zUnquoted attribute.zQuoted attribute.rr"r\ra)rr��expecteds   r�$test_find_all_with_numeric_attribute�;TestFindAllByAttribute.test_find_all_with_numeric_attribute]sY���y�y�?�@��*�+>�?�����D�M�M�Q�M�/��:����D�M�M�S�M�1�8�<rc��URS5nURUR/SQS9SS/5 URUR/S9/5 g)Nz�<a id="1">1</a>
                            <a id="2">2</a>
                            <a id="3">3</a>
                            <a>No ID.</a>)r\r]r_r"r\r]rar�s  r�(test_find_all_with_list_attribute_values�?TestFindAllByAttribute.test_find_all_with_list_attribute_valuesfsU���y�y�-�.��	
���D�M�M�_�M�=��S�z�J�	
���D�M�M�R�M�0�"�5rc��URS5nURUR[R"S5S9SS/5 g)Nz�<a id="a">One a.</a>
                            <a id="aa">Two as.</a>
                            <a id="ab">Mixed as and bs.</a>
                            <a id="b">One b.</a>
                            <a>No ID.</a>z^a+$r"zOne a.zTwo as.r�r�s  r�5test_find_all_with_regular_expression_attribute_value�LTestFindAllByAttribute.test_find_all_with_regular_expression_attribute_valuersB���y�y�-�.��	
���D�M�M�R�Z�Z��-?�M�@�8�Y�BW�Xrc��URS5nURnU/URSSS9:Xde/URSSS9:Xdeg)Nz<b>foo</b><b>bar</b><a>foo</a>r1rfrrQ�rr1r-�rrr1s   r�'test_find_by_name_and_containing_string�>TestFindAllByAttribute.test_find_by_name_and_containing_string~sR���y�y�9�:���F�F���s�d�m�m�C��m�6�6�6�6��T�]�]�3�u�]�5�5�5�5rc�p�URS5nURS5URSSS9:Xdeg)Nz"<a>foo</a><a><b><c>foo</c></b></a>r1rfrr�rs  r�=test_find_by_name_and_containing_string_when_string_is_buried�TTestFindAllByAttribute.test_find_by_name_and_containing_string_when_string_is_buried�s5���y�y�=�>���}�}�S�!�T�]�]�3�u�]�%E�E�E�Erc��URS5nURnU/URSSS9:Xde/URSSS9:Xdeg)Nz"<b id="1">foo</b><a id="2">foo</a>r*rf)r#rrrQrrs   r�,test_find_by_attribute_and_containing_string�CTestFindAllByAttribute.test_find_by_attribute_and_containing_string�sR���y�y�=�>���F�F���s�d�m�m�q��m�7�7�7�7��T�]�]�a��]�6�6�6�6rr@N)rArBrCrDr�r�r�r�r�r�r�r�rrr	rrrrrrFr@rrr�r��s\��W�H�X�$I�(-�
U�
3�A�M�U�=�
6�
Y�6�F�7rr�c��\rSrSrSrSrSrg)�
TestSmoothi�zTest Tag.smooth.c�"�URS5nURnURS5 URS5 UR[S55 UR[S55 URS5 UR	5n[XS5nURS5 URS	5 URU5 SURRLdeS
[UR5:XdeUR5 S[UR5:XdeSURS
:XdeSURR:XdeSURS:XdeSURS:Xdeg)Nz<div>a</div>rr�z	Comment 1z	Comment 2�d�spanr\r���abcr�12rr*)rr5rmr�default_builderr	r rr,�contents�smooth)rrr5�builderr s     r�test_smooth�TestSmooth.test_smooth�sG���y�y��(���h�h���
�
�3���
�
�3���
�
�7�;�'�(��
�
�7�;�'�(��
�
�3���&�&�(���4�&�)�����C�����C���
�
�4���s�x�x���&�&�&��C����%�%�%�%��
�
���C����%�%�%�%�
����Q��'�'�'��s�x�x���&�&�&�
�c�l�l�1�o�-�-�-��c�l�l�1�o�-�-�-rr@N)rArBrCrDrEr)rFr@rrrr�s
���&.rrc��\rSrSrSrSrSrg)�	TestIndexi�zTest Tag.indexc�0�URS5nURn[UR5Hup4X2R	U5:XaMe [
R"[5 UR	S5 SSS5 g!,(df   g=f)Nah<div>
                            <a>Identical</a>
                            <b>Not identical</b>
                            <a>Identical</a>

                            <c><d>Identical with child</d></c>
                            <b>Also not identical</b>
                            <c><d>Identical with child</d></c>
                            </div>r)rr5�	enumerater&�index�pytest�raises�
ValueError)rr�r5�i�elements     r�
test_index�TestIndex.test_index�sm���y�y�&�'���h�h��#�C�L�L�1�J�A��	�	�'�*�*�*�*�2�
�]�]�:�
&��J�J�q�M�'�
&�
&�s�,B�
Br@N)rArBrCrDrEr5rFr@rrr,r,�s
���rr,c�X�\rSrSrSrSSjrSrSrSrSr	S	r
S
rSrSr
S
rSrg)�TestParentOperationsi�z;Test navigation and searching through an element's parents.Nc�f�URS5UlURRUlg)Na<<ul id="empty"></ul>
                                 <ul id="top">
                                  <ul id="middle">
                                   <ul id="bottom">
                                    <b id="start">Start here</b>
                                   </ul>
                                  </ul>)rr�r�startr�s rr��!TestParentOperations.setup_method�s(���I�I�+�,��	��Y�Y�[�[��
rc��URRSS:XdeURRRSS:XdeURRRRSS:Xdeg)Nr#�bottom�middle�top)r:�parentr�s r�test_parent� TestParentOperations.test_parent�sk���z�z� � ��&�(�2�2�2��z�z� � �'�'��-��9�9�9��z�z� � �'�'�.�.�t�4��=�=�=rc�n�URRSnURUR:Xdeg)Nr)r�r&r@)r�top_tags  r�%test_parent_of_top_tag_is_soup_object�:TestParentOperations.test_parent_of_top_tag_is_soup_object�s,���)�)�$�$�Q�'���~�~����*�*�*rc�:�SURRLdeg�N)r�r@r�s r�test_soup_object_has_no_parent�3TestParentOperations.test_soup_object_has_no_parent�s���t�y�y�'�'�'�'�'rc���URURRS5/SQ5 URURRSSS9S/5 URRSS9/:Xdeg)N�ul�r=r>r?r>r"r:)�assert_selects_idsr:�find_parentsr�s r�test_find_parents�&TestParentOperations.test_find_parents�sm������J�J�#�#�D�)�+F�	
�	
����
�
� 7� 7��� 7� J�X�J�W��z�z�&�&�'�&�2�b�8�8�8rc��URRSSS9SS:XdeURRSS9beg)NrLr?r"r#r:)r:�find_parentr�s r�test_find_parent�%TestParentOperations.test_find_parent�sG���z�z�%�%�d�u�%�5�d�;�u�D�D�D��z�z�%�%��%�1�9�9�9rc�n�URRSS9nURRS:Xdeg)N�
Start hererr)r�rr@r8�rr%s  r�test_parent_of_text_element�0TestParentOperations.test_parent_of_text_element�s.���y�y�~�~�\�~�2���{�{���3�&�&�&rc�j�URRSS9nURS5SS:Xdeg)NrWrrLr#r=)r�rrSrXs  r�test_text_element_find_parent�2TestParentOperations.test_text_element_find_parent�s4���y�y�~�~�\�~�2������%�d�+�x�7�7�7rc��URRVs/sHnUcMSUR;dMUSPM! nnU/SQ:Xdegs snf)Nr#rM)r:�parentsr�)rr@r_s   r�test_parent_generator�*TestParentOperations.test_parent_generator�s^���*�*�,�,�
�,���
�&*�f�l�l�&:�
�F�4�L�,�	�
�
�5�5�5�5��
��A�A�	Ac��URRVs/sHnUcMSUR;dMUSPM! nnU/SQ:Xdegs snf)Nr#)r:r=r>r?)r:�self_and_parentsr�)rr@�resultss   r�test_self_and_parent_generator�3TestParentOperations.test_self_and_parent_generators^���*�*�5�5�
�5���
�&*�f�l�l�&:�
�F�4�L�5�	�
�
�>�>�>�>��
rb)r:r�r�)rArBrCrDrEr�rArErIrPrTrYr\r`rfrFr@rrr8r8�s7��E�!�>�
+�(�9�:�'�8�6�?rr8c��\rSrSrSSjrSrg)�
ProximityTestiNc�0�URS5Ulg)Nz�<html id="start"><head id="headtag"></head><body id="bodytag"><b id="1">One</b><b id="2">Two</b><b id="3">Three</b></body></html>r�r�s rr��ProximityTest.setup_methods���I�I�
P�
��	rr�r��rArBrCrDr�rFr@rrriris��
rric�V^�\rSrSrSU4SjjrSrSrSrSrSr	Sr
S	rS
rU=r
$)�TestNextOperationsic�`>�[[U]5 URRUlgrH)�superrnr�r�rr:�r�	__class__s �rr��TestNextOperations.setup_methods ���
� �$�4�6��Y�Y�[�[��
rc��URRS:XdeURRRSS:Xdeg)N�Oner#r)r:�next_elementr�s r�	test_next�TestNextOperations.test_nexts=���z�z�&�&�%�/�/�/��z�z�&�&�3�3�D�9�S�@�@�@rc�T�URRSS9nURbeg�N�Threer)r�rrv)r�lasts  r�test_next_of_last_item_is_none�1TestNextOperations.test_next_of_last_item_is_none s(���y�y�~�~�W�~�-��� � �(�(�(rc�6�URRbegrH)r�rvr�s r�test_next_of_root_is_none�,TestNextOperations.test_next_of_root_is_none$s���y�y�%�%�-�-�-rc���URURRS5SS/5 URRSS9 URURRSS9S/5 g)Nr�Twor{rYr")rbr:�
find_all_nextr�s r�test_find_all_next�%TestNextOperations.test_find_all_next(s_�����D�J�J�4�4�S�9�E�7�;K�L��
�
� � �A� �&����D�J�J�4�4��4�:�W�I�Frc��URRS5SS:XdeURRSS9S:Xdeg)Nrr#rr{r)r:�	find_nextr�s r�test_find_next�!TestNextOperations.test_find_next-sD���z�z�#�#�C�(��.�#�5�5�5��z�z�#�#�7�#�3�w�>�>�>rc��URRSS9nURS5RS:XdeUR	URS5SS/5 g)Nrurrr�r{)r�rr�rrbr�rXs  r�test_find_next_for_text_element�2TestNextOperations.test_find_next_for_text_element1sS���y�y�~�~�U�~�+���~�~�c�"�)�)�U�2�2�2����D�.�.�s�3�e�W�5E�Frc��URRSS9nURVs/sHo"PM nnUupEUSS:XdeUS:XdeURVs/sHo"PM nnUSSU:XdeUSU:Xdegs snfs snf)Nr�rr#r]r{rr)r�r�
next_elements�self_and_next_elements)rr:�node�
successorsr�r&�successors2s       r�test_next_generators�'TestNextOperations.test_next_generators6s����	�	���e��,��',�':�':�;�':�t�d�':�
�;�"�
���4�y�C�����7�"�"�"�(-�(D�(D�E�(D��t�(D��E��1�2��*�,�,�,��1�~��&�&�&��<��Fs�A>�B�r:r�)rArBrCrDr�rwr}r�r�r�r�r�rF�
__classcell__�rrs@rrnrns3���!�A�)�.�G�
?�G�

'�
'rrnc�V^�\rSrSrSU4SjjrSrSrSrSrSr	Sr
S	rS
rU=r
$)�TestPreviousOperationsiCc�f>�[[U]5 URR	SS9Ulgrz)rpr�r�r�r�endrqs �rr��#TestPreviousOperations.setup_methodDs'���
�$�d�8�:��9�9�>�>��>�1��rc��URRSS:XdeURRRS:Xdeg)Nr#r]r�)r��previous_elementr�s r�
test_previous�$TestPreviousOperations.test_previousHs=���x�x�(�(��.�#�5�5�5��x�x�(�(�9�9�U�B�B�Brc�X�URRS5nURbeg)N�html)r�rr�)rr�s  r�#test_previous_of_first_item_is_none�:TestPreviousOperations.test_previous_of_first_item_is_noneLs&���	�	���v�&���%�%�-�-�-rc�6�URRbegrH)r�r�r�s r�test_previous_of_root_is_none�4TestPreviousOperations.test_previous_of_root_is_nonePs���y�y�)�)�1�1�1rc��URURRS5/SQ5 URURRSS9S/5 g)Nr�r{r�rurr"ru)rbr��find_all_previousr�s r�test_find_all_previous�-TestPreviousOperations.test_find_all_previousTsH��	
���D�H�H�6�6�s�;�=T�U����D�H�H�6�6�!�6�<�u�g�Frc��URRS5SS:XdeURRSS9S:Xdeg)Nrr#r]rur)r��
find_previousr�s r�test_find_previous�)TestPreviousOperations.test_find_previous[sD���x�x�%�%�c�*�4�0�C�7�7�7��x�x�%�%�U�%�3�u�<�<�<rc��URRSS9nURS5RS:XdeUR	URS5/SQ5 g)Nr{rrr�)r�rr�rrbr�rXs  r�#test_find_previous_for_text_element�:TestPreviousOperations.test_find_previous_for_text_element_sQ���y�y�~�~�W�~�-���!�!�#�&�-�-��8�8�8����D�2�2�3�7�9P�Qrc��URRSSS9nURUR/SQ5 URUR/SQ5 g)Nrrur)�bodytag�headtagr:)r\r�r�r:)r�rrN�previous_elements�self_and_previous_elements)rr:s  r�test_previous_generators�/TestPreviousOperations.test_previous_generatorsdsF���	�	���s�5��1������ 7� 7�9X�Y����� @� @�Bf�gr�r�r�)rArBrCrDr�r�r�r�r�r�r�r�rFr�r�s@rr�r�Cs5���2�C�.�2�G�=�R�
h�hrr�c��\rSrSrSSjrSrg)�SiblingTestijNc��Sn[R"S5RSU5nURU5Ulg)Na�<html>
                    <span id="1">
                     <span id="1.1"></span>
                    </span>
                    <span id="2">
                     <span id="2.1"></span>
                    </span>
                    <span id="3">
                     <span id="3.1"></span>
                    </span>
                    <span id="4"></span>
                    </html>z\n\s*�)rTrU�subrr�)r�markups  rr��SiblingTest.setup_methodks6�������H�%�)�)�"�f�5���I�I�f�%��	rr�r�rlr@rrr�r�js��&rr�c�V^�\rSrSrSU4SjjrSrSrSrSrSr	Sr
S	rS
rU=r
$)�TestNextSiblingi~c�f>�[[U]5 URR	SS9Ulg)Nr\r")rpr�r�r�rr:rqs �rr��TestNextSibling.setup_methods&���
�o�t�1�3��Y�Y�^�^�s�^�+��
rc�6�URRbegrH)r��next_siblingr�s r�!test_next_sibling_of_root_is_none�1TestNextSibling.test_next_sibling_of_root_is_none�s���y�y�%�%�-�-�-rc���URRSS:XdeURRRSS:XdeURRSS:Xdeg)Nr#rr]�1.1)r:r�rvr�s r�test_next_sibling�!TestNextSibling.test_next_sibling�sa���z�z�&�&�t�,��3�3�3��z�z�&�&�3�3�D�9�S�@�@�@��z�z�&�&�t�,��5�5�5rc���URRRbeURRSS9nURbeURRSS9nURbeg)Nr�r"r_)r�r�r�r)r�nested_span�	last_spans   r�test_next_sibling_may_not_exist�/TestNextSibling.test_next_sibling_may_not_exist�sh���y�y�~�~�*�*�2�2�2��i�i�n�n��n�.���'�'�/�/�/��I�I�N�N�c�N�*�	��%�%�-�-�-rc�L�URRS5SS:Xdeg)Nr r#r)r:r:r�s r�test_find_next_sibling�&TestNextSibling.test_find_next_sibling�s$���z�z�+�+�F�3�D�9�S�@�@�@rc��URURRS5/SQ5 URURRSS9S/5 g)Nr �rr]r_r]r")rNr:rMr�s r�test_next_siblings�"TestNextSibling.test_next_siblings�sE������
�
� =� =�f� E��W�����
�
� =� =�� =� E��u�Mrc��URURR/SQ5 URURR/SQ5 g)Nr�)r\rr]r_)rNr:�
next_siblings�self_and_next_siblingsr�s r�test_next_siblings_generators�-TestNextSibling.test_next_siblings_generators�s7������
�
� 8� 8�/�J�����
�
� A� A�CW�Xrc�F�URS5nURSS9nURRS:XdeURRS:XdeUR	URS5S/5 UR
SS9S:XdeUR
SS9beg)N�Foo<b>bar</b>bazrRrr�bazrQ�nonesuch)rrr�r8rbrMr:�rrr:s   r�"test_next_sibling_for_text_element�2TestNextSibling.test_next_sibling_for_text_element�s����y�y�+�,���	�	��	�'���!�!�&�&�#�-�-�-��!�!�.�.�%�7�7�7����E�4�4�S�9�E�7�C��&�&�e�&�4��=�=�=��&�&�j�&�9�A�A�Arr�r�)rArBrCrDr�r�r�r�r�r�r�r�rFr�r�s@rr�r�~s5���,�.�6�.�A�N�
Y�B�Brr�c�V^�\rSrSrSU4SjjrSrSrSrSrSr	Sr
S	rS
rU=r
$)�TestPreviousSiblingi�c�f>�[[U]5 URR	SS9Ulg)Nr_r")rpr�r�r�rr�rqs �rr�� TestPreviousSibling.setup_method�s'���
�!�4�5�7��9�9�>�>�S�>�)��rc�6�URRbegrH)r��previous_siblingr�s r�%test_previous_sibling_of_root_is_none�9TestPreviousSibling.test_previous_sibling_of_root_is_none�s���y�y�)�)�1�1�1rc���URRSS:XdeURRRSS:XdeURRSS:Xdeg)Nr#r]rz3.1)r�r�r�r�s r�test_previous_sibling�)TestPreviousSibling.test_previous_sibling�sa���x�x�(�(��.�#�5�5�5��x�x�(�(�9�9�$�?�3�F�F�F��x�x�(�(��.�%�7�7�7rc���URRRbeURRSS9nURbeURRSS9nURbeg)Nr�r"r\)r�r�r�r)rr��
first_spans   r�#test_previous_sibling_may_not_exist�7TestPreviousSibling.test_previous_sibling_may_not_exist�sh���y�y�~�~�.�.�6�6�6��i�i�n�n��n�.���+�+�3�3�3��Y�Y�^�^�s�^�+�
��*�*�2�2�2rc�L�URRS5SS:Xdeg)Nr r#r])r�r9r�s r�test_find_previous_sibling�.TestPreviousSibling.test_find_previous_sibling�s$���x�x�-�-�f�5�d�;�s�B�B�Brc��URURRS5/SQ5 URURRSS9S/5 g)Nr �r]rr\r\r")rNr�rLr�s r�test_previous_siblings�*TestPreviousSibling.test_previous_siblings�sJ������H�H�+�+�F�3�_�	
�	
������ ?� ?�3� ?� G�#��Orc��URURR/SQ5 URURR/SQ5 g)Nr�)r_r]rr\)rNr��previous_siblings�self_and_previous_siblingsr�s r�!test_previous_siblings_generators�5TestPreviousSibling.test_previous_siblings_generators�s7�������� :� :�O�L������� C� C�EY�Zrc�F�URS5nURSS9nURRS:XdeURRS:XdeUR	URS5S/5 UR
SS9S:XdeUR
SS9beg)Nr�r�rrrRrQr�)rrr�r8rbrLr9r�s   r�&test_previous_sibling_for_text_element�:TestPreviousSibling.test_previous_sibling_for_text_element�s����y�y�+�,���	�	��	�'���%�%�*�*�c�1�1�1��%�%�6�6�%�?�?�?����E�8�8��=��w�G��*�*�%�*�8�E�A�A�A��*�*�*�*�=�E�E�Err�r�)rArBrCrDr�r�r�r�r�r�rrrFr�r�s@rr�r��s5���*�2�8�3�C�P�[�F�Frr�c�(�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSr\R6R9SSS/5S5r\R6R9SSS/SS /45S!5rS"rS#r S$r!S%r"S&r#S'r$S(r%S)r&S*r'S+r(S,r)S-r*S.r+S/r,S0r-S1r.S2r/S3r0S4r1S5r2S6r3S7r4S8r5\R6R9S9/S:Q5S;5r6S<r7S=r8S>r9S?r:S@r;SAr<gB)C�TestTreeModificationi�c�Z�URS5nSURS'UR5URS5:XdeURS	UR5URS5:XdeSURS'UR5URS5:Xdeg)	Nz<a id="1"></a>r*r#z<a id="2"></a>rjrf�id2z<a id2="foo"></a>)rr1r��document_forrs  r�test_attribute_modification�0TestTreeModification.test_attribute_modification�s����y�y�)�*������t���{�{�}�� 1� 1�2B� C�C�C�C��F�F�4�L��{�{�}�� 1� 1�)� <�<�<�<�����u�
��{�{�}�� 1� 1�2E� F�F�F�Frc�D�[R"S5"5nURSUS9n[X!S5n[X!S5nSUS'URRSU5 URRS	U5 URR
5S
:Xdeg)Nr�z
<body></body>�r(r1�olzhttp://foo.com/�hrefrrs4<body><a href="http://foo.com/"></a><ol></ol></body>)r�lookuprr	rK�insertr�)rr(rr1rs     r�test_new_tag_creation�*TestTreeModification.test_new_tag_creation�s���"�)�)�&�1�3���y�y��'�y�:����s�#��
���
%��%��&�	��	�	����A���	�	����B���I�I����F�
G�	
�
Grc��SnURU5nURSS9nURnURSS9RUR5 URU:XdeUR5UR
S5:Xdeg)NzT<p id="1">Don't leave me <b>here</b>.</p>
                <p id="2">Don't leave!</p>rr"zD<p id="1">Don't leave me .</p>
<p id="2">Don't leave!<b>here</b></p>)rrrrmr@r�r
)r�docr�second_para�bolds     r�!test_append_to_contents_moves_tag�6TestTreeModification.test_append_to_contents_moves_tag�s���/���y�y��~���i�i�3�i�'���v�v��	
�	�	�S�	�� � ����(��{�{�k�)�)�)��{�{�}�� 1� 1�X�!
�
�	
�
rc��URS5nURS5nURURS55nURS:XdeURSURS55unURS:XdeURS5nUS:XdeUR
SS5nUSS/:XdeURS	S
5nUS	S
/:XdeURSS/5nUSS/:XdeUR5S
:Xdeg)Nz
<html></html>r��headrr�r`r]r_�6�7�8�9�3456789)
rrrm�new_tagr8r�
insert_before�insert_after�extend�get_text)	rrr�rr��text5�text34�text67�text89s	         r�&test_insertion_returns_inserted_things�;TestTreeModification.test_insertion_returns_inserted_thingss���y�y��)���y�y�� ���{�{�4�<�<��/�0���y�y�F�"�"�"��+�+�a����g�!6�7����z�z�W�$�$�$����S�!����|��|��$�$�S�#�.���#�s��#�#�#��#�#�C��-���#�s��#�#�#����s�C�j�)���#�s��#�#�#��~�~��9�,�,�,rc��SnURU5nURnURUR5nX4:Xdeg)Nz<a></a><b><c></c></b>)rr1�replace_withr��rr%rr1�new_as     r�1test_replace_with_returns_thing_that_was_replaced�FTestTreeModification.test_replace_with_returns_thing_that_was_replaceds9��&���y�y�����F�F�����t�v�v�&���z��zrc�p�SnURU5nURnUR5nX4:Xdeg)N�<a><b></b><c></c></a>)rr1�unwrapr/s     r�+test_unwrap_returns_thing_that_was_replaced�@TestTreeModification.test_unwrap_returns_thing_that_was_replaced s2��&���y�y�����F�F�����
���z��zrc��URS5nURnUR5 SURLde[R
"[5 UR5 SSS5 [R
"[5 URUR5 SSS5 g!,(df   NM=f!,(df   g=f)Nz<a><b>Foo</b></a><c>Bar</c>)
rr1�extractr@r0r1r2r5r.r�rs   r�Itest_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parent�^TestTreeModification.test_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parent's����y�y�6�7���F�F��	�	�	���q�x�x����
�]�]�:�
&�
�H�H�J�'�
�]�]�:�
&�
�N�N�4�6�6�"�'�
&�'�
&��
&�
&�s�B1�C�1
B?�
Cc���SnURU5nURnURRU5nXC:XdeUR5UR	U5:Xdeg)Nz-<a><b></b><c>Foo<d></d></c></a><a><e></e></a>)rr�r.r�r
)rr%rr�r}s     r�test_replace_tag_with_itself�1TestTreeModification.test_replace_tag_with_itself1sZ��>���y�y�����F�F�����$�$�Q�'���{��{��{�{�}�� 1� 1�$� 7�7�7�7rc���SnURU5n[R"[5 URRUR5 SSS5 g!,(df   g=f�N�<a><b></b></a>)rr0r1r2rr.r1�rr%rs   r�1test_replace_tag_with_its_parent_raises_exception�FTestTreeModification.test_replace_tag_with_its_parent_raises_exception9sB�����y�y����
�]�]�:�
&��F�F������'�'�
&�
&�s�&A�
A+c���SnURU5n[R"[5 URRSUR5 SSS5 g!,(df   g=f)NrAr)rr0r1r2r1rrBs   r�,test_insert_tag_into_itself_raises_exception�ATestTreeModification.test_insert_tag_into_itself_raises_exception?sB�����y�y����
�]�]�:�
&��F�F�M�M�!�T�V�V�$�'�
&�
&�s�'A�
A,c	��URS5nURSURSSS9URSSS95up#SUR:XdeSUR:Xde[	UR
5upBp5SUR:XdeSUR:XdeSUR:XdeSUR:Xdeg)	N�-<p>And now, a word:</p><p>And we're back.</p>rr6�p2r�p3�And now, a word:�And we're back.)rrr"r�list�children)rrrJrK�p1�p4s      r�test_insert_multiple_elements�2TestTreeModification.test_insert_multiple_elementsEs����y�y�H�I�����Q����S��� >����S�Y]��@^�_����r�y�y� � � ��r�y�y� � � ��d�m�m�,����!�R�Y�Y�.�.�.��r�y�y� � � ��r�y�y� � � � �B�I�I�-�-�-rc���URS5nSnURU5nURSU5upESUR:XdeSUR:XdeURHn[	U[
5(dMe [
UR5uptpXSUR:XdeSUR:XdeSUR:XdeSUR:Xdeg)	z�Inserting one BeautifulSoup object into another actually inserts all
of its children -- you'll never combine BeautifulSoup objects.
rIz<p>p2</p><p>p3</p>rrJrKrLrMN)rrr�descendants�
isinstancerrNrO)	rrr%�	to_insertrJrKr3rPrQs	         r�1test_insert_beautifulsoup_object_inserts_children�FTestTreeModification.test_insert_beautifulsoup_object_inserts_childrenQs����y�y�H�I��#���I�I�d�O�	����Q�	�*����r�y�y� � � ��r�y�y� � � ��!�!�A�!�!�]�3�3�3�3�"��d�m�m�,����!�R�Y�Y�.�.�.��r�y�y� � � ��r�y�y� � � � �B�I�I�-�-�-rc��URS5nURnURSS5 URup4UR	S5 UR	S5 SUR
R:Xdeg)Nz<p><a>one</a><b>three</b></p>r�twor��three)rr1rr&r.rr)rrr1�left�rights     r�3test_replace_with_maintains_next_element_throughout�HTestTreeModification.test_replace_with_maintains_next_element_throughoutfsi���y�y�8�9���F�F��	����E���j�j������"��
���2���$�&�&�-�-�'�'�'rc�6�URS5nURSS9RS5 URSS9nURnURU:XdeUR
U:XdeURRU:XdeURbeg)Nz<b>Argh!</b>�Argh!r�Hooray!)rrr.rr�r@rv)rr�new_textrs    r�test_replace_final_node�,TestTreeModification.test_replace_final_nodets����y�y��(���	�	��	�!�.�.�y�9��9�9�I�9�.���F�F���(�(�A�-�-�-����!�#�#�#��(�(�5�5��A�A�A��$�$�,�,�,rc���URS5nURRSS5 UR5UR	S5:XdeURSS9nURS:XdeURRU:XdeURS:XdeURRU:XdeURbeURUR:Xdeg)Nz<a><b>Argh!</b><c></c></a>rrcz!<a><b>Argh!Hooray!</b><c></c></a>rrb)rrrr�r
rr�rvr�r�r�)rrrds   r�test_consecutive_text_nodes�0TestTreeModification.test_consecutive_text_nodes~s����y�y�5�6�����
�
�a��#��{�{�}�� 1� 1�2U� V�V�V�V��9�9�I�9�.���(�(�G�3�3�3��(�(�5�5��A�A�A��(�(�G�3�3�3��(�(�5�5��A�A�A��$�$�,�,�,��$�$����.�.�.rc�$�URS5nURRSS5 URRSS5 SS/URR:XdeURRSRS:Xdeg)NrjrrQrf)rr1rr&rvrs  r�test_insert_string�'TestTreeModification.test_insert_string�so���y�y��#�����
�
�a������
�
�a����u�~������0�0�0��v�v���q�!�.�.�%�7�7�7rc��URS5nURRS5nUS:XdeURR5S:Xdeg)Nz<b>1</b>rz	<b>12</b>)rrrmr�r|s   r�test_append� TestTreeModification.test_append�sF���y�y��$�������s�#����}��}��v�v�}�}��+�-�-�-rc��UR5nURSUS9n[X!S5nURSS5 URRSU5 UR5UR
S5:XdeURnURU:XdeURU:XdeURSS	9nURU:XdeURU:XdeURnURU:XdeURU:XdeURSS	9nURU:XdeURU:XdeURU:Xdeg)
Nz%<a><b>Find</b><c>lady!</c><d></d></a>r�magictagr�therz=<a><b>Find</b><magictag>the</magictag><c>lady!</c><d></d></a>�Findr)r%rr	rr1r�r
rr�r�rrvr�r�r@)rr(r�	magic_tag�b_tagr�c_tagrrs        r�test_insert_tag�$TestTreeModification.test_insert_tag�s_���&�&�(���y�y�@�'�y�R����z�2�	�����E�"����
�
�a��#��{�{�}�� 1� 1�K�!
�
�	
�
�
�����!�!�Y�.�.�.��)�)�U�2�2�2��z�z��z�(��� � �I�-�-�-��)�)�T�1�1�1������%�%��.�.�.��%�%��2�2�2��n�n�E�n�*���z�z�Y�&�&�&����5�(�(�(��%�%��,�,�,rc��SnURU5nURRSUR5 XR	5:Xdeg)Nz<a>b<c></c>d</a>r)rr1rr�r��rr�rs   r�%test_insert_into_the_current_location�:TestTreeModification.test_insert_into_the_current_location�s<��!���y�y�������
�
�a���� ��{�{�}�$�$�$rc��SnURU5nURRUR5 XR	5:Xdegr@)rr1rmrr�rzs   r�*test_append_child_thats_already_at_the_end�?TestTreeModification.test_append_child_thats_already_at_the_end�s:�����y�y�������
�
�d�f�f���{�{�}�$�$�$rc��SnURU5nURURURURUR
UR/nURRU5 SUR5:Xdeg)Nz1<a><b><c><d><e><f><g></g></f></e></d></c></b></a>z1<a><g></g><f></f><e></e><d></d><c></c><b></b></a>)
r�gr��err�rr1r%r��rr�r�elementss    r�#test_extend_with_a_list_of_elements�8TestTreeModification.test_extend_with_a_list_of_elements�sb��B���y�y�����F�F�D�F�F�D�F�F�D�F�F�D�F�F�D�F�F�C�����
�
�h��B�d�k�k�m�S�S�Src��SnURU5nSS[S5S/nURRU5 SUR	5:Xdeg)Nrjrr�rr�z<a>bcde</a>)rrr1r%r�r�s    r�"test_extend_with_a_list_of_strings�7TestTreeModification.test_extend_with_a_list_of_strings�sK�����y�y������o�c�2�C�8�����
�
�h������
�-�-�-r�get_tagsc��U$rHr@r�s r�<lambda>�TestTreeModification.<lambda>�s��crc��UR$rH)r&r�s rr�r��s��s�|�|rc���SnURU5nURSSS9nURSSS9nU"U5nURU5 SUR5:XdeSUR5:Xdeg)NzS<body><div id="d1"><a>1</a><a>2</a><a>3</a><a>4</a></div><div id="d2"></div></body>r5�d1r"�d2z<div id="d1"></div>z3<div id="d2"><a>1</a><a>2</a><a>3</a><a>4</a></div>)rrr%r�)rr�r�rr�r��tagss       r�&test_extend_with_another_tags_contents�;TestTreeModification.test_extend_with_another_tags_contents�st��d���y�y����
�Y�Y�u��Y�
&��
�Y�Y�u��Y�
&����|��
�	�	�$��$��	�	��3�3�3�D��	�	��S�S�Srzstring_source,resultc�.�URR$rH)r1r�rs rr�r��s��$�&�&�-�-rz<a></a><b>1</b>c��g)N�abcder@r�s rr�r��s��'rz<a>1</a><b>abcde</b>c�|�SnURU5n[R"SS9nU"U5nURR	U5 UR
R
5U:XdeUunUR[:Xde[UR5nUS:XdeSSS5 g!,(df   g=f)Nz<div><a>1</a><b></b></div>TrkzIA single non-Tag item was passed into Tag.extend. Use Tag.append instead.)rrnrorr%r5�decode_contentsrprqr$rr)	r�
string_sourcer}r�rrtrrurvs	         r�)test_extend_with_a_single_non_tag_element�>TestTreeModification.test_extend_with_a_single_non_tag_element�s���,���y�y����
�
$�
$�D�
1�Q�"�4�(�F��F�F�M�M�&�!��8�8�+�+�-��7�7�7��I�W��#�#�x�/�/�/��g�o�o�&�C��^�_�
�_�2�
1�
1�s�A;B-�-
B;c��SnURU5nURRSUR5 SUR	5:Xdeg)Nz<a><b></b><c></c><d></d></a>rz<a><d></d><b></b><c></c></a>)rr1rrr�rzs   r�$test_move_tag_to_beginning_of_parent�9TestTreeModification.test_move_tag_to_beginning_of_parent�s>��-���y�y�������
�
�a���� �-�����>�>�>rc��URS5nURRSS5 [UR5S:Xdeg)Nz<br/>r�Contentsz<br>Contents</br>)r�brrr$rs  r�&test_insert_works_on_empty_element_tag�;TestTreeModification.test_insert_works_on_empty_element_tag�s;��
�y�y��!�������q�*�%��4�7�7�|�2�2�2�2rc�2�URS5nURRS5 URRS5 UR	5URS5:XdeURRUR5 UR	5URS5:XdeURn[R"[5 URU5 SSS5 UR5 [R"[5 URS5 SSS5 URS5nURRURS55 g!,(df   N�=f!,(df   N[=f)	Nr)�BAZ�QUUXzQUUX<a>foo</a>BAZ<b>bar</b>�QUUX<b>bar</b><a>foo</a>BAZ�nope�<a>r1)rrr#r1r�r
r0r1r2r9r"�rrrs   r�test_insert_before�'TestTreeModification.test_insert_befores���y�y�/�0�������U�#������V�$��{�{�}�� 1� 1�2O� P�P�P�P������T�V�V�$��{�{�}�� 1� 1�2O� P�P�P�P�
�F�F��
�]�]�:�
&�
�O�O�A��'�	
�	�	��
�]�]�:�
&�
�O�O�F�#�'��y�y���������T�\�\�#�.�/�'�
&��
'�
&���E7�!F�7
F�
Fc�z�URS5nURRSSS5 URRSSS5 UR	5URS5:XdeURRURS5 UR	5URS5:Xdeg)Nr)r�� r�z$QUUX BAZ<a>foo</a>BAZ QUUX<b>bar</b>�FOOz'QUUX BAZ<b>bar</b>FOO<a>foo</a>BAZ QUUX)rrr#r1r�r
rs  r�test_insert_multiple_before�0TestTreeModification.test_insert_multiple_before s����y�y�/�0�������U�C��0������V�S�%�0��{�{�}�� 1� 1�2�!
�
�	
�
�	
�����T�V�V�U�+��{�{�}�� 1� 1�5�!
�
�	
�
rc�2�URS5nURRS5 URRS5 UR	5URS5:XdeURRUR5 UR	5URS5:XdeURn[R"[5 URU5 SSS5 UR5 [R"[5 URS5 SSS5 URS5nURRURS55 g!,(df   N�=f!,(df   N[=f)	Nr)r�r�z<a>foo</a>QUUX<b>bar</b>BAZr�r�r�r1)rrr$r1r�r
r0r1r2r9r#r"r�s   r�test_insert_after�&TestTreeModification.test_insert_after-s���y�y�/�0�������E�"������F�#��{�{�}�� 1� 1�2O� P�P�P�P������D�F�F�#��{�{�}�� 1� 1�2O� P�P�P�P�
�F�F��
�]�]�:�
&�
�N�N�1��'�	
�	�	��
�]�]�:�
&�
�N�N�6�"�'��y�y���������T�\�\�#�.�/�'�
&��
'�
&�r�c�z�URS5nURRSSS5 URRSSS5 UR	5URS5:XdeURRURS5 UR	5URS5:Xdeg)Nr)r�r�r�z$<a>foo</a>QUUX BAZ<b>bar</b>BAZ QUUXzFOO z(QUUX BAZ<b>bar</b><a>foo</a>FOO BAZ QUUX)rrr$r1r�r
rs  r�test_insert_multiple_after�/TestTreeModification.test_insert_multiple_afterEs����y�y�/�0�������E�3��/������F�C��/��{�{�}�� 1� 1�2�!
�
�	
�
�	
�����D�F�F�F�+��{�{�}�� 1� 1�6�!
�
�	
�
rc��URS5nURS5nURS5n[R"[
5 UR
U5 SSS5 [R"[5 UR
U5 SSS5 [R"[
5 UR
U5 SSS5 g!,(df   Nw=f!,(df   NT=f!,(df   g=f�Nr�r1)rr"�
new_stringr0r1r2r$�NotImplementedError�rrr�rs    r�:test_insert_after_raises_exception_if_after_has_no_meaning�OTestTreeModification.test_insert_after_raises_exception_if_after_has_no_meaningQs����y�y��}���l�l�3�������$��
�]�]�:�
&�����$�'�
�]�]�.�
/����c�"�0�
�]�]�:�
&����S�!�'�
&�	'�
&��
/�
/��
&�
&��$�C�C"�6C3�
C�"
C0�3
Dc��URS5nURS5nURS5n[R"[
5 UR
U5 SSS5 [R"[5 UR
U5 SSS5 [R"[
5 UR
U5 SSS5 g!,(df   Nw=f!,(df   NT=f!,(df   g=fr�)rr"r�r0r1r2r#r�r�s    r�Ftest_insert_before_raises_notimplementederror_if_before_has_no_meaning�[TestTreeModification.test_insert_before_raises_notimplementederror_if_before_has_no_meaning\s����y�y��}���l�l�3�������$��
�]�]�:�
&�� � ��%�'�
�]�]�.�
/����s�#�0�
�]�]�:�
&����c�"�'�
&�	'�
&��
/�
/��
&�
&�r�c�V�URS5nURS5up#URU5 UR5UR	S5:XdeUR
beUR
UR:XdeURS:XdeURS:Xdeg)Nz;<p>There's <b>no</b> business like <b>show</b> business</p>rz0<p>There's  business like <b>no</b> business</p>�noz	 business)	rr-r.r�r
r@r6rvr�)rrr��shows    r�test_replace_with�&TestTreeModification.test_replace_withgs����y�y�V�W���=�=��%������"���{�{�}�� 1� 1�>�!
�
�	
�
��{�{�"�"�"��y�y�D�F�F�"�"�"����$�&�&�&����+�-�-�-rc��[SS9n[R"[5 UR	S5 SSS5 URS5Rn[R"[5 URR	U5 SSS5 [R"[5 URR	SUS5 SSS5 g!,(df   N�=f!,(df   N`=f!,(df   g=f)Nr1r�z
won't workrA�string1�string2)r	r0r1r2r.rr1r)r�a_tags  r�test_replace_with_errors�-TestTreeModification.test_replace_with_errorsts�����
��
�]�]�:�
&����|�,�'��	�	�*�+�-�-��
�]�]�:�
&��G�G� � ��'�'��]�]�:�
&��G�G� � ��E�9�=�'�
&�'�
&��
'�
&��'�
&�s#�C�3C)�1C:�
C&�)
C7�:
Dc���SnURU5nURS5nSUlURS5nURS5nSnURR	X4Xe5 UR5S:XdeURRU:XdeURRU:XdeURRU:XdeURRU:Xdeg)Nr4rz
Text In D Tagr�r�zRandom Textz;<a><b></b><d>Text In D Tag</d><e></e>Random Text<f></f></a>)rr"rr�r.r�rrv)rr�r�d_tag�e_tag�f_tag�a_strings       r�test_replace_with_multiple�/TestTreeModification.test_replace_with_multiple�s���&���y�y�������S�!��&������S�!�����S�!�� �������E�(�:��K�K�M�L�
M�	
�
M��v�v�"�"�e�+�+�+��|�|�(�(�E�1�1�1��!�!�(�(�H�4�4�4��!�!�.�.�%�7�7�7rc��SnURU5nURRUR5 SUR	5:Xdeg)Nr4z<a><c></c></a>)rrr.r�r�rzs   r�test_replace_first_child�-TestTreeModification.test_replace_first_child��>��&���y�y���������D�F�F�#��4�;�;�=�0�0�0rc��SnURU5nURRUR5 SUR	5:Xdeg)Nr4rA)rr�r.rr�rzs   r�test_replace_last_child�,TestTreeModification.test_replace_last_child�r�rc��URS5nURnURnURU5 UR	5URS5:XdeURbeURSS9RbeURbeURbeURbeURUR:XdeURS:XdeURRUR:XdeURbeURSS9nURnURU:XdeURU:XdeURU:XdeURU:Xdeg)NzQ<a>We<b>reserve<c>the</c><d>right</d></b></a><e>to<f>refuse</f><g>service</g></e>z-<a>We<f>refuse</f></a><e>to<g>service</g></e>r^r�We�to)rrr�r.r�r
r@rrvr�r�r�r1r�r�)rr�
remove_tag�move_tag�to_text�g_tags      r�test_nested_tag_replace_with�1TestTreeModification.test_nested_tag_replace_with�s����y�y�c�
���V�V�
��6�6������)��{�{�}�� 1� 1�;�!
�
�	
�
�
� � �(�(�(����g��.�;�;�C�C�C��*�*�2�2�2��&�&�.�.�.��*�*�2�2�2����$�&�&�(�(�(��(�(�D�0�0�0��$�$�1�1�T�V�V�;�;�;��$�$�,�,�,��)�)�4�)�(�������#�#�u�,�,�,��#�#�u�,�,�,��%�%��0�0�0��%�%��0�0�0rc��URS5nURR5 URbeURRS:Xdeg)NzI
            <p>Unneeded <em>formatting</em> is unneeded</p>
            zUnneeded formatting is unneeded)r�emr5r6r%r�s  r�test_unwrap� TestTreeModification.test_unwrap�sJ���y�y����	
�������w�w�����v�v�{�{�?�?�?�?rc���URS5nURRURS55nUR	5S:XdeUR	5URS5:Xdeg)NzI wish I was bold.r�<b>I wish I was bold.</b>)rr�wrapr"r�r
)rrr�s   r�	test_wrap�TestTreeModification.test_wrap�sc���y�y�-�.����� � ����c�!2�3���|�|�~�!<�<�<�<��{�{�}�� 1� 1�2M� N�N�N�Nrc���URS5nURRRUR5 UR	5URS5:Xdeg)Nz<b></b>I wish I was bold.r�)rrr�r�r�r
rs  r�%test_wrap_extracts_tag_from_elsewhere�:TestTreeModification.test_wrap_extracts_tag_from_elsewhere�sM���y�y�4�5������� � ����(��{�{�}�� 1� 1�2M� N�N�N�Nrc��URS5nURRRUR5 S[	URR
5:XdeUR
5URS5:Xdeg)Nz+<b>I like being bold.</b>I wish I was bold.r*z+<b>I like being bold.I wish I was bold.</b>)rrr�r�r,r&r�r
rs  r�&test_wrap_puts_new_contents_at_the_end�;TestTreeModification.test_wrap_puts_new_contents_at_the_end�sp���y�y�F�G������� � ����(��C������(�(�(�(��{�{�}�� 1� 1�9�!
�
�	
�
rc��URS5n[URR5S:XdeUR	SS9R5nUR
5S:XdeUR
5S:Xde[URR5S:XdeURbeURbeURRbeUR	SS	9nUR	S
S	9nURU:XdeURU:XdeURU:XdeURU:Xdeg)NzR<html><body>Some content. <div id="nav">Nav crap</div> More content.</body></html>rY�navr"z6<html><body>Some content.  More content.</body></html>z<div id="nav">Nav crap</div>r*zSome content. rz More content.)rr,rKr&rr9r�r@r�rvr�r�)rr�	extracted�	content_1�	content_2s     r�test_extract�!TestTreeModification.test_extract�sG���y�y�`�
���4�9�9�%�%�&�!�+�+�+��I�I��I�'�/�/�1�	��{�{�}� X�X�X�X����!�%C�C�C�C��4�9�9�%�%�&�!�+�+�+����'�'�'��)�)�1�1�1��%�%�2�2�:�:�:��I�I�%5�I�6�	��I�I�%5�I�6�	��%�%��2�2�2��%�%��2�2�2��)�)�Y�6�6�6��)�)�Y�6�6�6rc��URS5nURRnURS5nURS5nURR	U5 UR
R	U5 UR
5 UR
5 X1RR:XdeXAR
R:Xdeg)Nr)rfrQ)rr1rr�rmrr9)rr�foo_1�foo_2�bar_2s     r�4test_extract_distinguishes_between_identical_strings�ITestTreeModification.test_extract_distinguishes_between_identical_strings�s����y�y�/�0�����
�
������&������&�����
�
�e�����
�
�e��
	�
�
��
�
�
�����
�
�%�%�%����
�
�%�%�%rc���URS5nURS5Vs/sHo!RR5PM  nS[	UR
5:Xdegs snf)Nzv
<html>
<head>
<script>foo</script>
</head>
<body>
 <script>bar</script>
 <a></a>
</body>
<script>baz</script>
</html>�scriptz<body>

<a></a>
</body>)rr-rr9r$rK)rrr3s   r�"test_extract_multiples_of_same_tag�7TestTreeModification.test_extract_multiples_of_same_tag
s[���y�y�
�
��)-�
�
�h�(?�@�(?�1���	�	�	�(?�@�+�s�4�9�9�~�=�=�=��	As�#A&c��URS5nURS5R5 SURS5Ldeg)Nz<html>
<body>hi</body>
</html>rK)rrr9rs  r�Btest_extract_works_when_element_is_surrounded_by_identical_strings�WTestTreeModification.test_extract_works_when_element_is_surrounded_by_identical_stringss=���y�y�A�B���	�	�&��!�!�#��t�y�y��(�(�(�(rc�N�URS5nURnURR5 [	URR
5S:Xde[
US5(deURnURSS9 S[	UR
5:Xdeg)zTag.clear()z4<p><a>String <em>Italicized</em></a> and another</p>rr&T)�	decomposeN)rr1r6�clearr,r&r{r�)rrr1r�s    r�
test_clear�TestTreeModification.test_clears����y�y�O�P���F�F���������4�6�6�?�?�#�q�(�(�(��q�*�%�%�%�%��T�T��	���$����C����$�$�$�$rzmethod_name,expected_result))rU�9<div><em>child1</em><p id="start"></p><p>child3</p></div>)r�zH<div><em>child1</em><p id="start"><a>Second <em>child</em></a></p></div>)r�r)rOr)r�r�)r�zF<div><p id="start"><a>Second <em>child</em></a></p><p>child3</p></div>)r_r�c��URS5n[URU5nUHnUR5 M X#R	5:Xdeg)NzU<div><em>child1</em><p id='start'><a>Second <em>child</em></a></p><p>child3</p></div>)r�getattrr6r9r�)r�method_name�expected_resultr�iteratorr3s      r�test_extract_during_iteration�2TestTreeModification.test_extract_during_iteration,sL��:�y�y�c�
���4�6�6�;�/���A�
�I�I�K���+�+�-�/�/�/rc�B�URS5nURS5up#URnURRnX#XE4HnSUR
LaMe UR
5 X$U4HnSUR
LaMe SUR
Ldeg)Nz;<p><a>String <em>Italicized</em></a></p><p>Another para</p>r6FT)rr-r1r�r�
decomposedr)rrrPrJr1r%r3s       r�test_decompose�#TestTreeModification.test_decomposeQs����y�y�V�W�����s�#����D�D���u�u�|�|���!�"�A��A�L�L�(�(�(�#�	�������A��1�<�<�'�'�'����
�
�%�%�%rc��URS5nURnURRnSURLdeUR5 SURLdeSUR
5:Xdeg)Nz'<div><p>String 1</p><p>String 2</p></p>FTz!<div><p></p><p>String 2</p></div>)rr5r6rrrr�)rrr5r%s    r�test_decompose_string�*TestTreeModification.test_decompose_stringasi���y�y�B�C���h�h���u�u�|�|������'�'�'������t���&�&�&�2�c�j�j�l�B�B�Brc���URS5nSURlURRS/:XdeSURlURRS/:Xdeg)zTag.string = 'string'z<a></a> <b><c></c></b>rfrQN)rr1rr&rrs  r�test_string_set�$TestTreeModification.test_string_setjsW���y�y�1�2������
��v�v���5�'�)�)�)�����
��v�v���5�'�)�)�)rc��URS5nURRURlURR5S:Xdeg)Nz<a><b>foo</b><c>bar</c>s<a><b>bar</b><c>bar</c></a>)rr�rrr1r�rs  r�/test_string_set_does_not_affect_original_string�DTestTreeModification.test_string_set_does_not_affect_original_stringrs=���y�y�2�3�����
�
����
��v�v�}�}��"@�@�@�@rc��URS5n[S5nX!Rl[	URR[5(deg)Nrjrf)rrr1rrV)rr�cdatas   r�)test_set_string_preserves_class_of_string�>TestTreeModification.test_set_string_preserves_class_of_stringws=���y�y��#���e������
��$�&�&�-�-��/�/�/�/rr@N)=rArBrCrDrrrr+r1r6r:r=rCrFrRrXr_rerhrkrnrwr{r~r�r�r0�mark�parametrizer�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrrr r#r'rFr@rrrr�s���G�
�
�"-�&��#�8�(�%�
.�.�*(�-�/�&8�.�-�:%�%�T�.��[�[���Z�/�;S�)T�U�T�V�T��[�[����
'�):�;�
!�#9�:�	
��
��
�?�3�0�2
�0�0

�	"�	#�.�
>�8�$1�1�#1�J@�O�O�

�7�2&� 
>�)�
%��[�[���%�	
��2
0�3�2
0�&� C�*�A�
0rr)rr-rSrOr�r�r�r�r:rMr9rLc�X�\rSrSr\R
R
S\5S5rSr	g)�TestDeprecatedArgumentsi�rc�*�URS5n[URU5n[R"SS9nU"SS9 UunUR
[:Xde[UR5nUS:XdeSSS5 g!,(df   g=f)N�<a>some</a><b>markup</b>Trkr�)r%zOThe 'text' argument to find()-type methods is deprecated. Use 'string' instead.)	rrrrnrorprqr$rr�rrr�methodrtrurvs       r�test_find_type_method_string�4TestDeprecatedArguments.test_find_type_method_string�s����y�y�3�4�������-��
�
$�
$�D�
1�Q���!��I�W��#�#�x�/�/�/��g�o�o�&�C��d�e�
�e�
2�
1�
1�s�>B�
Br@N)
rArBrCrDr0r)r*�all_find_type_methodsr1rFr@rrr,r,�s'���[�[���]�,A�B��C�rr,c�X�\rSrSr\R
R
S\5S5rSr	g)�TestWarningsi�rc�l�URS5n[URU5n[R"SS9nU"SS9 UunUR
[:Xde[UR[5(de[UR5nSU;deSSS5 g!,(df   g=f)Nr.Trk�u)�_classzN'_class' is an unusual attribute name and is a common misspelling for 'class_')rrrrnrorprqrVrrrr$r/s       r�test_suspicious_syntax_warning�+TestWarnings.test_suspicious_syntax_warning�s����y�y�3�4�������-��
�
$�
$�D�
1�Q��#���I�W��#�#�x�/�/�/��g�o�o�/P�Q�Q�Q�Q��g�o�o�&�C�`���
��2�
1�
1�s�AB%�%
B3r@N)
rArBrCrDr0r)r*r3r9rFr@rrr5r5�s'���[�[���]�,A�B��C�rr5)$rEr0rTrn�bs4r�bs4.builderr�bs4.elementrrrrr	�
bs4.filterr
r�rrrHr�r�r�rr,r8rirnr�r�r�r�rr3r,r5r@rr�<module>r?s ����	���(���$��
%@�x�%@�PC)�(�C)�L@��@�M ��M �`k7�X�k7�\).��).�X���(<?�8�<?�~
�H�
�)'��)'�X$h�]�$h�N&�(�&�(,B�k�,B�^.F�+�.F�b]
0�8�]
0�@
�� 
�h�
� �8�r

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 66.1 KB 0644
test_builder.cpython-313.pyc File 1.59 KB 0644
test_builder_registry.cpython-313.pyc File 7.62 KB 0644
test_css.cpython-313.pyc File 28.35 KB 0644
test_dammit.cpython-313.pyc File 19.46 KB 0644
test_element.cpython-313.pyc File 6.04 KB 0644
test_filter.cpython-313.pyc File 30.98 KB 0644
test_formatter.cpython-313.pyc File 7.59 KB 0644
test_fuzz.cpython-313.pyc File 6.91 KB 0644
test_html5lib.cpython-313.pyc File 11.63 KB 0644
test_htmlparser.cpython-313.pyc File 7.14 KB 0644
test_lxml.cpython-313.pyc File 8.05 KB 0644
test_navigablestring.cpython-313.pyc File 7.7 KB 0644
test_pageelement.cpython-313.pyc File 22.48 KB 0644
test_soup.cpython-313.pyc File 31.39 KB 0644
test_tag.cpython-313.pyc File 13.9 KB 0644
test_tree.cpython-313.pyc File 91.45 KB 0644
Filemanager