§
    ©öÉg7Ö  ã                   óR  — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZ ddlmZ ddlm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 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'¢Z! G d(„ d)e¦  «        Z" G d*„ d+e¦  «        Z#dS ),a8  Tests 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                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚTestFindz&Basic tests of the find() method.
    c                 óp   — |                       d¦  «        }|                     d¦  «        j        dk    sJ ‚d S )Nz <a>1</a><b>2</b><a>3</a><b>4</b>ÚbÚ2)ÚsoupÚfindÚstring©Úselfr   s     ú_/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/bs4/tests/test_tree.pyÚtest_find_tagzTestFind.test_find_tag"   s8   € Ø�yŠyÐ;Ñ<Ô<ˆØ�yŠy˜‰~Œ~Ô$¨Ò+Ð+Ð+Ð+Ð+Ð+ó    c                 óh   — |                       d¦  «        }|                     d¬¦  «        dk    sJ ‚d S )Nu   <h1>RÃ¤ksmÃ¶rgÃ¥s</h1>õ   RÃ¤ksmÃ¶rgÃ¥s©r   )r   r   r   s     r   Útest_unicode_text_findzTestFind.test_unicode_text_find&   s9   € Ø�yŠyÐ1Ñ2Ô2ˆØ�yŠy ˆyÑ0Ô0°OÒCÐCÐCÐCÐCÐCr   c                 ó�   — |                       d¦  «        }t          |¦  «         d|                     d¬¦  «        j        k    sJ ‚d S )Nu&   <h1 id="RÃ¤ksmÃ¶rgÃ¥s">here it is</h1>z
here it isr   ©Úid)r   Ústrr   Útextr   s     r   Útest_unicode_attribute_findz$TestFind.test_unicode_attribute_find*   sG   € Ø�yŠyÐAÑBÔBˆÝˆD‰	Œ	ˆ	Ø˜tŸyšy¨O˜yÑ<Ô<ÔAÒAÐAÐAÐAÐAÐAr   c                 ó~   — |                       d¦  «        }dt          |                     ¦   «         ¦  «        k    sJ ‚dS )z)Test an optimization that finds all tags.ú<a>foo</a><b>bar</b>é   N©r   ÚlenÚfind_allr   s     r   Útest_find_everythingzTestFind.test_find_everything/   s;   € à�yŠyÐ/Ñ0Ô0ˆØ•C˜Ÿš™œÑ(Ô(Ò(Ð(Ð(Ð(Ð(Ð(r   c                 ó€   — |                       d¦  «        }dt          |                     d¦  «        ¦  «        k    sJ ‚dS )z;Test an optimization that finds all tags with a given name.z<a>foo</a><b>bar</b><a>baz</a>r&   ÚaNr'   r   s     r   Útest_find_everything_with_namez'TestFind.test_find_everything_with_name4   s?   € à�yŠyÐ9Ñ:Ô:ˆØ•C˜Ÿš cÑ*Ô*Ñ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   c                 ó6  — |                       d¦  «        }d|                     ¦   «         j        k    sJ ‚d|                     d¦  «                             ¦   «         j        k    sJ ‚d|                     d¦  «                             ¦   «         j        k    sJ ‚d S )Nz<div></div><p></p>ÚdivÚp©r   r   ÚnameÚfind_previous_siblingÚfind_next_siblingr   s     r   Útest_find_with_no_argumentsz$TestFind.test_find_with_no_arguments9   sŒ   € Ø�yŠyÐ-Ñ.Ô.ˆØ˜Ÿ	š	™œÔ(Ò(Ð(Ð(Ð(Ø˜Ÿ	š	 #™œ×<Ò<Ñ>Ô>ÔCÒCÐCÐCÐCØ�d—i’i Ñ&Ô&×8Ò8Ñ:Ô:Ô?Ò?Ð?Ð?Ð?Ð?Ð?r   c                 ó6  — |                       d¦  «        }d|                     ¦   «         j        k    sJ ‚d|                     d¦  «                             ¦   «         j        k    sJ ‚d|                     d¦  «                             ¦   «         j        k    sJ ‚d S )Nz"text<div>text</div>text<p>text</p>r/   r0   r1   r   s     r   Ú+test_find_with_no_arguments_only_finds_tagsz4TestFind.test_find_with_no_arguments_only_finds_tags?   sŒ   € Ø�yŠyÐ=Ñ>Ô>ˆØ˜Ÿ	š	™œÔ(Ò(Ð(Ð(Ð(Ø˜Ÿ	š	 #™œ×<Ò<Ñ>Ô>ÔCÒCÐCÐCÐCØ�d—i’i Ñ&Ô&×8Ò8Ñ:Ô:Ô?Ò?Ð?Ð?Ð?Ð?Ð?r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r*   r-   r5   r7   © r   r   r   r      s•   € € € € € ðð ð,ð ,ð ,ðDð Dð DðBð Bð Bð
)ð )ð )ð
,ð ,ð ,ð
@ð @ð @ð@ð @ð @ð @ð @r   r   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestFindAllz%Basic tests of the find_all() method.c                 óp  — |                       d¦  «        }dt          |j                             ¦   «         ¦  «        k    sJ ‚dt          |                     d¦  «                             ¦   «         ¦  «        k    sJ ‚dt          |                     d¦  «                             ¦   «         ¦  «        k    sJ ‚d S )Nz/<body>text<div>text</div>text<p>text</p></body>r&   r   r0   r/   )r   r(   Úbodyr)   r   Úfind_previous_siblingsÚfind_next_siblingsr   s     r   Ú/test_find_all_with_no_arguments_only_finds_tagsz;TestFindAll.test_find_all_with_no_arguments_only_finds_tagsI   s¡   € Ø�yŠyÐJÑKÔKˆØ•C˜œ	×*Ò*Ñ,Ô,Ñ-Ô-Ò-Ð-Ð-Ð-Ø•C˜Ÿ	š	 #™œ×=Ò=Ñ?Ô?Ñ@Ô@Ò@Ð@Ð@Ð@Ø•C˜Ÿ	š	 %Ñ(Ô(×;Ò;Ñ=Ô=Ñ>Ô>Ò>Ð>Ð>Ð>Ð>Ð>r   c                 óF  — |                       d¦  «        }|                     d¬¦  «        dgk    sJ ‚|                     ddg¬¦  «        ddgk    sJ ‚|                     t          j        d¦  «        ¬¦  «        g d¢k    sJ ‚|                     d¬¦  «        g d¢k    sJ ‚dS )	z'You can search the tree for text nodes.u   <html>Foo<b>bar</b>Â»</html>Úbarr   ÚFooz.*)rF   rE   õ   Â»TN)r   r)   ÚreÚcompiler   s     r   Útest_find_all_text_nodesz$TestFindAll.test_find_all_text_nodesO   sº   € à�yŠyÐ9Ñ:Ô:ˆà�}Š} Eˆ}Ñ*Ô*¨u¨gÒ5Ð5Ð5Ð5ð �}Š} U¨E Nˆ}Ñ3Ô3¸¸u°~ÒEÐEÐEÐEà�}Š}¥B¤J¨tÑ$4Ô$4ˆ}Ñ5Ô5Ð9OÐ9OÐ9OÒOÐOÐOÐOà�}Š} Dˆ}Ñ)Ô)Ð-CÐ-CÐ-CÒCÐCÐCÐCÐCÐCr   c                 ó–  — |                       d¦  «        }|                      |                     dd¬¦  «        g d¢¦  «         |                      |                     dd¬¦  «        dg¦  «         |                      |                     dd¬¦  «        g d	¢¦  «         |                      |                     dd
¬¦  «        g d	¢¦  «         dS )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>r,   é   ©Úlimit)Ú1r   Ú3r   rO   é
   )rO   r   rP   Ú4Ú5r   N©r   Úassert_selectsr)   r   s     r   Útest_find_all_limitzTestFindAll.test_find_all_limit\   sÈ   € à�yŠyÐCÑDÔDˆØ×Ò˜DŸMšM¨#°Q˜MÑ7Ô7¸¸¸ÑIÔIÐIØ×Ò˜DŸMšM¨#°Q˜MÑ7Ô7¸#¸Ñ?Ô?Ð?Ø×Ò˜DŸMšM¨#°R˜MÑ8Ô8Ð:SÐ:SÐ:SÑTÔTÐTð 	×Ò˜DŸMšM¨#°Q˜MÑ7Ô7Ð9RÐ9RÐ9RÑSÔSÐSÐSÐSr   c                 óÊ   — |                       d¦  «        }|                       |dd¬¦  «        dg¦  «         |                      |                     d¬¦  «        dg¦  «         d S )	Nz!<a>1</a><b>2<a id='foo'>3</a></b>r,   r   rM   rO   Úfoor   rP   )r   rU   r   r   s     r   Ú%test_calling_a_tag_is_calling_findallz1TestFindAll.test_calling_a_tag_is_calling_findallf   sg   € Ø�yŠyÐ<Ñ=Ô=ˆØ×Ò˜D˜D ¨AÐ.Ñ.Ô.°°Ñ6Ô6Ð6Ø×Ò˜DŸFšF e˜FÑ,Ô,¨s¨eÑ4Ô4Ð4Ð4Ð4r   c                 óV  — |                       d¦  «        }g }|                     |¦  «         t          j        d¬¦  «        5 }g |                     |¦  «        k    sJ ‚|\  }|j        t          k    sJ ‚t          |j        ¦  «        }|dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú<a></a>T©ÚrecordzLIgnoring nested list [[...]] to avoid the possibility of infinite recursion.)	r   ÚappendÚwarningsÚcatch_warningsr)   ÚfilenameÚ__file__r!   Úmessage)r   r   ÚselfrefÚwÚwarningÚmsgs         r   ÚTtest_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursionz`TestFindAll.test_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursionk   s  € ð �yŠy˜Ñ#Ô#ˆàˆØ�Š�wÑÔÐõ Ô$¨DÐ1Ñ1Ô1ð 	°QØ˜Ÿš wÑ/Ô/Ò/Ð/Ð/Ð/Ø‰IˆWØÔ#¥xÒ/Ð/Ð/Ð/Ý�g”oÑ&Ô&ˆCàØaòbð bð bð bð bð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁABÂB"Â%B"c                 ó  — |                       d¦  «        }|                     d¦  «        }t          |d¦  «        sJ ‚|                     d¦  «        }t          |d¦  «        sJ ‚|                     d¬¦  «        }t          |d¦  «        sJ ‚dS )z%All find_all calls return a ResultSetr[   r,   ÚsourceTrX   r   N)r   r)   Úhasattr©r   r   Úresults      r   Útest_find_all_resultsetz#TestFindAll.test_find_all_resultset   s�   € à�yŠy˜Ñ#Ô#ˆØ—’˜sÑ#Ô#ˆÝ�v˜xÑ(Ô(Ð(Ð(Ð(à—’˜tÑ$Ô$ˆÝ�v˜xÑ(Ô(Ð(Ð(Ð(à—’ e�Ñ,Ô,ˆÝ�v˜xÑ(Ô(Ð(Ð(Ð(Ð(Ð(r   N)
r8   r9   r:   r;   rC   rJ   rV   rY   rh   rn   r<   r   r   r>   r>   F   sz   € € € € € Ø/Ð/ð?ð ?ð ?ðDð Dð DðTð Tð Tð5ð 5ð 5ð
ð ð ð(
)ð 
)ð 
)ð 
)ð 
)r   r>   c                   ó   — e Zd Zd„ ZdS )ÚTestFindAllBasicNamespacesc                 ó¶   — |                       d¦  «        }d|                     d¦  «        j        k    sJ ‚d|                     ddi¬¦  «        j        k    sJ ‚d S )Nz0<mathml:msqrt>4</mathml:msqrt><a svg:fill="red">rR   zmathml:msqrtr,   zsvg:fillÚred©Úattrs)r   r   r   r2   r   s     r   Útest_find_by_namespaced_namez7TestFindAllBasicNamespaces.test_find_by_namespaced_name�   sa   € Ø�yŠyÐKÑLÔLˆØ�d—i’i Ñ/Ô/Ô6Ò6Ð6Ð6Ð6Ø�d—i’i z°5Ð&9�iÑ:Ô:Ô?Ò?Ð?Ð?Ð?Ð?Ð?r   N)r8   r9   r:   ru   r<   r   r   rp   rp   Œ   s(   € € € € € ð@ð @ð @ð @ð @r   rp   c                   óV   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ ZdS )ÚTestFindAllByNamez&Test ways of finding tags by tag name.ÚreturnNc                 ó:   — |                       d¦  «        | _        d S )Nz�<a>First tag.</a>
                                  <b>Second tag.</b>
                                  <c>Third <a>Nested tag.</a> tag.</c>©r   Útree©r   s    r   Úsetup_methodzTestFindAllByName.setup_method–   s#   € Ø—I’Ið Jñ Kô KˆŒ	ˆ	ˆ	r   c                 óf   — |                       | j                             d¦  «        ddg¦  «         d S ©Nr,   ú
