zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
U
¡ý°dÂ7ã@s„dZddlZddlZddlZddlZddlmZddlmZm    Z    m
Z
ddl m Z Gdd„de ƒZ Gd    d
„d
e ƒZGd d „d e ƒZdS) z*Tests of the bs4.element.PageElement classéN)Ú BeautifulSoup)ÚCommentÚ    ResultSetÚ SoupStraineré)ÚSoupTestc@sXeZdZdZdd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Z    dd„Z
dd„Z dd„Z dS)Ú TestEncodingz0Test the ability to encode objects into strings.cCs.d}| |¡}|jj d¡d d¡ks*t‚dS)Nõ
<b>☃</b>úutf-8õ☃)ÚsoupÚbÚstringÚencodeÚAssertionError©ÚselfÚhtmlr ©rúQd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\bs4/tests/test_pageelement.pyÚ"test_unicode_string_can_be_encodeds
z/TestEncoding.test_unicode_string_can_be_encodedcCs,d}| |¡}|j d¡| d¡ks(t‚dS)Nr    r
©r r rrrrrrÚ1test_tag_containing_unicode_string_can_be_encodeds
z>TestEncoding.test_tag_containing_unicode_string_can_be_encodedcCs&d}| |¡}|j d¡dks"t‚dS)Nr    Úasciis<b>&#9731;</b>rrrrrÚ<test_encoding_substitutes_unrecognized_characters_by_defaults
zITestEncoding.test_encoding_substitutes_unrecognized_characters_by_defaultc    Cs6d}| |¡}t t¡|jdddW5QRXdS)Nr    rÚstrict)Úerrors)r ÚpytestZraisesÚUnicodeEncodeErrorrrrrrÚ test_encoding_can_be_made_strict#s
 z-TestEncoding.test_encoding_can_be_made_strictcCs$d}| |¡}d|j ¡ks t‚dS)Nr    r )r r Zdecode_contentsrrrrrÚtest_decode_contents)s
z!TestEncoding.test_decode_contentscCs.d}| |¡}d d¡|jjddks*t‚dS)Nr    r Úutf8)Úencoding)r rr Zencode_contentsrrrrrÚtest_encode_contents.s
 
ÿz!TestEncoding.test_encode_contentscCs<t ¡d}d|}| |¡}| ¡}|| d¡ks8t‚dS)Nrú<span>s<span>)ÚsysÚgetrecursionlimitr rÚcountr)rÚlimitÚmarkupr ÚencodedrrrÚ"test_encode_deeply_nested_document5s
 
z/TestEncoding.test_encode_deeply_nested_documentcCs2d}| |¡}| ¡d d¡|j ¡ks.t‚dS)Nr    r r!)r ZrenderContentsrr rrrrrÚtest_deprecated_renderContents?s
z+TestEncoding.test_deprecated_renderContentscCs"d}| |¡}|t|ƒkst‚dS©Nr    )r ÚreprrrrrrÚ    test_reprEs
zTestEncoding.test_reprN) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrrrr r#r+r,r/rrrrrs
rc@s˜eZdZdZdd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$S)%ÚTestFormatterszrTest the formatting feature, used by methods like decode() and
    prettify(), and the formatters themselves.
    cCs0d}| |¡}|jdd}|| d¡ks,t‚dS©Nõ#<b>&lt;&lt;Sacré bleu!&gt;&gt;</b>Úminimal©Ú    formatter©r ÚdecodeZ document_forr©rr)r ÚdecodedrrrÚ!test_default_formatter_is_minimalPs 
 ÿz0TestFormatters.test_default_formatter_is_minimalcCs0d}| |¡}|jdd}|| d¡ks,t‚dS)Nõ'<br><b>&lt;&lt;Sacré bleu!&gt;&gt;</b>rr8z.<br/><b>&lt;&lt;Sacr&eacute; bleu!&gt;&gt;</b>r:r<rrrÚtest_formatter_htmlYs 
 ÿz"TestFormatters.test_formatter_htmlcCs0d}| |¡}|jdd}|| d¡ks,t‚dS)Nr?Úhtml5r8z-<br><b>&lt;&lt;Sacr&eacute; bleu!&gt;&gt;</b>r:r<rrrÚtest_formatter_html5as 
 ÿz#TestFormatters.test_formatter_html5cCs0d}| |¡}|jdd}|| d¡ks,t‚dSr5r:r<rrrÚtest_formatter_minimalis 
 ÿz%TestFormatters.test_formatter_minimalcCs0d}| |¡}|jdd}|| d¡ks,t‚dS)Nr6r8u<b><<Sacré bleu!>></b>r:r<rrrÚtest_formatter_nullrs 
 ÿz"TestFormatters.test_formatter_nullcCs4d}| |¡}|jdd„d}|| d¡ks0t‚dS)Nz!<b>&lt;foo&gt;</b><b>bar</b><br/>cSs| ¡S©N©Úupper©ÚxrrrÚ<lambda>óz6TestFormatters.test_formatter_custom.<locals>.<lambda>r8z<b><FOO></b><b>BAR</b><br/>r:r<rrrÚtest_formatter_custom|s
