Ë
    ò¦1h"×  ã                   óê  — 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#y),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	„ Zy
)ÚTestFindz&Basic tests of the find() method.
    c                 óf   — | j                  d«      }|j                  d«      j                  dk(  sJ ‚y )Nz <a>1</a><b>2</b><a>3</a><b>4</b>ÚbÚ2)ÚsoupÚfindÚstring©Úselfr   s     úQ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/bs4/tests/test_tree.pyÚtest_find_tagzTestFind.test_find_tag"   s-   € Ø�y‰yÐ;Ó<ˆØ�y‰y˜‹~×$Ñ$¨Ò+Ð+Ñ+ó    c                 óT   — | j                  d«      }|j                  d¬«      dk(  sJ ‚y )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&   s*   € Ø�y‰yÐ1Ó2ˆØ�y‰y ˆyÓ0°OÒCÐCÑCr   c                 ó~   — | j                  d«      }t        |«       d|j                  d¬«      j                  k(  sJ ‚y )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*   s7   € Ø�y‰yÐAÓBˆÜˆDŒ	Ø˜tŸy™y¨O˜yÓ<×AÑAÒAÐAÑAr   c                 ób   — | j                  d«      }dt        |j                  «       «      k(  sJ ‚y)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ˆØ”C˜Ÿ™›Ó(Ò(Ð(Ñ(r   c                 ód   — | j                  d«      }dt        |j                  d«      «      k(  sJ ‚y)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                 ó  — | j                  d«      }d|j                  «       j                  k(  sJ ‚d|j                  d«      j                  «       j                  k(  sJ ‚d|j                  d«      j	                  «       j                  k(  sJ ‚y )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   sv   € Ø�y‰yÐ-Ó.ˆØ˜Ÿ	™	›×(Ñ(Ò(Ð(Ð(Ø˜Ÿ	™	 #›×<Ñ<Ó>×CÑCÒCÐCÐCØ�d—i‘i Ó&×8Ñ8Ó:×?Ñ?Ò?Ð?Ñ?r   c                 ó  — | j                  d«      }d|j                  «       j                  k(  sJ ‚d|j                  d«      j                  «       j                  k(  sJ ‚d|j                  d«      j	                  «       j                  k(  sJ ‚y )Nú"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?   sv   € Ø�y‰yÐ=Ó>ˆØ˜Ÿ	™	›×(Ñ(Ò(Ð(Ð(Ø˜Ÿ	™	 #›×<Ñ<Ó>×CÑCÒCÐCÐCØ�d—i‘i Ó&×8Ñ8Ó:×?Ñ?Ò?Ð?Ñ?r   c                 ó–   — | j                  d«      }d|j                  d„ «      j                  k(  sJ ‚d |j                  d„ «      k(  sJ ‚y )Nr7   r0   c                 ó    — | j                   dk(  S )Nr0   ©r2   ©Úts    r   ú<lambda>zETestFind.test_find_with_function_can_only_find_tags.<locals>.<lambda>G   s   € ¨!¯&©&°#©+€ r   c                 ó   — | dk(  S )Nr"   © r<   s    r   r>   zETestFind.test_find_with_function_can_only_find_tags.<locals>.<lambda>H   s
   € ¨1¨f©9€ r   )r   r   r2   r   s     r   Ú*test_find_with_function_can_only_find_tagsz3TestFind.test_find_with_function_can_only_find_tagsE   sG   € Ø�y‰yÐ=Ó>ˆØ�d—i‘iÑ 5Ó6×;Ñ;Ò;Ð;Ð;Ø�t—y‘yÑ!4Ó5Ò5Ð5Ñ5r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r#   r*   r-   r5   r8   rA   r@   r   r   r   r      s3   „ ñò,òDòBò
)ò
,ò
@ò@ó6r   r   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestFindAllz%Basic tests of the find_all() method.c                 ó*  — | j                  d«      }dt        |j                  j                  «       «      k(  sJ ‚dt        |j	                  d«      j                  «       «      k(  sJ ‚dt        |j	                  d«      j                  «       «      k(  sJ ‚y )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_tagsM   sz   € Ø�y‰yÐJÓKˆØ”C˜Ÿ	™	×*Ñ*Ó,Ó-Ò-Ð-Ð-Ø”C˜Ÿ	™	 #›×=Ñ=Ó?Ó@Ò@Ð@Ð@Ø”C˜Ÿ	™	 %Ó(×;Ñ;Ó=Ó>Ò>Ð>Ñ>r   c                 ó  — | j                  d«      }|j                  d¬«      dgk(  sJ ‚|j                  ddg¬«      ddgk(  sJ ‚|j                  t        j                  d«      ¬«      g d¢k(  sJ ‚|j                  d¬«      g d¢k(  sJ ‚y)	z'You can search the tree for text nodes.u   <html>Foo<b>bar</b>Â»</html>Úbarr   ÚFooz.*)rO   rN   õ   Â»TN)r   r)   ÚreÚcompiler   s     r   Útest_find_all_text_nodesz$TestFindAll.test_find_all_text_nodesS   sŒ   € à�y‰yÐ9Ó:ˆà�}‰} Eˆ}Ó*¨u¨gÒ5Ð5Ð5ð �}‰} U¨E Nˆ}Ó3¸¸u°~ÒEÐEÐEà�}‰}¤B§J¡J¨tÓ$4ˆ}Ó5Ò9OÒOÐOÐOà�}‰} Dˆ}Ó)Ò-CÒCÐCÑCr   c                 óL  — | j                  d«      }| j                  |j                  dd¬«      g d¢«       | j                  |j                  dd¬«      dg«       | j                  |j                  dd¬«      g d	¢«       | j                  |j                  dd
¬«      g d	¢«       y)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   rX   é
   )rX   r   rY   Ú4Ú5r   N©r   Úassert_selectsr)   r   s     r   Útest_find_all_limitzTestFindAll.test_find_all_limit`   s‹   € à�y‰yÐCÓDˆØ×Ñ˜DŸM™M¨#°Q˜MÓ7ºÔIØ×Ñ˜DŸM™M¨#°Q˜MÓ7¸#¸Ô?Ø×Ñ˜DŸM™M¨#°R˜MÓ8Ò:SÔTð 	×Ñ˜DŸM™M¨#°Q˜MÓ7Ò9RÕSr   c                 ó¢   — | j                  d«      }| j                   |dd¬«      dg«       | j                  |j                  d¬«      dg«       y )	Nz!<a>1</a><b>2<a id='foo'>3</a></b>r,   r   rV   rX   Úfoor   rY   )r   r^   r   r   s     r   Ú%test_calling_a_tag_is_calling_findallz1TestFindAll.test_calling_a_tag_is_calling_findallj   sG   € Ø�y‰yÐ<Ó=ˆØ×Ñ™D ¨AÔ.°°Ô6Ø×Ñ˜DŸF™F e˜FÓ,¨s¨eÕ4r   c                 ó:  — | j                  d«      }g }|j                  |«       t        j                  d¬«      5 }g |j	                  |«      k(  sJ ‚|\  }|j
                  t        k(  sJ ‚t        |j                  «      }|dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)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_recursiono   s¡   € ð �y‰y˜Ó#ˆàˆØ�‰�wÔô ×$Ñ$¨DÔ1ð 	°QØ˜Ÿ™ wÓ/Ò/Ð/Ð/Ø‰IˆWØ×#Ñ#¤xÒ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØaòbðñb÷	÷ 	ñ 	ús   »ABÂBc                 óâ   — | j                  d«      }|j                  d«      }t        |d«      sJ ‚|j                  d«      }t        |d«      sJ ‚|j                  d¬«      }t        |d«      sJ ‚y)z%All find_all calls return a ResultSetrd   r,   ÚsourceTra   r   N)r   r)   Úhasattr©r   r   Úresults      r   Útest_find_all_resultsetz#TestFindAll.test_find_all_resultsetƒ   sl   € à�y‰y˜Ó#ˆØ—‘˜sÓ#ˆÜ�v˜xÔ(Ð(Ð(à—‘˜tÓ$ˆÜ�v˜xÔ(Ð(Ð(à—‘ e�Ó,ˆÜ�v˜xÔ(Ð(Ñ(r   N)
rB   rC   rD   rE   rL   rS   r_   rb   rq   rw   r@   r   r   rG   rG   J   s%   „ Ù/ò?òDòTò5ò
ó(
)r   rG   c                   ó   — e Zd Zd„ Zy)ÚTestFindAllBasicNamespacesc                 ó¬   — | j                  d«      }d|j                  d«      j                  k(  sJ ‚d|j                  ddi¬«      j                  k(  sJ ‚y )Nz0<mathml:msqrt>4</mathml:msqrt><a svg:fill="red">r[   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‘   sR   € Ø�y‰yÐKÓLˆØ�d—i‘i Ó/×6Ñ6Ò6Ð6Ð6Ø�d—i‘i z°5Ð&9�iÓ:×?Ñ?Ò?Ð?Ñ?r   N)rB   rC   rD   r~   r@   r   r   ry   ry   �   s   „ ó@r   ry   c                   óT   — 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y)ÚTestFindAllByNamez&Test ways of finding tags by tag name.Nc                 ó0   — | j                  d«      | _        y )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ˆ�	r   c                 ó^   — | j                  | j                  j                  d«      ddg«       y ©Nr,   ú
First tag.úNested tag.©r^   rƒ   r)   r„   s    r   Útest_find_all_by_tag_namez+TestFindAllByName.test_find_all_by_tag_nameŸ   s&   € à×Ñ˜DŸI™I×.Ñ.¨sÓ3°lÀMÐ5RÕSr   c                 óB  — | j                  | j                  j                  dd¬«      dg«       | j                  | j                  j                  dd¬«      ddg«       | j                  | j                  j                  dt        j                  d«      ¬«      ddg«       y )Nr,   rˆ   r   Tr‰   Útag©r^   rƒ   r)   rQ   rR   r„   s    r   Útest_find_all_by_name_and_textz0TestFindAllByName.test_find_all_by_name_and_text£   s‘   € Ø×ÑØ�I‰I×Ñ˜s¨<ÐÓ8¸<¸.ô	
ð 	×ÑØ�I‰I×Ñ˜s¨4ÐÓ0°<ÀÐ2Oô	
ð 	×ÑØ�I‰I×Ñ˜s¬2¯:©:°eÓ+<ÐÓ=Ø˜=Ð)õ	
r   c                 óp   — | j                  | j                  j                  j                  d«      dg«       y )Nr,   r‰   )r^   rƒ   Úcr)   r„   s    r   Ú!test_find_all_on_non_root_elementz3TestFindAllByName.test_find_all_on_non_root_element±   s'   € à×Ñ˜DŸI™IŸK™K×0Ñ0°Ó5¸°ÕGr   c                 óJ   — | j                  | j                  d«      ddg«       y r‡   )r^   rƒ   r„   s    r   Ú%test_calling_element_invokes_find_allz7TestFindAllByName.test_calling_element_invokes_find_allµ   s   € Ø×Ñ˜DŸI™I c›N¨\¸=Ð,IÕJr   c                 óp   — | j                  | j                  j                  t        d«      «      ddg«       y r‡   )r^   rƒ   r)   r
   r„   s    r   Útest_find_all_by_tag_strainerz/TestFindAllByName.test_find_all_by_tag_strainer¸   s.   € Ø×ÑØ�I‰I×Ñœ|¨CÓ0Ó1°LÀ-Ð3Põ	
r   c                 ób   — | j                  | j                  j                  ddg«      g d¢«       y )Nr,   r   ©rˆ   zSecond tag.r‰   rŠ   r„   s    r   Útest_find_all_by_tag_namesz,TestFindAllByName.test_find_all_by_tag_names½   s)   € Ø×ÑØ�I‰I×Ñ  S˜zÓ*Ò,Xõ	
r   c                 ód   — | j                  | j                  j                  dddœ«      g d¢«       y )NT)r,   r   r˜   rŠ   r„   s    r   Útest_find_all_by_tag_dictz+TestFindAllByName.test_find_all_by_tag_dictÂ   s*   € Ø×ÑØ�I‰I×Ñ T°Ñ5Ó6Ú8õ	
r   c                 ó„   — | j                  | j                  j                  t        j                  d«      «      g d¢«       y )Nz^[ab]$r˜   rŽ   r„   s    r   Útest_find_all_by_tag_rez)TestFindAllByName.test_find_all_by_tag_reÈ   s.   € Ø×ÑØ�I‰I×ÑœrŸz™z¨(Ó3Ó4Ú8õ	
r   c                 ór   — d„ }| j                  d«      }| j                  |j                  |«      ddg«       y )Nc                 ó>   — | j                   | 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‘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.r]   )r   r¢   rƒ   s      r   Ú'test_find_all_with_tags_matching_methodz9TestFindAllByName.test_find_all_with_tags_matching_methodÎ   s<   € ò	-ð �y‰yð 6ó 7ˆð 	×Ñ˜DŸM™M¨/Ó:¸ZÈÐ<TÕUr   c                 óJ  — | j                  d«      }|j                  dd«      }|j                  dt        j                  d«      «      }|j	                  dddg«      \  }}d|j
                  k(  sJ ‚d|j
                  k(  sJ ‚d|j
                  k(  sJ ‚d|j
                  k(  sJ ‚y )NzH<div class='a b'>1</div><div class='a c'>2</div><div class='a d'>3</div>r/   za dza brY   rX   )r   r   rQ   rR   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™j¨Ó0Ó1ˆØ—‘˜u u¨e nÓ5‰ˆˆBØ�b—i‘iÒÐÐØ�b—i‘iÒÐÐØ�b—i‘iÒÐÐØ�b—i‘iÒÐÑr   ©ÚreturnN)rB   rC   rD   rE   r…   r‹   r�   r’   r”   r–   r™   r›   r�   r£   r©   r@   r   r   r€   r€   —   sA   „ Ù0óKò
Tò
òHòKò
ò

ò

ò
ò
Vó
 r   r€   c                   ól   — 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y)ÚTestFindAllByAttributec                 ón   — | j                  d«      }| j                  |j                  d¬«      ddg«       y )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.r]   ©r   rƒ   s     r   Útest_find_all_by_attribute_namez6TestFindAllByAttribute.test_find_all_by_attribute_nameè   s9   € ð �y‰yð !ó "ˆð
 	×Ñ˜DŸM™M¨W˜MÓ5¸À}Ð7UÕVr   c                 ó\  — dj                  d«      }dj                  d«      }| j                  |«      }|j                  g|j                  |¬«      k(  sJ ‚|j                  g|j                  |j	                  d«      ¬«      k(  sJ ‚|j                  gsJ |j                  |dg¬«      «       ‚y )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ˆØ�y‰y˜‹ˆØ—‘ˆx˜4Ÿ=™=¨u˜=Ó5Ò5Ð5Ð5Ø—‘ˆx˜4Ÿ=™=¨u¯|©|¸FÓ/C˜=ÓDÒDÐDÐDØ—‘‰xÐG˜Ÿ™¨eÐ5EÐ-F˜ÓGÓG‰xr   c                 ó   — | j                  d«      }| j                  |j                  d¬«      dg«       | j                  |j                  ddi¬«      dg«       | j                  |j                  dd	i¬«      d
g«       y )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>
                         Úname1r;   zA tag called 'name1'.r2   r|   zName match.ÚclassÚclass2zClass match.r]   r°   s     r   Útest_find_all_by_attribute_dictz6TestFindAllByAttribute.test_find_all_by_attribute_dictú   s}   € ð �y‰yð ó ˆð 	×Ñ˜DŸM™M¨w˜MÓ7Ð:QÐ9RÔSà×Ñ˜DŸM™M°¸Ð0A˜MÓBÀ]ÀOÔTà×Ñ˜DŸM™M°¸(Ð0C˜MÓDÀ~ÐFVÕWr   c                 ó  — | j                  d«      }| j                  |j                  dd¬«      dg«       | j                  |j                  dd¬«      dg«       | j                  |j                  dd	¬«      dg«       | j                  |j                  dd«      dg«       | j                  |j                  d¬
«      ddg«       | j                  |j                  dd«      dg«       | j                  |j                  dd	«      dg«       y )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,   rX   ©Úclass_zClass 1.r‘   rY   zClass 3 and 4.r[   r|   r]   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Ø×Ñ˜DŸM™M¨#°c˜MÓ:Ð=MÐ<NÔOØ×Ñ˜DŸM™M¨#°c˜MÓ:Ð=MÐ<NÔOð 	×Ñ˜DŸM™M¨#¨sÓ3°j°\ÔBØ×Ñ˜DŸM™M°˜MÓ4°zÀ:Ð6NÔOØ×Ñ˜DŸM™M¨#¨sÓ3Ð6FÐ5GÔHØ×Ñ˜DŸM™M¨#¨sÓ3Ð6FÐ5GÕHr   c                 ó|  — | j                  d«      }|j                  dt        j                  d«      ¬«      }| j	                  |dg«       |j                  dt        j                  d«      ¬«      }| j	                  |dg«       |j                  dt        j                  d«      ¬«      }| j	                  |dg«       y )Nz#<gar class='foo bar'>Found it</gar>ÚgarÚorÀ   úFound itr,   zo b)r   r)   rQ   rR   r^   )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ˆØ×Ñ˜A 
˜|Ô,à�M‰M˜%¬¯
©
°3«ˆMÓ8ˆØ×Ñ˜A 
˜|Ô,ð �M‰M˜%¬¯
©
°5Ó(9ˆMÓ:ˆØ×Ñ˜A 
˜|Õ,r   c                 ó(  — | j                  d«      }| j                  |j                  dt        j                  d«      «      dg«       d„ }| j                  |j                  d|«      g «       d„ }| j                  |j                  d|«      dg«       y )Nz<a class='bar'>Found it</a>r,   ÚbarÆ   c                 ó   — t        | «      dkD  S ©NrU   ©r(   ©Úvalues    r   Úbig_attribute_valueznTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.big_attribute_value3  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_value8  s   € Ü�u“: ‘?Ð"r   ©r   r^   r)   rQ   rR   )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ˆà×Ñ˜DŸM™M¨#¬r¯z©z¸$Ó/?Ó@À:À,ÔOò	"ð 	×Ñ˜DŸM™M¨#Ð/BÓCÀRÔHò	#ð 	×Ñ˜DŸM™M¨#Ð/DÓEÈ
À|ÕTr   c                 óH  — | j                  d«      }|j                  d«      \  }}||gsJ |j                  dd«      «       ‚|gsJ |j                  dd«      «       ‚|g|j                  dd¬«      k(  sJ ‚|g|j                  dd«      k(  sJ ‚g |j                  dd«      k(  sJ ‚y )Nz*<a class="foo bar"></a><a class="foo"></a>r,   ra   rN   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_classes=  s¬   € Ø�y‰yÐEÓFˆØ—‘˜cÓ"‰ˆˆ2Ø�2‰wÐ1˜Ÿ™ c¨5Ó1Ó1ˆwØ‰sÐ-�D—M‘M # uÓ-Ó-ˆsð ˆs�d—m‘m C°	�mÓ:Ò:Ð:Ð:Øˆs�d—m‘m C¨Ó3Ò3Ð3Ð3Ø�T—]‘] 3¨	Ó2Ò2Ð2Ñ2r   c                 ó†   — | j                  d«      }t        ddi¬«      }| j                  |j                  |«      dg«       y )Nzi
                         <a id="first">Match.</a>
                         <a id="second">Non-match.</a>r    r¯   r|   zMatch.)r   r
   r^   r)   )r   rƒ   Ústrainers      r   Ú'test_find_all_by_attribute_soupstrainerz>TestFindAllByAttribute.test_find_all_by_attribute_soupstrainerI  s@   € Ø�y‰yð :ó ;ˆô   t¨W oÔ6ˆØ×Ñ˜DŸM™M¨(Ó3°h°ZÕ@r   c                 ón   — | j                  d«      }| j                  |j                  dd ¬«      dg«       y )Nú�<a id="1">ID present.</a>
                            <a>No ID present.</a>
                            <a id="">ID is empty.</a>r,   r   zNo ID present.r]   r°   s     r   Ú$test_find_all_with_missing_attributez;TestFindAllByAttribute.test_find_all_with_missing_attributeQ  s:   € ð �y‰yð 9ó :ˆð 	×Ñ˜DŸM™M¨#°$˜MÓ7Ð:JÐ9KÕLr   c                 ón   — | j                  d«      }| j                  |j                  d¬«      ddg«       y )NrÝ   Tr   zID present.zID is empty.r]   r°   s     r   Ú$test_find_all_with_defined_attributez;TestFindAllByAttribute.test_find_all_with_defined_attributeY  s9   € ð �y‰yð 9ó :ˆð 	×Ñ˜DŸM™M¨T˜MÓ2°]ÀNÐ4SÕTr   c                 ó¶   — | j                  d«      }ddg}| j                  |j                  d¬«      |«       | j                  |j                  d¬«      |«       y )Nz[<a id=1>Unquoted attribute.</a>
                            <a id="1">Quoted attribute.</a>zUnquoted attribute.zQuoted attribute.r   r   rX   r]   )r   rƒ   Úexpecteds      r   Ú$test_find_all_with_numeric_attributez;TestFindAllByAttribute.test_find_all_with_numeric_attributea  sY   € à�y‰yð ?ó @ˆð *Ð+>Ð?ˆØ×Ñ˜DŸM™M¨Q˜MÓ/°Ô:Ø×Ñ˜DŸM™M¨S˜MÓ1°8Õ<r   c                 ó¶   — | j                  d«      }| j                  |j                  g d¢¬«      ddg«       | j                  |j                  g ¬«      g «       y )Nz‘<a id="1">1</a>
                            <a id="2">2</a>
                            <a id="3">3</a>
                            <a>No ID.</a>)rX   rY   r[   r   rX   rY   r]   r°   s     r   Ú(test_find_all_with_list_attribute_valuesz?TestFindAllByAttribute.test_find_all_with_list_attribute_valuesj  sU   € ð �y‰yð -ó .ˆð 	×Ñ˜DŸM™Mª_˜MÓ=ÀÀS¸zÔJð 	×Ñ˜DŸM™M¨R˜MÓ0°"Õ5r   c                 ó”   — | j                  d«      }| j                  |j                  t        j                  d«      ¬«      ddg«       y )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_valuev  sB   € ð �y‰yð -ó .ˆð 	×Ñ˜DŸM™M¬R¯Z©Z¸Ó-?˜MÓ@À8ÈYÐBWÕXr   c                 ó    — | j                  d«      }|j                  }|g|j                  dd¬«      k(  sJ ‚g |j                  dd¬«      k(  sJ ‚y )Nz<b>foo</b><b>bar</b><a>foo</a>r,   ra   r   rN   ©r   r,   r)   ©r   r   r,   s      r   Ú'test_find_by_name_and_containing_stringz>TestFindAllByAttribute.test_find_by_name_and_containing_string‚  sR   € Ø�y‰yÐ9Ó:ˆØ�F‰Fˆàˆs�d—m‘m C°�mÓ6Ò6Ð6Ð6Ø�T—]‘] 3¨u�]Ó5Ò5Ð5Ñ5r   c                 ót   — | j                  d«      }|j                  d«      |j                  dd¬«      k(  sJ ‚y )Nz"<a>foo</a><a><b><c>foo</c></b></a>r,   ra   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‰  s5   € Ø�y‰yÐ=Ó>ˆØ�}‰}˜SÓ! T§]¡]°3¸u ]Ó%EÒEÐEÑEr   c                 ó    — | j                  d«      }|j                  }|g|j                  dd¬«      k(  sJ ‚g |j                  dd¬«      k(  sJ ‚y )Nz"<b id="1">foo</b><a id="2">foo</a>r&   ra   )r    r   r   rN   ré   rê   s      r   Ú,test_find_by_attribute_and_containing_stringzCTestFindAllByAttribute.test_find_by_attribute_and_containing_string�  sR   € Ø�y‰yÐ=Ó>ˆØ�F‰Fˆàˆs�d—m‘m q°�mÓ7Ò7Ð7Ð7Ø�T—]‘] a°�]Ó6Ò6Ð6Ñ6r   N)rB   rC   rD   r±   r¹   r¾   rÂ   rÈ   rÔ   rØ   rÛ   rÞ   rà   rã   rå   rç   rë   rí   rï   r@   r   r   r­   r­   ç   s\   „ òWòHòXò$Iò(-òUò
3òAòMòUò=ò
6ò
Yò6òFó7r   r­   c                   ó   — e Zd ZdZd„ Zy)Ú
TestSmoothzTest Tag.smooth.c                 ó  — | j                  d«      }|j                  }|j                  d«       |j                  d«       |j                  t        d«      «       |j                  t        d«      «       |j                  d«       | j	                  «       }t        ||d«      }|j                  d«       |j                  d	«       |j                  |«       d |j                  j                  u sJ ‚d
t        |j                  «      k(  sJ ‚|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 ‚y )Nz<div>a</div>r   r‘   z	Comment 1z	Comment 2ÚdÚspanrX   r   é   é   Úabcr   Ú12r   r&   )r   r/   rg   r   Údefault_builderr	   rô   r   r(   ÚcontentsÚsmooth)r   r   r/   Úbuilderrô   s        r   Útest_smoothzTestSmooth.test_smooth˜  sI  € Ø�y‰y˜Ó(ˆØ�h‰hˆØ�
‰
�3ŒØ�
‰
�3ŒØ�
‰
”7˜;Ó'Ô(Ø�
‰
”7˜;Ó'Ô(Ø�
‰
�3ŒØ×&Ñ&Ó(ˆÜ�4˜ &Ó)ˆØ�‰�CÔØ�‰�CÔØ�
‰
�4Ôð �s—x‘x—‘Ñ&Ð&Ð&à”C˜Ÿ™Ó%Ò%Ð%Ð%Ø�
‰
ŒØ”C˜Ÿ™Ó%Ò%Ð%Ð%ð
 ˜Ÿ™ Q™Ò'Ð'Ð'ð �s—x‘x—‘Ò&Ð&Ð&ð
 ˜cŸl™l¨1™oÒ-Ð-Ð-Ø˜cŸl™l¨1™oÒ-Ð-Ñ-r   N)rB   rC   rD   rE   rý   r@   r   r   rñ   rñ   •  s
   „ Ùó&.r   rñ   c                   ó   — e Zd ZdZd„ Zy)Ú	TestIndexzTest Tag.indexc                 ó"  — | j                  d«      }|j                  }t        |j                  «      D ]  \  }}||j	                  |«      k(  rŒJ ‚ t        j                  t        «      5  |j	                  d«       d d d «       y # 1 sw Y   y xY w)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‰hˆÜ# C§L¡LÓ1ò 	+‰JˆAˆwØ˜Ÿ	™	 'Ó*Ó*Ð*Ð*ð	+ä�]‰]œ:Ó&ñ 	Ø�J‰J�qŒM÷	÷ 	ñ 	ús   Á*BÂBN)rB   rC   rD   rE   r  r@   r   r   rÿ   rÿ   Á  s
   „ Ùór   rÿ   c                   óN   — 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y)ÚTestParentOperationsz;Test navigation and searching through an element's parents.Nc                 óf   — | j                  d«      | _        | j                  j                  | _        y )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‘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 ‚y )Nr    ÚbottomÚmiddleÚtop)r  Úparentr„   s    r   Útest_parentz TestParentOperations.test_parentâ  sk   € Ø�z‰z× Ñ  Ñ&¨(Ò2Ð2Ð2Ø�z‰z× Ñ ×'Ñ'¨Ñ-°Ò9Ð9Ð9Ø�z‰z× Ñ ×'Ñ'×.Ñ.¨tÑ4¸Ò=Ð=Ñ=r   c                 ól   — | j                   j                  d   }|j                  | j                   k(  sJ ‚y )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                 ó8   — d | j                   j                  u sJ ‚y ©N)rƒ   r  r„   s    r   Útest_soup_object_has_no_parentz3TestParentOperations.test_soup_object_has_no_parentë  s   € Ø�t—y‘y×'Ñ'Ñ'Ð'Ñ'r   c                 óü   — | j                  | j                  j                  d«      g d¢«       | j                  | j                  j                  dd¬«      dg«       | j                  j                  d¬«      g k(  sJ ‚y )NÚul©r  r  r  r  r   r  )Úassert_selects_idsr  Úfind_parentsr„   s    r   Útest_find_parentsz&TestParentOperations.test_find_parentsî  sm   € Ø×ÑØ�J‰J×#Ñ# DÓ)Ò+Fô	
ð 	×Ñ §
¡
× 7Ñ 7¸ÀÐ 7Ó JÈXÈJÔWØ�z‰z×&Ñ&¨'Ð&Ó2°bÒ8Ð8Ñ8r   c                 óŠ   — | j                   j                  dd¬«      d   dk(  sJ ‚| j                   j                  d¬«      �J ‚y )Nr  r  r   r    r  )r  Úfind_parentr„   s    r   Útest_find_parentz%TestParentOperations.test_find_parentõ  sG   € à�z‰z×%Ñ% d¨uÐ%Ó5°dÑ;¸uÒDÐDÐDà�z‰z×%Ñ%¨Ð%Ó1Ð9Ð9Ñ9r   c                 ór   — | j                   j                  d¬«      }|j                  j                  dk(  sJ ‚y )Nú
Start herer   r   )rƒ   r   r  r2   ©r   r"   s     r   Útest_parent_of_text_elementz0TestParentOperations.test_parent_of_text_elementû  s.   € Ø�y‰y�~‰~ \ˆ~Ó2ˆØ�{‰{×Ñ 3Ò&Ð&Ñ&r   c                 ón   — | j                   j                  d¬«      }|j                  d«      d   dk(  sJ ‚y )Nr#  r   r  r    r  )rƒ   r   r   r$  s     r   Útest_text_element_find_parentz2TestParentOperations.test_text_element_find_parentÿ  s4   € Ø�y‰y�~‰~ \ˆ~Ó2ˆØ×Ñ Ó% dÑ+¨xÒ7Ð7Ñ7r   c                 óŒ   — | j                   j                  D �cg c]  }|�d|j                  v r|d   ‘Œ }}|g d¢k(  sJ ‚y c c}w )Nr    r  )r  Úparentsr}   )r   r  r)  s      r   Útest_parent_generatorz*TestParentOperations.test_parent_generator  sV   € ð Ÿ*™*×,Ñ,ö
àØÐ! d¨f¯l©lÑ&:ð �4‹Lð
ˆð 
ð
 Ò5Ò5Ð5Ñ5ùò
ó   ™Ac                 óŒ   — | j                   j                  D �cg c]  }|�d|j                  v r|d   ‘Œ }}|g d¢k(  sJ ‚y c c}w )Nr    )r  r  r  r  )r  Úself_and_parentsr}   )r   r  Úresultss      r   Útest_self_and_parent_generatorz3TestParentOperations.test_self_and_parent_generator  sV   € ð Ÿ*™*×5Ñ5ö
àØÐ! d¨f¯l©lÑ&:ð �4‹Lð
ˆð 
ð
 Ò>Ò>Ð>Ñ>ùò
r+  rª   )rB   rC   rD   rE   r…   r  r  r  r  r!  r%  r'  r*  r/  r@   r   r   r
  r
  Õ  s7   „ ÙEó!ò>ò
+ò(ò9ò:ò'ò8ò6ó?r   r
  c                   ó   — e Zd Zdd„Zy)ÚProximityTestNc                 ó0   — | j                  d«      | _        y )Nz�<html id="start"><head id="headtag"></head><body id="bodytag"><b id="1">One</b><b id="2">Two</b><b id="3">Three</b></body></html>r‚   r„   s    r   r…   zProximityTest.setup_method  s   € Ø—I‘Ið Pó
ˆ�	r   rª   ©rB   rC   rD   r…   r@   r   r   r1  r1    s   „ ô
r   r1  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 )
ÚTestNextOperationsc                 ó`   •— t         t        | �  «        | j                  j                  | _        y r  )Úsuperr5  r…   rƒ   r   r  ©r   Ú	__class__s    €r   r…   zTestNextOperations.setup_method  s    ø€ ÜÔ  $Ñ4Ô6Ø—Y‘Y—[‘[ˆ�
r   c                 óŠ   — | j                   j                  dk(  sJ ‚| j                   j                  j                  d   dk(  sJ ‚y )NÚOner    r   )r  Únext_elementr„   s    r   Ú	test_nextzTestNextOperations.test_next   s=   € Ø�z‰z×&Ñ&¨%Ò/Ð/Ð/Ø�z‰z×&Ñ&×3Ñ3°DÑ9¸SÒ@Ð@Ñ@r   c                 óX   — | j                   j                  d¬«      }|j                  �J ‚y ©NÚThreer   )rƒ   r   r<  )r   Úlasts     r   Útest_next_of_last_item_is_nonez1TestNextOperations.test_next_of_last_item_is_none$  s(   € Ø�y‰y�~‰~ Wˆ~Ó-ˆØ× Ñ Ð(Ð(Ñ(r   c                 ó4   — | j                   j                  �J ‚y r  )rƒ   r<  r„   s    r   Útest_next_of_root_is_nonez,TestNextOperations.test_next_of_root_is_none(  s   € à�y‰y×%Ñ%Ð-Ð-Ñ-r   c                 óð   — | j                  | j                  j                  d«      ddg«       | j                  j                  d¬«       | j                  | j                  j                  d¬«      dg«       y )Nr   ÚTwor@  rU   r   )r^   r  Úfind_all_nextr„   s    r   Útest_find_all_nextz%TestNextOperations.test_find_all_next,  s_   € Ø×Ñ˜DŸJ™J×4Ñ4°SÓ9¸EÀ7Ð;KÔLØ�
‰
× Ñ  AÐ Ô&Ø×Ñ˜DŸJ™J×4Ñ4¸Ð4Ó:¸W¸IÕFr   c                 óŒ   — | j                   j                  d«      d   dk(  sJ ‚| j                   j                  d¬«      dk(  sJ ‚y )Nr   r    r   r@  r   )r  Ú	find_nextr„   s    r   Útest_find_nextz!TestNextOperations.test_find_next1  sD   € Ø�z‰z×#Ñ# CÓ(¨Ñ.°#Ò5Ð5Ð5Ø�z‰z×#Ñ#¨7Ð#Ó3°wÒ>Ð>Ñ>r   c                 óÂ   — | j                   j                  d¬«      }|j                  d«      j                  dk(  sJ ‚| j	                  |j                  d«      ddg«       y )Nr;  r   r   rF  r@  )rƒ   r   rJ  r   r^   rG  r$  s     r   Útest_find_next_for_text_elementz2TestNextOperations.test_find_next_for_text_element5  sS   € Ø�y‰y�~‰~ Uˆ~Ó+ˆØ�~‰~˜cÓ"×)Ñ)¨UÒ2Ð2Ð2Ø×Ñ˜D×.Ñ.¨sÓ3°e¸WÐ5EÕFr   c                 ó  — | j                   j                  d¬«      }|j                  D �cg c]  }|‘Œ }}|\  }}|d   dk(  sJ ‚|dk(  sJ ‚|j                  D �cg c]  }|‘Œ }}|dd  |k(  sJ ‚|d   |k(  sJ ‚y c c}w c c}w )NrF  r   r    rY   r@  r   r   )rƒ   r   Únext_elementsÚself_and_next_elements)r   r  ÚnodeÚ
successorsr�   rú   Úsuccessors2s          r   Útest_next_generatorsz'TestNextOperations.test_next_generators:  s¢   € Ø—	‘	—‘ e�Ó,ˆØ',×':Ñ':Ö;˜t’dÐ;ˆ
Ð;à"‰ˆˆXØ�4‰y˜CÒÐÐØ˜7Ò"Ð"Ð"à(-×(DÑ(DÖE ’tÐEˆÐEØ˜1˜2ˆ *Ò,Ð,Ð,Ø˜1‰~ Ò&Ð&Ñ&ùò <ùò Fs   «	A:Á	A?rª   )rB   rC   rD   r…   r=  rB  rD  rH  rK  rM  rT  Ú__classcell__©r9  s   @r   r5  r5    s.   ø„ õ!òAò)ò.òGò
?òGö

'r   r5  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 )
ÚTestPreviousOperationsc                 ól   •— t         t        | �  «        | j                  j	                  d¬«      | _        y r?  )r7  rX  r…   rƒ   r   Úendr8  s    €r   r…   z#TestPreviousOperations.setup_methodH  s'   ø€ ÜÔ$ dÑ8Ô:Ø—9‘9—>‘>¨�>Ó1ˆ�r   c                 óŠ   — | j                   j                  d   dk(  sJ ‚| j                   j                  j                  dk(  sJ ‚y )Nr    rY   rF  )rZ  Úprevious_elementr„   s    r   Útest_previousz$TestPreviousOperations.test_previousL  s=   € Ø�x‰x×(Ñ(¨Ñ.°#Ò5Ð5Ð5Ø�x‰x×(Ñ(×9Ñ9¸UÒBÐBÑBr   c                 óV   — | j                   j                  d«      }|j                  �J ‚y )NÚhtml)rƒ   r   r\  )r   r¯   s     r   Ú#test_previous_of_first_item_is_nonez:TestPreviousOperations.test_previous_of_first_item_is_noneP  s&   € Ø—	‘	—‘˜vÓ&ˆØ×%Ñ%Ð-Ð-Ñ-r   c                 ó4   — | j                   j                  �J ‚y r  )rƒ   r\  r„   s    r   Útest_previous_of_root_is_nonez4TestPreviousOperations.test_previous_of_root_is_noneT  s   € à�y‰y×)Ñ)Ð1Ð1Ñ1r   c                 ó¸   — | j                  | j                  j                  d«      g d¢«       | j                  | j                  j                  d¬«      dg«       y )Nr   ©r@  rF  r;  r   r   r;  )r^   rZ  Úfind_all_previousr„   s    r   Útest_find_all_previousz-TestPreviousOperations.test_find_all_previousX  sH   € ð 	×Ñ˜DŸH™H×6Ñ6°sÓ;Ò=TÔUØ×Ñ˜DŸH™H×6Ñ6¸!Ð6Ó<¸u¸gÕFr   c                 óŒ   — | j                   j                  d«      d   dk(  sJ ‚| j                   j                  d¬«      dk(  sJ ‚y )Nr   r    rY   r;  r   )rZ  Úfind_previousr„   s    r   Útest_find_previousz)TestPreviousOperations.test_find_previous_  sD   € Ø�x‰x×%Ñ% cÓ*¨4Ñ0°CÒ7Ð7Ð7Ø�x‰x×%Ñ%¨UÐ%Ó3°uÒ<Ð<Ñ<r   c                 óÂ   — | j                   j                  d¬«      }|j                  d«      j                  dk(  sJ ‚| j	                  |j                  d«      g d¢«       y )Nr@  r   r   rd  )rƒ   r   rh  r   r^   re  r$  s     r   Ú#test_find_previous_for_text_elementz:TestPreviousOperations.test_find_previous_for_text_elementc  sQ   € Ø�y‰y�~‰~ Wˆ~Ó-ˆØ×!Ñ! #Ó&×-Ñ-°Ò8Ð8Ð8Ø×Ñ˜D×2Ñ2°3Ó7Ò9PÕQr   c                 ó¶   — | j                   j                  dd¬«      }| j                  |j                  g d¢«       | j                  |j                  g d¢«       y )Nr   r;  r   )ÚbodytagÚheadtagr  )rX   rm  rn  r  )rƒ   r   r  Úprevious_elementsÚself_and_previous_elements)r   r  s     r   Útest_previous_generatorsz/TestPreviousOperations.test_previous_generatorsh  sF   € Ø—	‘	—‘˜s¨5�Ó1ˆØ×Ñ × 7Ñ 7Ò9XÔYØ×Ñ × @Ñ @ÒBfÕgr   rª   )rB   rC   rD   r…   r]  r`  rb  rf  ri  rk  rq  rU  rV  s   @r   rX  rX  G  s/   ø„ õ2òCò.ò2òGò=òRö
hr   rX  c                   ó   — e Zd Zdd„Zy)ÚSiblingTestNc                 ó~   — d}t        j                  d«      j                  d|«      }| j                  |«      | _        y )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*Ú )rQ   rR   Úsubr   rƒ   )r   Úmarkups     r   r…   zSiblingTest.setup_methodo  s6   € ðˆô —‘˜HÓ%×)Ñ)¨"¨fÓ5ˆØ—I‘I˜fÓ%ˆ�	r   rª   r3  r@   r   r   rs  rs  n  s   „ ô&r   rs  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 )
ÚTestNextSiblingc                 ól   •— t         t        | �  «        | j                  j	                  d¬«      | _        y )NrX   r   )r7  ry  r…   rƒ   r   r  r8  s    €r   r…   zTestNextSibling.setup_methodƒ  s&   ø€ ÜŒo˜tÑ1Ô3Ø—Y‘Y—^‘^ s�^Ó+ˆ�
r   c                 ó4   — | j                   j                  �J ‚y r  )rƒ   Únext_siblingr„   s    r   Ú!test_next_sibling_of_root_is_nonez1TestNextSibling.test_next_sibling_of_root_is_none‡  s   € Ø�y‰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 ‚y )Nr    r   rY   ú1.1)r  r|  r<  r„   s    r   Útest_next_siblingz!TestNextSibling.test_next_siblingŠ  sa   € Ø�z‰z×&Ñ& tÑ,°Ò3Ð3Ð3Ø�z‰z×&Ñ&×3Ñ3°DÑ9¸SÒ@Ð@Ð@ð �z‰z×&Ñ& tÑ,°Ò5Ð5Ñ5r   c                 óð   — | j                   j                  j                  �J ‚| j                   j                  d¬«      }|j                  �J ‚| j                   j                  d¬«      }|j                  �J ‚y )Nr  r   r[   )rƒ   r_  r|  r   )r   Únested_spanÚ	last_spans      r   Útest_next_sibling_may_not_existz/TestNextSibling.test_next_sibling_may_not_exist‘  sh   € Ø�y‰y�~‰~×*Ñ*Ð2Ð2Ð2à—i‘i—n‘n¨�nÓ.ˆØ×'Ñ'Ð/Ð/Ð/à—I‘I—N‘N c�NÓ*ˆ	Ø×%Ñ%Ð-Ð-Ñ-r   c                 óJ   — | j                   j                  d«      d   dk(  sJ ‚y )Nrô   r    r   )r  r4   r„   s    r   Útest_find_next_siblingz&TestNextSibling.test_find_next_siblingš  s$   € Ø�z‰z×+Ñ+¨FÓ3°DÑ9¸SÒ@Ð@Ñ@r   c                 ó¸   — | j                  | j                  j                  d«      g d¢«       | j                  | j                  j                  d¬«      dg«       y )Nrô   ©r   rY   r[   rY   r   )r  r  rK   r„   s    r   Útest_next_siblingsz"TestNextSibling.test_next_siblings�  sE   € Ø×Ñ §
¡
× =Ñ =¸fÓ EÂÔWà×Ñ §
¡
× =Ñ =ÀÐ =Ó EÈÀuÕMr   c                 ó¤   — | j                  | j                  j                  g d¢«       | j                  | j                  j                  g d¢«       y )Nrˆ  )rX   r   rY   r[   )r  r  Únext_siblingsÚself_and_next_siblingsr„   s    r   Útest_next_siblings_generatorsz-TestNextSibling.test_next_siblings_generators¢  s7   € Ø×Ñ §
¡
× 8Ñ 8º/ÔJØ×Ñ §
¡
× AÑ AÒCWÕXr   c                 óP  — | j                  d«      }|j                  d¬«      }|j                  j                  dk(  sJ ‚|j                  j                  dk(  sJ ‚| j	                  |j                  d«      dg«       |j                  d¬«      dk(  sJ ‚|j                  d¬«      �J ‚y )NúFoo<b>bar</b>bazrO   r   r   ÚbazrN   Únonesuch)r   r   r|  r2   r^   rK   r4   ©r   r   r  s      r   Ú"test_next_sibling_for_text_elementz2TestNextSibling.test_next_sibling_for_text_element¦  s¨   € Ø�y‰yÐ+Ó,ˆØ—	‘	 �	Ó'ˆØ×!Ñ!×&Ñ&¨#Ò-Ð-Ð-Ø×!Ñ!×.Ñ.°%Ò7Ð7Ð7à×Ñ˜E×4Ñ4°SÓ9¸E¸7ÔCØ×&Ñ&¨eÐ&Ó4¸Ò=Ð=Ð=Ø×&Ñ&¨jÐ&Ó9ÐAÐAÑAr   rª   )rB   rC   rD   r…   r}  r€  r„  r†  r‰  r�  r“  rU  rV  s   @r   ry  ry  ‚  s/   ø„ õ,ò.ò6ò.òAòNò
YöBr   ry  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 )
ÚTestPreviousSiblingc                 ól   •— t         t        | �  «        | j                  j	                  d¬«      | _        y )Nr[   r   )r7  r•  r…   rƒ   r   rZ  r8  s    €r   r…   z TestPreviousSibling.setup_method²  s'   ø€ ÜÔ! 4Ñ5Ô7Ø—9‘9—>‘> S�>Ó)ˆ�r   c                 ó4   — | j                   j                  �J ‚y r  )rƒ   Úprevious_siblingr„   s    r   Ú%test_previous_sibling_of_root_is_nonez9TestPreviousSibling.test_previous_sibling_of_root_is_none¶  s   € Ø�y‰y×)Ñ)Ð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 ‚y )Nr    rY   r   z3.1)rZ  r˜  r\  r„   s    r   Útest_previous_siblingz)TestPreviousSibling.test_previous_sibling¹  sa   € Ø�x‰x×(Ñ(¨Ñ.°#Ò5Ð5Ð5Ø�x‰x×(Ñ(×9Ñ9¸$Ñ?À3ÒFÐFÐFð �x‰x×(Ñ(¨Ñ.°%Ò7Ð7Ñ7r   c                 óð   — | j                   j                  j                  �J ‚| j                   j                  d¬«      }|j                  �J ‚| j                   j                  d¬«      }|j                  �J ‚y )Nr  r   rX   )rƒ   r_  r˜  r   )r   r‚  Ú
first_spans      r   Ú#test_previous_sibling_may_not_existz7TestPreviousSibling.test_previous_sibling_may_not_existÀ  sh   € Ø�y‰y�~‰~×.Ñ.Ð6Ð6Ð6à—i‘i—n‘n¨�nÓ.ˆØ×+Ñ+Ð3Ð3Ð3à—Y‘Y—^‘^ s�^Ó+ˆ
Ø×*Ñ*Ð2Ð2Ñ2r   c                 óJ   — | j                   j                  d«      d   dk(  sJ ‚y )Nrô   r    rY   )rZ  r3   r„   s    r   Útest_find_previous_siblingz.TestPreviousSibling.test_find_previous_siblingÉ  s$   € Ø�x‰x×-Ñ-¨fÓ5°dÑ;¸sÒBÐBÑBr   c                 ó¸   — | j                  | j                  j                  d«      g d¢«       | j                  | j                  j                  d¬«      dg«       y )Nrô   ©rY   r   rX   rX   r   )r  rZ  rJ   r„   s    r   Útest_previous_siblingsz*TestPreviousSibling.test_previous_siblingsÌ  sJ   € Ø×ÑØ�H‰H×+Ñ+¨FÓ3²_ô	
ð 	×Ñ §¡× ?Ñ ?À3Ð ?Ó GÈ#ÈÕOr   c                 ó¤   — | j                  | j                  j                  g d¢«       | j                  | j                  j                  g d¢«       y )Nr¢  )r[   rY   r   rX   )r  rZ  Úprevious_siblingsÚself_and_previous_siblingsr„   s    r   Ú!test_previous_siblings_generatorsz5TestPreviousSibling.test_previous_siblings_generatorsÓ  s7   € Ø×Ñ §¡× :Ñ :ºOÔLØ×Ñ §¡× CÑ CÒEYÕZr   c                 óP  — | j                  d«      }|j                  d¬«      }|j                  j                  dk(  sJ ‚|j                  j                  dk(  sJ ‚| j	                  |j                  d«      dg«       |j                  d¬«      dk(  sJ ‚|j                  d¬«      �J ‚y )Nr�  r�  r   r   rO   rN   r‘  )r   r   r˜  r2   r^   rJ   r3   r’  s      r   Ú&test_previous_sibling_for_text_elementz:TestPreviousSibling.test_previous_sibling_for_text_element×  s¨   € Ø�y‰yÐ+Ó,ˆØ—	‘	 �	Ó'ˆØ×%Ñ%×*Ñ*¨cÒ1Ð1Ð1Ø×%Ñ%×6Ñ6¸%Ò?Ð?Ð?à×Ñ˜E×8Ñ8¸Ó=À¸wÔGØ×*Ñ*°%Ð*Ó8¸EÒAÐAÐAØ×*Ñ*°*Ð*Ó=ÐEÐEÑEr   rª   )rB   rC   rD   r…   r™  r›  rž  r   r£  r§  r©  rU  rV  s   @r   r•  r•  ±  s/   ø„ õ*ò2ò8ò3òCòPò[ö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j4                  j7                  dd„ d„ g«      d„ «       Zej4                  j7                  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j4                  j7                  d8g d9¢«      d:„ «       Z5d;„ Z6d<„ Z7d=„ Z8d>„ Z9d?„ Z:y@)AÚTestTreeModificationc                 óT  — | j                  d«      }d|j                  d<   |j                  «       | j                  d«      k(  sJ ‚|j                  d= |j                  «       | j                  d«      k(  sJ ‚d|j                  d<   |j                  «       | j                  d«      k(  sJ ‚y )	Nz<a id="1"></a>r&   r    z<a id="2"></a>rd   ra   Ú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Ø�F‰F�4ˆLØ�{‰{‹} × 1Ñ 1°)Ó <Ò<Ð<Ð<Øˆ�‰ˆu‰Ø�{‰{‹} × 1Ñ 1Ð2EÓ FÒFÐFÑFr   c                 óJ  —  t        j                  d«      «       }| j                  d|¬«      }t        ||d«      }t        ||d«      }d|d<   |j                  j                  d|«       |j                  j                  d	|«       |j                  j                  «       d
k(  sJ ‚y )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	   rI   Úinsertrµ   )r   rü   r   r,   r²  s        r   Útest_new_tag_creationz*TestTreeModification.test_new_tag_creationì  s›   € Ø1Ô"×)Ñ)¨&Ó1Ó3ˆØ�y‰y˜°'ˆyÓ:ˆÜ��g˜sÓ#ˆÜ��w Ó%ˆØ%ˆˆ&‰	Ø�	‰	×Ñ˜˜AÔØ�	‰	×Ñ˜˜BÔà�I‰I×ÑÓØFòGð	
ñGr   c                 ó&  — d}| j                  |«      }|j                  d¬«      }|j                  }|j                  d¬«      j                  |j                  «       |j                  |k(  sJ ‚|j                  «       | j                  d«      k(  sJ ‚y )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   rg   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‰vˆð 	�	‰	�Sˆ	Ó× Ñ  §¡Ô(ð �{‰{˜kÒ)Ð)Ð)à�{‰{‹} × 1Ñ 1ØXó!
ò 
ð 	
ñ 
r   c                 ó  — | j                  d«      }|j                  d«      }|j                  |j                  d«      «      }|j                  dk(  sJ ‚|j                  d|j                  d«      «      \  }|j                  dk(  sJ ‚|j                  d«      }|dk(  sJ ‚|j                  dd«      }|ddgk(  sJ ‚|j                  d	d
«      }|d	d
gk(  sJ ‚|j                  ddg«      }|ddgk(  sJ ‚|j                  «       dk(  sJ ‚y )Nz<html></html>r_  Úheadr   r´   r\   rY   r[   Ú6Ú7Ú8Ú9Ú3456789)
r   r   rg   Ú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
  s  € Ø�y‰y˜Ó)ˆØ�y‰y˜Ó ˆØ�{‰{˜4Ÿ<™<¨Ó/Ó0ˆØ�y‰y˜FÒ"Ð"Ð"à—+‘+˜a §¡¨gÓ!6Ó7‰ˆØ�z‰z˜WÒ$Ð$Ð$à—‘˜SÓ!ˆØ˜Š|Ðˆ|Ø×$Ñ$ S¨#Ó.ˆØ˜#˜s˜Ò#Ð#Ð#Ø×#Ñ# C¨Ó-ˆØ˜#˜s˜Ò#Ð#Ð#Ø—‘˜s C˜jÓ)ˆØ˜#˜s˜Ò#Ð#Ð#Ø�~‰~Ó 9Ò,Ð,Ñ,r   c                 ó†   — d}| j                  |«      }|j                  }|j                  |j                  «      }||k(  sJ ‚y )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  s;   € Ø&ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘˜tŸv™vÓ&ˆØ�EŠzÐ‰zr   c                 óp   — d}| j                  |«      }|j                  }|j                  «       }||k(  sJ ‚y )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$  s4   € Ø&ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘“
ˆØ�EŠzÐ‰zr   c                 óŒ  — | j                  d«      }|j                  }|j                  «        d |j                  u sJ ‚t	        j
                  t        «      5  |j                  «        d d d «       t	        j
                  t        «      5  |j                  |j                  «       d d d «       y # 1 sw Y   ŒGxY w# 1 sw Y   y xY w)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+  s•   € Ø�y‰yÐ6Ó7ˆØ�F‰FˆØ	�	‰	ŒØ�q—x‘xÑÐÐÜ�]‰]œ:Ó&ñ 	Ø�H‰HŒJ÷	ä�]‰]œ:Ó&ñ 	#Ø�N‰N˜4Ÿ6™6Ô"÷	#ð 	#÷	ð 	ú÷	#ð 	#ús   ÁB.Â	B:Â.B7Â:Cc                 óÎ   — d}| j                  |«      }|j                  }|j                  j                  |«      }||k(  sJ ‚|j                  «       | j	                  |«      k(  sJ ‚y )Nz-<a><b></b><c>Foo<d></d></c></a><a><e></e></a>)r   r‘   rÎ  r¶   r®  )r   r"   r   r‘   rv   s        r   Útest_replace_tag_with_itselfz1TestTreeModification.test_replace_tag_with_itself5  s\   € Ø>ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘×$Ñ$ QÓ'ˆØ˜Š{Ðˆ{Ø�{‰{‹} × 1Ñ 1°$Ó 7Ò7Ð7Ñ7r   c                 óÐ   — d}| j                  |«      }t        j                  t        «      5  |j                  j                  |j                  «       d d d «       y # 1 sw Y   y xY w©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_exception=  sK   € ØˆØ�y‰y˜‹ˆÜ�]‰]œ:Ó&ñ 	(Ø�F‰F×Ñ §¡Ô'÷	(÷ 	(ñ 	(ús   ­&AÁA%c                 óÒ   — d}| j                  |«      }t        j                  t        «      5  |j                  j                  d|j                  «       d d d «       y # 1 sw Y   y xY w)NrÝ  r   )r   r  r  r  r,   rµ  rÞ  s      r   Ú,test_insert_tag_into_itself_raises_exceptionzATestTreeModification.test_insert_tag_into_itself_raises_exceptionC  sK   € ØˆØ�y‰y˜‹ˆÜ�]‰]œ:Ó&ñ 	%Ø�F‰F�M‰M˜!˜TŸV™VÔ$÷	%÷ 	%ñ 	%ús   ­'AÁA&c                 ó–  — | j                  d«      }|j                  d|j                  dd¬«      |j                  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 ‚y )	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_elementsI  sÄ   € Ø�y‰yÐHÓIˆØ—‘˜Q §¡¨S¸ Ó >ÀÇÁÈSÐY]ÀÓ@^Ó_‰ˆˆBØ�r—y‘yÒ Ð Ð Ø�r—y‘yÒ Ð Ð ä˜dŸm™mÓ,‰ˆˆB��BØ! R§Y¡YÒ.Ð.Ð.Ø�r—y‘yÒ Ð Ð Ø�r—y‘yÒ Ð Ð Ø  B§I¡IÒ-Ð-Ñ-r   c                 ó¼  — | j                  d«      }d}| j                  |«      }|j                  d|«      \  }}d|j                  k(  sJ ‚d|j                  k(  sJ ‚|j                  D ]  }t	        |t
        «      sŒJ ‚ t        |j                  «      \  }}}}d|j                  k(  sJ ‚d|j                  k(  sJ ‚d|j                  k(  sJ ‚d|j                  k(  sJ ‚y)	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_childrenU  sâ   € ð �y‰yÐHÓIˆà#ˆØ—I‘I˜d“Oˆ	Ø—‘˜Q 	Ó*‰ˆˆBØ�r—y‘yÒ Ð Ð Ø�r—y‘yÒ Ð Ð à×!Ñ!ò 	4ˆAÜ! !¤]Õ3Ð3Ð3ð	4ô ˜dŸm™mÓ,‰ˆˆB��BØ! R§Y¡YÒ.Ð.Ð.Ø�r—y‘yÒ Ð Ð Ø�r—y‘yÒ Ð Ð Ø  B§I¡IÒ-Ð-Ñ-r   c                 óú   — | j                  d«      }|j                  }|j                  dd«       |j                  \  }}|j	                  d«       |j	                  d«       d|j
                  j                  k(  sJ ‚y )Nz<p><a>one</a><b>three</b></p>r   Útworu  Ú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_throughoutj  sk   € Ø�y‰yÐ8Ó9ˆØ�F‰Fˆà	�‰��EÔð —j‘j‰ˆˆeØ×Ñ˜"ÔØ×Ñ˜2Ôð ˜$Ÿ&™&Ÿ-™-Ò'Ð'Ñ'r   c                 ó:  — | j                  d«      }|j                  d¬«      j                  d«       |j                  d¬«      }|j                  }|j                  |k(  sJ ‚|j
                  |k(  sJ ‚|j                  j                  |k(  sJ ‚|j                  �J ‚y )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_nodex  s”   € Ø�y‰y˜Ó(ˆØ�	‰	˜ˆ	Ó!×.Ñ.¨yÔ9Ø—9‘9 I�9Ó.ˆØ�F‰FˆØ×(Ñ(¨AÒ-Ð-Ð-Ø�‰ !Ò#Ð#Ð#Ø×(Ñ(×5Ñ5¸ÒAÐAÐAØ×$Ñ$Ð,Ð,Ñ,r   c                 óÌ  — | j                  d«      }|j                  j                  dd«       |j                  «       | j	                  d«      k(  sJ ‚|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 ‚y )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ˆØ�‰�‰�a˜Ô#à�{‰{‹} × 1Ñ 1Ð2UÓ VÒVÐVÐVà—9‘9 I�9Ó.ˆØ×(Ñ(¨GÒ3Ð3Ð3Ø×(Ñ(×5Ñ5¸ÒAÐAÐAà×(Ñ(¨GÒ3Ð3Ð3Ø×(Ñ(×5Ñ5¸ÒAÐAÐAà×$Ñ$Ð,Ð,Ð,Ø×$Ñ$¨¯©Ò.Ð.Ñ.r   c                 ó   — | j                  d«      }|j                  j                  dd«       |j                  j                  dd«       ddg|j                  j                  k(  sJ ‚|j                  j                  d   j                  dk(  sJ ‚y )Nrd   r   rN   ra   )r   r,   rµ  rú   r<  r   s     r   Útest_insert_stringz'TestTreeModification.test_insert_string•  so   € Ø�y‰y˜Ó#ˆØ�‰�‰�a˜ÔØ�‰�‰�a˜Ôà�uˆ~ §¡§¡Ò0Ð0Ð0à�v‰v�‰˜qÑ!×.Ñ.°%Ò7Ð7Ñ7r   c                 ó¨   — | j                  d«      }|j                  j                  d«      }|dk(  sJ ‚|j                  j                  «       dk(  sJ ‚y )Nz<b>1</b>r   z	<b>12</b>)r   r   rg   r¶   ru   s      r   Útest_appendz TestTreeModification.test_appendž  sF   € Ø�y‰y˜Ó$ˆØ—‘—‘˜sÓ#ˆØ˜Š}Ðˆ}Ø�v‰v�}‰}‹ +Ò-Ð-Ñ-r   c                 ó²  — | j                  «       }| j                  d|¬«      }t        ||d«      }|j                  dd«       |j                  j                  d|«       |j                  «       | j                  d«      k(  sJ ‚|j                  }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  d¬	«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  d¬	«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚y )
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¤  sa  € Ø×&Ñ&Ó(ˆØ�y‰yÐ@È'ˆyÓRˆÜ˜˜g zÓ2ˆ	Ø×Ñ˜˜EÔ"Ø�‰�‰�a˜Ô#à�{‰{‹} × 1Ñ 1ØKó!
ò 
ð 	
ð 
ð
 —‘ˆØ×!Ñ! YÒ.Ð.Ð.Ø×)Ñ)¨UÒ2Ð2Ð2à�z‰z ˆzÓ(ˆØ× Ñ  IÒ-Ð-Ð-Ø×)Ñ)¨TÒ1Ð1Ð1à—‘ˆØ×%Ñ%¨Ò.Ð.Ð.Ø×%Ñ%¨Ò2Ð2Ð2à�n‰n EˆnÓ*ˆØ�z‰z˜YÒ&Ð&Ð&Ø×Ñ 5Ò(Ð(Ð(Ø×%Ñ%¨Ò,Ð,Ñ,r   c                 ó    — d}| j                  |«      }|j                  j                  d|j                  «       ||j	                  «       k(  sJ ‚y )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Á  s>   € Ø!ˆØ�y‰y˜‹ˆØ�‰�‰�a˜Ÿ™Ô Ø�t—{‘{“}Ò$Ð$Ñ$r   c                 óž   — d}| j                  |«      }|j                  j                  |j                  «       ||j	                  «       k(  sJ ‚y rÜ  )r   r,   rg   r   r¶   r  s      r   Ú*test_append_child_thats_already_at_the_endz?TestTreeModification.test_append_child_thats_already_at_the_endÇ  s<   € ØˆØ�y‰y˜‹ˆØ�‰�‰�d—f‘fÔØ�t—{‘{“}Ò$Ð$Ñ$r   c                 ó  — d}| j                  |«      }|j                  |j                  |j                  |j                  |j
                  |j                  g}|j                  j                  |«       d|j                  «       k(  sJ ‚y )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Í  sb   € ØBˆØ�y‰y˜‹ˆØ—F‘F˜DŸF™F D§F¡F¨D¯F©F°D·F±F¸D¿F¹FÐCˆØ�‰�‰�hÔØBÀdÇkÁkÃmÒSÐSÑSr   c                 ó¨   — d}| j                  |«      }ddt        d«      dg}|j                  j                  |«       d|j	                  «       k(  sJ ‚y )Nrd   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Ô  sK   € ØˆØ�y‰y˜‹ˆØ˜œo¨cÓ2°CÐ8ˆØ�‰�‰�hÔØ §¡£Ò-Ð-Ñ-r   Úget_tagsc                 ó   — | S r  r@   r¡   s    r   r>   zTestTreeModification.<lambda>Û  s   € °c€ r   c                 ó   — | j                   S r  )rú   r¡   s    r   r>   zTestTreeModification.<lambda>Û  s
   € ÀsÇ|Á|€ r   c                 óü   — d}| j                  |«      }|j                  dd¬«      }|j                  dd¬«      } ||«      }|j                  |«       d|j                  «       k(  sJ ‚d|j                  «       k(  sJ ‚y )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Û  st   € àdˆØ�y‰y˜‹ˆØ�Y‰Y�u ˆYÓ&ˆØ�Y‰Y�u ˆYÓ&ˆÙ˜‹|ˆØ
�	‰	�$ŒØ$¨¯	©	«Ò3Ð3Ð3ØDÈÏ	É	ËÒ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                  ó   — y)NÚabcder@   r!  s    r   r>   zTestTreeModification.<lambda>ê  s   � r   z<a>1</a><b>abcde</b>c                 óp  — d}| j                  |«      }t        j                  d¬«      5 } ||«      }|j                  j	                  |«       |j
                  j                  «       |k(  sJ ‚|\  }|j                  t        k(  sJ ‚t        |j                  «      }|dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nz<div><a>1</a><b></b></div>Tre   zIA single non-Tag item was passed into Tag.extend. Use Tag.append instead.)r   rh   ri   r   rÆ  r/   Údecode_contentsrj   rk   r!   rl   )	r   Ústring_sourcerv   r¸   r   rn   r   ro   rp   s	            r   Ú)test_extend_with_a_single_non_tag_elementz>TestTreeModification.test_extend_with_a_single_non_tag_elementæ  s°   € ð ,ˆØ�y‰y˜‹ˆÜ×$Ñ$¨DÔ1ð 
	°QÙ" 4Ó(ˆFØ�F‰F�M‰M˜&Ô!Ø—8‘8×+Ñ+Ó-°Ò7Ð7Ð7Ø‰IˆWØ×#Ñ#¤xÒ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØ^ò_ðñ_÷
	÷ 
	ñ 
	ús   ªA8B,Â,B5c                 ó    — d}| j                  |«      }|j                  j                  d|j                  «       d|j	                  «       k(  sJ ‚y )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ü  s>   € Ø-ˆØ�y‰y˜‹ˆØ�‰�‰�a˜Ÿ™Ô Ø-°·±³Ò>Ð>Ñ>r   c                 ó’   — | j                  d«      }|j                  j                  dd«       t        |j                  «      dk(  sJ ‚y )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  s;   € ð
 �y‰y˜Ó!ˆØ�‰�‰�q˜*Ô%Ü�4—7‘7‹|Ð2Ò2Ð2Ñ2r   c                 ó  — | j                  d«      }|j                  j                  d«       |j                  j                  d«       |j	                  «       | j                  d«      k(  sJ ‚|j                  j                  |j                  «       |j	                  «       | j                  d«      k(  sJ ‚|j                  }t        j                  t        «      5  |j                  |«       d d d «       |j                  «        t        j                  t        «      5  |j                  d«       d d d «       | j                  d«      }|j                  j                  |j                  d«      «       y # 1 sw Y   ŒˆxY w# 1 sw Y   ŒQxY w)	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ˆØ�‰×Ñ˜UÔ#Ø�‰×Ñ˜VÔ$Ø�{‰{‹} × 1Ñ 1Ð2OÓ PÒPÐPÐPà�‰×Ñ˜TŸV™VÔ$Ø�{‰{‹} × 1Ñ 1Ð2OÓ PÒPÐPÐPð �F‰FˆÜ�]‰]œ:Ó&ñ 	Ø�O‰O˜AÔ÷	ð 	