First tag.úNested tag.©rU   r{   r)   r|   s    r   Útest_find_all_by_tag_namez+TestFindAllByName.test_find_all_by_tag_name›   s3   € à×Ò˜DœI×.Ò.¨sÑ3Ô3°lÀMÐ5RÑSÔSÐSÐSÐSr   c                 óT  — |                       | j                             dd¬¦  «        dg¦  «         |                       | j                             dd¬¦  «        ddg¦  «         |                       | j                             dt          j        d¦  «        ¬¦  «        ddg¦  «         d S )Nr,   r€   r   Tr�   Útag©rU   r{   r)   rH   rI   r|   s    r   Útest_find_all_by_name_and_textz0TestFindAllByName.test_find_all_by_name_and_textŸ   s½   € Ø×ÒØŒI×Ò˜s¨<ÐÑ8Ô8¸<¸.ñ	
ô 	
ð 	
ð 	×ÒØŒI×Ò˜s¨4ÐÑ0Ô0°<ÀÐ2Oñ	
ô 	
ð 	
ð 	×ÒØŒI×Ò˜s­2¬:°eÑ+<Ô+<ÐÑ=Ô=Ø˜=Ð)ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ón   — |                       | j        j                             d¦  «        dg¦  «         d S )Nr,   r�   )rU   r{   Úcr)   r|   s    r   Ú!test_find_all_on_non_root_elementz3TestFindAllByName.test_find_all_on_non_root_element­   s2   € à×Ò˜DœIœK×0Ò0°Ñ5Ô5¸°ÑGÔGÐGÐGÐGr   c                 ó\   — |                       |                      d¦  «        ddg¦  «         d S r   )rU   r{   r|   s    r   Ú%test_calling_element_invokes_find_allz7TestFindAllByName.test_calling_element_invokes_find_all±   s-   € Ø×Ò˜DŸIšI c™NœN¨\¸=Ð,IÑJÔJÐJÐJÐJr   c                 ó€   — |                       | j                             t          d¦  «        ¦  «        ddg¦  «         d S r   )rU   r{   r)   r
   r|   s    r   Útest_find_all_by_tag_strainerz/TestFindAllByName.test_find_all_by_tag_strainer´   sF   € Ø×ÒØŒI×Ò�|¨CÑ0Ô0Ñ1Ô1°LÀ-Ð3Pñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ój   — |                       | j                             ddg¦  «        g d¢¦  «         d S )Nr,   r   ©r€   zSecond tag.r�   r‚   r|   s    r   Útest_find_all_by_tag_namesz,TestFindAllByName.test_find_all_by_tag_names¹   sD   € Ø×ÒØŒI×Ò  S˜zÑ*Ô*Ð,XÐ,XÐ,Xñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ól   — |                       | j                             dddœ¦  «        g d¢¦  «         d S )NT)r,   r   r�   r‚   r|   s    r   Útest_find_all_by_tag_dictz+TestFindAllByName.test_find_all_by_tag_dict¾   sH   € Ø×ÒØŒI×Ò T°Ð5Ð5Ñ6Ô6Ø8Ð8Ð8ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óŠ   — |                       | j                             t          j        d¦  «        ¦  «        g d¢¦  «         d S )Nz^[ab]$r�   r†   r|   s    r   Útest_find_all_by_tag_rez)TestFindAllByName.test_find_all_by_tag_reÄ   sJ   € Ø×ÒØŒI×Ò�rœz¨(Ñ3Ô3Ñ4Ô4Ø8Ð8Ð8ñ	
ô 	
ð 	
ð 	
ð 	
r   c                 óŒ   — d„ }|                       d¦  «        }|                      |                     |¦  «        ddg¦  «         d S )Nc                 ó>   — | j         |                      d¦  «        k    S ©Nr    )r2   Úget©r…   s    r   Úid_matches_namezRTestFindAllByName.test_find_all_with_tags_matching_method.<locals>.id_matches_nameÍ   s   € Ø”8˜sŸwšw t™}œ}Ò,Ð,r   zƒ<a id="a">Match 1.</a>
                            <a id="1">Does not match.</a>
                            <b id="b">Match 2.</a>zMatch 1.zMatch 2.rT   )r   r›   r{   s      r   Ú'test_find_all_with_tags_matching_methodz9TestFindAllByName.test_find_all_with_tags_matching_methodÊ   sZ   € ð	-ð 	-ð 	-ð �yŠyð 6ñ 7ô 7ˆð 	×Ò˜DŸMšM¨/Ñ:Ô:¸ZÈÐ<TÑUÔUÐUÐUÐUr   c                 óJ  — |                       d¦  «        }|                     dd¦  «        }|                     dt          j        d¦  «        ¦  «        }|                     dddg¦  «        \  }}d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚d S )NzH<div class='a b'>1</div><div class='a c'>2</div><div class='a d'>3</div>r/   za dza brP   rO   )r   r   rH   rI   r)   r   )r   r   Úr1Úr2Úr3Úr4s         r   Ú%test_find_with_multi_valued_attributez7TestFindAllByName.test_find_with_multi_valued_attributeÖ   s·   € Ø�yŠyØVñ
ô 
ˆð �YŠY�u˜eÑ$Ô$ˆØ�YŠY�u�bœj¨Ñ0Ô0Ñ1Ô1ˆØ—’˜u u¨e nÑ5Ô5‰ˆˆBØ�b”iÒÐÐÐØ�b”iÒÐÐÐØ�b”iÒÐÐÐØ�b”iÒÐÐÐÐÐr   ©rx   N)r8   r9   r:   r;   r}   rƒ   r‡   rŠ   rŒ   rŽ   r‘   r“   r•   rœ   r¢   r<   r   r   rw   rw   “   sÔ   € € € € € Ø0Ð0ðKð Kð Kð Kð
Tð Tð Tð
ð 
ð 
ðHð Hð HðKð Kð Kð
ð 
ð 
ð

ð 
ð 
ð

ð 
ð 
ð
ð 
ð 
ð
Vð 
Vð 
Vð
 ð 
 ð 
 ð 
 ð 
 r   rw   c                   ón   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestFindAllByAttributec                 óˆ   — |                       d¦  «        }|                      |                     d¬¦  «        ddg¦  «         d S )NzÅ
                         <a id="first">Matching a.</a>
                         <a id="second">
                          Non-matching <b id="first">Matching b.</b>a.
                         </a>Úfirstr   zMatching a.zMatching b.rT   ©r   r{   s     r   Útest_find_all_by_attribute_namez6TestFindAllByAttribute.test_find_all_by_attribute_nameä   sM   € ð �yŠyð !ñ "ô "ˆð
 	×Ò˜DŸMšM¨W˜MÑ5Ô5¸À}Ð7UÑVÔVÐVÐVÐVr   c                 ó‚  — d                      d¦  «        }d                      d¦  «        }|                      |¦  «        }|j        g|                     |¬¦  «        k    sJ ‚|j        g|                     |                     d¦  «        ¬¦  «        k    sJ ‚|j        gs J |                     |dg¬¦  «        ¦   «         ‚d S )Nu   ×�×•×œ×©Úutf8u   <a title="×�×•×œ×©"></a>)Útitlezsomething else)Úencoder   r,   r)   Údecode)r   ÚpeaceÚdatar   s       r   Ú%test_find_all_by_utf8_attribute_valuez<TestFindAllByAttribute.test_find_all_by_utf8_attribute_valueî   s»   € Ø×!Ò! &Ñ)Ô)ˆØ)×0Ò0°Ñ8Ô8ˆØ�yŠy˜‰ŒˆØ”ˆx˜4Ÿ=š=¨u˜=Ñ5Ô5Ò5Ð5Ð5Ð5Ø”ˆx˜4Ÿ=š=¨u¯|ª|¸FÑ/CÔ/C˜=ÑDÔDÒDÐDÐDÐDØ”ˆxÐGÐG˜Ÿš¨eÐ5EÐ-F˜ÑGÔGÑGÔGÐGÐGÐGr   c                 ó:  — |                       d¦  «        }|                      |                     d¬¦  «        dg¦  «         |                      |                     ddi¬¦  «        dg¦  «         |                      |                     dd	i¬¦  «        d
g¦  «         d S )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©r2   zA tag called 'name1'.r2   rs   zName match.ÚclassÚclass2zClass match.rT   r¨   s     r   Útest_find_all_by_attribute_dictz6TestFindAllByAttribute.test_find_all_by_attribute_dictö   s£   € ð �yŠyð ñ ô ˆð 	×Ò˜DŸMšM¨w˜MÑ7Ô7Ð:QÐ9RÑSÔSÐSà×Ò˜DŸMšM°¸Ð0A˜MÑBÔBÀ]ÀOÑTÔTÐTà×Ò˜DŸMšM°¸(Ð0C˜MÑDÔDÀ~ÐFVÑWÔWÐWÐWÐWr   c                 ó’  — |                       d¦  «        }|                      |                     dd¬¦  «        dg¦  «         |                      |                     dd¬¦  «        dg¦  «         |                      |                     dd	¬¦  «        dg¦  «         |                      |                     dd¦  «        dg¦  «         |                      |                     d¬
¦  «        ddg¦  «         |                      |                     dd¦  «        dg¦  «         |                      |                     dd	¦  «        dg¦  «         d S )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>
                         r,   rO   ©Úclass_zClass 1.r‰   rP   zClass 3 and 4.rR   rs   rT   r¨   s     r   Útest_find_all_by_classz-TestFindAllByAttribute.test_find_all_by_class  s?  € Ø�yŠyð ñ ô ˆð 	×Ò˜DŸMšM¨#°c˜MÑ:Ô:¸Z¸LÑIÔIÐIØ×Ò˜DŸMšM¨#°c˜MÑ:Ô:Ð=MÐ<NÑOÔOÐOØ×Ò˜DŸMšM¨#°c˜MÑ:Ô:Ð=MÐ<NÑOÔOÐOð 	×Ò˜DŸMšM¨#¨sÑ3Ô3°j°\ÑBÔBÐBØ×Ò˜DŸMšM°˜MÑ4Ô4°zÀ:Ð6NÑOÔOÐOØ×Ò˜DŸMšM¨#¨sÑ3Ô3Ð6FÐ5GÑHÔHÐHØ×Ò˜DŸMšM¨#¨sÑ3Ô3Ð6FÐ5GÑHÔHÐHÐHÐHr   c                 ó°  — |                       d¦  «        }|                     dt          j        d¦  «        ¬¦  «        }|                      |dg¦  «         |                     dt          j        d¦  «        ¬¦  «        }|                      |dg¦  «         |                     dt          j        d¦  «        ¬¦  «        }|                      |dg¦  «         d S )Nz#<gar class='foo bar'>Found it</gar>ÚgarÚor¹   úFound itr,   zo b)r   r)   rH   rI   rU   )r   r{   Úfs      r   Ú0test_find_by_class_when_multiple_classes_presentzGTestFindAllByAttribute.test_find_by_class_when_multiple_classes_present  s½   € Ø�yŠyÐ>Ñ?Ô?ˆà�MŠM˜%­¬
