ó
    |ch"×  ã                   óê  • S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
JrJrJr  SSKJr  SSKJr   " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r " S# S$\5      r " S% S&\5      r / S'Qr! " S( S)\5      r" " S* S+\5      r#g),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                   óH   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestFindé   z&Basic tests of the find() method.
    c                 óh   • U R                  S5      nUR                  S5      R                  S:X  d   eg )Nz <a>1</a><b>2</b><a>3</a><b>4</b>ÚbÚ2)ÚsoupÚfindÚstring©Úselfr   s     Ú\/var/www/djangovue.mamus.xyz/django/venv/lib/python3.13/site-packages/bs4/tests/test_tree.pyÚtest_find_tagÚTestFind.test_find_tag"   s-   € Ø�y‰yÐ;Ó<ˆØ�y‰y˜‹~×$Ñ$¨Ó+Ð+Ñ+ó    c                 óP   • U R                  S5      nUR                  SS9S:X  d   eg )Nu   <h1>RÃ¤ksmÃ¶rgÃ¥s</h1>õ   RÃ¤ksmÃ¶rgÃ¥s©r   )r   r   r   s     r   Útest_unicode_text_findÚTestFind.test_unicode_text_find&   s*   € Ø�y‰yÐ1Ó2ˆØ�y‰y ˆyÐ0°OÓCÐCÑCr   c                 óz   • U R                  S5      n[        U5        SUR                  SS9R                  :X  d   eg )Nu&   <h1 id="RÃ¤ksmÃ¶rgÃ¥s">here it is</h1>z
here it isr   ©Úid)r   Ústrr   Útextr   s     r   Útest_unicode_attribute_findÚ$TestFind.test_unicode_attribute_find*   s7   € Ø�y‰yÐAÓBˆÜˆDŒ	Ø˜tŸy™y¨O˜yÐ<×AÑAÓAÐAÑAr   c                 ód   • U R                  S5      nS[        UR                  5       5      :X  d   eg)z)Test an optimization that finds all tags.ú<a>foo</a><b>bar</b>é   N©r   ÚlenÚfind_allr   s     r   Útest_find_everythingÚTestFind.test_find_everything/   s*   € à�y‰yÐ/Ó0ˆØ”C˜Ÿ™›Ó(Ó(Ð(Ñ(r   c                 óf   • U R                  S5      nS[        UR                  S5      5      :X  d   eg)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_nameÚ'TestFind.test_find_everything_with_name4   s-   € à�y‰yÐ9Ó:ˆØ”C˜Ÿ™ cÓ*Ó+Ó+Ð+Ñ+r   c                 ó"  • U R                  S5      nSUR                  5       R                  :X  d   eSUR                  S5      R                  5       R                  :X  d   eSUR                  S5      R	                  5       R                  :X  d   eg )Nz<div></div><p></p>ÚdivÚp©r   r   ÚnameÚfind_previous_siblingÚfind_next_siblingr   s     r   Útest_find_with_no_argumentsÚ$TestFind.test_find_with_no_arguments9   sv   € Ø�y‰yÐ-Ó.ˆØ˜Ÿ	™	›×(Ñ(Ó(Ð(Ð(Ø˜Ÿ	™	 #›×<Ñ<Ó>×CÑCÓCÐCÐCØ�d—i‘i Ó&×8Ñ8Ó:×?Ñ?Ó?Ð?Ñ?r   c                 ó"  • U R                  S5      nSUR                  5       R                  :X  d   eSUR                  S5      R                  5       R                  :X  d   eSUR                  S5      R	                  5       R                  :X  d   eg )Nú"text<div>text</div>text<p>text</p>r5   r6   r7   r   s     r   Ú+test_find_with_no_arguments_only_finds_tagsÚ4TestFind.test_find_with_no_arguments_only_finds_tags?   sv   € Ø�y‰yÐ=Ó>ˆØ˜Ÿ	™	›×(Ñ(Ó(Ð(Ð(Ø˜Ÿ	™	 #›×<Ñ<Ó>×CÑCÓCÐCÐCØ�d—i‘i Ó&×8Ñ8Ó:×?Ñ?Ó?Ð?Ñ?r   c                 óš   • U R                  S5      nSUR                  S 5      R                  :X  d   eS UR                  S 5      :X  d   eg )Nr>   r6   c                 ó    • U R                   S:H  $ )Nr6   ©r8   ©Úts    r   Ú<lambda>ÚETestFind.test_find_with_function_can_only_find_tags.<locals>.<lambda>G   s   € ¨!¯&©&°#ª+r   c                 ó   • U S:H  $ )Nr%   © rD   s    r   rF   rG   H   s   € ¨1¨fª9r   )r   r   r8   r   s     r   Ú*test_find_with_function_can_only_find_tagsÚ3TestFind.test_find_with_function_can_only_find_tagsE   sG   € Ø�y‰yÐ=Ó>ˆØ�d—i‘iÑ 5Ó6×;Ñ;Ó;Ð;Ð;Ø�t—y‘yÑ!4Ó5Ó5Ð5Ñ5r   rI   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r&   r.   r2   r;   r?   rJ   Ú__static_attributes__rI   r   r   r   r      s3   † ñò,òDòBò
)ò
,ò
@ò@õ6r   r   c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚTestFindAlléJ   z%Basic tests of the find_all() method.c                 ó0  • U R                  S5      nS[        UR                  R                  5       5      :X  d   eS[        UR	                  S5      R                  5       5      :X  d   eS[        UR	                  S5      R                  5       5      :X  d   eg )Nz/<body>text<div>text</div>text<p>text</p></body>r*   r   r6   r5   )r   r,   Úbodyr-   r   Úfind_previous_siblingsÚfind_next_siblingsr   s     r   Ú/test_find_all_with_no_arguments_only_finds_tagsÚ;TestFindAll.test_find_all_with_no_arguments_only_finds_tagsM   sz   € Ø�y‰yÐJÓKˆØ”C˜Ÿ	™	×*Ñ*Ó,Ó-Ó-Ð-Ð-Ø”C˜Ÿ	™	 #›×=Ñ=Ó?Ó@Ó@Ð@Ð@Ø”C˜Ÿ	™	 %Ó(×;Ñ;Ó=Ó>Ó>Ð>Ñ>r   c                 ó  • U R                  S5      nUR                  SS9S/:X  d   eUR                  SS/S9SS/:X  d   eUR                  [        R                  " S5      S9/ SQ:X  d   eUR                  SS9/ SQ:X  d   eg)	z'You can search the tree for text nodes.u   <html>Foo<b>bar</b>Â»</html>Úbarr   ÚFooz.*)r]   r\   ô   Â»TN)r   r-   ÚreÚcompiler   s     r   Útest_find_all_text_nodesÚ$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                 ó4  • U R                  S5      nU R                  UR                  SSS9/ SQ5        U R                  UR                  SSS9S/5        U R                  UR                  SSS9/ S	Q5        U R                  UR                  SS
S9/ S	Q5        g)z7You can limit the number of items returned by find_all.z(<a>1</a><a>2</a><a>3</a><a>4</a><a>5</a>r1   é   ©Úlimit)Ú1r   Ú3r   rg   é
   )rg   r   rh   Ú4Ú5r   N©r   Úassert_selectsr-   r   s     r   Útest_find_all_limitÚTestFindAll.test_find_all_limit`   s‹   € à�y‰yÐCÓDˆØ×Ñ˜DŸM™M¨#°Q˜MÐ7ºÔIØ×Ñ˜DŸM™M¨#°Q˜MÐ7¸#¸Ô?Ø×Ñ˜DŸM™M¨#°R˜MÐ8Ò:SÔTð 	×Ñ˜DŸM™M¨#°Q˜MÐ7Ò9RÕSr   c                 ó–   • U R                  S5      nU R                  U" SSS9S/5        U R                  UR                  SS9S/5        g )	Nz!<a>1</a><b>2<a id='foo'>3</a></b>r1   r   re   rg   Úfoor"   rh   )r   rm   r   r   s     r   Ú%test_calling_a_tag_is_calling_findallÚ1TestFindAll.test_calling_a_tag_is_calling_findallj   sG   € Ø�y‰yÐ<Ó=ˆØ×Ñ™D ¨AÑ.°°Ô6Ø×Ñ˜DŸF™F e˜FÐ,¨s¨eÕ4r   c                 óF  • U R                  S5      n/ nUR                  U5        [        R                  " SS9 n/ UR	                  U5      :X  d   eUu  nUR
                  [        :X  d   e[        UR                  5      nUS:X  d   e S S S 5        g ! , (       d  f       g = f)Nú<a></a>T©ÚrecordzLIgnoring nested list [[...]] to avoid the possibility of infinite recursion.)	r   ÚappendÚwarningsÚcatch_warningsr-   ÚfilenameÚ__file__r$   Úmessage)r   r   ÚselfrefÚwÚwarningÚmsgs         r   ÚTtest_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursionÚ`TestFindAll.test_find_all_with_self_referential_data_structure_does_not_cause_infinite_recursiono   s˜   € ð �y‰y˜Ó#ˆàˆØ�‰�wÔô ×$Ò$¨DÒ1°QØ˜Ÿ™ wÓ/Ó/Ð/Ð/Ø‰IˆWØ×#Ñ#¤xÓ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØaóbðñb÷ 2×1Ö1ús   ¹ABÂ
B c                 óú   • U R                  S5      nUR                  S5      n[        US5      (       d   eUR                  S5      n[        US5      (       d   eUR                  SS9n[        US5      (       d   eg)z%All find_all calls return a ResultSetru   r1   ÚsourceTrq   r   N)r   r-   Úhasattr©r   r   Úresults      r   Útest_find_all_resultsetÚ#TestFindAll.test_find_all_resultsetƒ   su   € à�y‰y˜Ó#ˆØ—‘˜sÓ#ˆÜ�v˜x×(Ñ(Ð(Ð(à—‘˜tÓ$ˆÜ�v˜x×(Ñ(Ð(Ð(à—‘ e�Ð,ˆÜ�v˜x×(Ñ(Ð(Ñ(r   rI   N)rL   rM   rN   rO   rP   rY   ra   rn   rr   r‚   r‰   rQ   rI   r   r   rS   rS   J   s%   † Ù/ò?òDòTò5ò
õ(
)r   rS   c                   ó   • \ rS rSrS rSrg)ÚTestFindAllBasicNamespacesé�   c                 óª   • U R                  S5      nSUR                  S5      R                  :X  d   eSUR                  SS0S9R                  :X  d   eg )Nz0<mathml:msqrt>4</mathml:msqrt><a svg:fill="red">rj   zmathml:msqrtr1   zsvg:fillÚred©Úattrs)r   r   r   r8   r   s     r   Útest_find_by_namespaced_nameÚ7TestFindAllBasicNamespaces.test_find_by_namespaced_name‘   sR   € Ø�y‰yÐKÓLˆØ�d—i‘i Ó/×6Ñ6Ó6Ð6Ð6Ø�d—i‘i z°5Ð&9�iÐ:×?Ñ?Ó?Ð?Ñ?r   rI   N)rL   rM   rN   rO   r’   rQ   rI   r   r   rŒ   rŒ   �   s   † õ@r   rŒ   c                   ó^   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)ÚTestFindAllByNameé—   z&Test ways of finding tags by tag name.Nc                 ó0   • U R                  S5      U l        g )Nz�<a>First tag.</a>
                                  <b>Second tag.</b>
                                  <c>Third <a>Nested tag.</a> tag.</c>©r   Útree©r   s    r   Úsetup_methodÚTestFindAllByName.setup_methodš   s   € Ø—I‘Ið Jó Kˆ�	r   c                 ó^   • U R                  U R                  R                  S5      SS/5        g ©Nr1   ú
First tag.úNested tag.©rm   r™   r-   rš   s    r   Útest_find_all_by_tag_nameÚ+TestFindAllByName.test_find_all_by_tag_nameŸ   s&   € à×Ñ˜DŸI™I×.Ñ.¨sÓ3°lÀMÐ5RÕSr   c                 ó2  • U R                  U R                  R                  SSS9S/5        U R                  U R                  R                  SSS9SS/5        U R                  U R                  R                  S[        R                  " S5      S9SS/5        g )Nr1   rŸ   r   Tr    Útag©rm   r™   r-   r_   r`   rš   s    r   Útest_find_all_by_name_and_textÚ0TestFindAllByName.test_find_all_by_name_and_text£   s‘   € Ø×ÑØ�I‰I×Ñ˜s¨<ÐÐ8¸<¸.ô	
ð 	×ÑØ�I‰I×Ñ˜s¨4ÐÐ0°<ÀÐ2Oô	
ð 	×ÑØ�I‰I×Ñ˜s¬2¯:ª:°eÓ+<ÐÐ=Ø˜=Ð)õ	
r   c                 óp   • U R                  U R                  R                  R                  S5      S/5        g )Nr1   r    )rm   r™   Úcr-   rš   s    r   Ú!test_find_all_on_non_root_elementÚ3TestFindAllByName.test_find_all_on_non_root_element±   s'   € à×Ñ˜DŸI™IŸK™K×0Ñ0°Ó5¸°ÕGr   c                 óJ   • U R                  U R                  S5      SS/5        g rž   )rm   r™   rš   s    r   Ú%test_calling_element_invokes_find_allÚ7TestFindAllByName.test_calling_element_invokes_find_allµ   s   € Ø×Ñ˜DŸI™I c›N¨\¸=Ð,IÕJr   c                 óp   • U R                  U R                  R                  [        S5      5      SS/5        g rž   )rm   r™   r-   r
   rš   s    r   Útest_find_all_by_tag_strainerÚ/TestFindAllByName.test_find_all_by_tag_strainer¸   s.   € Ø×ÑØ�I‰I×Ñœ|¨CÓ0Ó1°LÀ-Ð3Põ	