z$TestFormatters.test_formatter_customcCsˆd}| |¡}|j}d}|| ¡ks(t‚||jddks<t‚d}||jddksTt‚||jddksht‚d}||jdd    „dks„t‚dS)
Nu%<a href="http://a.com?a=b&c=é">e</a>u)<a href="http://a.com?a=b&amp;c=é">e</a>r7r8z/<a href="http://a.com?a=b&amp;c=&eacute;">e</a>ru%<a href="HTTP://A.COM?A=B&C=É">E</a>cSs| ¡SrErFrHrrrrJ“rKzJTestFormatters.test_formatter_is_run_on_attribute_values.<locals>.<lambda>)r Úar;r)rr)r rMZexpect_minimalZ expect_htmlZ expect_upperrrrÚ)test_formatter_is_run_on_attribute_values„s
z8TestFormatters.test_formatter_is_run_on_attribute_valuescCs"d}t|dƒ ¡}d|kst‚dS)NzO
  <script type="text/javascript">
   console.log("< < hey > > ");
  </script>
ú html.parseró < < hey > >©rrr©rÚdocr*rrrÚ2test_formatter_skips_script_tag_for_html_documents•szATestFormatters.test_formatter_skips_script_tag_for_html_documentscCs"d}t|dƒ ¡}d|kst‚dS)NzF
  <style type="text/css">
   console.log("< < hey > > ");
  </style>
rOrPrQrRrrrÚ1test_formatter_skips_style_tag_for_html_documentsžsz@TestFormatters.test_formatter_skips_style_tag_for_html_documentscCs | d¡}d|j ¡kst‚dS)NzN<div>  foo  <pre>      bar
  
  </pre>  baz  <textarea> eee
fff    </textarea></div>zP<div>
 foo
 <pre>      bar
  
  </pre>
 baz
 <textarea> eee
fff    </textarea>
</div>
©r ÚdivÚprettifyr©rr rrrÚ,test_prettify_leaves_preformatted_text_alone§s
z;TestFormatters.test_prettify_leaves_preformatted_text_alonecCs(d}d}| |¡}||j ¡ks$t‚dS)NzR<div><pre><code>some
<script><pre>code</pre></script> for you 
</code></pre></div>zV<div>
 <pre><code>some
<script><pre>code</pre></script> for you 
</code></pre>
</div>
rV)rr)Úexpectr rrrÚ0test_prettify_handles_nested_string_literal_tags­s 
z?TestFormatters.test_prettify_handles_nested_string_literal_tagscCs*tddƒ}|jdd„d}d|ks&t‚dS)Nz<html><body>foo</body></html>rOcSs| ¡SrErFrHrrrrJÇrKzITestFormatters.test_prettify_accepts_formatter_function.<locals>.<lambda>r8ZFOO)rrXr)rr ÚprettyrrrÚ(test_prettify_accepts_formatter_functionÅs
z7TestFormatters.test_prettify_accepts_formatter_functioncCs"| d¡}tt| ¡ƒkst‚dS)Nú<a></a>)r ÚstrÚtyperXrrYrrrÚ(test_prettify_outputs_unicode_by_defaultÊs
z7TestFormatters.test_prettify_outputs_unicode_by_defaultcCs$| d¡}tt| d¡ƒks t‚dS)Nr_r
)r ÚbytesrarXrrYrrrÚtest_prettify_can_encode_dataÎs
z,TestFormatters.test_prettify_can_encode_datacCs0d}| |¡}|j d¡}|| d¡ks,t‚dS)Nu<b>Sacré bleu!</b>r
r)rr)r r*rrrÚ,test_html_entity_substitution_off_by_defaultÒs
 z;TestFormatters.test_html_entity_substitution_off_by_defaultcCs‚d}| |¡}|jddks t‚| d¡}d|ks6t‚| d¡}d|ksLt‚| d¡}d    |ksbt‚| d