°3©¬ˆMÑ8Ô8ˆØ×Ò˜A 
˜|Ñ,Ô,Ð,à�MŠM˜%­¬
°3©¬ˆMÑ8Ô8ˆØ×Ò˜A 
˜|Ñ,Ô,Ð,ð �MŠM˜%­¬
°5Ñ(9Ô(9ˆMÑ:Ô:ˆØ×Ò˜A 
˜|Ñ,Ô,Ð,Ð,Ð,r   c                 ó`  — |                       d¦  «        }|                      |                     dt          j        d¦  «        ¦  «        dg¦  «         d„ }|                      |                     d|¦  «        g ¦  «         d„ }|                      |                     d|¦  «        dg¦  «         d S )Nz<a class='bar'>Found it</a>r,   Úbar¿   c                 ó(   — t          | ¦  «        dk    S ©NrL   ©r(   ©Úvalues    r   Úbig_attribute_valueznTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.big_attribute_value/  s   € Ý�u‘:”: ’>Ð!r   c                 ó(   — t          | ¦  «        dk    S rÅ   rÆ   rÇ   s    r   Úsmall_attribute_valuezpTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.small_attribute_value4  s   € Ý�u‘:”: ’?Ð"r   ©r   rU   r)   rH   rI   )r   r   rÉ   rË   s       r   Ú:test_find_all_with_non_dictionary_for_attrs_finds_by_classzQTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class*  s¸   € Ø�yŠyÐ6Ñ7Ô7ˆà×Ò˜DŸMšM¨#­r¬z¸$Ñ/?Ô/?Ñ@Ô@À:À,ÑOÔOÐOð	"ð 	"ð 	"ð 	×Ò˜DŸMšM¨#Ð/BÑCÔCÀRÑHÔHÐHð	#ð 	#ð 	#ð 	×Ò˜DŸMšM¨#Ð/DÑEÔEÈ
À|ÑTÔTÐTÐTÐTr   c                 ó”  — |                       d¦  «        }|                     d¦  «        \  }}||gsJ |                     dd¦  «        ¦   «         ‚|gsJ |                     dd¦  «        ¦   «         ‚|g|                     dd¬¦  «        k    sJ ‚|g|                     dd¦  «        k    sJ ‚g |                     dd¦  «        k    sJ ‚d S )Nz*<a class="foo bar"></a><a class="foo"></a>r,   rX   rE   zfoo barr¹   zbar foo©r   r)   )r   r   r,   Úa2s       r   Ú:test_find_all_with_string_for_attrs_finds_multiple_classeszQTestFindAllByAttribute.test_find_all_with_string_for_attrs_finds_multiple_classes9  sÞ   € Ø�yŠyÐEÑFÔFˆØ—’˜cÑ"Ô"‰ˆˆ2Ø�2ˆwÐ1Ð1˜Ÿš c¨5Ñ1Ô1Ñ1Ô1Ð1ØˆsÐ-Ð-�D—M’M # uÑ-Ô-Ñ-Ô-Ð-ð ˆs�d—m’m C°	�mÑ:Ô:Ò:Ð:Ð:Ð:Øˆs�d—m’m C¨Ñ3Ô3Ò3Ð3Ð3Ð3Ø�T—]’] 3¨	Ñ2Ô2Ò2Ð2Ð2Ð2Ð2Ð2r   c                 ó¨   — |                       d¦  «        }t          ddi¬¦  «        }|                      |                     |¦  «        dg¦  «         d S )Nzi
                         <a id="first">Match.</a>
                         <a id="second">Non-match.</a>r    r§   rs   zMatch.)r   r
   rU   r)   )r   r{   Ústrainers      r   Ú'test_find_all_by_attribute_soupstrainerz>TestFindAllByAttribute.test_find_all_by_attribute_soupstrainerE  sZ   € Ø�yŠyð :ñ ;ô ;ˆõ   t¨W oÐ6Ñ6Ô6ˆØ×Ò˜DŸMšM¨(Ñ3Ô3°h°ZÑ@Ô@Ð@Ð@Ð@r   c                 óˆ   — |                       d¦  «        }|                      |                     dd ¬¦  «        dg¦  «         d S )Nú�<a id="1">ID present.</a>
                            <a>No ID present.</a>
                            <a id="">ID is empty.</a>r,   r   zNo ID present.rT   r¨   s     r   Ú$test_find_all_with_missing_attributez;TestFindAllByAttribute.test_find_all_with_missing_attributeM  sN   € ð �yŠyð 9ñ :ô :ˆð 	×Ò˜DŸMšM¨#°$˜MÑ7Ô7Ð:JÐ9KÑLÔLÐLÐLÐLr   c                 óˆ   — |                       d¦  «        }|                      |                     d¬¦  «        ddg¦  «         d S )NrÖ   Tr   zID present.zID is empty.rT   r¨   s     r   Ú$test_find_all_with_defined_attributez;TestFindAllByAttribute.test_find_all_with_defined_attributeU  sM   € ð �yŠyð 9ñ :ô :ˆð 	×Ò˜DŸMšM¨T˜MÑ2Ô2°]ÀNÐ4SÑTÔTÐTÐTÐTr   c                 óà   — |                       d¦  «        }ddg}|                      |                     d¬¦  «        |¦  «         |                      |                     d¬¦  «        |¦  «         d S )Nz[<a id=1>Unquoted attribute.</a>
                            <a id="1">Quoted attribute.</a>zUnquoted attribute.zQuoted attribute.r   r   rO   rT   )r   r{   Úexpecteds      r   Ú$test_find_all_with_numeric_attributez;TestFindAllByAttribute.test_find_all_with_numeric_attribute]  sw   € à�yŠyð ?ñ @ô @ˆð *Ð+>Ð?ˆØ×Ò˜DŸMšM¨Q˜MÑ/Ô/°Ñ:Ô:Ð:Ø×Ò˜DŸMšM¨S˜MÑ1Ô1°8Ñ<Ô<Ð<Ð<Ð<r   c                 óà   — |                       d¦  «        }|                      |                     g d¢¬¦  «        ddg¦  «         |                      |                     g ¬¦  «        g ¦  «         d S )Nz‘<a id="1">1</a>
                            <a id="2">2</a>
                            <a id="3">3</a>
                            <a>No ID.</a>)rO   rP   rR   r   rO   rP   rT   r¨   s     r   Ú(test_find_all_with_list_attribute_valuesz?TestFindAllByAttribute.test_find_all_with_list_attribute_valuesf  sv   € ð �yŠyð -ñ .ô .ˆð 	×Ò˜DŸMšM¨_¨_¨_˜MÑ=Ô=ÀÀS¸zÑJÔJÐJð 	×Ò˜DŸMšM¨R˜MÑ0Ô0°"Ñ5Ô5Ð5Ð5Ð5r   c                 ó¬   — |                       d¦  «        }|                      |                     t          j        d¦  «        ¬¦  «        ddg¦  «         d S )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   zOne a.zTwo as.rÌ   r¨   s     r   Ú5test_find_all_with_regular_expression_attribute_valuezLTestFindAllByAttribute.test_find_all_with_regular_expression_attribute_valuer  sW   € ð �yŠyð -ñ .ô .ˆð 	×Ò˜DŸMšM­R¬Z¸Ñ-?Ô-?˜MÑ@Ô@À8ÈYÐBWÑXÔXÐXÐXÐXr   c                 ó´   — |                       d¦  «        }|j        }|g|                     dd¬¦  «        k    sJ ‚g |                     dd¬¦  «        k    sJ ‚d S )Nz<b>foo</b><b>bar</b><a>foo</a>r,   rX   r   rE   ©r   r,   r)   ©r   r   r,   s      r   Ú'test_find_by_name_and_containing_stringz>TestFindAllByAttribute.test_find_by_name_and_containing_string~  se   € Ø�yŠyÐ9Ñ:Ô:ˆØŒFˆàˆs�d—m’m C°�mÑ6Ô6Ò6Ð6Ð6Ð6Ø�T—]’] 3¨u�]Ñ5Ô5Ò5Ð5Ð5Ð5Ð5Ð5r   c                 ó�   — |                       d¦  «        }|                     d¦  «        |                     dd¬¦  «        k    sJ ‚d S )Nz"<a>foo</a><a><b><c>foo</c></b></a>r,   rX   r   rÏ   r   s     r   Ú=test_find_by_name_and_containing_string_when_string_is_buriedzTTestFindAllByAttribute.test_find_by_name_and_containing_string_when_string_is_buried…  sG   € Ø�yŠyÐ=Ñ>Ô>ˆØ�}Š}˜SÑ!Ô! T§]¢]°3¸u ]Ñ%EÔ%EÒEÐEÐEÐEÐEÐEr   c                 ó´   — |                       d¦  «        }|j        }|g|                     dd¬¦  «        k    sJ ‚g |                     dd¬¦  «        k    sJ ‚d S )Nz"<b id="1">foo</b><a id="2">foo</a>r&   rX   )r    r   r   rE   râ   rã   s      r   Ú,test_find_by_attribute_and_containing_stringzCTestFindAllByAttribute.test_find_by_attribute_and_containing_string‰  se   € Ø�yŠyÐ=Ñ>Ô>ˆØŒFˆàˆs�d—m’m q°�mÑ7Ô7Ò7Ð7Ð7Ð7Ø�T—]’] a°�]Ñ6Ô6Ò6Ð6Ð6Ð6Ð6Ð6r   N)r8   r9   r:   r©   r±   r·   r»   rÁ   rÍ   rÑ   rÔ   r×   rÙ   rÜ   rÞ   rà   rä   ræ   rè   r<   r   r   r¥   r¥   ã   s"  € € € € € ðWð Wð WðHð Hð HðXð Xð Xð$Ið Ið Ið(-ð -ð -ðUð Uð Uð
3ð 
3ð 
3ðAð Að AðMð Mð MðUð Uð Uð=ð =ð =ð
6ð 
6ð 
6ð
Yð 
Yð 
Yð6ð 6ð 6ðFð Fð Fð7ð 7ð 7ð 7ð 7r   r¥   c                   ó   — e Zd ZdZd„ ZdS )Ú
TestSmoothzTest Tag.smooth.c                 óR  — |                       d¦  «        }|j        }|                     d¦  «         |                     d¦  «         |                     t          d¦  «        ¦  «         |                     t          d¦  «        ¦  «         |                     d¦  «         |                      ¦   «         }t          ||d¦  «        }|                     d¦  «         |                     d	¦  «         |                     |¦  «         d |j        j        u sJ ‚d
t          |j	        ¦  «        k    sJ ‚| 
                    ¦   «          dt          |j	        ¦  «        k    sJ ‚d|j	        d         k    sJ ‚d|j        j        k    sJ ‚d|j	        d         k    sJ ‚d|j	        d         k    sJ ‚d S )Nz<div>a</div>r   r‰   z	Comment 1z	Comment 2ÚdÚspanrO   r   é   é   Úabcr   Ú12r   r&   )r   r/   r^   r   Údefault_builderr	   rí   r   r(   ÚcontentsÚsmooth)r   r   r/   Úbuilderrí   s        r   Útest_smoothzTestSmooth.test_smooth”  s“  € Ø�yŠy˜Ñ(Ô(ˆØŒhˆØ�
Š
�3‰ŒˆØ�
Š
�3‰ŒˆØ�
Š
•7˜;Ñ'Ô'Ñ(Ô(Ð(Ø�
Š
•7˜;Ñ'Ô'Ñ(Ô(Ð(Ø�
Š
�3‰ŒˆØ×&Ò&Ñ(Ô(ˆÝ�4˜ &Ñ)Ô)ˆØ�Š�CÑÔÐØ�Š�CÑÔÐØ�
Š
�4ÑÔÐð �s”x”Ð&Ð&Ð&Ð&à•C˜œÑ%Ô%Ò%Ð%Ð%Ð%Ø�
Š
‰ŒˆØ•C˜œÑ%Ô%Ò%Ð%Ð%Ð%ð
 ˜œ QœÒ'Ð'Ð'Ð'ð �s”x”Ò&Ð&Ð&Ð&ð
 ˜cœl¨1œoÒ-Ð-Ð-Ð-Ø˜cœl¨1œoÒ-Ð-Ð-Ð-Ð-Ð-r   N)r8   r9   r:   r;   rö   r<   r   r   rê   rê   ‘  s)   € € € € € ØÐð&.ð &.ð &.ð &.ð &.r   rê   c                   ó   — e Zd ZdZd„ ZdS )Ú	TestIndexzTest Tag.indexc                 ó6  — |                       d¦  «        }|j        }t          |j        ¦  «        D ] \  }}||                     |¦  «        k    sJ ‚Œ!t          j        t          ¦  «        5  |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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   )r   r/   Ú	enumerateró   ÚindexÚpytestÚraisesÚ
ValueError)r   r{   r/   ÚiÚelements        r   Ú
test_indexzTestIndex.test_indexÀ  sã   € Ø�yŠyð &ñ 'ô 'ˆð ŒhˆÝ# C¤LÑ1Ô1ð 	+ð 	+‰JˆAˆwØ˜Ÿ	š	 'Ñ*Ô*Ò*Ð*Ð*Ð*Ð*ÝŒ]�:Ñ&Ô&ð 	ð 	Ø�JŠJ�q‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á+BÂBÂBN)r8   r9   r:   r;   r  r<   r   r   rø   rø   ½  s)   € € € € € ØÐðð ð ð ð r   rø   c                   óP   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ ZdS )ÚTestParentOperationsz;Test navigation and searching through an element's parents.rx   Nc                 ó\   — |                       d¦  «        | _        | j        j        | _        d S )Na<  <ul id="empty"></ul>
                                 <ul id="top">
                                  <ul id="middle">
                                   <ul id="bottom">
                                    <b id="start">Start here</b>
                                   </ul>
                                  </ul>)r   r{   r   Ústartr|   s    r   r}   z!TestParentOperations.setup_methodÔ  s-   € Ø—I’Ið +ñ ,ô ,ˆŒ	ð ”Y”[ˆŒ
ˆ
ˆ
r   c                 ó´   — | j         j        d         dk    sJ ‚| j         j        j        d         dk    sJ ‚| j         j        j        j        d         dk    sJ ‚d S )Nr    ÚbottomÚmiddleÚtop)r  Úparentr|   s    r   Útest_parentz TestParentOperations.test_parentÞ  sb   € ØŒzÔ  Ô&¨(Ò2Ð2Ð2Ð2ØŒzÔ Ô'¨Ô-°Ò9Ð9Ð9Ð9ØŒzÔ Ô'Ô.¨tÔ4¸Ò=Ð=Ð=Ð=Ð=Ð=r   c                 óN   — | j         j        d         }|j        | j         k    sJ ‚d S )Nr   )r{   ró   r
  )r   Útop_tags     r   Ú%test_parent_of_top_tag_is_soup_objectz:TestParentOperations.test_parent_of_top_tag_is_soup_objectã  s,   € Ø”)Ô$ QÔ'ˆØŒ~ ¤Ò*Ð*Ð*Ð*Ð*Ð*r   c                 ó&   — d | j         j        u sJ ‚d S ©N)r{   r
  r|   s    r   Útest_soup_object_has_no_parentz3TestParentOperations.test_soup_object_has_no_parentç  s   € Ø�t”yÔ'Ð'Ð'Ð'Ð'Ð'Ð'r   c                 ó
  — |                       | j                             d¦  «        g d¢¦  «         |                       | j                             dd¬¦  «        dg¦  «         | j                             d¬¦  «        g k    sJ ‚d S )NÚul©r  r  r	  r  r   r  )Úassert_selects_idsr  Úfind_parentsr|   s    r   Útest_find_parentsz&TestParentOperations.test_find_parentsê  s�   € Ø×ÒØŒJ×#Ò# DÑ)Ô)Ð+FÐ+FÐ+Fñ	
ô 	
ð 	
ð 	×Ò ¤
× 7Ò 7¸ÀÐ 7Ñ JÔ JÈXÈJÑWÔWÐWØŒz×&Ò&¨'Ð&Ñ2Ô2°bÒ8Ð8Ð8Ð8Ð8Ð8r   c                 ó�   — | j                              dd¬¦  «        d         dk    sJ ‚| j                              d¬¦  «        �J ‚d S )Nr  r	  r   r    r  )r  Úfind_parentr|   s    r   Útest_find_parentz%TestParentOperations.test_find_parentñ  sR   € àŒz×%Ò% d¨uÐ%Ñ5Ô5°dÔ;¸uÒDÐDÐDÐDàŒz×%Ò%¨Ð%Ñ1Ô1Ð9Ð9Ð9Ð9Ð9r   c                 ó`   — | j                              d¬¦  «        }|j        j        dk    sJ ‚d S )Nú
Start herer   r   )r{   r   r
  r2   ©r   r"   s     r   Útest_parent_of_text_elementz0TestParentOperations.test_parent_of_text_element÷  s3   € ØŒy�~Š~ \ˆ~Ñ2Ô2ˆØŒ{Ô 3Ò&Ð&Ð&Ð&Ð&Ð&r   c                 ó~   — | j                              d¬¦  «        }|                     d¦  «        d         dk    sJ ‚d S )Nr  r   r  r    r  )r{   r   r  r  s     r   Útest_text_element_find_parentz2TestParentOperations.test_text_element_find_parentû  sA   € ØŒy�~Š~ \ˆ~Ñ2Ô2ˆØ×Ò Ñ%Ô% dÔ+¨xÒ7Ð7Ð7Ð7Ð7Ð7r   c                 óF   — d„ | j         j        D ¦   «         }|g d¢k    sJ ‚d S )Nc                 ó4   — g | ]}|®d|j         v ¯|d         ‘ŒS r˜   rs   ©Ú.0r
  s     r   ú
<listcomp>z>TestParentOperations.test_parent_generator.<locals>.<listcomp>   ó8   € ð 
ð 
ð 
àØÐ! d¨f¬lÐ&:Ð&:ð �4ŒLà&:Ð&:Ð&:r   r  )r  Úparents)r   r'  s     r   Útest_parent_generatorz*TestParentOperations.test_parent_generatorÿ  sE   € ð
ð 
àœ*Ô,ð
ñ 
ô 
ˆð
 Ð5Ð5Ð5Ò5Ð5Ð5Ð5Ð5Ð5r   c                 óF   — d„ | j         j        D ¦   «         }|g d¢k    sJ ‚d S )Nc                 ó4   — g | ]}|®d|j         v ¯|d         ‘ŒS r˜   rs   r#  s     r   r%  zGTestParentOperations.test_self_and_parent_generator.<locals>.<listcomp>  r&  r   )r  r  r  r	  )r  Úself_and_parents)r   Úresultss     r   Útest_self_and_parent_generatorz3TestParentOperations.test_self_and_parent_generator  sE   € ð