r   c                 ób   • U R                  U R                  R                  SS/5      / SQ5        g )Nr1   r   ©rŸ   zSecond tag.r    r¡   rš   s    r   Útest_find_all_by_tag_namesÚ,TestFindAllByName.test_find_all_by_tag_names½   s)   € Ø×ÑØ�I‰I×Ñ  S˜zÓ*Ò,Xõ	
r   c                 ód   • U R                  U R                  R                  SSS.5      / SQ5        g )NT)r1   r   r´   r¡   rš   s    r   Útest_find_all_by_tag_dictÚ+TestFindAllByName.test_find_all_by_tag_dictÂ   s*   € Ø×ÑØ�I‰I×Ñ T°Ñ5Ó6Ú8õ	
r   c                 ó†   • U R                  U R                  R                  [        R                  " S5      5      / SQ5        g )Nz^[ab]$r´   r¦   rš   s    r   Útest_find_all_by_tag_reÚ)TestFindAllByName.test_find_all_by_tag_reÈ   s.   € Ø×ÑØ�I‰I×ÑœrŸzšz¨(Ó3Ó4Ú8õ	
r   c                 ór   • S nU R                  S5      nU R                  UR                  U5      SS/5        g )Nc                 ó>   • U R                   U R                  S5      :H  $ )Nr#   )r8   Úget©r¥   s    r   Úid_matches_nameÚRTestFindAllByName.test_find_all_with_tags_matching_method.<locals>.id_matches_nameÑ   s   € Ø—8‘8˜sŸw™w t›}Ñ,Ð,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.rl   )r   rÁ   r™   s      r   Ú'test_find_all_with_tags_matching_methodÚ9TestFindAllByName.test_find_all_with_tags_matching_methodÎ   s<   € ò	-ð �y‰yð 6ó 7ˆð 	×Ñ˜DŸM™M¨/Ó:¸ZÈÐ<TÕUr   c                 óR  • U R                  S5      nUR                  SS5      nUR                  S[        R                  " S5      5      nUR	                  SSS/5      u  pESUR
                  :X  d   eSUR
                  :X  d   eSUR
                  :X  d   eSUR
                  :X  d   eg )NzH<div class='a b'>1</div><div class='a c'>2</div><div class='a d'>3</div>r5   za dza brh   rg   )r   r   r_   r`   r-   r   )r   r   Úr1Úr2Úr3Úr4s         r   Ú%test_find_with_multi_valued_attributeÚ7TestFindAllByName.test_find_with_multi_valued_attributeÚ   sœ   € Ø�y‰yØVó
ˆð �Y‰Y�u˜eÓ$ˆØ�Y‰Y�uœbŸjšj¨Ó0Ó1ˆØ—‘˜u u¨e nÓ5‰ˆØ�b—i‘iÓÐÐØ�b—i‘iÓÐÐØ�b—i‘iÓÐÐØ�b—i‘iÓÐÑr   ©r™   ©ÚreturnN)rL   rM   rN   rO   rP   r›   r¢   r§   r«   r®   r±   rµ   r¸   r»   rÃ   rÊ   rQ   rI   r   r   r•   r•   —   sA   † Ù0ôKò
Tò
òHòKò
ò

ò

ò
ò
Võ
 r   r•   c                   ót   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)ÚTestFindAllByAttributeéç   c                 óh   • U R                  S5      nU R                  UR                  SS9SS/5        g )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.rl   ©r   r™   s     r   Útest_find_all_by_attribute_nameÚ6TestFindAllByAttribute.test_find_all_by_attribute_nameè   s9   € ð �y‰yð !ó "ˆð
 	×Ñ˜DŸM™M¨W˜MÐ5¸À}Ð7UÕVr   c                 óX  • SR                  S5      nSR                  S5      nU R                  U5      nUR                  /UR                  US9:X  d   eUR                  /UR                  UR	                  S5      S9:X  d   eUR                  /(       d   UR                  US/S95       eg )Nu   ×�×•×œ×©Úutf8u   <a title="×�×•×œ×©"></a>)Útitlezsomething else)Úencoder   r1   r-   Údecode)r   ÚpeaceÚdatar   s       r   Ú%test_find_all_by_utf8_attribute_valueÚ<TestFindAllByAttribute.test_find_all_by_utf8_attribute_valueò   sš   € Ø×!Ñ! &Ó)ˆØ)×0Ñ0°Ó8ˆØ�y‰y˜‹ˆØ—‘ˆx˜4Ÿ=™=¨u˜=Ð5Ó5Ð5Ð5Ø—‘ˆx˜4Ÿ=™=¨u¯|©|¸FÓ/C˜=ÐDÓDÐDÐDØ—‘ŽxÐG˜Ÿ™¨eÐ5EÐ-F˜ÐGÓG‰xr   c                 óî   • U R                  S5      nU R                  UR                  SS9S/5        U R                  UR                  SS0S9S/5        U R                  UR                  SS	0S9S
/5        g )Na0  
                         <a name="name1" class="class1">Name match.</a>
                         <a name="name2" class="class2">Class match.</a>
                         <a name="name3" class="class3">Non-match.</a>
                         <name1>A tag called 'name1'.</name1>
                         Úname1rC   zA tag called 'name1'.r8   r�   zName match.ÚclassÚclass2zClass match.rl   rÔ   s     r   Útest_find_all_by_attribute_dictÚ6TestFindAllByAttribute.test_find_all_by_attribute_dictú   s}   € ð �y‰yð ó ˆð 	×Ñ˜DŸM™M¨w˜MÐ7Ð:QÐ9RÔSà×Ñ˜DŸM™M°¸Ð0A˜MÐBÀ]ÀOÔTà×Ñ˜DŸM™M°¸(Ð0C˜MÐDÀ~ÐFVÕWr   c                 ó   • U R                  S5      nU R                  UR                  SSS9S/5        U R                  UR                  SSS9S/5        U R                  UR                  SS	S9S/5        U R                  UR                  SS5      S/5        U R                  UR                  SS
9SS/5        U R                  UR                  SS5      S/5        U R                  UR                  SS	5      S/5        g )Nzî
                         <a class="1">Class 1.</a>
                         <a class="2">Class 2.</a>
                         <b class="1">Class 1.</b>
                         <c class="3 4">Class 3 and 4.</c>
                         r1   rg   ©Úclass_zClass 1.rª   rh   zClass 3 and 4.rj   r�   rl   rÔ   s     r   Útest_find_all_by_classÚ-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                 óp  • U R                  S5      nUR                  S[        R                  " S5      S9nU R	                  US/5        UR                  S[        R                  " S5      S9nU R	                  US/5        UR                  S[        R                  " S5      S9nU R	                  US/5        g )Nz#<gar class='foo bar'>Found it</gar>ÚgarÚorç   úFound itr1   zo b)r   r-   r_   r`   rm   )r   r™   Úfs      r   Ú0test_find_by_class_when_multiple_classes_presentÚGTestFindAllByAttribute.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                 ó*  • U R                  S5      nU R                  UR                  S[        R                  " S5      5      S/5        S nU R                  UR                  SU5      / 5        S nU R                  UR                  SU5      S/5        g )Nz<a class='bar'>Found it</a>r1   Úbarî   c                 ó   • [        U 5      S:„  $ ©Nrd   ©r,   ©Úvalues    r   Úbig_attribute_valueÚnTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.big_attribute_value3  s   € Ü�u“: ‘>Ð!r   c                 ó   • [        U 5      S:*  $ rõ   rö   r÷   s    r   Úsmall_attribute_valueÚpTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.<locals>.small_attribute_value8  s   € Ü�u“: ‘?Ð"r   ©r   rm   r-   r_   r`   )r   r   rù   rü   s       r   Ú:test_find_all_with_non_dictionary_for_attrs_finds_by_classÚQTestFindAllByAttribute.test_find_all_with_non_dictionary_for_attrs_finds_by_class.  s   € Ø�y‰yÐ6Ó7ˆà×Ñ˜DŸM™M¨#¬r¯zªz¸$Ó/?Ó@À:À,ÔOò	"ð 	×Ñ˜DŸM™M¨#Ð/BÓCÀRÔHò	#ð 	×Ñ˜DŸM™M¨#Ð/DÓEÈ
À|ÕTr   c                 óX  • U R                  S5      nUR                  S5      u  p#X#/(       d   UR                  SS5      5       eU/(       d   UR                  SS5      5       eU/UR                  SSS9:X  d   eU/UR                  SS5      :X  d   e/ UR                  SS5      :X  d   eg )Nz*<a class="foo bar"></a><a class="foo"></a>r1   rq   r\   zfoo barrç   zbar foo©r   r-   )r   r   r1   Úa2s       r   Ú:test_find_all_with_string_for_attrs_finds_multiple_classesÚQTestFindAllByAttribute.test_find_all_with_string_for_attrs_finds_multiple_classes=  s¨   € Ø�y‰yÐEÓFˆØ—‘˜cÓ"‰ˆØŽwÐ1˜Ÿ™ c¨5Ó1Ó1ˆwØŽsÐ-�D—M‘M # uÓ-Ó-ˆsð ˆs�d—m‘m C°	�mÐ:Ó:Ð:Ð:Øˆs�d—m‘m C¨Ó3Ó3Ð3Ð3Ø�T—]‘] 3¨	Ó2Ó2Ð2Ñ2r   c                 ó€   • U R                  S5      n[        SS0S9nU R                  UR                  U5      S/5        g )Nzi
                         <a id="first">Match.</a>
                         <a id="second">Non-match.</a>r#   rÓ   r�   zMatch.)r   r
   rm   r-   )r   r™   Ústrainers      r   Ú'test_find_all_by_attribute_soupstrainerÚ>TestFindAllByAttribute.test_find_all_by_attribute_soupstrainerI  s@   € Ø�y‰yð :ó ;ˆô   t¨W oÑ6ˆØ×Ñ˜DŸM™M¨(Ó3°h°ZÕ@r   c                 óh   • U R                  S5      nU R                  UR                  SS S9S/5        g )Nú�<a id="1">ID present.</a>
                            <a>No ID present.</a>
                            <a id="">ID is empty.</a>r1   r"   zNo ID present.rl   rÔ   s     r   Ú$test_find_all_with_missing_attributeÚ;TestFindAllByAttribute.test_find_all_with_missing_attributeQ  s:   € ð �y‰yð 9ó :ˆð 	×Ñ˜DŸM™M¨#°$˜MÐ7Ð:JÐ9KÕLr   c                 óh   • U R                  S5      nU R                  UR                  SS9SS/5        g )Nr  Tr"   zID present.zID is empty.rl   rÔ   s     r   Ú$test_find_all_with_defined_attributeÚ;TestFindAllByAttribute.test_find_all_with_defined_attributeY  s9   € ð �y‰yð 9ó :ˆð 	×Ñ˜DŸM™M¨T˜MÐ2°]ÀNÐ4SÕTr   c                 óª   • U R                  S5      nSS/nU R                  UR                  SS9U5        U R                  UR                  SS9U5        g )Nz[<a id=1>Unquoted attribute.</a>
                            <a id="1">Quoted attribute.</a>zUnquoted attribute.zQuoted attribute.r   r"   rg   rl   )r   r™   Úexpecteds      r   Ú$test_find_all_with_numeric_attributeÚ;TestFindAllByAttribute.test_find_all_with_numeric_attributea  sY   € à�y‰yð ?ó @ˆð *Ð+>Ð?ˆØ×Ñ˜DŸM™M¨Q˜MÐ/°Ô:Ø×Ñ˜DŸM™M¨S˜MÐ1°8Õ<r   c                 óª   • U R                  S5      nU R                  UR                  / SQS9SS/5        U R                  UR                  / S9/ 5        g )Nz‘<a id="1">1</a>
                            <a id="2">2</a>
                            <a id="3">3</a>
                            <a>No ID.</a>)rg   rh   rj   r"   rg   rh   rl   rÔ   s     r   Ú(test_find_all_with_list_attribute_valuesÚ?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                 ó�   • U R                  S5      nU R                  UR                  [        R                  " S5      S9SS/5        g )NzÞ<a id="a">One a.</a>
                            <a id="aa">Two as.</a>
                            <a id="ab">Mixed as and bs.</a>
                            <a id="b">One b.</a>
                            <a>No ID.</a>z^a+$r"   zOne a.zTwo as.rþ   rÔ   s     r   Ú5test_find_all_with_regular_expression_attribute_valueÚLTestFindAllByAttribute.test_find_all_with_regular_expression_attribute_valuev  sB   € ð �y‰yð -ó .ˆð 	×Ñ˜DŸM™M¬R¯ZªZ¸Ó-?˜MÐ@À8ÈYÐBWÕXr   c                 ó˜   • U R                  S5      nUR                  nU/UR                  SSS9:X  d   e/ UR                  SSS9:X  d   eg )Nz<b>foo</b><b>bar</b><a>foo</a>r1   rq   r   r\   ©r   r1   r-   ©r   r   r1   s      r   Ú'test_find_by_name_and_containing_stringÚ>TestFindAllByAttribute.test_find_by_name_and_containing_string‚  sR   € Ø�y‰yÐ9Ó:ˆØ�F‰Fˆàˆs�d—m‘m C°�mÐ6Ó6Ð6Ð6Ø�T—]‘] 3¨u�]Ð5Ó5Ð5Ñ5r   c                 óp   • U R                  S5      nUR                  S5      UR                  SSS9:X  d   eg )Nz"<a>foo</a><a><b><c>foo</c></b></a>r1   rq   r   r  r   s     r   Ú=test_find_by_name_and_containing_string_when_string_is_buriedÚTTestFindAllByAttribute.test_find_by_name_and_containing_string_when_string_is_buried‰  s5   € Ø�y‰yÐ=Ó>ˆØ�}‰}˜SÓ! T§]¡]°3¸u ]Ð%EÓEÐEÑEr   c                 ó˜   • U R                  S5      nUR                  nU/UR                  SSS9:X  d   e/ UR                  SSS9:X  d   eg )Nz"<b id="1">foo</b><a id="2">foo</a>r*   rq   )r#   r   r   r\   r  r  s      r   Ú,test_find_by_attribute_and_containing_stringÚCTestFindAllByAttribute.test_find_by_attribute_and_containing_string�  sR   € Ø�y‰yÐ=Ó>ˆØ�F‰Fˆàˆs�d—m‘m q°�mÐ7Ó7Ð7Ð7Ø�T—]‘] a°�]Ð6Ó6Ð6Ñ6r   rI   N)rL   rM   rN   rO   rÕ   rÞ   rä   ré   rð   rÿ   r  r  r  r  r  r  r  r  r!  r$  rQ   rI   r   r   rÐ   rÐ   ç   s\   † òWòHòXò$Iò(-òUò
3òAòMòUò=ò
6ò
Yò6òFõ7r   rÐ   c                   ó   • \ rS rSrSrS rSrg)Ú
TestSmoothi•  zTest Tag.smooth.c                 ó"  • U R                  S5      nUR                  nUR                  S5        UR                  S5        UR                  [        S5      5        UR                  [        S5      5        UR                  S5        U R	                  5       n[        XS5      nUR                  S5        UR                  S	5        UR                  U5        S UR                  R                  L d   eS
[        UR                  5      :X  d   eUR                  5         S[        UR                  5      :X  d   eSUR                  S   :X  d   eSUR                  R                  :X  d   eSUR                  S   :X  d   eSUR                  S   :X  d   eg )Nz<div>a</div>r   rª   z	Comment 1z	Comment 2ÚdÚspanrg   r   é   é   Úabcr   Ú12r   r*   )r   r5   rx   r   Údefault_builderr	   r*  r   r,   ÚcontentsÚsmooth)r   r   r5   Úbuilderr*  s        r   Útest_smoothÚTestSmooth.test_smooth˜  sG  € Ø�y‰y˜Ó(ˆØ�h‰hˆØ�
‰
�3ŒØ�
‰
�3ŒØ�
‰
”7˜;Ó'Ô(Ø�
‰
”7˜;Ó'Ô(Ø�
‰
�3ŒØ×&Ñ&Ó(ˆÜ�4 &Ó)ˆØ�‰�CÔØ�‰�CÔØ�
‰
�4Ôð �s—x‘x—‘Ò&Ð&Ð&à”C˜Ÿ™Ó%Ó%Ð%Ð%Ø�
‰
ŒØ”C˜Ÿ™Ó%Ó%Ð%Ð%ð
 ˜Ÿ™ Q™Ó'Ð'Ð'ð �s—x‘x—‘Ó&Ð&Ð&ð
 ˜cŸl™l¨1™oÓ-Ð-Ð-Ø˜cŸl™l¨1™oÓ-Ð-Ñ-r   rI   N)rL   rM   rN   rO   rP   r3  rQ   rI   r   r   r'  r'  •  s
   † Ùõ&.r   r'  c                   ó   • \ rS rSrSrS rSrg)Ú	TestIndexiÁ  zTest Tag.indexc                 ó0  • U R                  S5      nUR                  n[        UR                  5       H  u  p4X2R	                  U5      :X  a  M   e   [
        R                  " [        5         UR	                  S5        S S S 5        g ! , (       d  f       g = f)Nah  <div>
                            <a>Identical</a>
                            <b>Not identical</b>
                            <a>Identical</a>

                            <c><d>Identical with child</d></c>
                            <b>Also not identical</b>
                            <c><d>Identical with child</d></c>
                            </div>r   )r   r5   Ú	enumerater0  ÚindexÚpytestÚraisesÚ
ValueError)r   r™   r5   ÚiÚelements        r   Ú
test_indexÚTestIndex.test_indexÄ  sm   € Ø�y‰yð &ó 'ˆð �h‰hˆÜ# C§L¡LÖ1‰JˆAØŸ	™	 'Ó*Õ*Ð*Ð*ñ 2ä�]Š]œ:Õ&Ø�J‰J�qŒM÷ '×&Ö&ús   Á,BÂ
BrI   N)rL   rM   rN   rO   rP   r?  rQ   rI   r   r   r6  r6  Á  s
   † Ùõr   r6  c                   óX   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rS rS rSrg)ÚTestParentOperationsiÕ  z;Test navigation and searching through an element's parents.Nc                 óf   • U R                  S5      U l        U R                  R                  U l        g )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›   Ú!TestParentOperations.setup_methodØ  s(   € Ø—I‘Ið +ó ,ˆŒ	ð —Y‘Y—[‘[ˆ�
r   c                 óú   • U R                   R                  S   S:X  d   eU R                   R                  R                  S   S:X  d   eU R                   R                  R                  R                  S   S:X  d   eg )Nr#   ÚbottomÚmiddleÚtop)rD  Úparentrš   s    r   Útest_parentÚ TestParentOperations.test_parentâ  sk   € Ø�z‰z× Ñ  Ñ&¨(Ó2Ð2Ð2Ø�z‰z× Ñ ×'Ñ'¨Ñ-°Ó9Ð9Ð9Ø�z‰z× Ñ ×'Ñ'×.Ñ.¨tÑ4¸Ó=Ð=Ñ=r   c                 ón   • U R                   R                  S   nUR                  U R                   :X  d   eg )Nr   )r™   r0  rJ  )r   Útop_tags     r   Ú%test_parent_of_top_tag_is_soup_objectÚ:TestParentOperations.test_parent_of_top_tag_is_soup_objectç  s,   € Ø—)‘)×$Ñ$ QÑ'ˆØ�~‰~ §¡Ó*Ð*Ñ*r   c                 ó:   • S U R                   R                  L d   eg ©N)r™   rJ  rš   s    r   Útest_soup_object_has_no_parentÚ3TestParentOperations.test_soup_object_has_no_parentë  s   € Ø�t—y‘y×'Ñ'Ò'Ð'Ñ'r   c                 óò   • U R                  U R                  R                  S5      / SQ5        U R                  U R                  R                  SSS9S/5        U R                  R                  SS9/ :X  d   eg )NÚul©rG  rH  rI  rH  r"   rD  )Úassert_selects_idsrD  Úfind_parentsrš   s    r   Útest_find_parentsÚ&TestParentOperations.test_find_parentsî  sm   € Ø×ÑØ�J‰J×#Ñ# DÓ)Ò+Fô	
ð 	×Ñ §
¡
× 7Ñ 7¸ÀÐ 7Ð JÈXÈJÔWØ�z‰z×&Ñ&¨'Ð&Ð2°bÓ8Ð8Ñ8r   c                 ó‚   • U R                   R                  SSS9S   S:X  d   eU R                   R                  SS9b   eg )NrV  rI  r"   r#   rD  )rD  Úfind_parentrš   s    r   Útest_find_parentÚ%TestParentOperations.test_find_parentõ  sG   € à�z‰z×%Ñ% d¨uÐ%Ð5°dÑ;¸uÓDÐDÐDà�z‰z×%Ñ%¨Ð%Ð1Ñ9Ð9Ñ9r   c                 ón   • U R                   R                  SS9nUR                  R                  S:X  d   eg )Nú
Start herer   r   )r™   r   rJ  r8   ©r   r%   s     r   Útest_parent_of_text_elementÚ0TestParentOperations.test_parent_of_text_elementû  s.   € Ø�y‰y�~‰~ \ˆ~Ð2ˆØ�{‰{×Ñ 3Ó&Ð&Ñ&r   c                 ój   • U R                   R                  SS9nUR                  S5      S   S:X  d   eg )Nra  r   rV  r#   rG  )r™   r   r]  rb  s     r   Útest_text_element_find_parentÚ2TestParentOperations.test_text_element_find_parentÿ  s4   € Ø�y‰y�~‰~ \ˆ~Ð2ˆØ×Ñ Ó% dÑ+¨xÓ7Ð7Ñ7r   c                 ó¢   • U R                   R                   Vs/ s H  nUc  M  SUR                  ;   d  M  US   PM!     nnU/ SQ:X  d   eg s  snf )Nr#   rW  )rD  Úparentsr‘   )r   rJ  ri  s      r   Útest_parent_generatorÚ*TestParentOperations.test_parent_generator  s^   € ð Ÿ*™*×,Ò,ó
â,�Øó à&*¨f¯l©lÑ&:ó ˆF�4ŒLÙ,ð 	ð 
ð
 Ò5Ó5Ð5Ñ5ùò
ó   ™A¤A¶	Ac                 ó¢   • U R                   R                   Vs/ s H  nUc  M  SUR                  ;   d  M  US   PM!     nnU/ SQ:X  d   eg s  snf )Nr#   )rD  rG  rH  rI  )rD  Úself_and_parentsr‘   )r   rJ  Úresultss      r   Útest_self_and_parent_generatorÚ3TestParentOperations.test_self_and_parent_generator  s^   € ð Ÿ*™*×5Ò5ó
â5�Øó à&*¨f¯l©lÑ&:ó ˆF�4ŒLÙ5ð 	ð 
ð
 Ò>Ó>Ð>Ñ>ùò
rl  )rD  r™   rÍ   )rL   rM   rN   rO   rP   r›   rK  rO  rS  rZ  r^  rc  rf  rj  rp  rQ   rI   r   r   rB  rB  Õ  s7   † ÙEô!ò>ò
+ò(ò9ò:ò'ò8ò6õ?r   rB  c                   ó   • \ rS rSrSS jrSrg)ÚProximityTesti  Nc                 ó0   • U R                  S5      U l        g )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›   ÚProximityTest.setup_method  s   € Ø—I‘Ið Pó
ˆ�	r   rÌ   rÍ   ©rL   rM   rN   rO   r›   rQ   rI   r   r   rs  rs    s   † ÷
r   rs  c                   óV   ^ • \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
rU =r$ )ÚTestNextOperationsi  c                 ó`   >• [         [        U ]  5         U R                  R                  U l        g rR  )Úsuperrx  r›   r™   r   rD  ©r   Ú	__class__s    €r   r›   ÚTestNextOperations.setup_method  s    ø€ ÜÔ  $Ñ4Ô6Ø—Y‘Y—[‘[ˆ�
r   c                 óŽ   • U R                   R                  S:X  d   eU R                   R                  R                  S   S:X  d   eg )NÚOner#   r   )rD  Únext_elementrš   s    r   Ú	test_nextÚTestNextOperations.test_next   s=   € Ø�z‰z×&Ñ&¨%Ó/Ð/Ð/Ø�z‰z×&Ñ&×3Ñ3°DÑ9¸SÓ@Ð@Ñ@r   c                 óT   • U R                   R                  SS9nUR                  b   eg ©NÚThreer   )r™   r   r€  )r   Úlasts     r   Útest_next_of_last_item_is_noneÚ1TestNextOperations.test_next_of_last_item_is_none$  s(   € Ø�y‰y�~‰~ Wˆ~Ð-ˆØ× Ñ Ñ(Ð(Ñ(r   c                 ó6   • U R                   R                  b   eg rR  )r™   r€  rš   s    r   Útest_next_of_root_is_noneÚ,TestNextOperations.test_next_of_root_is_none(  s   € à�y‰y×%Ñ%Ñ-Ð-Ñ-r   c                 óä   • U R                  U R                  R                  S5      SS/5        U R                  R                  SS9  U R                  U R                  R                  SS9S/5        g )Nr   ÚTwor…  rd   r"   )rm   rD  Úfind_all_nextrš   s    r   Útest_find_all_nextÚ%TestNextOperations.test_find_all_next,  s_   € Ø×Ñ˜DŸJ™J×4Ñ4°SÓ9¸EÀ7Ð;KÔLØ�
‰
× Ñ  AÐ Ñ&Ø×Ñ˜DŸJ™J×4Ñ4¸Ð4Ð:¸W¸IÕFr   c                 óŠ   • U R                   R                  S5      S   S:X  d   eU R                   R                  SS9S:X  d   eg )Nr   r#   r   r…  r   )rD  Ú	find_nextrš   s    r   Útest_find_nextÚ!TestNextOperations.test_find_next1  sD   € Ø�z‰z×#Ñ# CÓ(¨Ñ.°#Ó5Ð5Ð5Ø�z‰z×#Ñ#¨7Ð#Ð3°wÓ>Ð>Ñ>r   c                 ó¾   • U R                   R                  SS9nUR                  S5      R                  S:X  d   eU R	                  UR                  S5      SS/5        g )Nr  r   r   r�  r…  )r™   r   r’  r   rm   rŽ  rb  s     r   Útest_find_next_for_text_elementÚ2TestNextOperations.test_find_next_for_text_element5  sS   € Ø�y‰y�~‰~ Uˆ~Ð+ˆØ�~‰~˜cÓ"×)Ñ)¨UÓ2Ð2Ð2Ø×Ñ˜D×.Ñ.¨sÓ3°e¸WÐ5EÕFr   c                 ó  • U R                   R                  SS9nUR                   Vs/ s H  o"PM     nnUu  pEUS   S:X  d   eUS:X  d   eUR                   Vs/ s H  o"PM     nnUSS  U:X  d   eUS   U:X  d   eg s  snf s  snf )Nr�  r   r#   rh   r…  r   r   )r™   r   Únext_elementsÚself_and_next_elements)r   rD  ÚnodeÚ
successorsr¥   r0  Úsuccessors2s          r   Útest_next_generatorsÚ'TestNextOperations.test_next_generators:  s¦   € Ø—	‘	—‘ e�Ð,ˆØ',×':Ò':Ó;Ò':˜t’dÑ':ˆ
Ð;à"‰ˆØ�4‰y˜CÓÐÐØ˜7Ó"Ð"Ð"à(-×(DÒ(DÓEÒ(D ’tÑ(DˆÐEØ˜1˜2ˆ *Ó,Ð,Ð,Ø˜1‰~ Ó&Ð&Ñ&ùò <ùò Fs   ¨A>ÁB©rD  rÍ   )rL   rM   rN   rO   r›   r�  r‡  rŠ  r�  r“  r–  rž  rQ   Ú__classcell__©r|  s   @r   rx  rx    s3   ø† ÷!òAò)ò.òGò
?òG÷

'ð 
'r   rx  c                   óV   ^ • \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
rU =r$ )ÚTestPreviousOperationsiG  c                 óf   >• [         [        U ]  5         U R                  R	                  SS9U l        g r„  )rz  r¤  r›   r™   r   Úendr{  s    €r   r›   Ú#TestPreviousOperations.setup_methodH  s'   ø€ ÜÔ$ dÑ8Ô:Ø—9‘9—>‘>¨�>Ð1ˆ�r   c                 óŽ   • U R                   R                  S   S:X  d   eU R                   R                  R                  S:X  d   eg )Nr#   rh   r�  )r¦  Úprevious_elementrš   s    r   Útest_previousÚ$TestPreviousOperations.test_previousL  s=   € Ø�x‰x×(Ñ(¨Ñ.°#Ó5Ð5Ð5Ø�x‰x×(Ñ(×9Ñ9¸UÓBÐBÑBr   c                 óX   • U R                   R                  S5      nUR                  b   eg )NÚhtml)r™   r   r©  )r   rÓ   s     r   Ú#test_previous_of_first_item_is_noneÚ:TestPreviousOperations.test_previous_of_first_item_is_noneP  s&   € Ø—	‘	—‘˜vÓ&ˆØ×%Ñ%Ñ-Ð-Ñ-r   c                 ó6   • U R                   R                  b   eg rR  )r™   r©  rš   s    r   Útest_previous_of_root_is_noneÚ4TestPreviousOperations.test_previous_of_root_is_noneT  s   € à�y‰y×)Ñ)Ñ1Ð1Ñ1r   c                 ó²   • U R                  U R                  R                  S5      / SQ5        U R                  U R                  R                  SS9S/5        g )Nr   ©r…  r�  r  r   r"   r  )rm   r¦  Úfind_all_previousrš   s    r   Útest_find_all_previousÚ-TestPreviousOperations.test_find_all_previousX  sH   € ð 	×Ñ˜DŸH™H×6Ñ6°sÓ;Ò=TÔUØ×Ñ˜DŸH™H×6Ñ6¸!Ð6Ð<¸u¸gÕFr   c                 óŠ   • U R                   R                  S5      S   S:X  d   eU R                   R                  SS9S:X  d   eg )Nr   r#   rh   r  r   )r¦  Úfind_previousrš   s    r   Útest_find_previousÚ)TestPreviousOperations.test_find_previous_  sD   € Ø�x‰x×%Ñ% cÓ*¨4Ñ0°CÓ7Ð7Ð7Ø�x‰x×%Ñ%¨UÐ%Ð3°uÓ<Ð<Ñ<r   c                 ó¾   • U R                   R                  SS9nUR                  S5      R                  S:X  d   eU R	                  UR                  S5      / SQ5        g )Nr…  r   r   r´  )r™   r   r¹  r   rm   rµ  rb  s     r   Ú#test_find_previous_for_text_elementÚ:TestPreviousOperations.test_find_previous_for_text_elementc  sQ   € Ø�y‰y�~‰~ Wˆ~Ð-ˆØ×!Ñ! #Ó&×-Ñ-°Ó8Ð8Ð8Ø×Ñ˜D×2Ñ2°3Ó7Ò9PÕQr   c                 ó°   • U R                   R                  SSS9nU R                  UR                  / SQ5        U R                  UR                  / SQ5        g )Nr   r  r   )ÚbodytagÚheadtagrD  )rg   rÀ  rÁ  rD  )r™   r   rX  Úprevious_elementsÚself_and_previous_elements)r   rD  s     r   Útest_previous_generatorsÚ/TestPreviousOperations.test_previous_generatorsh  sF   € Ø—	‘	—‘˜s¨5�Ð1ˆØ×Ñ × 7Ñ 7Ò9XÔYØ×Ñ × @Ñ @ÒBfÕgr   ©r¦  rÍ   )rL   rM   rN   rO   r›   rª  r®  r±  r¶  rº  r½  rÄ  rQ   r¡  r¢  s   @r   r¤  r¤  G  s5   ø† ÷2òCò.ò2òGò=òR÷
hð hr   r¤  c                   ó   • \ rS rSrSS jrSrg)ÚSiblingTestin  Nc                 ó€   • Sn[         R                  " S5      R                  SU5      nU R                  U5      U l        g )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*Ú )r_   r`   Úsubr   r™   )r   Úmarkups     r   r›   ÚSiblingTest.setup_methodo  s6   € ðˆô —’˜HÓ%×)Ñ)¨"¨fÓ5ˆØ—I‘I˜fÓ%ˆ�	r   rÌ   rÍ   rv  rI   r   r   rÈ  rÈ  n  s   † ÷&r   rÈ  c                   óV   ^ • \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
rU =r$ )ÚTestNextSiblingi‚  c                 óf   >• [         [        U ]  5         U R                  R	                  SS9U l        g )Nrg   r"   )rz  rÏ  r›   r™   r   rD  r{  s    €r   r›   ÚTestNextSibling.setup_methodƒ  s&   ø€ ÜŒo˜tÑ1Ô3Ø—Y‘Y—^‘^ s�^Ð+ˆ�
r   c                 ó6   • U R                   R                  b   eg rR  )r™   Únext_siblingrš   s    r   Ú!test_next_sibling_of_root_is_noneÚ1TestNextSibling.test_next_sibling_of_root_is_none‡  s   € Ø�y‰y×%Ñ%Ñ-Ð-Ñ-r   c                 óÒ   • U R                   R                  S   S:X  d   eU R                   R                  R                  S   S:X  d   eU R                   R                  S   S:X  d   eg )Nr#   r   rh   ú1.1)rD  rÓ  r€  rš   s    r   Útest_next_siblingÚ!TestNextSibling.test_next_siblingŠ  sa   € Ø�z‰z×&Ñ& tÑ,°Ó3Ð3Ð3Ø�z‰z×&Ñ&×3Ñ3°DÑ9¸SÓ@Ð@Ð@ð �z‰z×&Ñ& tÑ,°Ó5Ð5Ñ5r   c                 óê   • U R                   R                  R                  b   eU R                   R                  SS9nUR                  b   eU R                   R                  SS9nUR                  b   eg )Nr×  r"   rj   )r™   r­  rÓ  r   )r   Únested_spanÚ	last_spans      r   Útest_next_sibling_may_not_existÚ/TestNextSibling.test_next_sibling_may_not_exist‘  sh   € Ø�y‰y�~‰~×*Ñ*Ñ2Ð2Ð2à—i‘i—n‘n¨�nÐ.ˆØ×'Ñ'Ñ/Ð/Ð/à—I‘I—N‘N c�NÐ*ˆ	Ø×%Ñ%Ñ-Ð-Ñ-r   c                 óL   • U R                   R                  S5      S   S:X  d   eg )Nr*  r#   r   )rD  r:   rš   s    r   Útest_find_next_siblingÚ&TestNextSibling.test_find_next_siblingš  s$   € Ø�z‰z×+Ñ+¨FÓ3°DÑ9¸SÓ@Ð@Ñ@r   c                 ó²   • U R                  U R                  R                  S5      / SQ5        U R                  U R                  R                  SS9S/5        g )Nr*  ©r   rh   rj   rh   r"   )rX  rD  rX   rš   s    r   Útest_next_siblingsÚ"TestNextSibling.test_next_siblings�  sE   € Ø×Ñ §
¡
× =Ñ =¸fÓ EÂÔWà×Ñ §
¡
× =Ñ =ÀÐ =Ð EÈÀuÕMr   c                 ó¤   • U R                  U R                  R                  / SQ5        U R                  U R                  R                  / SQ5        g )Nrã  )rg   r   rh   rj   )rX  rD  Únext_siblingsÚself_and_next_siblingsrš   s    r   Útest_next_siblings_generatorsÚ-TestNextSibling.test_next_siblings_generators¢  s7   € Ø×Ñ §
¡
× 8Ñ 8º/ÔJØ×Ñ §
¡
× AÑ AÒCWÕXr   c                 óF  • U R                  S5      nUR                  SS9nUR                  R                  S:X  d   eUR                  R                  S:X  d   eU R	                  UR                  S5      S/5        UR                  SS9S:X  d   eUR                  SS9b   eg )NúFoo<b>bar</b>bazr]   r   r   Úbazr\   Únonesuch)r   r   rÓ  r8   rm   rX   r:   ©r   r   rD  s      r   Ú"test_next_sibling_for_text_elementÚ2TestNextSibling.test_next_sibling_for_text_element¦  s¨   € Ø�y‰yÐ+Ó,ˆØ—	‘	 �	Ð'ˆØ×!Ñ!×&Ñ&¨#Ó-Ð-Ð-Ø×!Ñ!×.Ñ.°%Ó7Ð7Ð7à×Ñ˜E×4Ñ4°SÓ9¸E¸7ÔCØ×&Ñ&¨eÐ&Ð4¸Ó=Ð=Ð=Ø×&Ñ&¨jÐ&Ð9ÑAÐAÑAr   r   rÍ   )rL   rM   rN   rO   r›   rÔ  rØ  rÝ  rà  rä  ré  rð  rQ   r¡  r¢  s   @r   rÏ  rÏ  ‚  s5   ø† ÷,ò.ò6ò.òAòNò
Y÷Bð Br   rÏ  c                   óV   ^ • \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
rU =r$ )ÚTestPreviousSiblingi±  c                 óf   >• [         [        U ]  5         U R                  R	                  SS9U l        g )Nrj   r"   )rz  ró  r›   r™   r   r¦  r{  s    €r   r›   Ú TestPreviousSibling.setup_method²  s'   ø€ ÜÔ! 4Ñ5Ô7Ø—9‘9—>‘> S�>Ð)ˆ�r   c                 ó6   • U R                   R                  b   eg rR  )r™   Úprevious_siblingrš   s    r   Ú%test_previous_sibling_of_root_is_noneÚ9TestPreviousSibling.test_previous_sibling_of_root_is_none¶  s   € Ø�y‰y×)Ñ)Ñ1Ð1Ñ1r   c                 óÒ   • U R                   R                  S   S:X  d   eU R                   R                  R                  S   S:X  d   eU R                   R                  S   S:X  d   eg )Nr#   rh   r   z3.1)r¦  r÷  r©  rš   s    r   Útest_previous_siblingÚ)TestPreviousSibling.test_previous_sibling¹  sa   € Ø�x‰x×(Ñ(¨Ñ.°#Ó5Ð5Ð5Ø�x‰x×(Ñ(×9Ñ9¸$Ñ?À3ÓFÐFÐFð �x‰x×(Ñ(¨Ñ.°%Ó7Ð7Ñ7r   c                 óê   • U R                   R                  R                  b   eU R                   R                  SS9nUR                  b   eU R                   R                  SS9nUR                  b   eg )Nr×  r"   rg   )r™   r­  r÷  r   )r   rÛ  Ú
first_spans      r   Ú#test_previous_sibling_may_not_existÚ7TestPreviousSibling.test_previous_sibling_may_not_existÀ  sh   € Ø�y‰y�~‰~×.Ñ.Ñ6Ð6Ð6à—i‘i—n‘n¨�nÐ.ˆØ×+Ñ+Ñ3Ð3Ð3à—Y‘Y—^‘^ s�^Ð+ˆ
Ø×*Ñ*Ñ2Ð2Ñ2r   c                 óL   • U R                   R                  S5      S   S:X  d   eg )Nr*  r#   rh   )r¦  r9   rš   s    r   Útest_find_previous_siblingÚ.TestPreviousSibling.test_find_previous_siblingÉ  s$   € Ø�x‰x×-Ñ-¨fÓ5°dÑ;¸sÓBÐBÑBr   c                 ó²   • U R                  U R                  R                  S5      / SQ5        U R                  U R                  R                  SS9S/5        g )Nr*  ©rh   r   rg   rg   r"   )rX  r¦  rW   rš   s    r   Útest_previous_siblingsÚ*TestPreviousSibling.test_previous_siblingsÌ  sJ   € Ø×ÑØ�H‰H×+Ñ+¨FÓ3²_ô	
ð 	×Ñ §¡× ?Ñ ?À3Ð ?Ð GÈ#ÈÕOr   c                 ó¤   • U R                  U R                  R                  / SQ5        U R                  U R                  R                  / SQ5        g )Nr  )rj   rh   r   rg   )rX  r¦  Úprevious_siblingsÚself_and_previous_siblingsrš   s    r   Ú!test_previous_siblings_generatorsÚ5TestPreviousSibling.test_previous_siblings_generatorsÓ  s7   € Ø×Ñ §¡× :Ñ :ºOÔLØ×Ñ §¡× CÑ CÒEYÕZr   c                 óF  • U R                  S5      nUR                  SS9nUR                  R                  S:X  d   eUR                  R                  S:X  d   eU R	                  UR                  S5      S/5        UR                  SS9S:X  d   eUR                  SS9b   eg )Nrì  rí  r   r   r]   r\   rî  )r   r   r÷  r8   rm   rW   r9   rï  s      r   Ú&test_previous_sibling_for_text_elementÚ:TestPreviousSibling.test_previous_sibling_for_text_element×  s¨   € Ø�y‰yÐ+Ó,ˆØ—	‘	 �	Ð'ˆØ×%Ñ%×*Ñ*¨cÓ1Ð1Ð1Ø×%Ñ%×6Ñ6¸%Ó?Ð?Ð?à×Ñ˜E×8Ñ8¸Ó=À¸wÔGØ×*Ñ*°%Ð*Ð8¸EÓAÐAÐAØ×*Ñ*°*Ð*Ð=ÑEÐEÑEr   rÆ  rÍ   )rL   rM   rN   rO   r›   rø  rû  rÿ  r  r  r  r  rQ   r¡  r¢  s   @r   ró  ró  ±  s5   ø† ÷*ò2ò8ò3òCòPò[÷Fð Fr   ró  c                   ó(  • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r\R6                  R9                  SS S /5      S 5       r\R6                  R9                  SS S/S S /45      S! 5       rS" rS# r S$ r!S% r"S& r#S' r$S( r%S) r&S* r'S+ r(S, r)S- r*S. r+S/ r,S0 r-S1 r.S2 r/S3 r0S4 r1S5 r2S6 r3S7 r4S8 r5\R6                  R9                  S9/ S:Q5      S; 5       r6S< r7S= r8S> r9S? r:S@ r;SAr<gB)CÚTestTreeModificationiâ  c                 óZ  • U R                  S5      nSUR                  S'   UR                  5       U R                  S5      :X  d   eUR                  S	 UR                  5       U R                  S5      :X  d   eSUR                  S'   UR                  5       U R                  S5      :X  d   eg )	Nz<a id="1"></a>r*   r#   z<a id="2"></a>ru   rq   Úid2z<a id2="foo"></a>)r   r1   rÛ   Údocument_forr   s     r   Útest_attribute_modificationÚ0TestTreeModification.test_attribute_modificationã  s•   € Ø�y‰yÐ)Ó*ˆØˆ�‰ˆt‰Ø�{‰{‹} × 1Ñ 1Ð2BÓ CÓCÐCÐCØ�F‰F�4ˆLØ�{‰{‹} × 1Ñ 1°)Ó <Ó<Ð<Ð<Øˆ�‰ˆu‰Ø�{‰{‹} × 1Ñ 1Ð2EÓ FÓFÐFÑFr   c                 óD  • [         R                  " S5      " 5       nU R                  SUS9n[        X!S5      n[        X!S5      nSUS'   UR                  R                  SU5        UR                  R                  S	U5        UR                  R                  5       S
:X  d   eg )Nr­  z<body></body>©r2  r1   Úolzhttp://foo.com/Úhrefr   r   s4   <body><a href="http://foo.com/"></a><ol></ol></body>)r   Úlookupr   r	   rV   ÚinsertrÚ   )r   r2  r   r1   r  s        r   Útest_new_tag_creationÚ*TestTreeModification.test_new_tag_creationì  s”   € Ü"×)Ò)¨&Ô1Ó3ˆØ�y‰y˜°'ˆyÐ:ˆÜ�˜sÓ#ˆÜ� Ó%ˆØ%ˆˆ&‰	Ø�	‰	×Ñ˜˜AÔØ�	‰	×Ñ˜˜BÔà�I‰I×ÑÓØFóGð	
ñGr   c                 ó  • SnU R                  U5      nUR                  SS9nUR                  nUR                  SS9R                  UR                  5        UR                  U:X  d   eUR                  5       U R                  S5      :X  d   eg )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   rx   rJ  rÛ   r  )r   Údocr   Úsecond_paraÚbolds        r   Ú!test_append_to_contents_moves_tagÚ6TestTreeModification.test_append_to_contents_moves_tagù  sŠ   € ð/ˆà�y‰y˜‹~ˆØ—i‘i 3�iÐ'ˆØ�v‰vˆð 	�	‰	�Sˆ	Ð× Ñ  §¡Ô(ð �{‰{˜kÓ)Ð)Ð)à�{‰{‹} × 1Ñ 1ØXó!
ó 
ð 	
ñ 
r   c                 ó  • U R                  S5      nUR                  S5      nUR                  UR                  S5      5      nUR                  S:X  d   eUR                  SUR                  S5      5      u  nUR                  S:X  d   eUR                  S5      nUS:X  d   eUR                  SS5      nUSS/:X  d   eUR                  S	S
5      nUS	S
/:X  d   eUR                  SS/5      nUSS/:X  d   eUR                  5       S:X  d   eg )Nz<html></html>r­  Úheadr   rÙ   rk   rh   rj   Ú6Ú7Ú8Ú9Ú3456789)
r   r   rx   Únew_tagr8   r  Úinsert_beforeÚinsert_afterÚextendÚget_text)	r   r   r­  r&  rÙ   Útext5Útext34Útext67Útext89s	            r   Ú&test_insertion_returns_inserted_thingsÚ;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                 ó†   • SnU R                  U5      nUR                  nUR                  UR                  5      nX4:X  d   eg )Nz<a></a><b><c></c></b>)r   r1   Úreplace_withrª   ©r   r%   r   r1   Únew_as        r   Ú1test_replace_with_returns_thing_that_was_replacedÚFTestTreeModification.test_replace_with_returns_thing_that_was_replaced  s9   € Ø&ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘˜tŸv™vÓ&ˆØ‹zÐ‰zr   c                 óp   • SnU R                  U5      nUR                  nUR                  5       nX4:X  d   eg )Nú<a><b></b><c></c></a>)r   r1   Úunwrapr9  s        r   Ú+test_unwrap_returns_thing_that_was_replacedÚ@TestTreeModification.test_unwrap_returns_thing_that_was_replaced$  s2   € Ø&ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘“
ˆØ‹zÐ‰zr   c                 ó¦  • U R                  S5      nUR                  nUR                  5         S UR                  L d   e[        R
                  " [        5         UR                  5         S S S 5        [        R
                  " [        5         UR                  UR                  5        S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)Nz<a><b>Foo</b></a><c>Bar</c>)
r   r1   ÚextractrJ  r:  r;  r<  r?  r8  rª   r  s      r   ÚItest_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parentÚ^TestTreeModification.test_replace_with_and_unwrap_give_useful_exception_when_tag_has_no_parent+  sƒ   € Ø�y‰yÐ6Ó7ˆØ�F‰FˆØ	�	‰	ŒØ�q—x‘xÒÐÐÜ�]Š]œ:Õ&Ø�H‰HŒJ÷ 'ä�]Š]œ:Õ&Ø�N‰N˜4Ÿ6™6Ô"÷ 'Ð&÷ 'Õ&úç&Õ&ús   ÁB1ÂCÂ1
B?Ã
Cc                 óÐ   • SnU R                  U5      nUR                  nUR                  R                  U5      nXC:X  d   eUR                  5       U R	                  U5      :X  d   eg )Nz-<a><b></b><c>Foo<d></d></c></a><a><e></e></a>)r   rª   r8  rÛ   r  )r   r%   r   rª   rˆ   s        r   Útest_replace_tag_with_itselfÚ1TestTreeModification.test_replace_tag_with_itself5  sZ   € Ø>ˆØ�y‰y˜‹ˆØ�F‰FˆØ—‘×$Ñ$ QÓ'ˆØ‹{Ðˆ{Ø�{‰{‹} × 1Ñ 1°$Ó 7Ó7Ð7Ñ7r   c                 óÜ   • SnU R                  U5      n[        R                  " [        5         UR                  R                  UR                  5        S S S 5        g ! , (       d  f       g = f©Nú<a><b></b></a>)r   r:  r;  r<  r   r8  r1   ©r   r%   r   s      r   Ú1test_replace_tag_with_its_parent_raises_exceptionÚFTestTreeModification.test_replace_tag_with_its_parent_raises_exception=  sB   € ØˆØ�y‰y˜‹ˆÜ�]Š]œ:Õ&Ø�F‰F×Ñ §¡Ô'÷ '×&Ö&ús   ®&AÁ
A+c                 óÞ   • SnU R                  U5      n[        R                  " [        5         UR                  R                  SUR                  5        S S S 5        g ! , (       d  f       g = f)NrK  r   )r   r:  r;  r<  r1   r  rL  s      r   Ú,test_insert_tag_into_itself_raises_exceptionÚATestTreeModification.test_insert_tag_into_itself_raises_exceptionC  sB   € ØˆØ�y‰y˜‹ˆÜ�]Š]œ:Õ&Ø�F‰F�M‰M˜!˜TŸV™VÔ$÷ '×&Ö&ús   ®'AÁ
A,c           	      ó�  • U R                  S5      nUR                  SUR                  SSS9UR                  SSS95      u  p#SUR                  :X  d   eSUR                  :X  d   e[	        UR
                  5      u  pBp5SUR                  :X  d   eSUR                  :X  d   eSUR                  :X  d   eSUR                  :X  d   eg )	Nú-<p>And now, a word:</p><p>And we're back.</p>r   r6   Úp2r   Úp3úAnd now, a word:úAnd we're back.)r   r  r,  r   ÚlistÚchildren)r   r   rT  rU  Úp1Úp4s         r   Útest_insert_multiple_elementsÚ2TestTreeModification.test_insert_multiple_elementsI  s¾   € Ø�y‰yÐHÓIˆØ—‘˜Q §¡¨S¸ Ð >ÀÇÁÈSÐY]ÀÐ@^Ó_‰ˆØ�r—y‘yÓ Ð Ð Ø�r—y‘yÓ Ð Ð ä˜dŸm™mÓ,‰ˆ�Ø! R§Y¡YÓ.Ð.Ð.Ø�r—y‘yÓ Ð Ð Ø�r—y‘yÓ Ð Ð Ø  B§I¡IÓ-Ð-Ñ-r   c                 óÐ  • U R                  S5      nSnU R                  U5      nUR                  SU5      u  pESUR                  :X  d   eSUR                  :X  d   eUR                   H  n[	        U[
        5      (       d  M   e   [        UR                  5      u  ptpXSUR                  :X  d   eSUR                  :X  d   eSUR                  :X  d   eSUR                  :X  d   eg)	z„Inserting one BeautifulSoup object into another actually inserts all
of its children -- you'll never combine BeautifulSoup objects.
rS  z<p>p2</p><p>p3</p>r   rT  rU  rV  rW  N)r   r  r   ÚdescendantsÚ
isinstancer   rX  rY  )	r   r   r%   Ú	to_insertrT  rU  r=  rZ  r[  s	            r   Ú1test_insert_beautifulsoup_object_inserts_childrenÚFTestTreeModification.test_insert_beautifulsoup_object_inserts_childrenU  sÚ   € ð �y‰yÐHÓIˆà#ˆØ—I‘I˜d“Oˆ	Ø—‘˜Q 	Ó*‰ˆØ�r—y‘yÓ Ð Ð Ø�r—y‘yÓ Ð Ð à×!Ô!ˆAÜ! !¤]×3Ó3Ð3Ð3ñ "ô ˜dŸm™mÓ,‰ˆ�Ø! R§Y¡YÓ.Ð.Ð.Ø�r—y‘yÓ Ð Ð Ø�r—y‘yÓ Ð Ð Ø  B§I¡IÓ-Ð-Ñ-r   c                 óú   • U R                  S5      nUR                  nUR                  SS5        UR                  u  p4UR	                  S5        UR	                  S5        SUR
                  R                  :X  d   eg )Nz<p><a>one</a><b>three</b></p>r   ÚtworÊ  Úthree)r   r1   r  r0  r8  r   r   )r   r   r1   ÚleftÚrights        r   Ú3test_replace_with_maintains_next_element_throughoutÚHTestTreeModification.test_replace_with_maintains_next_element_throughoutj  si   € Ø�y‰yÐ8Ó9ˆØ�F‰Fˆà	�‰��EÔð —j‘j‰ˆØ×Ñ˜"ÔØ×Ñ˜2Ôð ˜$Ÿ&™&Ÿ-™-Ó'Ð'Ñ'r   c                 ó6  • U R                  S5      nUR                  SS9R                  S5        UR                  SS9nUR                  nUR                  U:X  d   eUR
                  U:X  d   eUR                  R                  U:X  d   eUR                  b   eg )Nz<b>Argh!</b>úArgh!r   úHooray!)r   r   r8  r   r©  rJ  r€  )r   r   Únew_textr   s       r   Útest_replace_final_nodeÚ,TestTreeModification.test_replace_final_nodex  s”   € Ø�y‰y˜Ó(ˆØ�	‰	˜ˆ	Ð!×.Ñ.¨yÔ9Ø—9‘9 I�9Ð.ˆØ�F‰FˆØ×(Ñ(¨AÓ-Ð-Ð-Ø�‰ !Ó#Ð#Ð#Ø×(Ñ(×5Ñ5¸ÓAÐAÐAØ×$Ñ$Ñ,Ð,Ñ,r   c                 óÔ  • U R                  S5      nUR                  R                  SS5        UR                  5       U R	                  S5      :X  d   eUR                  SS9nUR                  S:X  d   eUR                  R                  U:X  d   eUR                  S:X  d   eUR                  R                  U:X  d   eUR                  b   eUR                  UR                  :X  d   eg )Nz<a><b>Argh!</b><c></c></a>r   rm  z!<a><b>Argh!Hooray!</b><c></c></a>r   rl  )r   r   r  rÛ   r  r   r©  r€  r÷  rÓ  rª   )r   r   rn  s      r   Útest_consecutive_text_nodesÚ0TestTreeModification.test_consecutive_text_nodes‚  sÛ   € ð �y‰yÐ5Ó6ˆØ�‰�‰�a˜Ô#à�{‰{‹} × 1Ñ 1Ð2UÓ VÓVÐVÐVà—9‘9 I�9Ð.ˆØ×(Ñ(¨GÓ3Ð3Ð3Ø×(Ñ(×5Ñ5¸ÓAÐAÐAà×(Ñ(¨GÓ3Ð3Ð3Ø×(Ñ(×5Ñ5¸ÓAÐAÐAà×$Ñ$Ñ,Ð,Ð,Ø×$Ñ$¨¯©Ó.Ð.Ñ.r   c                 ó$  • U R                  S5      nUR                  R                  SS5        UR                  R                  SS5        SS/UR                  R                  :X  d   eUR                  R                  S   R                  S:X  d   eg )Nru   r   r\   rq   )r   r1   r  r0  r€  r   s     r   Útest_insert_stringÚ'TestTreeModification.test_insert_string•  so   € Ø�y‰y˜Ó#ˆØ�‰�‰�a˜ÔØ�‰�‰�a˜Ôà�uˆ~ §¡§¡Ó0Ð0Ð0à�v‰v�‰˜qÑ!×.Ñ.°%Ó7Ð7Ñ7r   c                 ó¬   • U R                  S5      nUR                  R                  S5      nUS:X  d   eUR                  R                  5       S:X  d   eg )Nz<b>1</b>r   z	<b>12</b>)r   r   rx   rÛ   r‡   s      r   Útest_appendÚ TestTreeModification.test_appendž  sF   € Ø�y‰y˜Ó$ˆØ—‘—‘˜sÓ#ˆØ˜‹}Ðˆ}Ø�v‰v�}‰}‹ +Ó-Ð-Ñ-r   c                 ó²  • U R                  5       nU R                  SUS9n[        X!S5      nUR                  SS5        UR                  R                  SU5        UR                  5       U R                  S5      :X  d   eUR                  nUR                  U:X  d   eUR                  U:X  d   eUR                  SS	9nUR                  U:X  d   eUR                  U:X  d   eUR                  nUR                  U:X  d   eUR                  U:X  d   eUR                  SS	9nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eg )
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  r1   rÛ   r  r   rÓ  r÷  r   r€  r©  rª   rJ  )r   r2  r   Ú	magic_tagÚb_tagr   Úc_tagr|  s           r   Útest_insert_tagÚ$TestTreeModification.test_insert_tag¤  s_  € Ø×&Ñ&Ó(ˆØ�y‰yÐ@È'ˆyÐRˆÜ˜ zÓ2ˆ	Ø×Ñ˜˜EÔ"Ø�‰�‰�a˜Ô#à�{‰{‹} × 1Ñ 1ØKó!
ó 
ð 	
ð 
ð
 —‘ˆØ×!Ñ! YÓ.Ð.Ð.Ø×)Ñ)¨UÓ2Ð2Ð2à�z‰z ˆzÐ(ˆØ× Ñ  IÓ-Ð-Ð-Ø×)Ñ)¨TÓ1Ð1Ð1à—‘ˆØ×%Ñ%¨Ó.Ð.Ð.Ø×%Ñ%¨Ó2Ð2Ð2à�n‰n EˆnÐ*ˆØ�z‰z˜YÓ&Ð&Ð&Ø×Ñ 5Ó(Ð(Ð(Ø×%Ñ%¨Ó,Ð,Ñ,r   c                 ó    • SnU R                  U5      nUR                  R                  SUR                  5        XR	                  5       :X  d   eg )Nz<a>b<c></c>d</a>r   )r   r1   r  rª   rÛ   ©r   rÝ   r   s      r   Ú%test_insert_into_the_current_locationÚ:TestTreeModification.test_insert_into_the_current_locationÁ  s<   € Ø!ˆØ�y‰y˜‹ˆØ�‰�‰�a˜Ÿ™Ô Ø—{‘{“}Ó$Ð$Ñ$r   c                 óž   • SnU R                  U5      nUR                  R                  UR                  5        XR	                  5       :X  d   eg rJ  )r   r1   rx   r   rÛ   r„  s      r   Ú*test_append_child_thats_already_at_the_endÚ?TestTreeModification.test_append_child_thats_already_at_the_endÇ  s:   € ØˆØ�y‰y˜‹ˆØ�‰�‰�d—f‘fÔØ—{‘{“}Ó$Ð$Ñ$r   c                 ó  • SnU R                  U5      nUR                  UR                  UR                  UR                  UR
                  UR                  /nUR                  R                  U5        SUR                  5       :X  d   eg )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   r1   r/  rÛ   ©r   rÝ   r   Úelementss       r   Ú#test_extend_with_a_list_of_elementsÚ8TestTreeModification.test_extend_with_a_list_of_elementsÍ  sb   € ØBˆØ�y‰y˜‹ˆØ—F‘F˜DŸF™F D§F¡F¨D¯F©F°D·F±F¸D¿F¹FÐCˆØ�‰�‰�hÔØBÀdÇkÁkÃmÓSÐSÑSr   c                 óª   • SnU R                  U5      nSS[        S5      S/nUR                  R                  U5        SUR	                  5       :X  d   eg )Nru   r   rª   r)  rŒ  z<a>bcde</a>)r   r   r1   r/  rÛ   r�  s       r   Ú"test_extend_with_a_list_of_stringsÚ7TestTreeModification.test_extend_with_a_list_of_stringsÔ  sK   € ØˆØ�y‰y˜‹ˆØ˜œo¨cÓ2°CÐ8ˆØ�‰�‰�hÔØ §¡£Ó-Ð-Ñ-r   Úget_tagsc                 ó   • U $ rR  rI   rÀ   s    r   rF   ÚTestTreeModification.<lambda>Û  s   € ±cr   c                 ó   • U R                   $ rR  )r0  rÀ   s    r   rF   r–  Û  s   € ÀsÇ|Â|r   c                 óô   • SnU R                  U5      nUR                  SSS9nUR                  SSS9nU" U5      nUR                  U5        SUR                  5       :X  d   eSUR                  5       :X  d   eg )NzS<body><div id="d1"><a>1</a><a>2</a><a>3</a><a>4</a></div><div id="d2"></div></body>r5   Úd1r"   Úd2z<div id="d1"></div>z3<div id="d2"><a>1</a><a>2</a><a>3</a><a>4</a></div>)r   r   r/  rÛ   )r   r”  rÝ   r   r™  rš  Útagss          r   Ú&test_extend_with_another_tags_contentsÚ;TestTreeModification.test_extend_with_another_tags_contentsÛ  st   € àdˆØ�y‰y˜‹ˆØ�Y‰Y�u ˆYÐ&ˆØ�Y‰Y�u ˆYÐ&ˆÙ˜‹|ˆØ
�	‰	�$ŒØ$¨¯	©	«Ó3Ð3Ð3ØDÈÏ	É	ËÓSÐSÑSr   zstring_source,resultc                 ó.   • U R                   R                  $ rR  )r1   r   ©r   s    r   rF   r–  é  s   € ˜$Ÿ&™&Ÿ-š-r   z<a></a><b>1</b>c                 ó   • g)NÚabcderI   rŸ  s    r   rF   r–  ê  s   € ˜'r   z<a>1</a><b>abcde</b>c                 ó|  • SnU R                  U5      n[        R                  " SS9 nU" U5      nUR                  R	                  U5        UR
                  R                  5       U:X  d   eUu  nUR                  [        :X  d   e[        UR                  5      nUS:X  d   e S S S 5        g ! , (       d  f       g = f)Nz<div><a>1</a><b></b></div>Trv   zIA single non-Tag item was passed into Tag.extend. Use Tag.append instead.)r   ry   rz   r   r/  r5   Údecode_contentsr{   r|   r$   r}   )	r   Ústring_sourcerˆ   rÝ   r   r   r   r€   r�   s	            r   Ú)test_extend_with_a_single_non_tag_elementÚ>TestTreeModification.test_extend_with_a_single_non_tag_elementæ  s§   € ð ,ˆØ�y‰y˜‹ˆÜ×$Ò$¨DÒ1°QÙ" 4Ó(ˆFØ�F‰F�M‰M˜&Ô!Ø—8‘8×+Ñ+Ó-°Ó7Ð7Ð7Ø‰IˆWØ×#Ñ#¤xÓ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØ^ó_ðñ_÷ 2×1Ö1ús   ¨A;B-Â-