�	‰	ŒÜ�]‰]œ:Ó&ñ 	$Ø�O‰O˜FÔ#÷	$ð �y‰y˜ÓˆØ�‰×Ñ˜TŸ\™\¨#Ó.Õ/÷	ð 	ú÷
	$ð 	$úó   ÃE3ÄE?Å3E<Å?Fc                 óv  — | j                  d«      }|j                  j                  ddd«       |j                  j                  ddd«       |j	                  «       | j                  d«      k(  sJ ‚|j                  j                  |j                  d«       |j	                  «       | j                  d«      k(  sJ ‚y )Nr%   r/  ú r0  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ˆØ�‰×Ñ˜U C¨Ô0Ø�‰×Ñ˜V S¨%Ô0Ø�{‰{‹} × 1Ñ 1Ø2ó!
ò 
ð 	
ð 
ð 	�‰×Ñ˜TŸV™V UÔ+Ø�{‰{‹} × 1Ñ 1Ø5ó!
ò 
ð 	
ñ 
r   c                 ó  — | j                  d«      }|j                  j                  d«       |j                  j                  d«       |j	                  «       | j                  d«      k(  sJ ‚|j                  j                  |j                  «       |j	                  «       | j                  d«      k(  sJ ‚|j                  }t        j                  t        «      5  |j                  |«       d d d «       |j                  «        t        j                  t        «      5  |j                  d«       d d d «       | j                  d«      }|j                  j                  |j                  d«      «       y # 1 sw Y   ŒˆxY w# 1 sw Y   ŒQxY w)	Nr%   r/  r0  z<a>foo</a>QUUX<b>bar</b>BAZr1  r2  r3  r,   )r   r   rÅ  r,   r¶   r®  r  r  r  r×  rÄ  rÃ  r4  s      r   Útest_insert_afterz&TestTreeModification.test_insert_after1  s&  € Ø�y‰yÐ/Ó0ˆØ�‰×Ñ˜EÔ"Ø�‰×Ñ˜FÔ#Ø�{‰{‹} × 1Ñ 1Ð2OÓ PÒPÐPÐPØ�‰×Ñ˜DŸF™FÔ#Ø�{‰{‹} × 1Ñ 1Ð2OÓ PÒPÐPÐPð �F‰FˆÜ�]‰]œ:Ó&ñ 	Ø�N‰N˜1Ô÷	ð 	
�	‰	ŒÜ�]‰]œ:Ó&ñ 	#Ø�N‰N˜6Ô"÷	#ð �y‰y˜ÓˆØ�‰×Ñ˜TŸ\™\¨#Ó.Õ/÷	ð 	ú÷
	#ð 	#úr6  c                 óv  — | j                  d«      }|j                  j                  ddd«       |j                  j                  ddd«       |j	                  «       | j                  d«      k(  sJ ‚|j                  j                  |j                  d«       |j	                  «       | j                  d«      k(  sJ ‚y )Nr%   r/  r8  r0  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_afterI  s§   € Ø�y‰yÐ/Ó0ˆØ�‰×Ñ˜E 3¨Ô/Ø�‰×Ñ˜F C¨Ô/Ø�{‰{‹} × 1Ñ 1Ø2ó!