¡ d
¡}d |ks~t‚dS) NzE<meta content="text/html; charset=x-sjis" http-equiv="Content-type"/>Úcontentztext/html; charset=x-sjisr
s charset=utf-8Úeuc_jpscharset=euc_jpz    shift-jisscharset=shift-jiszutf-16zcharset=utf-16)r Úmetarrr;)rZmeta_tagr Úutf_8rgÚ    shift_jisZutf_16_urrrÚtest_encoding_substitutionØs
 
 
 
 z)TestFormatters.test_encoding_substitutioncCs2d}tdƒ}|j||d}|jdjdks.t‚dS)Nz`<head><meta content="text/html; charset=x-sjis" http-equiv="Content-type"/></head><pre>foo</pre>Úpre)Z
parse_onlyr)rr ÚcontentsÚnamer)rr)Zstrainerr rrrÚ;test_encoding_substitution_doesnt_happen_if_tag_is_strainedðszJTestFormatters.test_encoding_substitution_doesnt_happen_if_tag_is_strainedN)r0r1r2r3r>r@rBrCrDrLrNrTrUrZr\r^rbrdrerkrorrrrr4Ks$        
        r4c@sheZdZdZdd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Z    dd„Z
dd„Z dd„Z dd„Z dd„ZdS)ÚTestPersistencez*Testing features like pickle and deepcopy.cCsd|_| |j¡|_dS)Nay<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Beautiful Soup: We called him Tortoise because he taught us.</title>
<link rev="made" href="mailto:leonardr@segfault.org">
<meta name="Description" content="Beautiful Soup: an HTML parser optimized for screen-scraping.">
<meta name="generator" content="Markov Approximation 1.4 (module: leonardr)">
<meta name="author" content="Leonard Richardson">
</head>
<body>
<a href="foo">foo</a>
<a href="foo"><b>bar</b></a>
</body>
</html>)Úpager Útree)rrrrÚ setup_methodÿszTestPersistence.setup_methodcCs@t |jd¡}t |¡}|jtks&t‚| ¡|j ¡ks<t‚dS)Né)ÚpickleÚdumpsrrÚloadsÚ    __class__rrr;)rÚdumpedÚloadedrrrÚ!test_pickle_and_unpickle_identitys
z1TestPersistence.test_pickle_and_unpickle_identitycCs&t |j¡}| ¡|j ¡ks"t‚dSrE)ÚcopyÚdeepcopyrrr;r)rÚcopiedrrrÚtest_deepcopy_identitys z&TestPersistence.test_deepcopy_identitycCs6t ¡d}d|}| |¡}t |¡}t |¡}dS)Nrr$)r%r&r r|r})rr(r)r r~rrrÚ test_copy_deeply_nested_documents
 
 
z0TestPersistence.test_copy_deeply_nested_documentcCs:tddƒ}|j}| ¡}dt|ƒks(t‚||jks6t‚dS)Ns <p>&nbsp;</p>rOu    <p> </p>)rZoriginal_encodingÚ__copy__r`r)rr r"r|rrrÚtest_copy_preserves_encoding+s
 
z,TestPersistence.test_copy_preserves_encodingcCs„| d¡j}d|_d|_| ¡}|j|jks0t‚|j|jks@t‚|j|jksPt‚|j|jks`t‚|j|jkspt‚|j    |j    ks€t‚dS)Nz<p></p>é
é!)
r ÚpZ
sourcelineZ    sourceposrrZcan_be_empty_elementZcdata_list_attributesZpreserve_whitespace_tagsZinteresting_string_types)rÚtagr~rrrÚ'test_copy_preserves_builder_information2s z7TestPersistence.test_copy_preserves_builder_informationcCs>d}| |¡}t |tj¡}t |¡}| ¡| ¡ks:t‚dSr-)r rurvÚHIGHEST_PROTOCOLrwr;r)rrr ryrzrrrÚtest_unicode_pickleEs
 
 
z#TestPersistence.test_unicode_picklecCszd}| |¡}|jdd}t |¡}||ks0t‚d|jks>t‚d|jksLt‚d|jksZt‚d|jksht‚d|jksvt‚dS)Nz<b>Foo<a></a></b><b>Bar</b>ZFoo©r)r Úfindr|rÚparentÚ next_elementZ next_siblingÚprevious_element©rrr Ús1Ús2rrrÚ1test_copy_navigablestring_is_not_attached_to_treeMs
 
 zATestPersistence.test_copy_navigablestring_is_not_attached_to_treecCs<d}| |¡}|j}t |¡}||ks*t‚t|tƒs8t‚dS)Nz<b><!--Foo--></b>)r rr|rÚ
isinstancerrrrrÚ0test_copy_navigablestring_subclass_has_same_typeYs 
 
 z@TestPersistence.test_copy_navigablestring_subclass_has_same_typecCs(d}| |¡}t |¡}||ks$t‚dS)Nú)<div><b>Foo<a></a></b><b>Bar</b></div>end)r r|r)rrr Z    soup_copyrrrÚtest_copy_entire_soupas
 
z%TestPersistence.test_copy_entire_soupcCs–d}| |¡}|j}t |¡}t|ƒt|ƒks2t‚||ks>t‚||k    sJt‚d|jksXt‚d|jksft‚d|jddjks|t‚d|jddjks’t‚dS)Nr•ÚBarrŠ)    r rWr|r`rrŒrŽr‹r)rrr rWZdiv_copyrrrÚtest_copy_tag_copies_contentsgs
 
  z-TestPersistence.test_copy_tag_copies_contentsN)r0r1r2r3rsr{rr€r‚r‡r‰r’r”r–r˜rrrrrpüs  rp)r3r|rurr%Zbs4rZ bs4.elementrrrÚrrr4rprrrrÚ<module>s  :2