ð 
àœ*Ô5ð
ñ 
ô 
ˆð
 Ð>Ð>Ð>Ò>Ð>Ð>Ð>Ð>Ð>r   r£   )r8   r9   r:   r;   r}   r  r  r  r  r  r  r   r(  r-  r<   r   r   r  r  Ñ  sµ   € € € € € ØEÐEð!ð !ð !ð !ð>ð >ð >ð
+ð +ð +ð(ð (ð (ð9ð 9ð 9ð:ð :ð :ð'ð 'ð 'ð8ð 8ð 8ð6ð 6ð 6ð?ð ?ð ?ð ?ð ?r   r  c                   ó   — e Zd Zdd„ZdS )ÚProximityTestrx   Nc                 ó:   — |                       d¦  «        | _        d S )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>rz   r|   s    r   r}   zProximityTest.setup_method  s!   € Ø—I’Ið Pñ
ô 
ˆŒ	ˆ	ˆ	r   r£   ©r8   r9   r:   r}   r<   r   r   r/  r/    s(   € € € € € ð
ð 
ð 
ð 
ð 
ð 
r   r/  c                   óJ   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
ˆ xZS )ÚTestNextOperationsrx   Nc                 óx   •— t          t          | ¦  «                             ¦   «          | j        j        | _        d S r  )Úsuperr3  r}   r{   r   r  ©r   Ú	__class__s    €r   r}   zTestNextOperations.setup_method  s/   ø€ ÝÕ  $Ñ'Ô'×4Ò4Ñ6Ô6Ð6Ø”Y”[ˆŒ
ˆ
ˆ
r   c                 ód   — | j         j        dk    sJ ‚| j         j        j        d         dk    sJ ‚d S )NÚOner    r   )r  Únext_elementr|   s    r   Ú	test_nextzTestNextOperations.test_next  s<   € ØŒzÔ&¨%Ò/Ð/Ð/Ð/ØŒzÔ&Ô3°DÔ9¸SÒ@Ð@Ð@Ð@Ð@Ð@r   c                 óN   — | j                              d¬¦  «        }|j        �J ‚d S ©NÚThreer   )r{   r   r:  )r   Úlasts     r   Útest_next_of_last_item_is_nonez1TestNextOperations.test_next_of_last_item_is_none   s,   € ØŒy�~Š~ Wˆ~Ñ-Ô-ˆØÔ Ð(Ð(Ð(Ð(Ð(r   c                 ó"   — | j         j        �J ‚d S r  )r{   r:  r|   s    r   Útest_next_of_root_is_nonez,TestNextOperations.test_next_of_root_is_none$  s   € àŒyÔ%Ð-Ð-Ð-Ð-Ð-r   c                 óü   — |                       | j                             d¦  «        ddg¦  «         | j                             d¬¦  «         |                       | j                             d¬¦  «        dg¦  «         d S )Nr   ÚTwor>  rL   r   )rU   r  Úfind_all_nextr|   s    r   Útest_find_all_nextz%TestNextOperations.test_find_all_next(  sw   € Ø×Ò˜DœJ×4Ò4°SÑ9Ô9¸EÀ7Ð;KÑLÔLÐLØŒ
× Ò  AÐ Ñ&Ô&Ð&Ø×Ò˜DœJ×4Ò4¸Ð4Ñ:Ô:¸W¸IÑFÔFÐFÐFÐFr   c                 ó”   — | j                              d¦  «        d         dk    sJ ‚| j                              d¬¦  «        dk    sJ ‚d S )Nr   r    r   r>  r   )r  Ú	find_nextr|   s    r   Útest_find_nextz!TestNextOperations.test_find_next-  sR   € ØŒz×#Ò# CÑ(Ô(¨Ô.°#Ò5Ð5Ð5Ð5ØŒz×#Ò#¨7Ð#Ñ3Ô3°wÒ>Ð>Ð>Ð>Ð>Ð>r   c                 óÒ   — | j                              d¬¦  «        }|                     d¦  «        j        dk    sJ ‚|                      |                     d¦  «        ddg¦  «         d S )Nr9  r   r   rD  r>  )r{   r   rH  r   rU   rE  r  s     r   Útest_find_next_for_text_elementz2TestNextOperations.test_find_next_for_text_element1  sf   € ØŒy�~Š~ Uˆ~Ñ+Ô+ˆØ�~Š~˜cÑ"Ô"Ô)¨UÒ2Ð2Ð2Ð2Ø×Ò˜D×.Ò.¨sÑ3Ô3°e¸WÐ5EÑFÔFÐFÐFÐFr   c                 óò   — | j                              d¬¦  «        }d„ |j        D ¦   «         }|\  }}|d         dk    sJ ‚|dk    sJ ‚d„ |j        D ¦   «         }|dd …         |k    sJ ‚|d	         |k    sJ ‚d S )
NrD  r   c                 ó   — g | ]}|‘ŒS r<   r<   ©r$  Únodes     r   r%  z;TestNextOperations.test_next_generators.<locals>.<listcomp>8  s   € Ð;Ð;Ð;˜t�dÐ;Ð;Ð;r   r    rP   r>  c                 ó   — g | ]}|‘ŒS r<   r<   rN  s     r   r%  z;TestNextOperations.test_next_generators.<locals>.<listcomp>>  s   € ÐEÐEÐE �tÐEÐEÐEr   r   r   )r{   r   Únext_elementsÚself_and_next_elements)r   r  Ú
successorsr…   ró   Úsuccessors2s         r   Útest_next_generatorsz'TestNextOperations.test_next_generators6  s¦   € Ø”	—’ e�Ñ,Ô,ˆØ;Ð; uÔ':Ð;Ñ;Ô;ˆ
à"‰ˆˆXØ�4Œy˜CÒÐÐÐØ˜7Ò"Ð"Ð"Ð"àEÐE¨Ô(DÐEÑEÔEˆØ˜1˜2˜2Œ *Ò,Ð,Ð,Ð,Ø˜1Œ~ Ò&Ð&Ð&Ð&Ð&Ð&r   r£   )r8   r9   r:   r}   r;  r@  rB  rF  rI  rK  rU  Ú__classcell__©r7  s   @r   r3  r3    s¯   ø€ € € € € ð!ð !ð !ð !ð !ð !ðAð Að Að)ð )ð )ð.ð .ð .ðGð Gð Gð
?ð ?ð ?ðGð Gð Gð