B;c                 ó¢   • SnU R                  U5      nUR                  R                  SUR                  5        SUR	                  5       :X  d   eg )Nz<a><b></b><c></c><d></d></a>r   z<a><d></d><b></b><c></c></a>)r   r1   r  r)  rÛ   r„  s      r   Ú$test_move_tag_to_beginning_of_parentÚ9TestTreeModification.test_move_tag_to_beginning_of_parentü  s>   € Ø-ˆØ�y‰y˜‹ˆØ�‰�‰�a˜Ÿ™Ô Ø-°·±³Ó>Ð>Ñ>r   c                 ó”   • U R                  S5      nUR                  R                  SS5        [        UR                  5      S:X  d   eg )Nz<br/>r   ÚContentsz<br>Contents</br>)r   Úbrr  r$   r   s     r   Ú&test_insert_works_on_empty_element_tagÚ;TestTreeModification.test_insert_works_on_empty_element_tag  s;   € ð
 �y‰y˜Ó!ˆØ�‰�‰�q˜*Ô%Ü�4—7‘7‹|Ð2Ó2Ð2Ñ2r   c                 ó2  • U R                  S5      nUR                  R                  S5        UR                  R                  S5        UR	                  5       U R                  S5      :X  d   eUR                  R                  UR                  5        UR	                  5       U R                  S5      :X  d   eUR                  n[        R                  " [        5         UR                  U5        S S S 5        UR                  5         [        R                  " [        5         UR                  S5        S S S 5        U R                  S5      nUR                  R                  UR                  S5      5        g ! , (       d  f       NŽ= f! , (       d  f       N[= f)	Nr)   ÚBAZÚQUUXzQUUX<a>foo</a>BAZ<b>bar</b>úQUUX<b>bar</b><a>foo</a>BAZÚnopeú<a>r1   )r   r   r-  r1   rÛ   r  r:  r;  r<  rC  r,  ©r   r   r   s      r   Útest_insert_beforeÚ'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Ÿ\™\¨#Ó.Õ/÷ 'Õ&ú÷
 'Õ&úó   ÃE7Ä!FÅ7
FÆ
Fc                 óz  • U R                  S5      nUR                  R                  SSS5        UR                  R                  SSS5        UR	                  5       U R                  S5      :X  d   eUR                  R                  UR                  S5        UR	                  5       U R                  S5      :X  d   eg )Nr)   r°  Ú r±  z$QUUX BAZ<a>foo</a>BAZ QUUX<b>bar</b>ÚFOOz'QUUX BAZ<b>bar</b>FOO<a>foo</a>BAZ QUUX)r   r   r-  r1   rÛ   r  r   s     r   Útest_insert_multiple_beforeÚ0TestTreeModification.test_insert_multiple_before$  s§   € Ø�y‰yÐ/Ó0ˆØ�‰×Ñ˜U C¨Ô0Ø�‰×Ñ˜V S¨%Ô0Ø�{‰{‹} × 1Ñ 1Ø2ó!
ó 
ð 	
ð 
ð 	�‰×Ñ˜TŸV™V UÔ+Ø�{‰{‹} × 1Ñ 1Ø5ó!
ó 
ð 	
ñ 
r   c                 ó2  • U R                  S5      nUR                  R                  S5        UR                  R                  S5        UR	                  5       U R                  S5      :X  d   eUR                  R                  UR                  5        UR	                  5       U R                  S5      :X  d   eUR                  n[        R                  " [        5         UR                  U5        S S S 5        UR                  5         [        R                  " [        5         UR                  S5        S S S 5        U R                  S5      nUR                  R                  UR                  S5      5        g ! , (       d  f       NŽ= f! , (       d  f       N[= f)	Nr)   r°  r±  z<a>foo</a>QUUX<b>bar</b>BAZr²  r³  r´  r1   )r   r   r.  r1   rÛ   r  r:  r;  r<  rC  r-  r,  rµ  s      r   Útest_insert_afterÚ&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Ÿ\™\¨#Ó.Õ/÷ 'Õ&ú÷
 'Õ&úr¸  c                 óz  • U R                  S5      nUR                  R                  SSS5        UR                  R                  SSS5        UR	                  5       U R                  S5      :X  d   eUR                  R                  UR                  S5        UR	                  5       U R                  S5      :X  d   eg )Nr)   r°  rº  r±  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.  r1   rÛ   r  r   s     r   Útest_insert_multiple_afterÚ/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                 ó  • U R                  S5      nUR                  S5      nUR                  S5      n[        R                  " [
        5         UR                  U5        S S S 5        [        R                  " [        5         UR                  U5        S S S 5        [        R                  " [
        5         UR                  U5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = f©NrÊ  r1   )r   r,  Ú
new_stringr:  r;  r<  r.  ÚNotImplementedError©r   r   r¥   r   s       r   Ú:test_insert_after_raises_exception_if_after_has_no_meaningÚOTestTreeModification.test_insert_after_raises_exception_if_after_has_no_meaningU  s£   € Ø�y‰y˜‹}ˆØ�l‰l˜3ÓˆØ—‘ Ó$ˆÜ�]Š]œ:Õ&Ø×Ñ Ô$÷ 'ä�]Š]Ô.Õ/Ø×Ñ˜cÔ"÷ 0ä�]Š]œ:Õ&Ø×Ñ˜SÔ!÷ 'Ð&÷	 'Õ&úç/Õ/úç&Õ&úó$   ÁCÂC"Â6C3Ã
CÃ"
C0Ã3
Dc                 ó  • U R                  S5      nUR                  S5      nUR                  S5      n[        R                  " [
        5         UR                  U5        S S S 5        [        R                  " [        5         UR                  U5        S S S 5        [        R                  " [
        5         UR                  U5        S S S 5        g ! , (       d  f       Nw= f! , (       d  f       NT= f! , (       d  f       g = frÅ  )r   r,  rÆ  r:  r;  r<  r-  rÇ  rÈ  s       r   ÚFtest_insert_before_raises_notimplementederror_if_before_has_no_meaningÚ[TestTreeModification.test_insert_before_raises_notimplementederror_if_before_has_no_meaning`  s£   € Ø�y‰y˜‹}ˆØ�l‰l˜3ÓˆØ—‘ Ó$ˆÜ�]Š]œ:Õ&Ø× Ñ  Ô%÷ 'ä�]Š]Ô.Õ/Ø×Ñ˜sÔ#÷ 0ä�]Š]œ:Õ&Ø×Ñ˜cÔ"÷ 'Ð&÷	 'Õ&úç/Õ/úç&Õ&úrË  c                 óV  • U R                  S5      nUR                  S5      u  p#UR                  U5        UR                  5       U R	                  S5      :X  d   eUR
                  b   eUR
                  UR                  :X  d   eUR                  S:X  d   eUR                  S:X  d   eg )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-   r8  rÛ   r  rJ  r6   r€  rÓ  )r   r   rÐ  Úshows       r   Útest_replace_withÚ&TestTreeModification.test_replace_withk  s£   € Ø�y‰yÐVÓWˆØ—=‘= Ó%‰ˆØ×Ñ˜"ÔØ�{‰{‹} × 1Ñ 1Ø>ó!
ó 
ð 	
ð 
ð �{‰{Ñ"Ð"Ð"Ø�y‰y˜DŸF™FÓ"Ð"Ð"Ø�‰ $Ó&Ð&Ð&Ø�‰ +Ó-Ð-Ñ-r   c                 ó  • [        SS9n[        R                  " [        5         UR	                  S5        S S S 5        U R                  S5      R                  n[        R                  " [        5         UR                  R	                  U5        S S S 5        [        R                  " [        5         UR                  R	                  SUS5        S S S 5        g ! , (       d  f       N¨= f! , (       d  f       N`= f! , (       d  f       g = f)Nr1   rC   z
won't workrK  Ústring1Ústring2)r	   r:  r;  r<  r8  r   r1   r   )r   Úa_tags     r   Útest_replace_with_errorsÚ-TestTreeModification.test_replace_with_errorsx  s«   € ä˜‘ˆÜ�]Š]œ:Õ&Ø×Ñ˜|Ô,÷ 'ð —	‘	Ð*Ó+×-Ñ-ˆÜ�]Š]œ:Õ&Ø�G‰G× Ñ  Ô'÷ 'ô �]Š]œ:Õ&Ø�G‰G× Ñ  ¨E°9Ô=÷ 'Ð&÷ 'Õ&ú÷
 'Õ&ú÷ 'Õ&ús#   ¤CÁ3C)Â1C:Ã
C&Ã)
C7Ã:
Dc                 óæ  • SnU R                  U5      nUR                  S5      nSUl        UR                  S5      nUR                  S5      nSnUR                  R	                  X4Xe5        UR                  5       S:X  d   eUR                  R                  U:X  d   eUR                  R                  U:X  d   eUR                  R                  U:X  d   eUR                  R                  U:X  d   eg )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ª   r8  rÛ   r   r€  )r   rÝ   r   Úd_tagÚe_tagÚf_tagÚa_strings          r   Útest_replace_with_multipleÚ/TestTreeModification.test_replace_with_multiple‡  sá   € Ø&ˆØ�y‰y˜‹ˆØ—‘˜SÓ!ˆØ&ˆŒØ—‘˜SÓ!ˆØ—‘˜SÓ!ˆØ ˆØ�‰×Ñ˜E¨(Ô:à�K‰K‹MØLóMð	
ðMð �v‰v×"Ñ" eÓ+Ð+Ð+Ø�|‰|×(Ñ(¨EÓ1Ð1Ð1Ø×!Ñ!×(Ñ(¨HÓ4Ð4Ð4Ø×!Ñ!×.Ñ.°%Ó7Ð7Ñ7r   c                 ó    • SnU R                  U5      nUR                  R                  UR                  5        SUR	                  5       :X  d   eg )Nr>  z<a><c></c></a>)r   r   r8  rª   rÛ   r„  s      r   Útest_replace_first_childÚ-TestTreeModification.test_replace_first_child™  ó>   € Ø&ˆØ�y‰y˜‹ˆØ�‰×Ñ˜DŸF™FÔ#Ø 4§;¡;£=Ó0Ð0Ñ0r   c                 ó    • SnU R                  U5      nUR                  R                  UR                  5        SUR	                  5       :X  d   eg )Nr>  rK  )r   rª   r8  r   rÛ   r„  s      r   Útest_replace_last_childÚ,TestTreeModification.test_replace_last_childŸ  rä  r   c                 óþ  • U R                  S5      nUR                  nUR                  nUR                  U5        UR	                  5       U R                  S5      :X  d   eUR                  b   eUR                  SS9R                  b   eUR                  b   eUR                  b   eUR                  b   eUR                  UR                  :X  d   eUR                  S:X  d   eUR                  R                  UR                  :X  d   eUR                  b   eUR                  SS9nUR                  nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eg )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>rh  r   ÚWeÚto)r   r   rï   r8  rÛ   r  rJ  r   r€  r©  rÓ  r÷  r1   rŒ  r‹  )r   r   Ú
remove_tagÚmove_tagÚto_textÚg_tags         r   Útest_nested_tag_replace_withÚ1TestTreeModification.test_nested_tag_replace_with¥  s‹  € Ø�y‰yØcó
ˆð —V‘Vˆ
Ø—6‘6ˆØ×Ñ Ô)à�{‰{‹} × 1Ñ 1Ø;ó!
ó 
ð 	
ð 
ð
 × Ñ Ñ(Ð(Ð(Ø�‰ gˆÐ.×;Ñ;ÑCÐCÐCØ×*Ñ*Ñ2Ð2Ð2Ø×&Ñ&Ñ.Ð.Ð.Ø×*Ñ*Ñ2Ð2Ð2ð �‰ $§&¡&Ó(Ð(Ð(Ø×(Ñ(¨DÓ0Ð0Ð0Ø×$Ñ$×1Ñ1°T·V±VÓ;Ð;Ð;Ø×$Ñ$Ñ,Ð,Ð,ð —)‘) 4�)Ð(ˆØ—‘ˆØ×#Ñ# uÓ,Ð,Ð,Ø×#Ñ# uÓ,Ð,Ð,Ø×%Ñ%¨Ó0Ð0Ð0Ø×%Ñ%¨Ó0Ð0Ñ0r   c                 ó°   • U R                  S5      nUR                  R                  5         UR                  b   eUR                  R                  S:X  d   eg )NzI
            <p>Unneeded <em>formatting</em> is unneeded</p>
            zUnneeded formatting is unneeded)r   Úemr?  r6   r%   rÔ   s     r   Útest_unwrapÚ TestTreeModification.test_unwrapÊ  sJ   € Ø�y‰yð ó ˆð 	�‰�‰ÔØ�w‰w‰ÐˆØ�v‰v�{‰{Ð?Ó?Ð?Ñ?r   c                 óð   • U R                  S5      nUR                  R                  UR                  S5      5      nUR	                  5       S:X  d   eUR	                  5       U R                  S5      :X  d   eg )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_wrapÚTestTreeModification.test_wrapÒ  sc   € Ø�y‰yÐ-Ó.ˆØ—‘× Ñ  §¡¨cÓ!2Ó3ˆØ�|‰|‹~Ð!<Ó<Ð<Ð<Ø�{‰{‹} × 1Ñ 1Ð2MÓ NÓNÐNÑNr   c                 óÎ   • U R                  S5      nUR                  R                  R                  UR                  5        UR	                  5       U R                  S5      :X  d   eg )Nz<b></b>I wish I was bold.rö  )r   r   rÓ  r÷  rÛ   r  r   s     r   Ú%test_wrap_extracts_tag_from_elsewhereÚ:TestTreeModification.test_wrap_extracts_tag_from_elsewhereØ  sM   € Ø�y‰yÐ4Ó5ˆØ�‰×Ñ× Ñ  §¡Ô(Ø�{‰{‹} × 1Ñ 1Ð2MÓ NÓNÐNÑNr   c                 ó  • U R                  S5      nUR                  R                  R                  UR                  5        S[	        UR                  R
                  5      :X  d   eUR                  5       U R                  S5      :X  d   eg )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Ó  r÷  r,   r0  rÛ   r  r   s     r   Ú&test_wrap_puts_new_contents_at_the_endÚ;TestTreeModification.test_wrap_puts_new_contents_at_the_endÝ  sp   € Ø�y‰yÐFÓGˆØ�‰×Ñ× Ñ  §¡Ô(Ø”C˜Ÿ™Ÿ™Ó(Ó(Ð(Ð(Ø�{‰{‹} × 1Ñ 1Ø9ó!
ó 
ð 	
ñ 
r   c                 ó†  • U R                  S5      n[        UR                  R                  5      S:X  d   eUR	                  SS9R                  5       nUR                  5       S:X  d   eUR                  5       S:X  d   e[        UR                  R                  5      S:X  d   eUR                  b   eUR                  b   eUR                  R                  b   eUR	                  SS	9nUR	                  S
S	9nUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eg )NzR<html><body>Some content. <div id="nav">Nav crap</div> More content.</body></html>rd   Ú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,   rV   r0  r   rC  rÛ   rJ  r©  r€  rÓ  r÷  )r   r   Ú	extractedÚ	content_1Ú	content_2s        r   Útest_extractÚ!TestTreeModification.test_extractå  sG  € Ø�y‰yØ`ó
ˆô �4—9‘9×%Ñ%Ó&¨!Ó+Ð+Ð+Ø—I‘I �IÐ'×/Ñ/Ó1ˆ	à�{‰{‹}Ð XÓXÐXÐXØ×ÑÓ!Ð%CÓCÐCÐCô �4—9‘9×%Ñ%Ó&¨!Ó+Ð+Ð+Ø×ÑÑ'Ð'Ð'Ø×)Ñ)Ñ1Ð1Ð1Ø×%Ñ%×2Ñ2Ñ:Ð:Ð:ð —I‘IÐ%5�IÐ6ˆ	Ø—I‘IÐ%5�IÐ6ˆ	Ø×%Ñ%¨Ó2Ð2Ð2Ø×%Ñ%¨Ó2Ð2Ð2Ø×)Ñ)¨YÓ6Ð6Ð6Ø×)Ñ)¨YÓ6Ð6Ñ6r   c                 ó®  • U R                  S5      nUR                  R                  nUR                  S5      nUR                  S5      nUR                  R	                  U5        UR
                  R	                  U5        UR                  5         UR                  5         X1R                  R                  :X  d   eXAR
                  R                  :X  d   eg )Nr)   rq   r\   )r   r1   r   rÆ  rx   r   rC  )r   r   Úfoo_1Úfoo_2Úbar_2s        r   Ú4test_extract_distinguishes_between_identical_stringsÚITestTreeModification.test_extract_distinguishes_between_identical_stringsþ  s–   € Ø�y‰yÐ/Ó0ˆØ—‘—‘ˆØ—‘ Ó&ˆØ—‘ Ó&ˆØ�‰�‰�eÔØ�‰�‰�eÔð
 	�‰ŒØ�‰ŒØŸ™Ÿ™Ó%Ð%Ð%ØŸ™Ÿ™Ó%Ð%Ñ%r   c                 óÖ   • U R                  S5      nUR                  S5       Vs/ s H  o!R                  R                  5       PM       nS[	        UR
                  5      :X  d   eg s  snf )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  rC  r$   rV   )r   r   r=  s      r   Ú"test_extract_multiples_of_same_tagÚ7TestTreeModification.test_extract_multiples_of_same_tag  s[   € Ø�y‰yð 
ó 
ˆð )-¯©°hÔ(?Ó@Ò(? 1�‰×	Ñ	Ö	Ñ(?Ñ@Ø+¬s°4·9±9«~Ó=Ð=Ñ=ùò 	As   ¥#A&c                 ó�   • U R                  S5      nUR                  S5      R                  5         S UR                  S5      L d   eg )Nz<html>
<body>hi</body>
</html>rV   )r   r   rC  r   s     r   ÚBtest_extract_works_when_element_is_surrounded_by_identical_stringsÚWTestTreeModification.test_extract_works_when_element_is_surrounded_by_identical_strings  s=   € Ø�y‰yÐAÓBˆØ�	‰	�&Ó×!Ñ!Ô#Ø�t—y‘y Ó(Ò(Ð(Ñ(r   c                 óN  • U R                  S5      nUR                  nUR                  R                  5         [	        UR                  R
                  5      S:X  d   e[        US5      (       d   eUR                  nUR                  SS9  S[	        UR
                  5      :X  d   eg)zTag.clear()z4<p><a>String <em>Italicized</em></a> and another</p>r   r0  T)Ú	decomposeN)r   r1   r6   Úclearr,   r0  r†   rò  )r   r   r1   rò  s       r   Ú
test_clearÚ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>)r™  r  )rY  r  )rÂ  rÊ  )r	  zF<div><p id="start"><a>Second <em>child</em></a></p><p>child3</p></div>)ri  rÊ  c                 ó®   • U R                  S5      n[        UR                  U5      nU H  nUR                  5         M     X#R	                  5       :X  d   eg )NzU<div><em>child1</em><p id='start'><a>Second <em>child</em></a></p><p>child3</p></div>)r   Úgetattrr6   rC  rÛ   )r   Úmethod_nameÚexpected_resultr   Úiteratorr=  s         r   Útest_extract_during_iterationÚ2TestTreeModification.test_extract_during_iteration0  sL   € ð: �y‰yØcó
ˆô ˜4Ÿ6™6 ;Ó/ˆÛˆAØ�I‰IŽKñ à§+¡+£-Ó/Ð/Ñ/r   c                 óB  • U R                  S5      nUR                  S5      u  p#UR                  nUR                  R                  nX#XE4 H  nSUR
                  L a  M   e   UR                  5         X$U4 H  nSUR
                  L a  M   e   SUR
                  L d   eg )Nz;<p><a>String <em>Italicized</em></a></p><p>Another para</p>r6   FT)r   r-   r1   rò  r   Ú
decomposedr  )r   r   rZ  rT  r1   r%   r=  s          r   Útest_decomposeÚ#TestTreeModification.test_decomposeU  s—   € à�y‰yÐVÓWˆØ—‘˜sÓ#‰ˆØ�D‰DˆØ�u‰u�|‰|ˆØ˜!Ó"ˆAØ˜AŸL™LÔ(Ð(Ð(ñ #ð 	�‰ŒØ˜“ˆAØ˜1Ÿ<™<Ô'Ð'Ð'ñ ð ˜Ÿ™Ò%Ð%Ñ%r   c                 óú   • U R                  S5      nUR                  nUR                  R                  nSUR                  L d   eUR                  5         SUR                  L d   eSUR                  5       :X  d   eg )Nz'<div><p>String 1</p><p>String 2</p></p>FTz!<div><p></p><p>String 2</p></div>)r   r5   r6   r   r"  r  rÛ   )r   r   r5   r%   s       r   Útest_decompose_stringÚ*TestTreeModification.test_decompose_stringe  si   € Ø�y‰yÐBÓCˆØ�h‰hˆØ�u‰u�|‰|ˆØ˜Ÿ™Ò'Ð'Ð'Ø�‰ÔØ�t—‘Ò&Ð&Ð&Ø2°c·j±j³lÓBÐBÑBr   c                 óÞ   • U R                  S5      nSUR                  l        UR                  R                  S/:X  d   eSUR                  l        UR                  R                  S/:X  d   eg)zTag.string = 'string'z<a></a> <b><c></c></b>rq   r\   N)r   r1   r   r0  r   r   s     r   Útest_string_setÚ$TestTreeModification.test_string_setn  sW   € à�y‰yÐ1Ó2ˆØˆ�‰ŒØ�v‰v�‰ 5 'Ó)Ð)Ð)Øˆ�‰ŒØ�v‰v�‰ 5 'Ó)Ð)Ñ)r   c                 ó°   • U R                  S5      nUR                  R                  UR                  l        UR                  R                  5       S:X  d   eg )Nz<a><b>foo</b><c>bar</c>s   <a><b>bar</b><c>bar</c></a>)r   rª   r   r   r1   rÚ   r   s     r   Ú/test_string_set_does_not_affect_original_stringÚDTestTreeModification.test_string_set_does_not_affect_original_stringv  s=   € Ø�y‰yÐ2Ó3ˆØŸ™Ÿ™ˆ�‰ŒØ�v‰v�}‰}‹Ð"@Ó@Ð@Ñ@r   c                 ó²   • U R                  S5      n[        S5      nX!R                  l        [	        UR                  R                  [        5      (       d   eg )Nru   rq   )r   r   r1   r   r`  )r   r   Úcdatas      r   Ú)test_set_string_preserves_class_of_stringÚ>TestTreeModification.test_set_string_preserves_class_of_string{  s=   € Ø�y‰y˜Ó#ˆÜ�e“ˆØ�‰ŒÜ˜$Ÿ&™&Ÿ-™-¬×/Ñ/Ð/Ñ/r   rI   N)=rL   rM   rN   rO   r  r  r#  r5  r;  r@  rD  rG  rM  rP  r\  rb  ri  ro  rr  ru  rx  r�  r…  rˆ  r�  r’  r:  ÚmarkÚparametrizerœ  r¥  r¨  r­  r¶  r¼  r¿  rÂ  rÉ  rÍ  rÒ  rØ  rß  râ  ræ  rï  ró  rø  rû  rþ  r  r  r  r  r  r  r#  r&  r)  r,  r0  rQ   rI   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]  rY  r’  rŽ  r¹  rµ  r:   rX   r9   rW   c                   óX   • \ rS rSr\R
                  R                  S\5      S 5       rSr	g)ÚTestDeprecatedArgumentsi’  r  c                 ó*  • U R                  S5      n[        UR                  U5      n[        R                  " SS9 nU" SS9  Uu  nUR
                  [        :X  d   e[        UR                  5      nUS:X  d   e S S S 5        g ! , (       d  f       g = f)Nú<a>some</a><b>markup</b>Trv   rÌ  )r%   zOThe 'text' argument to find()-type methods is deprecated. Use 'string' instead.)	r   r  r   ry   rz   r{   r|   r$   r}   ©r   r  r   Úmethodr   r€   r�   s          r   Útest_find_type_method_stringÚ4TestDeprecatedArguments.test_find_type_method_string“  s…   € à�y‰yÐ3Ó4ˆÜ˜Ÿ™ Ó-ˆÜ×$Ò$¨DÒ1°QÙ˜Ò!Ø‰IˆWØ×#Ñ#¤xÓ/Ð/Ð/Ü�g—o‘oÓ&ˆCàØdóeðñe÷ 2×1Ö1ús   ¼>BÂ
BrI   N)
rL   rM   rN   rO   r:  r2  r3  Úall_find_type_methodsr:  rQ   rI   r   r   r5  r5  ’  s'   † Ø‡[�[×Ñ˜]Ð,AÓBñó Cór   r5  c                   óX   • \ rS rSr\R
                  R                  S\5      S 5       rSr	g)ÚTestWarningsi¢  r  c                 ól  • U R                  S5      n[        UR                  U5      n[        R                  " SS9 nU" SS9  Uu  nUR
                  [        :X  d   e[        UR                  [        5      (       d   e[        UR                  5      nSU;   d   e S S S 5        g ! , (       d  f       g = f)Nr7  Trv   Úu)Ú_classzN'_class' is an unusual attribute name and is a common misspelling for 'class_')r   r  r   ry   rz   r{   r|   r`  r}   r   r$   r8  s          r   Útest_suspicious_syntax_warningÚ+TestWarnings.test_suspicious_syntax_warning£  s›   € à�y‰yÐ3Ó4ˆÜ˜Ÿ™ Ó-ˆÜ×$Ò$¨DÒ1°QÙ˜#ÒØ‰IˆWØ×#Ñ#¤xÓ/Ð/Ð/Ü˜gŸo™oÔ/P×QÑQÐQÐQÜ�g—o‘oÓ&ˆCà`Øóðñ÷ 2×1Ö1ús   ¼AB%Â%
B3rI   N)
rL   rM   rN   rO   r:  r2  r3  r<  rB  rQ   rI   r   r   r>  r>  ¢  s'   † Ø‡[�[×Ñ˜]Ð,AÓBñó Cór   r>  )$rP   r:  r_   ry   Úbs4r   Úbs4.builderr   Úbs4.elementr   r   r   r   r	   Ú
bs4.filterr
   rÊ  r   r   rS   rŒ   r•   rÐ   r'  r6  rB  rs  rx  r¤  rÈ  rÏ  ró  r  r<  r5  r>  rI   r   r   Ú<module>rH     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   