ò 
ð 	
ð 
ð 	�‰×Ñ˜DŸF™F FÔ+Ø�{‰{‹} × 1Ñ 1Ø6ó!
ò 
ð 	
ñ 
r   c                 óä  — | j                  d«      }|j                  d«      }|j                  d«      }t        j                  t
        «      5  |j                  |«       d d d «       t        j                  t        «      5  |j                  |«       d d d «       t        j                  t
        «      5  |j                  |«       d d d «       y # 1 sw Y   ŒpxY w# 1 sw Y   ŒIxY w# 1 sw Y   y xY w©Nru  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_meaningU  s¾   € Ø�y‰y˜‹}ˆØ�l‰l˜3ÓˆØ—‘ Ó$ˆÜ�]‰]œ:Ó&ñ 	%Ø×Ñ Ô$÷	%ä�]‰]Ô.Ó/ñ 	#Ø×Ñ˜cÔ"÷	#ä�]‰]œ:Ó&ñ 	"Ø×Ñ˜SÔ!÷	"ð 	"÷		%ð 	%ú÷	#ð 	#ú÷	"ð 	"úó$   ÁCÂ CÂ3C&ÃCÃC#Ã&C/c                 óä  — | j                  d«      }|j                  d«      }|j                  d«      }t        j                  t
        «      5  |j                  |«       d d d «       t        j                  t        «      5  |j                  |«       d d d «       t        j                  t
        «      5  |j                  |«       d d d «       y # 1 sw Y   ŒpxY w# 1 sw Y   ŒIxY w# 1 sw Y   y xY wr@  )r   rÃ  rA  r  r  r  rÄ  rB  rC  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Ô"÷	#ð 	#÷		&ð 	&ú÷	$ð 	$ú÷	#ð 	#úrE  c                 óN  — | j                  d«      }|j                  d«      \  }}|j                  |«       |j                  «       | j	                  d«      k(  sJ ‚|j
                  �J ‚|j
                  |j                  k(  sJ ‚|j                  dk(  sJ ‚|j                  dk(  sJ ‚y )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   rI  Úshows       r   Útest_replace_withz&TestTreeModification.test_replace_withk  s¥   € Ø�y‰yÐVÓWˆØ—=‘= Ó%‰ˆˆDØ×Ñ˜"ÔØ�{‰{‹} × 1Ñ 1Ø>ó!
ò 
ð 	
ð 
ð �{‰{Ð"Ð"Ð"Ø�y‰y˜DŸF™FÒ"Ð"Ð"Ø�‰ $Ò&Ð&Ð&Ø�‰ +Ò-Ð-Ñ-r   c                 óø  — t        d¬«      }t        j                  t        «      5  |j	                  d«       d d d «       | j                  d«      j                  }t        j                  t        «      5  |j                  j	                  |«       d d d «       t        j                  t        «      5  |j                  j	                  d|d«       d d d «       y # 1 sw Y   Œ¡xY w# 1 sw Y   ŒUxY w# 1 sw Y   y xY w)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_errorsx  sÂ   € ä˜”ˆÜ�]‰]œ:Ó&ñ 	-Ø×Ñ˜|Ô,÷	-ð —	‘	Ð*Ó+×-Ñ-ˆÜ�]‰]œ:Ó&ñ 	(Ø�G‰G× Ñ  Ô'÷	(ô �]‰]œ:Ó&ñ 	>Ø�G‰G× Ñ  ¨E°9Ô=÷	>ð 	>÷	-ð 	-ú÷
	(ð 	(ú÷	>ð 	>ús#   ¦CÁ4C$Â1C0ÃC!Ã$C-Ã0C9c                 óà  — d}| j                  |«      }|j                  d«      }d|_        |j                  d«      }|j                  d«      }d}|j                  j	                  ||||«       |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 ‚y )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ØLòMð	
ðMð �v‰v×"Ñ" eÒ+Ð+Ð+Ø�|‰|×(Ñ(¨EÒ1Ð1Ð1Ø×!Ñ!×(Ñ(¨HÒ4Ð4Ð4Ø×!Ñ!×.Ñ.°%Ò7Ð7Ñ7r   c                 óž   — d}| j                  |«      }|j                  j                  |j                  «       d|j	                  «       k(  sJ ‚y )NrÓ  z<a><c></c></a>)r   r   rÎ  r‘   r¶   r  s      r   Útest_replace_first_childz-TestTreeModification.test_replace_first_child™  ó>   € Ø&ˆØ�y‰y˜‹ˆØ�‰×Ñ˜DŸF™FÔ#Ø 4§;¡;£=Ò0Ð0Ñ0r   c                 óž   — d}| j                  |«      }|j                  j                  |j                  «       d|j	                  «       k(  sJ ‚y )NrÓ  rÝ  )r   r‘   rÎ  r   r¶   r  s      r   Útest_replace_last_childz,TestTreeModification.test_replace_last_childŸ  rY  r   c                 óî  — | j                  d«      }|j                  }|j                  }|j                  |«       |j	                  «       | j                  d«      k(  sJ ‚|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 ‚|j                  d¬«      }|j                  }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚y )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‘Vˆ
Ø—6‘6ˆØ×Ñ Ô)à�{‰{‹} × 1Ñ 1Ø;ó!
ò 
ð 	
ð 
ð
 × Ñ Ð(Ð(Ð(Ø�‰ gˆÓ.×;Ñ;ÐCÐCÐCØ×*Ñ*Ð2Ð2Ð2Ø×&Ñ&Ð.Ð.Ð.Ø×*Ñ*Ð2Ð2Ð2ð �‰ $§&¡&Ò(Ð(Ð(Ø×(Ñ(¨DÒ0Ð0Ð0Ø×$Ñ$×1Ñ1°T·V±VÒ;Ð;Ð;Ø×$Ñ$Ð,Ð,Ð,ð —)‘) 4�)Ó(ˆØ—‘ˆØ×#Ñ# uÒ,Ð,Ð,Ø×#Ñ# uÒ,Ð,Ð,Ø×%Ñ%¨Ò0Ð0Ð0Ø×%Ñ%¨Ò0Ð0Ñ0r   c                 ó¬   — | j                  d«      }|j                  j                  «        |j                  �J ‚|j                  j                  dk(  sJ ‚y )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Ê  sJ   € Ø�y‰yð ó ˆð 	�‰�‰ÔØ�w‰wˆÐˆØ�v‰v�{‰{Ð?Ò?Ð?Ñ?r   c                 óì   — | j                  d«      }|j                  j                  |j                  d«      «      }|j	                  «       dk(  sJ ‚|j	                  «       | j                  d«      k(  sJ ‚y )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Ò  sc   € Ø�y‰yÐ-Ó.ˆØ—‘× Ñ  §¡¨cÓ!2Ó3ˆØ�|‰|‹~Ð!<Ò<Ð<Ð<Ø�{‰{‹} × 1Ñ 1Ð2MÓ NÒNÐNÑNr   c                 óÌ   — | j                  d«      }|j                  j                  j                  |j                  «       |j	                  «       | j                  d«      k(  sJ ‚y )Nz<b></b>I wish I was bold.rh  )r   r   r|  ri  r¶   r®  r   s     r   Ú%test_wrap_extracts_tag_from_elsewherez:TestTreeModification.test_wrap_extracts_tag_from_elsewhereØ  sM   € Ø�y‰yÐ4Ó5ˆØ�‰×Ñ× Ñ  §¡Ô(Ø�{‰{‹} × 1Ñ 1Ð2MÓ NÒNÐNÑNr   c                 ó  — | j                  d«      }|j                  j                  j                  |j                  «       dt	        |j                  j
                  «      k(  sJ ‚|j                  «       | j                  d«      k(  sJ ‚y )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|  ri  r(   rú   r¶   r®  r   s     r   Ú&test_wrap_puts_new_contents_at_the_endz;TestTreeModification.test_wrap_puts_new_contents_at_the_endÝ  sp   € Ø�y‰yÐFÓGˆØ�‰×Ñ× Ñ  §¡Ô(Ø”C˜Ÿ™Ÿ™Ó(Ò(Ð(Ð(Ø�{‰{‹} × 1Ñ 1Ø9ó!
ò 
ð 	
ñ 
r   c                 ó‚  — | j                  d«      }t        |j                  j                  «      dk(  sJ ‚|j	                  d¬«      j                  «       }|j                  «       dk(  sJ ‚|j                  «       dk(  sJ ‚t        |j                  j                  «      dk(  sJ ‚|j                  �J ‚|j                  �J ‚|j                  j                  �J ‚|j	                  d¬	«      }|j	                  d
¬	«      }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚y )NzR<html><body>Some content. <div id="nav">Nav crap</div> More content.</body></html>rU   Ú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(   rI   rú   r   r×  r¶   r  r\  r<  r|  r˜  )r   r   Ú	extractedÚ	content_1Ú	content_2s        r   Útest_extractz!TestTreeModification.test_extractå  sG  € Ø�y‰yØ`ó
ˆô �4—9‘9×%Ñ%Ó&¨!Ò+Ð+Ð+Ø—I‘I �IÓ'×/Ñ/Ó1ˆ	à�{‰{‹}Ð XÒXÐXÐXØ×ÑÓ!Ð%CÒCÐCÐCô �4—9‘9×%Ñ%Ó&¨!Ò+Ð+Ð+Ø×ÑÐ'Ð'Ð'Ø×)Ñ)Ð1Ð1Ð1Ø×%Ñ%×2Ñ2Ð:Ð:Ð:ð —I‘IÐ%5�IÓ6ˆ	Ø—I‘IÐ%5�IÓ6ˆ	Ø×%Ñ%¨Ò2Ð2Ð2Ø×%Ñ%¨Ò2Ð2Ð2Ø×)Ñ)¨YÒ6Ð6Ð6Ø×)Ñ)¨YÒ6Ð6Ñ6r   c                 ó®  — | j                  d«      }|j                  j                  }|j                  d«      }|j                  d«      }|j                  j	                  |«       |j
                  j	                  |«       |j                  «        |j                  «        ||j                  j                  k(  sJ ‚||j
                  j                  k(  sJ ‚y )Nr%   ra   rN   )r   r,   r   rA  rg   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ˆØ—‘—‘ˆØ—‘ Ó&ˆØ—‘ Ó&ˆØ�‰�‰�eÔØ�‰�‰�eÔð
 	�‰ŒØ�‰ŒØ˜Ÿ™Ÿ™Ò%Ð%Ð%Ø˜Ÿ™Ÿ™Ò%Ð%Ñ%r   c                 óÒ   — | j                  d«      }|j                  d«      D �cg c]  }|j                  j                  «       ‘Œ c} dt	        |j
                  «      k(  sJ ‚y c c}w )Nzv
<html>
<head>
<script>foo</script>
</head>
<body>
 <script>bar</script>
 <a></a>
</body>
<script>baz</script>
</html>Úscriptz<body>

<a></a>
</body>)r   r)   r{  r×  r!   rI   )r   r   r  s      r   Ú"test_extract_multiples_of_same_tagz7TestTreeModification.test_extract_multiples_of_same_tag  sW   € Ø�y‰yð 
ó 
ˆð )-¯©°hÓ(?Ö@ 1ˆ�‰×	Ñ	Õ	Ó@Ø+¬s°4·9±9«~Ò=Ð=Ñ=ùò 	As   ¥!A$c                 óŽ   — | j                  d«      }|j                  d«      j                  «        d |j                  d«      u sJ ‚y )Nz<html>
<body>hi</body>
</html>rI   )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  s=   € Ø�y‰yÐAÓBˆØ�	‰	�&Ó×!Ñ!Ô#Ø�t—y‘y Ó(Ñ(Ð(Ñ(r   c                 óF  — | j                  d«      }|j                  }|j                  j                  «        t	        |j                  j
                  «      dk(  sJ ‚t        |d«      sJ ‚|j                  }|j                  d¬«       dt	        |j
                  «      k(  sJ ‚y)zTag.clear()z4<p><a>String <em>Italicized</em></a> and another</p>r   rú   T)Ú	decomposeN)r   r,   r0   Úclearr(   rú   rt   re  )r   r   r,   re  s       r   Ú
test_clearzTestTreeModification.test_clear"  s‚   € à�y‰yÐOÓPˆà�F‰FˆØ�‰�‰ŒÜ�4—6‘6—?‘?Ó# qÒ(Ð(Ð(Ü�q˜*Ô%Ð%Ð%ð �T‰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>)rO  rƒ  )ré  rƒ  )ro  ru  )r¥  zF<div><p id="start"><a>Second <em>child</em></a></p><p>child3</p></div>)r)  ru  c                 óª   — | j                  d«      }t        |j                  |«      }|D ]  }|j                  «        Œ ||j	                  «       k(  sJ ‚y )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_iteration0  sS   € ð: �y‰yØcó
ˆô ˜4Ÿ6™6 ;Ó/ˆØò 	ˆAØ�I‰I�Kð	à $§+¡+£-Ò/Ð/Ñ/r   c                 ó<  — | j                  d«      }|j                  d«      \  }}|j                  }|j                  j                  }||||fD ]  }d|j
                  u rŒJ ‚ |j                  «        |||fD ]  }d|j
                  u rŒJ ‚ d|j
                  u sJ ‚y )Nz;<p><a>String <em>Italicized</em></a></p><p>Another para</p>r0   FT)r   r)   r,   re  r   Ú
decomposedr€  )r   r   rê  rä  r,   r"   r  s          r   Útest_decomposez#TestTreeModification.test_decomposeU  s©   € à�y‰yÐVÓWˆØ—‘˜sÓ#‰ˆˆBØ�D‰DˆØ�u‰u�|‰|ˆØ�b˜!˜TÐ"ò 	)ˆAØ˜AŸL™LÒ(Ð(Ð(ð	)ð 	�‰ŒØ�a˜�ò 	(ˆAØ˜1Ÿ<™<Ò'Ð'Ð'ð	(ð ˜Ÿ™Ñ%Ð%Ñ%r   c                 óô   — | j                  d«      }|j                  }|j                  j                  }d|j                  u sJ ‚|j                  «        d|j                  u sJ ‚d|j                  «       k(  sJ ‚y )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_stringe  si   € Ø�y‰yÐBÓCˆØ�h‰hˆØ�u‰u�|‰|ˆØ˜Ÿ™Ñ'Ð'Ð'Ø�‰ÔØ�t—‘Ñ&Ð&Ð&Ø2°c·j±j³lÒBÐBÑBr   c                 óÚ   — | j                  d«      }d|j                  _        |j                  j                  dgk(  sJ ‚d|j                  _        |j                  j                  dgk(  sJ ‚y)zTag.string = 'string'z<a></a> <b><c></c></b>ra   rN   N)r   r,   r   rú   r   r   s     r   Útest_string_setz$TestTreeModification.test_string_setn  sW   € à�y‰yÐ1Ó2ˆØˆ�‰ŒØ�v‰v�‰ 5 'Ò)Ð)Ð)Øˆ�‰ŒØ�v‰v�‰ 5 'Ò)Ð)Ñ)r   c                 ó®   — | j                  d«      }|j                  j                  |j                  _        |j                  j                  «       dk(  sJ ‚y )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_stringv  s=   € Ø�y‰yÐ2Ó3ˆØŸ™Ÿ™ˆ�‰ŒØ�v‰v�}‰}‹Ð"@Ò@Ð@Ñ@r   c                 óª   — | j                  d«      }t        d«      }||j                  _        t	        |j                  j                  t        «      sJ ‚y )Nrd   ra   )r   r   r,   r   rï  )r   r   Úcdatas      r   Ú)test_set_string_preserves_class_of_stringz>TestTreeModification.test_set_string_preserves_class_of_string{  s<   € Ø�y‰y˜Ó#ˆÜ�e“ˆØˆ�‰ŒÜ˜$Ÿ&™&Ÿ-™-¬Ô/Ð/Ñ/r   N);rB   rC   rD   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-  r5  r:  r<  r>  rD  rG  rK  rP  rV  rX  r[  rc  rf  rj  rl  rn  rt  ry  r|  r~  r‚  r‰  rŒ  rŽ  r�  r’  r•  r@   r   r   r«  r«  â  sš  „ òGò
ò
ò"-ò&òò#ò8ò(ò%ò
.ò.ò*(ò-ò/ò&8ò.ò-ò:%ò%òTò.ð ‡[�[×Ñ˜Z©/Ñ;SÐ)TÓUñTó VðTð ‡[�[×ÑØá'Ð):Ð;Ù!Ð#9Ð:ð	
óñóðò?ò3ò0ò2
ò0ò0

ò	"ò	#ò.ò>ò8ò$1ò1ò#1òJ@òOòOò

ò7ò2&ò >ò)ò
%ð ‡[�[×ÑØ%ò	
óñ2
0ó3ð2
0ò&ò Cò*òAó
0r   r«  )r   r)   r   r  rJ  rG  rh  re  r4   rK   r3   rJ   c                   óP   — e Zd Zej                  j                  de«      d„ «       Zy)ÚTestDeprecatedArgumentsr†  c                 ó&  — | j                  d«      }t        |j                  |«      }t        j                  d¬«      5 } |d¬«       |\  }|j
                  t        k(  sJ ‚t        |j                  «      }|dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nú<a>some</a><b>markup</b>Tre   rw  )r"   zOThe 'text' argument to find()-type methods is deprecated. Use 'string' instead.)	r   r…  r   rh   ri   rj   rk   r!   rl   ©r   r†  r   Úmethodrn   ro   rp   s          r   Útest_find_type_method_stringz4TestDeprecatedArguments.test_find_type_method_string“  sŽ   € à�y‰yÐ3Ó4ˆÜ˜Ÿ™ Ó-ˆÜ×$Ñ$¨DÔ1ð 	°QÙ˜Õ!Ø‰IˆWØ×#Ñ#¤xÒ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØdòeðñe÷	÷ 	ñ 	ús   ¾?BÂBN)rB   rC   rD   r  r–  r—  Úall_find_type_methodsrž  r@   r   r   r™  r™  ’  s'   „ Ø‡[�[×Ñ˜]Ð,AÓBñó Cñr   r™  c                   óP   — e Zd Zej                  j                  de«      d„ «       Zy)ÚTestWarningsr†  c                 ó\  — | j                  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 «       y # 1 sw Y   y xY w)Nr›  Tre   Úu)Ú_classzN'_class' is an unusual attribute name and is a common misspelling for 'class_')r   r…  r   rh   ri   rj   rk   rï  rl   r   r!   rœ  s          r   Útest_suspicious_syntax_warningz+TestWarnings.test_suspicious_syntax_warning£  s¡   € à�y‰yÐ3Ó4ˆÜ˜Ÿ™ Ó-ˆÜ×$Ñ$¨DÔ1ð 		°QÙ˜#ÕØ‰IˆWØ×#Ñ#¤xÒ/Ð/Ð/Ü˜gŸo™oÔ/PÔQÐQÐQÜ�g—o‘oÓ&ˆCà`Øñðñ÷		÷ 		ñ 		ús   ¾AB"Â"B+N)rB   rC   rD   r  r–  r—  rŸ  r¥  r@   r   r   r¡  r¡  ¢  s'   „ Ø‡[�[×Ñ˜]Ð,AÓBñó Cñr   r¡  )$rE   r  rQ   rh   Úbs4r   Úbs4.builderr   Úbs4.elementr   r   r   r   r	   Ú
bs4.filterr
   ru  r   r   rG   ry   r€   r­   rñ   rÿ   r
  r1  r5  rX  rs  ry  r•  r«  rŸ  r™  r¡  r@   r   r   ú<module>rª     s  ðñó Û 	Û Ý Ý (÷õ õ $õô
*6ˆxô *6ôXC)�(ô C)ôL@ ô @ôM ˜ô M ô`k7˜Xô k7ô\).�ô ).ôX�ô ô(<?˜8ô <?ô~
�Hô 
ô)'˜ô )'ôX$h˜]ô $hôN&�(ô &ô(,B�kô ,Bô^.F˜+ô .Fôb]
0˜8ô ]
0ò@Ð ô ˜hô ô �8õ r   