'ð 
'ð 
'ð 
'ð 
'ð 
'ð 
'r   r3  c                   óJ   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
ˆ xZS )ÚTestPreviousOperationsrx   Nc                 ó–   •— t          t          | ¦  «                             ¦   «          | j                             d¬¦  «        | _        d S r=  )r5  rY  r}   r{   r   Úendr6  s    €r   r}   z#TestPreviousOperations.setup_methodD  s;   ø€ ÝÕ$ dÑ+Ô+×8Ò8Ñ:Ô:Ð:Ø”9—>’>¨�>Ñ1Ô1ˆŒˆˆr   c                 ód   — | j         j        d         dk    sJ ‚| j         j        j        dk    sJ ‚d S )Nr    rP   rD  )r[  Úprevious_elementr|   s    r   Útest_previousz$TestPreviousOperations.test_previousH  s<   € ØŒxÔ(¨Ô.°#Ò5Ð5Ð5Ð5ØŒxÔ(Ô9¸UÒBÐBÐBÐBÐBÐBr   c                 óL   — | j                              d¦  «        }|j        �J ‚d S )NÚhtml)r{   r   r]  )r   r§   s     r   Ú#test_previous_of_first_item_is_nonez:TestPreviousOperations.test_previous_of_first_item_is_noneL  s*   € Ø”	—’˜vÑ&Ô&ˆØÔ%Ð-Ð-Ð-Ð-Ð-r   c                 ó"   — | j         j        �J ‚d S r  )r{   r]  r|   s    r   Útest_previous_of_root_is_nonez4TestPreviousOperations.test_previous_of_root_is_noneP  s   € àŒyÔ)Ð1Ð1Ð1Ð1Ð1r   c                 óÆ   — |                       | j                             d¦  «        g d¢¦  «         |                       | j                             d¬¦  «        dg¦  «         d S )Nr   ©r>  rD  r9  r   r   r9  )rU   r[  Úfind_all_previousr|   s    r   Útest_find_all_previousz-TestPreviousOperations.test_find_all_previousT  sb   € ð 	×Ò˜DœH×6Ò6°sÑ;Ô;Ð=TÐ=TÐ=TÑUÔUÐUØ×Ò˜DœH×6Ò6¸!Ð6Ñ<Ô<¸u¸gÑFÔFÐFÐFÐFr   c                 ó”   — | j                              d¦  «        d         dk    sJ ‚| j                              d¬¦  «        dk    sJ ‚d S )Nr   r    rP   r9  r   )r[  Úfind_previousr|   s    r   Útest_find_previousz)TestPreviousOperations.test_find_previous[  sR   € ØŒx×%Ò% cÑ*Ô*¨4Ô0°CÒ7Ð7Ð7Ð7ØŒx×%Ò%¨UÐ%Ñ3Ô3°uÒ<Ð<Ð<Ð<Ð<Ð<r   c                 óÒ   — | j                              d¬¦  «        }|                     d¦  «        j        dk    sJ ‚|                      |                     d¦  «        g d¢¦  «         d S )Nr>  r   r   re  )r{   r   ri  r   rU   rf  r  s     r   Ú#test_find_previous_for_text_elementz:TestPreviousOperations.test_find_previous_for_text_element_  sj   € ØŒy�~Š~ Wˆ~Ñ-Ô-ˆØ×!Ò! #Ñ&Ô&Ô-°Ò8Ð8Ð8Ð8Ø×Ò˜D×2Ò2°3Ñ7Ô7Ð9PÐ9PÐ9PÑQÔQÐQÐQÐQr   c                 ó²   — | j                              dd¬¦  «        }|                      |j        g d¢¦  «         |                      |j        g d¢¦  «         d S )Nr   r9  r   )ÚbodytagÚheadtagr  )rO   rn  ro  r  )r{   r   r  Úprevious_elementsÚself_and_previous_elements)r   r  s     r   Útest_previous_generatorsz/TestPreviousOperations.test_previous_generatorsd  s_   € Ø”	—’˜s¨5�Ñ1Ô1ˆØ×Ò Ô 7Ð9XÐ9XÐ9XÑYÔYÐYØ×Ò Ô @ÐBfÐBfÐBfÑgÔgÐgÐgÐgr   r£   )r8   r9   r:   r}   r^  ra  rc  rg  rj  rl  rr  rV  rW  s   @r   rY  rY  C  s¶   ø€ € € € € ð2ð 2ð 2ð 2ð 2ð 2ðCð Cð Cð.ð .ð .ð2ð 2ð 2ðGð Gð Gð=ð =ð =ðRð Rð Rð
hð hð hð hð hð hð hr   rY  c                   ó   — e Zd Zdd„ZdS )ÚSiblingTestrx   Nc                 óŽ   — d}t          j        d¦  «                             d|¦  «        }|                      |¦  «        | _        d S )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*Ú )rH   rI   Úsubr   r{   )r   Úmarkups     r   r}   zSiblingTest.setup_methodk  sA   € ðˆõ ”˜HÑ%Ô%×)Ò)¨"¨fÑ5Ô5ˆØ—I’I˜fÑ%Ô%ˆŒ	ˆ	ˆ	r   r£   r1  r<   r   r   rt  rt  j  s(   € € € € € ð&ð &ð &ð &ð &ð &r   rt  c                   óJ   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
ˆ xZS )ÚTestNextSiblingrx   Nc                 ó–   •— t          t          | ¦  «                             ¦   «          | j                             d¬¦  «        | _        d S )NrO   r   )r5  rz  r}   r{   r   r  r6  s    €r   r}   zTestNextSibling.setup_method  s:   ø€ Ý�o˜tÑ$Ô$×1Ò1Ñ3Ô3Ð3Ø”Y—^’^ s�^Ñ+Ô+ˆŒ
ˆ
ˆ
r   c                 ó"   — | j         j        �J ‚d S r  )r{   Únext_siblingr|   s    r   Ú!test_next_sibling_of_root_is_nonez1TestNextSibling.test_next_sibling_of_root_is_noneƒ  s   € ØŒyÔ%Ð-Ð-Ð-Ð-Ð-r   c                 ó    — | j         j        d         dk    sJ ‚| j         j        j        d         dk    sJ ‚| j         j        d         dk    sJ ‚d S )Nr    r   rP   ú1.1)r  r}  r:  r|   s    r   Útest_next_siblingz!TestNextSibling.test_next_sibling†  s^   € ØŒzÔ& tÔ,°Ò3Ð3Ð3Ð3ØŒzÔ&Ô3°DÔ9¸SÒ@Ð@Ð@Ð@ð ŒzÔ& tÔ,°Ò5Ð5Ð5Ð5Ð5Ð5r   c                 ó¼   — | j         j        j        �J ‚| j                              d¬¦  «        }|j        �J ‚| j                              d¬¦  «        }|j        �J ‚d S )Nr€  r   rR   )r{   r`  r}  r   )r   Únested_spanÚ	last_spans      r   Útest_next_sibling_may_not_existz/TestNextSibling.test_next_sibling_may_not_exist�  sc   € ØŒyŒ~Ô*Ð2Ð2Ð2à”i—n’n¨�nÑ.Ô.ˆØÔ'Ð/Ð/Ð/à”I—N’N c�NÑ*Ô*ˆ	ØÔ%Ð-Ð-Ð-Ð-Ð-r   c                 óR   — | j                              d¦  «        d         dk    sJ ‚d S )Nrí   r    r   )r  r4   r|   s    r   Útest_find_next_siblingz&TestNextSibling.test_find_next_sibling–  s.   € ØŒz×+Ò+¨FÑ3Ô3°DÔ9¸SÒ@Ð@Ð@Ð@Ð@Ð@r   c                 óÆ   — |                       | j                             d¦  «        g d¢¦  «         |                       | j                             d¬¦  «        dg¦  «         d S )Nrí   ©r   rP   rR   rP   r   )r  r  rB   r|   s    r   Útest_next_siblingsz"TestNextSibling.test_next_siblings™  s]   € Ø×Ò ¤
× =Ò =¸fÑ EÔ EÀÀÀÑWÔWÐWà×Ò ¤
× =Ò =ÀÐ =Ñ EÔ EÈÀuÑMÔMÐMÐMÐMr   c                 óŽ   — |                       | j        j        g d¢¦  «         |                       | j        j        g d¢¦  «         d S )Nr‰  )rO   r   rP   rR   )r  r  Únext_siblingsÚself_and_next_siblingsr|   s    r   Útest_next_siblings_generatorsz-TestNextSibling.test_next_siblings_generatorsž  sI   € Ø×Ò ¤
Ô 8¸/¸/¸/ÑJÔJÐJØ×Ò ¤
Ô AÐCWÐCWÐCWÑXÔXÐXÐXÐXr   c                 ó`  — |                       d¦  «        }|                     d¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚|                      |                     d¦  «        dg¦  «         |                     d¬¦  «        dk    sJ ‚|                     d¬¦  «        �J ‚d S )NúFoo<b>bar</b>bazrF   r   r   ÚbazrE   Únonesuch)r   r   r}  r2   rU   rB   r4   ©r   r   r  s      r   Ú"test_next_sibling_for_text_elementz2TestNextSibling.test_next_sibling_for_text_element¢  sÀ   € Ø�yŠyÐ+Ñ,Ô,ˆØ—	’	 �	Ñ'Ô'ˆØÔ!Ô&¨#Ò-Ð-Ð-Ð-ØÔ!Ô.°%Ò7Ð7Ð7Ð7à×Ò˜E×4Ò4°SÑ9Ô9¸E¸7ÑCÔCÐCØ×&Ò&¨eÐ&Ñ4Ô4¸Ò=Ð=Ð=Ð=Ø×&Ò&¨jÐ&Ñ9Ô9ÐAÐAÐAÐAÐAr   r£   )r8   r9   r:   r}   r~  r�  r…  r‡  rŠ  rŽ  r”  rV  rW  s   @r   rz  rz  ~  s¶   ø€ € € € € ð,ð ,ð ,ð ,ð ,ð ,ð.ð .ð .ð6ð 6ð 6ð.ð .ð .ðAð Að AðNð Nð Nð
Yð Yð YðBð Bð Bð Bð Bð Bð Br   rz  c                   óJ   ‡ — e Zd Zdˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
ˆ xZS )ÚTestPreviousSiblingrx   Nc                 ó–   •— t          t          | ¦  «                             ¦   «          | j                             d¬¦  «        | _        d S )NrR   r   )r5  r–  r}   r{   r   r[  r6  s    €r   r}   z TestPreviousSibling.setup_method®  s;   ø€ ÝÕ! 4Ñ(Ô(×5Ò5Ñ7Ô7Ð7Ø”9—>’> S�>Ñ)Ô)ˆŒˆˆr   c                 ó"   — | j         j        �J ‚d S r  )r{   Úprevious_siblingr|   s    r   Ú%test_previous_sibling_of_root_is_nonez9TestPreviousSibling.test_previous_sibling_of_root_is_none²  s   € ØŒyÔ)Ð1Ð1Ð1Ð1Ð1r   c                 ó    — | j         j        d         dk    sJ ‚| j         j        j        d         dk    sJ ‚| j         j        d         dk    sJ ‚d S )Nr    rP   r   z3.1)r[  r™  r]  r|   s    r   Útest_previous_siblingz)TestPreviousSibling.test_previous_siblingµ  s^   € ØŒxÔ(¨Ô.°#Ò5Ð5Ð5Ð5ØŒxÔ(Ô9¸$Ô?À3ÒFÐFÐFÐFð ŒxÔ(¨Ô.°%Ò7Ð7Ð7Ð7Ð7Ð7r   c                 ó¼   — | j         j        j        �J ‚| j                              d¬¦  «        }|j        �J ‚| j                              d¬¦  «        }|j        �J ‚d S )Nr€  r   rO   )r{   r`  r™  r   )r   rƒ  Ú
first_spans      r   Ú#test_previous_sibling_may_not_existz7TestPreviousSibling.test_previous_sibling_may_not_exist¼  sc   € ØŒyŒ~Ô.Ð6Ð6Ð6à”i—n’n¨�nÑ.Ô.ˆØÔ+Ð3Ð3Ð3à”Y—^’^ s�^Ñ+Ô+ˆ
ØÔ*Ð2Ð2Ð2Ð2Ð2r   c                 óR   — | j                              d¦  «        d         dk    sJ ‚d S )Nrí   r    rP   )r[  r3   r|   s    r   Útest_find_previous_siblingz.TestPreviousSibling.test_find_previous_siblingÅ  s.   € ØŒx×-Ò-¨fÑ5Ô5°dÔ;¸sÒBÐBÐBÐBÐBÐBr   c                 óÆ   — |                       | j                             d¦  «        g d¢¦  «         |                       | j                             d¬¦  «        dg¦  «         d S )Nrí   ©rP   r   rO   rO   r   )r  r[  rA   r|   s    r   Útest_previous_siblingsz*TestPreviousSibling.test_previous_siblingsÈ  sf   € Ø×ÒØŒH×+Ò+¨FÑ3Ô3°_°_°_ñ	
ô 	
ð 	
ð 	×Ò ¤× ?Ò ?À3Ð ?Ñ GÔ GÈ#ÈÑOÔOÐOÐOÐOr   c                 óŽ   — |                       | j        j        g d¢¦  «         |                       | j        j        g d¢¦  «         d S )Nr£  )rR   rP   r   rO   )r  r[  Úprevious_siblingsÚself_and_previous_siblingsr|   s    r   Ú!test_previous_siblings_generatorsz5TestPreviousSibling.test_previous_siblings_generatorsÏ  sI   € Ø×Ò ¤Ô :¸O¸O¸OÑLÔLÐLØ×Ò ¤Ô CÐEYÐEYÐEYÑZÔZÐZÐZÐZr   c                 ó`  — |                       d¦  «        }|                     d¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚|                      |                     d¦  «        dg¦  «         |                     d¬¦  «        dk    sJ ‚|                     d¬¦  «        �J ‚d S )Nr�  r‘  r   r   rF   rE   r’  )r   r   r™  r2   rU   rA   r3   r“  s      r   Ú&test_previous_sibling_for_text_elementz:TestPreviousSibling.test_previous_sibling_for_text_elementÓ  sÀ   € Ø�yŠyÐ+Ñ,Ô,ˆØ—	’	 �	Ñ'Ô'ˆØÔ%Ô*¨cÒ1Ð1Ð1Ð1ØÔ%Ô6¸%Ò?Ð?Ð?Ð?à×Ò˜E×8Ò8¸Ñ=Ô=À¸wÑGÔGÐGØ×*Ò*°%Ð*Ñ8Ô8¸EÒAÐAÐAÐAØ×*Ò*°*Ð*Ñ=Ô=ÐEÐEÐEÐEÐEr   r£   )r8   r9   r:   r}   rš  rœ  rŸ  r¡  r¤  r¨  rª  rV  rW  s   @r   r–  r–  ­  s¶   ø€ € € € € ð*ð *ð *ð *ð *ð *ð2ð 2ð 2ð8ð 8ð 8ð3ð 3ð 3ðCð Cð CðPð Pð Pð[ð [ð [ðFð Fð Fð Fð Fð Fð Fr   r–  c                   ó.  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             dd„ d„ g¦  «        d„ ¦   «         Zej                             dd„ dgd„ dgf¦  «        d „ ¦   «         Zd!„ Zd"„ Zd#„ Z d$„ Z!d%„ Z"d&„ Z#d'„ Z$d(„ Z%d)„ Z&d*„ Z'd+„ Z(d,„ Z)d-„ Z*d.„ Z+d/„ Z,d0„ Z-d1„ Z.d2„ Z/d3„ Z0d4„ Z1d5„ Z2d6„ Z3d7„ Z4ej                             d8g d9¢¦  «        d:„ ¦   «         Z5d;„ Z6d<„ Z7d=„ Z8d>„ Z9d?„ Z:d@S )AÚTestTreeModificationc                 óv  — |                       d¦  «        }d|j        d<   |                     ¦   «         |                      d¦  «        k    sJ ‚|j        d= |                     ¦   «         |                      d¦  «        k    sJ ‚d|j        d<   |                     ¦   «         |                      d¦  «        k    sJ ‚d S )	Nz<a id="1"></a>r&   r    z<a id="2"></a>r[   rX   Úid2z<a id2="foo"></a>)r   r,   r®   Údocument_forr   s     r   Útest_attribute_modificationz0TestTreeModification.test_attribute_modificationß  s°   € Ø�yŠyÐ)Ñ*Ô*ˆØˆŒˆt‰Ø�{Š{‰}Œ} × 1Ò 1Ð2BÑ CÔ CÒCÐCÐCÐCØŒF�4ˆLØ�{Š{‰}Œ} × 1Ò 1°)Ñ <Ô <Ò<Ð<Ð<Ð<ØˆŒˆu‰Ø�{Š{‰}Œ} × 1Ò 1Ð2EÑ FÔ FÒFÐFÐFÐFÐFÐFr   c                 ód  —  t          j        d¦  «        ¦   «         }|                      d|¬¦  «        }t          ||d¦  «        }t          ||d¦  «        }d|d<   |j                             d|¦  «         |j                             d	|¦  «         |j                             ¦   «         d
k    sJ ‚d S )Nr`  z<body></body>©rõ   r,   Úolzhttp://foo.com/Úhrefr   r   s4   <body><a href="http://foo.com/"></a><ol></ol></body>)r   Úlookupr   r	   r@   Úinsertr­   )r   rõ   r   r,   r³  s        r   Útest_new_tag_creationz*TestTreeModification.test_new_tag_creationè  sÃ   € Ø1Õ"Ô)¨&Ñ1Ô1Ñ3Ô3ˆØ�yŠy˜°'ˆyÑ:Ô:ˆÝ��g˜sÑ#Ô#ˆÝ��w Ñ%Ô%ˆØ%ˆˆ&‰	ØŒ	×Ò˜˜AÑÔÐØŒ	×Ò˜˜BÑÔÐàŒI×ÒÑÔØFòGð Gð Gð Gð Gð Gr   c                 ó>  — d}|                       |¦  «        }|                     d¬¦  «        }|j        }|                     d¬¦  «                             |j        ¦  «         |j        |k    sJ ‚|                     ¦   «         |                      d¦  «        k    sJ ‚d S )NzT<p id="1">Don't leave me <b>here</b>.</p>
                <p id="2">Don't leave!</p>r   r   zD<p id="1">Don't leave me .</p>
<p id="2">Don't leave!<b>here</b></p>)r   r   r   r^   r
  r®   r¯  )r   Údocr   Úsecond_paraÚbolds        r   Ú!test_append_to_contents_moves_tagz6TestTreeModification.test_append_to_contents_moves_tagõ  s«   € ð/ˆà�yŠy˜‰~Œ~ˆØ—i’i 3�iÑ'Ô'ˆØŒvˆð 	�	Š	�Sˆ	ÑÔ× Ò  ¤Ñ(Ô(Ð(ð Œ{˜kÒ)Ð)Ð)Ð)à�{Š{‰}Œ} × 1Ò 1ØXñ!
ô !
ò 
ð 
ð 
ð 
ð 
ð 
r   c                 ód  — |                       d¦  «        }|                     d¦  «        }|                     |                     d¦  «        ¦  «        }|j        dk    sJ ‚|                     d|                     d¦  «        ¦  «        \  }|j        dk    sJ ‚|                     d¦  «        }|dk    sJ ‚|                     dd¦  «        }|ddgk    sJ ‚|                     d	d
¦  «        }|d	d
gk    sJ ‚|                     ddg¦  «        }|ddgk    sJ ‚| 	                    ¦   «         dk    sJ ‚d S )Nz<html></html>r`  Úheadr   r¬   rS   rP   rR   Ú6Ú7Ú8Ú9Ú3456789)
r   r   r^   Únew_tagr2   r¶  Úinsert_beforeÚinsert_afterÚextendÚget_text)	r   r   r`  r¾  r¬   Útext5Útext34Útext67Útext89s	            r   Ú&test_insertion_returns_inserted_thingsz;TestTreeModification.test_insertion_returns_inserted_things  sE  € Ø�yŠy˜Ñ)Ô)ˆØ�yŠy˜Ñ Ô ˆØ�{Š{˜4Ÿ<š<¨Ñ/Ô/Ñ0Ô0ˆØŒy˜FÒ"Ð"Ð"Ð"à—+’+˜a §¢¨gÑ!6Ô!6Ñ7Ô7‰ˆØŒz˜WÒ$Ð$Ð$Ð$à—’˜SÑ!Ô!ˆØ˜Š|ˆ|ˆ|ˆ|Ø×$Ò$ S¨#Ñ.Ô.ˆØ˜#˜s˜Ò#Ð#Ð#Ð#Ø×#Ò# C¨Ñ-Ô-ˆØ˜#˜s˜Ò#Ð#Ð#Ð#Ø—’˜s C˜jÑ)Ô)ˆØ˜#˜s˜Ò#Ð#Ð#Ð#Ø�~Š~ÑÔ 9Ò,Ð,Ð,Ð,Ð,Ð,r   c                 ó†   — d}|                       |¦  «        }|j        }|                     |j        ¦  «        }||k    sJ ‚d S )Nz<a></a><b><c></c></b>)r   r,   Úreplace_withr‰   ©r   r"   r   r,   Únew_as        r   Ú1test_replace_with_returns_thing_that_was_replacedzFTestTreeModification.test_replace_with_returns_thing_that_was_replaced  sA   € Ø&ˆØ�yŠy˜‰ŒˆØŒFˆØ—’˜tœvÑ&Ô&ˆØ�EŠzˆzˆzˆzˆzˆzr   c                 óz   — d}|                       |¦  «        }|j        }|                     ¦   «         }||k    sJ ‚d S )Nú<a><b></b><c></c></a>)r   r,   ÚunwraprÐ  s        r   Ú+test_unwrap_returns_thing_that_was_replacedz@TestTreeModification.test_unwrap_returns_thing_that_was_replaced   s;   € Ø&ˆØ�yŠy˜‰ŒˆØŒFˆØ—’‘
”
ˆØ�EŠzˆzˆzˆzˆzˆzr   c                 óž  — |                       d¦  «        }|j        }|                     ¦   «          d |j        u sJ ‚t	          j        t          ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   t	          j        t          ¦  «        5  |                     |j	        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz<a><b>Foo</b></a><c>Bar</c>)
r   r,   Úextractr
  rü   rý   rþ   rÕ  rÏ  r‰   rã   s      r   ÚItest_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parentz^TestTreeModification.test_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parent'  s5  € Ø�yŠyÐ6Ñ7Ô7ˆØŒFˆØ	�	Š	‰ŒˆØ�q”xÐÐÐÐÝŒ]�:Ñ&Ô&ð 	ð 	Ø�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	åŒ]�:Ñ&Ô&ð 	#ð 	#Ø�NŠN˜4œ6Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s$   ÁA6Á6A:Á=A:ÂCÃCÃ	Cc                 óà   — d}|                       |¦  «        }|j        }|j                             |¦  «        }||k    sJ ‚|                     ¦   «         |                      |¦  «        k    sJ ‚d S )Nz-<a><b></b><c>Foo<d></d></c></a><a><e></e></a>)r   r‰   rÏ  r®   r¯  )r   r"   r   r‰   rm   s        r   Útest_replace_tag_with_itselfz1TestTreeModification.test_replace_tag_with_itself1  sl   € Ø>ˆØ�yŠy˜‰ŒˆØŒFˆØ”×$Ò$ QÑ'Ô'ˆØ˜Š{ˆ{ˆ{ˆ{Ø�{Š{‰}Œ} × 1Ò 1°$Ñ 7Ô 7Ò7Ð7Ð7Ð7Ð7Ð7r   c                 óÖ   — d}|                       |¦  «        }t          j        t          ¦  «        5  |j                             |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nú<a><b></b></a>)r   rü   rý   rþ   r   rÏ  r,   ©r   r"   r   s      r   Ú1test_replace_tag_with_its_parent_raises_exceptionzFTestTreeModification.test_replace_tag_with_its_parent_raises_exception9  s¢   € ØˆØ�yŠy˜‰ŒˆÝŒ]�:Ñ&Ô&ð 	(ð 	(ØŒF×Ò ¤Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   ± AÁA"Á%A"c                 óØ   — d}|                       |¦  «        }t          j        t          ¦  «        5  |j                             d|j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÞ  r   )r   rü   rý   rþ   r,   r¶  rß  s      r   Ú,test_insert_tag_into_itself_raises_exceptionzATestTreeModification.test_insert_tag_into_itself_raises_exception?  s¢   € ØˆØ�yŠy˜‰ŒˆÝŒ]�:Ñ&Ô&ð 	%ð 	%ØŒF�MŠM˜!˜TœVÑ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   ±!AÁA#Á&A#c                 ó†  — |                       d¦  «        }|                     d|                     dd¬¦  «        |                     dd¬¦  «        ¦  «        \  }}d|j        k    sJ ‚d|j        k    sJ ‚t	          |j        ¦  «        \  }}}}d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚d S )	Nú-<p>And now, a word:</p><p>And we're back.</p>r   r0   Úp2r   Úp3úAnd now, a word:úAnd we're back.)r   r¶  rÄ  r   ÚlistÚchildren)r   r   rå  ræ  Úp1Úp4s         r   Útest_insert_multiple_elementsz2TestTreeModification.test_insert_multiple_elementsE  sÝ   € Ø�yŠyÐHÑIÔIˆØ—’˜Q §¢¨S¸ Ñ >Ô >ÀÇÂÈSÐY]ÀÑ@^Ô@^Ñ_Ô_‰ˆˆBØ�r”yÒ Ð Ð Ð Ø�r”yÒ Ð Ð Ð å˜dœmÑ,Ô,‰ˆˆB��BØ! R¤YÒ.Ð.Ð.Ð.Ø�r”yÒ Ð Ð Ð Ø�r”yÒ Ð Ð Ð Ø  B¤IÒ-Ð-Ð-Ð-Ð-Ð-r   c                 ó   — |                       d¦  «        }d}|                       |¦  «        }|                     d|¦  «        \  }}d|j        k    sJ ‚d|j        k    sJ ‚|j        D ]}t	          |t
          ¦  «        rJ ‚Œt          |j        ¦  «        \  }}}}d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚d|j        k    sJ ‚dS )	z”Inserting one BeautifulSoup object into another actually inserts all
        of its children -- you'll never combine BeautifulSoup objects.
        rä  z<p>p2</p><p>p3</p>r   rå  ræ  rç  rè  N)r   r¶  r   ÚdescendantsÚ
isinstancer   ré  rê  )	r   r   r"   Ú	to_insertrå  ræ  rÿ   rë  rì  s	            r   Ú1test_insert_beautifulsoup_object_inserts_childrenzFTestTreeModification.test_insert_beautifulsoup_object_inserts_childrenQ  sû   € ð �yŠyÐHÑIÔIˆà#ˆØ—I’I˜d‘O”Oˆ	Ø—’˜Q 	Ñ*Ô*‰ˆˆBØ�r”yÒ Ð Ð Ð Ø�r”yÒ Ð Ð Ð àÔ!ð 	4ð 	4ˆAÝ! !¥]Ñ3Ô3Ð3Ð3Ð3Ð3å˜dœmÑ,Ô,‰ˆˆB��BØ! R¤YÒ.Ð.Ð.Ð.Ø�r”yÒ Ð Ð Ð Ø�r”yÒ Ð Ð Ð Ø  B¤IÒ-Ð-Ð-Ð-Ð-Ð-r   c                 óö   — |                       d¦  «        }|j        }|                     dd¦  «         |j        \  }}|                     d¦  «         |                     d¦  «         d|j        j        k    sJ ‚d S )Nz<p><a>one</a><b>three</b></p>r   Útworv  Úthree)r   r,   r¶  ró   rÏ  r   r   )r   r   r,   ÚleftÚrights        r   Ú3test_replace_with_maintains_next_element_throughoutzHTestTreeModification.test_replace_with_maintains_next_element_throughoutf  s�   € Ø�yŠyÐ8Ñ9Ô9ˆØŒFˆà	�Š��EÑÔÐð ”j‰ˆˆeØ×Ò˜"ÑÔÐØ×Ò˜2ÑÔÐð ˜$œ&œ-Ò'Ð'Ð'Ð'Ð'Ð'r   c                 ó&  — |                       d¦  «        }|                     d¬¦  «                             d¦  «         |                     d¬¦  «        }|j        }|j        |k    sJ ‚|j        |k    sJ ‚|j        j        |k    sJ ‚|j        �J ‚d S )Nz<b>Argh!</b>úArgh!r   úHooray!)r   r   rÏ  r   r]  r
  r:  )r   r   Únew_textr   s       r   Útest_replace_final_nodez,TestTreeModification.test_replace_final_nodet  s¢   € Ø�yŠy˜Ñ(Ô(ˆØ�	Š	˜ˆ	Ñ!Ô!×.Ò.¨yÑ9Ô9Ð9Ø—9’9 I�9Ñ.Ô.ˆØŒFˆØÔ(¨AÒ-Ð-Ð-Ð-ØŒ !Ò#Ð#Ð#Ð#ØÔ(Ô5¸ÒAÐAÐAÐAØÔ$Ð,Ð,Ð,Ð,Ð,r   c                 óž  — |                       d¦  «        }|j                             dd¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|                     d¬¦  «        }|j        dk    sJ ‚|j        j        |k    sJ ‚|j        dk    sJ ‚|j        j	        |k    sJ ‚|j	        �J ‚|j        |j
        k    sJ ‚d S )Nz<a><b>Argh!</b><c></c></a>r   rû  z!<a><b>Argh!Hooray!</b><c></c></a>r   rú  )r   r   r¶  r®   r¯  r   r]  r:  r™  r}  r‰   )r   r   rü  s      r   Útest_consecutive_text_nodesz0TestTreeModification.test_consecutive_text_nodes~  sè   € ð �yŠyÐ5Ñ6Ô6ˆØŒ�Š�a˜Ñ#Ô#Ð#à�{Š{‰}Œ} × 1Ò 1Ð2UÑ VÔ VÒVÐVÐVÐVà—9’9 I�9Ñ.Ô.ˆØÔ(¨GÒ3Ð3Ð3Ð3ØÔ(Ô5¸ÒAÐAÐAÐAàÔ(¨GÒ3Ð3Ð3Ð3ØÔ(Ô5¸ÒAÐAÐAÐAàÔ$Ð,Ð,Ð,ØÔ$¨¬Ò.Ð.Ð.Ð.Ð.Ð.r   c                 óþ   — |                       d¦  «        }|j                             dd¦  «         |j                             dd¦  «         ddg|j        j        k    sJ ‚|j        j        d         j        dk    sJ ‚d S )Nr[   r   rE   rX   )r   r,   r¶  ró   r:  r   s     r   Útest_insert_stringz'TestTreeModification.test_insert_string‘  s{   € Ø�yŠy˜Ñ#Ô#ˆØŒ�Š�a˜ÑÔÐØŒ�Š�a˜ÑÔÐà�uˆ~ ¤¤Ò0Ð0Ð0Ð0àŒvŒ˜qÔ!Ô.°%Ò7Ð7Ð7Ð7Ð7Ð7r   c                 ó²   — |                       d¦  «        }|j                             d¦  «        }|dk    sJ ‚|j                             ¦   «         dk    sJ ‚d S )Nz<b>1</b>r   z	<b>12</b>)r   r   r^   r®   rl   s      r   Útest_appendz TestTreeModification.test_appendš  sT   € Ø�yŠy˜Ñ$Ô$ˆØ”—’˜sÑ#Ô#ˆØ˜Š}ˆ}ˆ}ˆ}ØŒv�}Š}‰Œ +Ò-Ð-Ð-Ð-Ð-Ð-r   c                 ó˜  — |                       ¦   «         }|                      d|¬¦  «        }t          ||d¦  «        }|                     dd¦  «         |j                             d|¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j        }|j        |k    sJ ‚|j	        |k    sJ ‚| 
                    d¬	¦  «        }|j        |k    sJ ‚|j        |k    sJ ‚|j        }|j        |k    sJ ‚|j	        |k    sJ ‚| 
                    d¬	¦  «        }|j        |k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚d S )
Nz%<a><b>Find</b><c>lady!</c><d></d></a>r²  Úmagictagr   Úther   z=<a><b>Find</b><magictag>the</magictag><c>lady!</c><d></d></a>ÚFindr   )rò   r   r	   r¶  r,   r®   r¯  r   r}  r™  r   r:  r]  r‰   r
  )r   rõ   r   Ú	magic_tagÚb_tagr   Úc_tagr  s           r   Útest_insert_tagz$TestTreeModification.test_insert_tag   s‰  € Ø×&Ò&Ñ(Ô(ˆØ�yŠyÐ@È'ˆyÑRÔRˆÝ˜˜g zÑ2Ô2ˆ	Ø×Ò˜˜EÑ"Ô"Ð"ØŒ�Š�a˜Ñ#Ô#Ð#à�{Š{‰}Œ} × 1Ò 1ØKñ!
ô !
ò 
ð 
ð 
ð 
ð
 ”ˆØÔ! YÒ.Ð.Ð.Ð.ØÔ)¨UÒ2Ð2Ð2Ð2à�zŠz ˆzÑ(Ô(ˆØÔ  IÒ-Ð-Ð-Ð-ØÔ)¨TÒ1Ð1Ð1Ð1à”ˆØÔ%¨Ò.Ð.Ð.Ð.ØÔ%¨Ò2Ð2Ð2Ð2à�nŠn EˆnÑ*Ô*ˆØŒz˜YÒ&Ð&Ð&Ð&ØÔ 5Ò(Ð(Ð(Ð(ØÔ%¨Ò,Ð,Ð,Ð,Ð,Ð,r   c                 ó¨   — d}|                       |¦  «        }|j                             d|j        ¦  «         ||                     ¦   «         k    sJ ‚d S )Nz<a>b<c></c>d</a>r   )r   r,   r¶  r‰   r®   ©r   r°   r   s      r   Ú%test_insert_into_the_current_locationz:TestTreeModification.test_insert_into_the_current_location½  sM   € Ø!ˆØ�yŠy˜‰ŒˆØŒ�Š�a˜œÑ Ô Ð Ø�t—{’{‘}”}Ò$Ð$Ð$Ð$Ð$Ð$r   c                 ó¦   — d}|                       |¦  «        }|j                             |j        ¦  «         ||                     ¦   «         k    sJ ‚d S rÝ  )r   r,   r^   r   r®   r  s      r   Ú*test_append_child_thats_already_at_the_endz?TestTreeModification.test_append_child_thats_already_at_the_endÃ  sK   € ØˆØ�yŠy˜‰ŒˆØŒ�Š�d”fÑÔÐØ�t—{’{‘}”}Ò$Ð$Ð$Ð$Ð$Ð$r   c                 óè   — d}|                       |¦  «        }|j        |j        |j        |j        |j        |j        g}|j                             |¦  «         d| 	                    ¦   «         k    sJ ‚d S )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À   Úerì   r‰   r   r,   rÇ  r®   ©r   r°   r   Úelementss       r   Ú#test_extend_with_a_list_of_elementsz8TestTreeModification.test_extend_with_a_list_of_elementsÉ  sg   € ØBˆØ�yŠy˜‰ŒˆØ”F˜DœF D¤F¨D¬F°D´F¸D¼FÐCˆØŒ�Š�hÑÔÐØBÀdÇkÂkÁmÄmÒSÐSÐSÐSÐSÐSr   c                 óÂ   — d}|                       |¦  «        }ddt          d¦  «        dg}|j                             |¦  «         d|                     ¦   «         k    sJ ‚d S )Nr[   r   r‰   rì   r  z<a>bcde</a>)r   r   r,   rÇ  r®   r  s       r   Ú"test_extend_with_a_list_of_stringsz7TestTreeModification.test_extend_with_a_list_of_stringsÐ  s_   € ØˆØ�yŠy˜‰ŒˆØ˜�o¨cÑ2Ô2°CÐ8ˆØŒ�Š�hÑÔÐØ §¢¡¤Ò-Ð-Ð-Ð-Ð-Ð-r   Úget_tagsc                 ó   — | S r  r<   rš   s    r   ú<lambda>zTestTreeModification.<lambda>×  s   € °c€ r   c                 ó   — | j         S r  )ró   rš   s    r   r  zTestTreeModification.<lambda>×  s   € ÀsÄ|€ r   c                 ó8  — d}|                       |¦  «        }|                     dd¬¦  «        }|                     dd¬¦  «        } ||¦  «        }|                     |¦  «         d|                     ¦   «         k    sJ ‚d|                     ¦   «         k    sJ ‚d S )NzS<body><div id="d1"><a>1</a><a>2</a><a>3</a><a>4</a></div><div id="d2"></div></body>r/   Úd1r   Úd2z<div id="d1"></div>z3<div id="d2"><a>1</a><a>2</a><a>3</a><a>4</a></div>)r   r   rÇ  r®   )r   r  r°   r   r  r  Útagss          r   Ú&test_extend_with_another_tags_contentsz;TestTreeModification.test_extend_with_another_tags_contents×  s”   € àdˆØ�yŠy˜‰ŒˆØ�YŠY�u ˆYÑ&Ô&ˆØ�YŠY�u ˆYÑ&Ô&ˆØˆx˜‰|Œ|ˆØ
�	Š	�$‰ŒˆØ$¨¯	ª	©¬Ò3Ð3Ð3Ð3ØDÈÏ	Ê	ÉÌÒSÐSÐSÐSÐSÐSr   zstring_source,resultc                 ó   — | j         j        S r  )r,   r   ©r   s    r   r  zTestTreeModification.<lambda>å  s
   € ˜$œ&œ-€ r   z<a></a><b>1</b>c                 ó   — dS )NÚabcder<   r#  s    r   r  zTestTreeModification.<lambda>æ  s   € ˜'€ r   z<a>1</a><b>abcde</b>c                 ó~  — d}|                       |¦  «        }t          j        d¬¦  «        5 } ||¦  «        }|j                             |¦  «         |j                             ¦   «         |k    sJ ‚|\  }|j        t          k    sJ ‚t          |j
        ¦  «        }|dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz<div><a>1</a><b></b></div>Tr\   zIA single non-Tag item was passed into Tag.extend. Use Tag.append instead.)r   r_   r`   r   rÇ  r/   Údecode_contentsra   rb   r!   rc   )	r   Ústring_sourcerm   r°   r   re   r   rf   rg   s	            r   Ú)test_extend_with_a_single_non_tag_elementz>TestTreeModification.test_extend_with_a_single_non_tag_elementâ  s  € ð ,ˆØ�yŠy˜‰ŒˆÝÔ$¨DÐ1Ñ1Ô1ð 
	°QØ"�] 4Ñ(Ô(ˆFØŒF�MŠM˜&Ñ!Ô!Ð!Ø”8×+Ò+Ñ-Ô-°Ò7Ð7Ð7Ð7Ø‰IˆWØÔ#¥xÒ/Ð/Ð/Ð/Ý�g”oÑ&Ô&ˆCàØ^ò_ð _ð _ð _ð _ð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s   ­A7B2Â2B6Â9B6c                 ó¨   — d}|                       |¦  «        }|j                             d|j        ¦  «         d|                     ¦   «         k    sJ ‚d S )Nz<a><b></b><c></c><d></d></a>r   z<a><d></d><b></b><c></c></a>)r   r,   r¶  rì   r®   r  s      r   Ú$test_move_tag_to_beginning_of_parentz9TestTreeModification.test_move_tag_to_beginning_of_parentø  sM   € Ø-ˆØ�yŠy˜‰ŒˆØŒ�Š�a˜œÑ Ô Ð Ø-°·²±´Ò>Ð>Ð>Ð>Ð>Ð>r   c                 óš   — |                       d¦  «        }|j                             dd¦  «         t          |j        ¦  «        dk    sJ ‚d S )Nz<br/>r   ÚContentsz<br>Contents</br>)r   Úbrr¶  r!   r   s     r   Ú&test_insert_works_on_empty_element_tagz;TestTreeModification.test_insert_works_on_empty_element_tagþ  sK   € ð
 �yŠy˜Ñ!Ô!ˆØŒ�Š�q˜*Ñ%Ô%Ð%Ý�4”7‰|Œ|Ð2Ò2Ð2Ð2Ð2Ð2Ð2r   c                 ó\  — |                       d¦  «        }|j                             d¦  «         |j                             d¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j                             |j        ¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j        }t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   | 	                    ¦   «          t          j        t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   |                       d¦  «        }|j                             | 
                    d¦  «        ¦  «         d S )	Nr%   ÚBAZÚQUUXzQUUX<a>foo</a>BAZ<b>bar</b>úQUUX<b>bar</b><a>foo</a>BAZÚnopeú<a>r,   )r   r   rÅ  r,   r®   r¯  rü   rý   rþ   rØ  rÄ  ©r   r   r   s      r   Útest_insert_beforez'TestTreeModification.test_insert_before  sé  € Ø�yŠyÐ/Ñ0Ô0ˆØŒ×Ò˜UÑ#Ô#Ð#ØŒ×Ò˜VÑ$Ô$Ð$Ø�{Š{‰}Œ} × 1Ò 1Ð2OÑ PÔ PÒPÐPÐPÐPàŒ×Ò˜TœVÑ$Ô$Ð$Ø�{Š{‰}Œ} × 1Ò 1Ð2OÑ PÔ PÒPÐPÐPÐPð ŒFˆÝŒ]�:Ñ&Ô&ð 	ð 	Ø�OŠO˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	
�	Š	‰ŒˆÝŒ]�:Ñ&Ô&ð 	$ð 	$Ø�OŠO˜FÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð �yŠy˜ÑÔˆØŒ×Ò˜TŸ\š\¨#Ñ.Ô.Ñ/Ô/Ð/Ð/Ð/ó$   Ã#DÄD	ÄD	Ä=EÅE#Å&E#c                 ó”  — |                       d¦  «        }|j                             ddd¦  «         |j                             ddd¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j                             |j        d¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚d S )Nr%   r1  ú r2  z$QUUX BAZ<a>foo</a>BAZ QUUX<b>bar</b>ÚFOOz'QUUX BAZ<b>bar</b>FOO<a>foo</a>BAZ QUUX)r   r   rÅ  r,   r®   r¯  r   s     r   Útest_insert_multiple_beforez0TestTreeModification.test_insert_multiple_before   sÖ   € Ø�yŠyÐ/Ñ0Ô0ˆØŒ×Ò˜U C¨Ñ0Ô0Ð0ØŒ×Ò˜V S¨%Ñ0Ô0Ð0Ø�{Š{‰}Œ} × 1Ò 1Ø2ñ!
ô !
ò 
ð 
ð 
ð 
ð 	Œ×Ò˜TœV UÑ+Ô+Ð+Ø�{Š{‰}Œ} × 1Ò 1Ø5ñ!
ô !
ò 
ð 
ð 
ð 
ð 
ð 
r   c                 ó\  — |                       d¦  «        }|j                             d¦  «         |j                             d¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j                             |j        ¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j        }t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   | 	                    ¦   «          t          j        t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   |                       d¦  «        }|j         
                    |                     d¦  «        ¦  «         d S )	Nr%   r1  r2  z<a>foo</a>QUUX<b>bar</b>BAZr3  r4  r5  r,   )r   r   rÆ  r,   r®   r¯  rü   rý   rþ   rØ  rÅ  rÄ  r6  s      r   Útest_insert_afterz&TestTreeModification.test_insert_after-  sé  € Ø�yŠyÐ/Ñ0Ô0ˆØŒ×Ò˜EÑ"Ô"Ð"ØŒ×Ò˜FÑ#Ô#Ð#Ø�{Š{‰}Œ} × 1Ò 1Ð2OÑ PÔ PÒPÐPÐPÐPØŒ×Ò˜DœFÑ#Ô#Ð#Ø�{Š{‰}Œ} × 1Ò 1Ð2OÑ PÔ PÒPÐPÐPÐPð ŒFˆÝŒ]�:Ñ&Ô&ð 	ð 	Ø�NŠN˜1ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	
�	Š	‰ŒˆÝŒ]�:Ñ&Ô&ð 	#ð 	#Ø�NŠN˜6Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð �yŠy˜ÑÔˆØŒ×Ò˜TŸ\š\¨#Ñ.Ô.Ñ/Ô/Ð/Ð/Ð/r8  c                 ó”  — |                       d¦  «        }|j                             ddd¦  «         |j                             ddd¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j                             |j        d¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚d S )Nr%   r1  r:  r2  z$<a>foo</a>QUUX BAZ<b>bar</b>BAZ QUUXzFOO z(QUUX BAZ<b>bar</b><a>foo</a>FOO BAZ QUUX)r   r   rÆ  r,   r®   r¯  r   s     r   Útest_insert_multiple_afterz/TestTreeModification.test_insert_multiple_afterE  sÖ   € Ø�yŠyÐ/Ñ0Ô0ˆØŒ×Ò˜E 3¨Ñ/Ô/Ð/ØŒ×Ò˜F C¨Ñ/Ô/Ð/Ø�{Š{‰}Œ} × 1Ò 1Ø2ñ!
ô !
ò 
ð 
ð 
ð 
ð 	Œ×Ò˜DœF FÑ+Ô+Ð+Ø�{Š{‰}Œ} × 1Ò 1Ø6ñ!
ô !
ò 
ð 
ð 
ð 
ð 
ð 
r   c                 ó*  — |                       d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        t
          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nrv  r,   )r   rÄ  Ú
new_stringrü   rý   rþ   rÆ  ÚNotImplementedError©r   r   r…   r   s       r   Ú:test_insert_after_raises_exception_if_after_has_no_meaningzOTestTreeModification.test_insert_after_raises_exception_if_after_has_no_meaningQ  s®  € Ø�yŠy˜‰}Œ}ˆØ�lŠl˜3ÑÔˆØ—’ Ñ$Ô$ˆÝŒ]�:Ñ&Ô&ð 	%ð 	%Ø×Ò Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%åŒ]Õ.Ñ/Ô/ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#åŒ]�:Ñ&Ô&ð 	"ð 	"Ø×Ò˜SÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ó6   ÁA;Á;A?ÂA?ÂCÃCÃCÃ%DÄDÄDc                 ó*  — |                       d¦  «        }|                     d¦  «        }|                     d¦  «        }t          j        t
          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          ¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rB  )r   rÄ  rC  rü   rý   rþ   rÅ  rD  rE  s       r   ÚFtest_insert_before_raises_notimplementederror_if_before_has_no_meaningz[TestTreeModification.test_insert_before_raises_notimplementederror_if_before_has_no_meaning\  s®  € Ø�yŠy˜‰}Œ}ˆØ�lŠl˜3ÑÔˆØ—’ Ñ$Ô$ˆÝŒ]�:Ñ&Ô&ð 	&ð 	&Ø× Ò  Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&åŒ]Õ.Ñ/Ô/ð 	$ð 	$Ø×Ò˜sÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$åŒ]�:Ñ&Ô&ð 	#ð 	#Ø×Ò˜cÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#rG  c                 óN  — |                       d¦  «        }|                     d¦  «        \  }}|                     |¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j        �J ‚|j        |j        k    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚d S )Nz;<p>There's <b>no</b> business like <b>show</b> business</p>r   z0<p>There's  business like <b>no</b> business</p>Únoz	 business)	r   r)   rÏ  r®   r¯  r
  r0   r:  r}  )r   r   rK  Úshows       r   Útest_replace_withz&TestTreeModification.test_replace_withg  sÂ   € Ø�yŠyÐVÑWÔWˆØ—=’= Ñ%Ô%‰ˆˆDØ×Ò˜"ÑÔÐØ�{Š{‰}Œ} × 1Ò 1Ø>ñ!
ô !
ò 
ð 
ð 
ð 
ð Œ{Ð"Ð"Ð"ØŒy˜DœFÒ"Ð"Ð"Ð"ØŒ $Ò&Ð&Ð&Ð&ØŒ +Ò-Ð-Ð-Ð-Ð-Ð-r   c                 ó  — t          d¬¦  «        }t          j        t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      d¦  «        j        }t          j        t          ¦  «        5  |j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  |j                             d|d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr,   r´   z
won't workrÞ  Ústring1Ústring2)r	   rü   rý   rþ   rÏ  r   r,   r   )r   Úa_tags     r   Útest_replace_with_errorsz-TestTreeModification.test_replace_with_errorst  sª  € å˜�‘”ˆÝŒ]�:Ñ&Ô&ð 	-ð 	-Ø×Ò˜|Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð —	’	Ð*Ñ+Ô+Ô-ˆÝŒ]�:Ñ&Ô&ð 	(ð 	(ØŒG× Ò  Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ Œ]�:Ñ&Ô&ð 	>ð 	>ØŒG× Ò  ¨E°9Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s5   ªAÁAÁAÂ
B1Â1B5Â8B5ÃC?Ã?DÄDc                 óÂ  — d}|                       |¦  «        }|                     d¦  «        }d|_        |                     d¦  «        }|                     d¦  «        }d}|j                             ||||¦  «         |                     ¦   «         dk    sJ ‚|j        j        |k    sJ ‚|j        j        |k    sJ ‚|j        j        |k    sJ ‚|j        j        |k    sJ ‚d S )NrÔ  rì   zText In D Tagr  rÀ   zRandom Textz;<a><b></b><d>Text In D Tag</d><e></e>Random Text<f></f></a>)r   rÄ  r   r‰   rÏ  r®   r   r:  )r   r°   r   Úd_tagÚe_tagÚf_tagÚa_strings          r   Útest_replace_with_multiplez/TestTreeModification.test_replace_with_multipleƒ  sù   € Ø&ˆØ�yŠy˜‰ŒˆØ—’˜SÑ!Ô!ˆØ&ˆŒØ—’˜SÑ!Ô!ˆØ—’˜SÑ!Ô!ˆØ ˆØŒ×Ò˜E 5¨(°EÑ:Ô:Ð:à�KŠK‰MŒMØLòMð Mð Mð Mð ŒvÔ" eÒ+Ð+Ð+Ð+ØŒ|Ô(¨EÒ1Ð1Ð1Ð1ØÔ!Ô(¨HÒ4Ð4Ð4Ð4ØÔ!Ô.°%Ò7Ð7Ð7Ð7Ð7Ð7r   c                 ó¦   — d}|                       |¦  «        }|j                             |j        ¦  «         d|                     ¦   «         k    sJ ‚d S )NrÔ  z<a><c></c></a>)r   r   rÏ  r‰   r®   r  s      r   Útest_replace_first_childz-TestTreeModification.test_replace_first_child•  óM   € Ø&ˆØ�yŠy˜‰ŒˆØŒ×Ò˜DœFÑ#Ô#Ð#Ø 4§;¢;¡=¤=Ò0Ð0Ð0Ð0Ð0Ð0r   c                 ó¦   — d}|                       |¦  «        }|j                             |j        ¦  «         d|                     ¦   «         k    sJ ‚d S )NrÔ  rÞ  )r   r‰   rÏ  r   r®   r  s      r   Útest_replace_last_childz,TestTreeModification.test_replace_last_child›  r[  r   c                 ór  — |                       d¦  «        }|j        }|j        }|                     |¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚|j        �J ‚|                     d¬¦  «        j        �J ‚|j	        �J ‚|j
        �J ‚|j        �J ‚|j        |j        k    sJ ‚|j	        dk    sJ ‚|j        j        |j        k    sJ ‚|j
        �J ‚|                     d¬¦  «        }|j        }|j        |k    sJ ‚|j
        |k    sJ ‚|j	        |k    sJ ‚|j        |k    sJ ‚d S )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)r   r   rÀ   rÏ  r®   r¯  r
  r   r:  r]  r}  r™  r,   r  r  )r   r   Ú
remove_tagÚmove_tagÚto_textÚg_tags         r   Útest_nested_tag_replace_withz1TestTreeModification.test_nested_tag_replace_with¡  s�  € Ø�yŠyØcñ
ô 
ˆð ”Vˆ
Ø”6ˆØ×Ò Ñ)Ô)Ð)à�{Š{‰}Œ} × 1Ò 1Ø;ñ!
ô !
ò 
ð 
ð 
ð 
ð
 Ô Ð(Ð(Ð(Ø�Š gˆÑ.Ô.Ô;ÐCÐCÐCØÔ*Ð2Ð2Ð2ØÔ&Ð.Ð.Ð.ØÔ*Ð2Ð2Ð2ð Œ $¤&Ò(Ð(Ð(Ð(ØÔ(¨DÒ0Ð0Ð0Ð0ØÔ$Ô1°T´VÒ;Ð;Ð;Ð;ØÔ$Ð,Ð,Ð,ð —)’) 4�)Ñ(Ô(ˆØ”ˆØÔ# uÒ,Ð,Ð,Ð,ØÔ# uÒ,Ð,Ð,Ð,ØÔ%¨Ò0Ð0Ð0Ð0ØÔ%¨Ò0Ð0Ð0Ð0Ð0Ð0r   c                 ó˜   — |                       d¦  «        }|j                             ¦   «          |j        �J ‚|j        j        dk    sJ ‚d S )NzI
            <p>Unneeded <em>formatting</em> is unneeded</p>
            zUnneeded formatting is unneeded)r   ÚemrÕ  r0   r"   r¨   s     r   Útest_unwrapz TestTreeModification.test_unwrapÆ  sU   € Ø�yŠyð ñ ô ˆð 	Œ�ŠÑÔÐØŒwˆˆˆØŒvŒ{Ð?Ò?Ð?Ð?Ð?Ð?Ð?r   c                 ó  — |                       d¦  «        }|j                             |                     d¦  «        ¦  «        }|                     ¦   «         dk    sJ ‚|                     ¦   «         |                      d¦  «        k    sJ ‚d S )NzI wish I was bold.r   ú<b>I wish I was bold.</b>)r   r   ÚwraprÄ  r®   r¯  )r   r   rÈ   s      r   Ú	test_wrapzTestTreeModification.test_wrapÎ  s}   € Ø�yŠyÐ-Ñ.Ô.ˆØ”× Ò  §¢¨cÑ!2Ô!2Ñ3Ô3ˆØ�|Š|‰~Œ~Ð!<Ò<Ð<Ð<Ð<Ø�{Š{‰}Œ} × 1Ò 1Ð2MÑ NÔ NÒNÐNÐNÐNÐNÐNr   c                 óÒ   — |                       d¦  «        }|j        j                             |j        ¦  «         |                     ¦   «         |                      d¦  «        k    sJ ‚d S )Nz<b></b>I wish I was bold.rj  )r   r   r}  rk  r®   r¯  r   s     r   Ú%test_wrap_extracts_tag_from_elsewherez:TestTreeModification.test_wrap_extracts_tag_from_elsewhereÔ  s]   € Ø�yŠyÐ4Ñ5Ô5ˆØŒÔ× Ò  ¤Ñ(Ô(Ð(Ø�{Š{‰}Œ} × 1Ò 1Ð2MÑ NÔ NÒNÐNÐNÐNÐNÐNr   c                 ó  — |                       d¦  «        }|j        j                             |j        ¦  «         dt	          |j        j        ¦  «        k    sJ ‚|                     ¦   «         |                      d¦  «        k    sJ ‚d S )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>)r   r   r}  rk  r(   ró   r®   r¯  r   s     r   Ú&test_wrap_puts_new_contents_at_the_endz;TestTreeModification.test_wrap_puts_new_contents_at_the_endÙ  sŠ   € Ø�yŠyÐFÑGÔGˆØŒÔ× Ò  ¤Ñ(Ô(Ð(Ø•C˜œœÑ(Ô(Ò(Ð(Ð(Ð(Ø�{Š{‰}Œ} × 1Ò 1Ø9ñ!
ô !
ò 
ð 
ð 
ð 
ð 
ð 
r   c                 ód  — |                       d¦  «        }t          |j        j        ¦  «        dk    sJ ‚|                     d¬¦  «                             ¦   «         }|                     ¦   «         dk    sJ ‚|                     ¦   «         dk    sJ ‚t          |j        j        ¦  «        dk    sJ ‚|j        �J ‚|j        �J ‚|j	        j	        �J ‚|                     d¬	¦  «        }|                     d
¬	¦  «        }|j	        |k    sJ ‚|j
        |k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚d S )NzR<html><body>Some content. <div id="nav">Nav crap</div> More content.</body></html>rL   Únavr   z6<html><body>Some content.  More content.</body></html>z<div id="nav">Nav crap</div>r&   zSome content. r   z More content.)r   r(   r@   ró   r   rØ  r®   r
  r]  r:  r}  r™  )r   r   Ú	extractedÚ	content_1Ú	content_2s        r   Útest_extractz!TestTreeModification.test_extractá  s_  € Ø�yŠyØ`ñ
ô 
ˆõ �4”9Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ø—I’I �IÑ'Ô'×/Ò/Ñ1Ô1ˆ	à�{Š{‰}Œ}Ð XÒXÐXÐXÐXØ×ÒÑ!Ô!Ð%CÒCÐCÐCÐCõ �4”9Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð+ØÔÐ'Ð'Ð'ØÔ)Ð1Ð1Ð1ØÔ%Ô2Ð:Ð:Ð:ð —I’IÐ%5�IÑ6Ô6ˆ	Ø—I’IÐ%5�IÑ6Ô6ˆ	ØÔ%¨Ò2Ð2Ð2Ð2ØÔ%¨Ò2Ð2Ð2Ð2ØÔ)¨YÒ6Ð6Ð6Ð6ØÔ)¨YÒ6Ð6Ð6Ð6Ð6Ð6r   c                 óœ  — |                       d¦  «        }|j        j        }|                     d¦  «        }|                     d¦  «        }|j                             |¦  «         |j                             |¦  «         |                     ¦   «          |                     ¦   «          ||j        j        k    sJ ‚||j        j        k    sJ ‚d S )Nr%   rX   rE   )r   r,   r   rC  r^   r   rØ  )r   r   Úfoo_1Úfoo_2Úbar_2s        r   Ú4test_extract_distinguishes_between_identical_stringszITestTreeModification.test_extract_distinguishes_between_identical_stringsú  s³   € Ø�yŠyÐ/Ñ0Ô0ˆØ””ˆØ—’ Ñ&Ô&ˆØ—’ Ñ&Ô&ˆØŒ�Š�eÑÔÐØŒ�Š�eÑÔÐð
 	�Š‰ŒˆØ�Š‰ŒˆØ˜œœÒ%Ð%Ð%Ð%Ø˜œœÒ%Ð%Ð%Ð%Ð%Ð%r   c                 ó¨   ‡— |                       d¦  «        Šˆfd„‰                     d¦  «        D ¦   «          dt          ‰j        ¦  «        k    sJ ‚d S )Nzv
<html>
<head>
<script>foo</script>
</head>
<body>
 <script>bar</script>
 <a></a>
</body>
<script>baz</script>
</html>c                 óB   •— g | ]}‰j                              ¦   «         ‘ŒS r<   )ÚscriptrØ  )r$  rÿ   r   s     €r   r%  zKTestTreeModification.test_extract_multiples_of_same_tag.<locals>.<listcomp>  s'   ø€ Ð@Ð@Ð@ 1ˆŒ×	Ò	Ñ	Ô	Ð@Ð@Ð@r   r~  z<body>

<a></a>
</body>)r   r)   r!   r@   r   s    @r   Ú"test_extract_multiples_of_same_tagz7TestTreeModification.test_extract_multiples_of_same_tag
  sc   ø€ Ø�yŠyð 
ñ 
ô 
ˆð 	AÐ@Ð@Ð@¨¯ª°hÑ(?Ô(?Ð@Ñ@Ô@Ð@Ø+­s°4´9©~¬~Ò=Ð=Ð=Ð=Ð=Ð=r   c                 ó°   — |                       d¦  «        }|                     d¦  «                             ¦   «          d |                     d¦  «        u sJ ‚d S )Nz<html>
<body>hi</body>
</html>r@   )r   r   rØ  r   s     r   ÚBtest_extract_works_when_element_is_surrounded_by_identical_stringszWTestTreeModification.test_extract_works_when_element_is_surrounded_by_identical_strings  sU   € Ø�yŠyÐAÑBÔBˆØ�	Š	�&ÑÔ×!Ò!Ñ#Ô#Ð#Ø�t—y’y Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(r   c                 ó@  — |                       d¦  «        }|j        }|j                             ¦   «          t	          |j        j        ¦  «        dk    sJ ‚t          |d¦  «        sJ ‚|j        }|                     d¬¦  «         dt	          |j        ¦  «        k    sJ ‚dS )zTag.clear()z4<p><a>String <em>Italicized</em></a> and another</p>r   ró   T)Ú	decomposeN)r   r,   r0   Úclearr(   ró   rk   rg  )r   r   r,   rg  s       r   Ú
test_clearzTestTreeModification.test_clear  s›   € à�yŠyÐOÑPÔPˆàŒFˆØŒ�Š‰ŒˆÝ�4”6”?Ñ#Ô# qÒ(Ð(Ð(Ð(Ý�q˜*Ñ%Ô%Ð%Ð%Ð%ð ŒTˆØ	�Š˜$ˆÑÔÐØ•C˜œÑ$Ô$Ò$Ð$Ð$Ð$Ð$Ð$r   zmethod_name,expected_result))rï  ú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>)rQ  r†  )rê  r†  )rp  rv  )r¦  zF<div><p id="start"><a>Second <em>child</em></a></p><p>child3</p></div>)r'  rv  c                 óÀ   — |                       d¦  «        }t          |j        |¦  «        }|D ]}|                     ¦   «          Œ||                     ¦   «         k    sJ ‚d S )NzU<div><em>child1</em><p id='start'><a>Second <em>child</em></a></p><p>child3</p></div>)r   Úgetattrr0   rØ  r®   )r   Úmethod_nameÚexpected_resultr   Úiteratorrÿ   s         r   Útest_extract_during_iterationz2TestTreeModification.test_extract_during_iteration,  sj   € ð: �yŠyØcñ
ô 
ˆõ ˜4œ6 ;Ñ/Ô/ˆØð 	ð 	ˆAØ�IŠI‰KŒKˆKˆKØ $§+¢+¡-¤-Ò/Ð/Ð/Ð/Ð/Ð/r   c                 ó  — |                       d¦  «        }|                     d¦  «        \  }}|j        }|j        j        }||||fD ]}d|j        u sJ ‚Œ|                     ¦   «          |||fD ]}d|j        u sJ ‚Œd|j        u sJ ‚d S )Nz;<p><a>String <em>Italicized</em></a></p><p>Another para</p>r0   FT)r   r)   r,   rg  r   Ú
decomposedrƒ  )r   r   rë  rå  r,   r"   rÿ   s          r   Útest_decomposez#TestTreeModification.test_decomposeQ  sº   € à�yŠyÐVÑWÔWˆØ—’˜sÑ#Ô#‰ˆˆBØŒDˆØŒuŒ|ˆØ�b˜!˜TÐ"ð 	)ð 	)ˆAØ˜AœLÐ(Ð(Ð(Ð(Ð(ð 	�Š‰ŒˆØ�a˜�ð 	(ð 	(ˆAØ˜1œ<Ð'Ð'Ð'Ð'Ð'à˜œÐ%Ð%Ð%Ð%Ð%Ð%r   c                 óÞ   — |                       d¦  «        }|j        }|j        j        }d|j        u sJ ‚|                     ¦   «          d|j        u sJ ‚d|                     ¦   «         k    sJ ‚d S )Nz'<div><p>String 1</p><p>String 2</p></p>FTz!<div><p></p><p>String 2</p></div>)r   r/   r0   r   rŽ  rƒ  r®   )r   r   r/   r"   s       r   Útest_decompose_stringz*TestTreeModification.test_decompose_stringa  sy   € Ø�yŠyÐBÑCÔCˆØŒhˆØŒuŒ|ˆØ˜œÐ'Ð'Ð'Ð'Ø�ŠÑÔÐØ�t”Ð&Ð&Ð&Ð&Ø2°c·j²j±l´lÒBÐBÐBÐBÐBÐBr   c                 ó¬   — |                       d¦  «        }d|j        _        |j        j        dgk    sJ ‚d|j        _        |j        j        dgk    sJ ‚dS )zTag.string = 'string'z<a></a> <b><c></c></b>rX   rE   N)r   r,   r   ró   r   r   s     r   Útest_string_setz$TestTreeModification.test_string_setj  sZ   € à�yŠyÐ1Ñ2Ô2ˆØˆŒŒØŒvŒ 5 'Ò)Ð)Ð)Ð)ØˆŒŒØŒvŒ 5 'Ò)Ð)Ð)Ð)Ð)Ð)r   c                 óš   — |                       d¦  «        }|j        j        |j        _        |j                             ¦   «         dk    sJ ‚d S )Nz<a><b>foo</b><c>bar</c>s   <a><b>bar</b><c>bar</c></a>)r   r‰   r   r   r,   r­   r   s     r   Ú/test_string_set_does_not_affect_original_stringzDTestTreeModification.test_string_set_does_not_affect_original_stringr  sC   € Ø�yŠyÐ2Ñ3Ô3ˆØœœˆŒŒØŒv�}Š}‰ŒÐ"@Ò@Ð@Ð@Ð@Ð@Ð@r   c                 ó¨   — |                       d¦  «        }t          d¦  «        }||j        _        t	          |j        j        t          ¦  «        sJ ‚d S )Nr[   rX   )r   r   r,   r   rð  )r   r   Úcdatas      r   Ú)test_set_string_preserves_class_of_stringz>TestTreeModification.test_set_string_preserves_class_of_stringw  sG   € Ø�yŠy˜Ñ#Ô#ˆÝ�e‘”ˆØˆŒŒÝ˜$œ&œ-­Ñ/Ô/Ð/Ð/Ð/Ð/Ð/r   N);r8   r9   r:   r°  r·  r¼  rÍ  rÒ  rÖ  rÙ  rÛ  rà  râ  rí  rò  rø  rý  rÿ  r  r  r  r  r  r  r  rü   ÚmarkÚparametrizer!  r)  r+  r/  r7  r<  r>  r@  rF  rI  rM  rR  rX  rZ  r]  re  rh  rl  rn  rp  rv  r{  r  r�  r…  rŒ  r�  r‘  r“  r•  r˜  r<   r   r   r¬  r¬  Þ  sç  € € € € € ðGð Gð Gð
ð 
ð 
ð
ð 
ð 
ð"-ð -ð -ð&ð ð ðð ð ð#ð #ð #ð8ð 8ð 8ð(ð (ð (ð%ð %ð %ð
.ð 
.ð 
.ð.ð .ð .ð*(ð (ð (ð-ð -ð -ð/ð /ð /ð&8ð 8ð 8ð.ð .ð .ð-ð -ð -ð:%ð %ð %ð%ð %ð %ðTð Tð Tð.ð .ð .ð „[×Ò˜Z¨/¨/Ð;SÐ;SÐ)TÑUÔUðTð Tñ VÔUðTð „[×ÒØà'Ð'Ð):Ð;Ø!Ð!Ð#9Ð:ð	
ñô ðð ñô ðð?ð ?ð ?ð3ð 3ð 3ð0ð 0ð 0ð2
ð 
ð 
ð0ð 0ð 0ð0

ð 

ð 

ð	"ð 	"ð 	"ð	#ð 	#ð 	#ð.ð .ð .ð>ð >ð >ð8ð 8ð 8ð$1ð 1ð 1ð1ð 1ð 1ð#1ð #1ð #1ðJ@ð @ð @ðOð Oð OðOð Oð Oð

ð 
ð 
ð7ð 7ð 7ð2&ð &ð &ð >ð >ð >ð)ð )ð )ð
%ð %ð %ð „[×ÒØ%ð	
ð 	
ð 	
ñô ð2
0ð 
0ñ3ô ð2
0ð&ð &ð &ð Cð Cð Cð*ð *ð *ðAð Að Að
0ð 0ð 0ð 0ð 0r   r¬  )r   r)   r  r  rH  rE  ri  rf  r4   rB   r3   rA   c                   óV   — e Zd Zej                             de¦  «        d„ ¦   «         ZdS )ÚTestDeprecatedArgumentsr‰  c                 ó4  — |                       d¦  «        }t          |j        |¦  «        }t          j        d¬¦  «        5 } |d¬¦  «         |\  }|j        t          k    sJ ‚t          |j        ¦  «        }|dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú<a>some</a><b>markup</b>Tr\   rx  )r"   zOThe 'text' argument to find()-type methods is deprecated. Use 'string' instead.)	r   rˆ  r   r_   r`   ra   rb   r!   rc   ©r   r‰  r   Úmethodre   rf   rg   s          r   Útest_find_type_method_stringz4TestDeprecatedArguments.test_find_type_method_string�  sû   € à�yŠyÐ3Ñ4Ô4ˆÝ˜œ Ñ-Ô-ˆÝÔ$¨DÐ1Ñ1Ô1ð 	°QØˆF˜Ð!Ñ!Ô!Ð!Ø‰IˆWØÔ#¥xÒ/Ð/Ð/Ð/Ý�g”oÑ&Ô&ˆCàØdòeð eð eð eð eð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á ?BÂBÂBN)r8   r9   r:   rü   r™  rš  Úall_find_type_methodsr¡  r<   r   r   rœ  rœ  Ž  sB   € € € € € Ø„[×Ò˜]Ð,AÑBÔBðð ñ CÔBðð ð r   rœ  c                   óV   — e Zd Zej                             de¦  «        d„ ¦   «         ZdS )ÚTestWarningsr‰  c                 óh  — |                       d¦  «        }t          |j        |¦  «        }t          j        d¬¦  «        5 } |d¬¦  «         |\  }|j        t          k    sJ ‚t          |j        t          ¦  «        sJ ‚t          |j        ¦  «        }d|v sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrž  Tr\   Úu)Ú_classzN'_class' is an unusual attribute name and is a common misspelling for 'class_')r   rˆ  r   r_   r`   ra   rb   rð  rc   r   r!   rŸ  s          r   Útest_suspicious_syntax_warningz+TestWarnings.test_suspicious_syntax_warningŸ  s  € à�yŠyÐ3Ñ4Ô4ˆÝ˜œ Ñ-Ô-ˆÝÔ$¨DÐ1Ñ1Ô1ð 		°QØˆF˜#ÐÑÔÐØ‰IˆWØÔ#¥xÒ/Ð/Ð/Ð/Ý˜gœoÕ/PÑQÔQÐQÐQÐQÝ�g”oÑ&Ô&ˆCà`Øðð ð ð ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		s   Á AB'Â'B+Â.B+N)r8   r9   r:   rü   r™  rš  r¢  r¨  r<   r   r   r¤  r¤  ž  sB   € € € € € Ø„[×Ò˜]Ð,AÑBÔBðð ñ CÔBðð ð r   r¤  )$r;   rü   rH   r_   Úbs4r   Úbs4.builderr   Úbs4.elementr   r   r   r   r	   Ú
bs4.filterr
   rv  r   r   r>   rp   rw   r¥   rê   rø   r  r/  r3  rY  rt  rz  r–  r¬  r¢  rœ  r¤  r<   r   r   ú<module>r­     s  ððð ð €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð
%@ð %@ð %@ð %@ð %@ˆxñ %@ô %@ð %@ðPC)ð C)ð C)ð C)ð C)�(ñ C)ô C)ð C)ðL@ð @ð @ð @ð @ ñ @ô @ð @ðM ð M ð M ð M ð M ˜ñ M ô M ð M ð`k7ð k7ð k7ð k7ð k7˜Xñ k7ô k7ð k7ð\).ð ).ð ).ð ).ð ).�ñ ).ô ).ð ).ðXð ð ð ð �ñ ô ð ð(<?ð <?ð <?ð <?ð <?˜8ñ <?ô <?ð <?ð~
ð 
ð 
ð 
ð 
�Hñ 
ô 
ð 
ð)'ð )'ð )'ð )'ð )'˜ñ )'ô )'ð )'ðX$hð $hð $hð $hð $h˜]ñ $hô $hð $hðN&ð &ð &ð &ð &�(ñ &ô &ð &ð(,Bð ,Bð ,Bð ,Bð ,B�kñ ,Bô ,Bð ,Bð^.Fð .Fð .Fð .Fð .F˜+ñ .Fô .Fð .Fðb]
0ð ]
0ð ]
0ð ]
0ð ]
0˜8ñ ]
0ô ]
0ð ]
0ð@ð ð Ð ð ð ð ð ð ˜hñ ô ð ð ð ð ð ð �8ñ ô ð ð ð r   