Linux vps-61133.fhnet.fr 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
Apache/2.4.25 (Debian)
Server IP : 93.113.207.21 & Your IP : 216.73.216.122
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
local /
lib /
python3.10 /
test /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
audiodata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
capath
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
cjkencodings
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
data
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
decimaltestdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
dtracedata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
encoded_modules
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
imghdrdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
libregrtest
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
sndhdrdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
subprocessdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
support
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_asyncio
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_email
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_import
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_importlib
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_json
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_peg_generator
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_tools
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_warnings
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
test_zoneinfo
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
tracedmodules
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
typinganndata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
xmltestdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
ziptestdata
[ DIR ]
drwxr-sr-x
2025-06-04 09:23
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
2025-06-04 09:23
__init__.py
47
B
-rw-r--r--
2025-06-04 09:23
__main__.py
41
B
-rw-r--r--
2025-06-04 09:23
_test_atexit.py
3.61
KB
-rw-r--r--
2025-06-04 09:23
_test_eintr.py
17.65
KB
-rw-r--r--
2025-06-04 09:23
_test_embed_set_config.py
8.55
KB
-rw-r--r--
2025-06-04 09:23
_test_multiprocessing.py
193.64
KB
-rw-r--r--
2025-06-04 09:23
_typed_dict_helper.py
494
B
-rw-r--r--
2025-06-04 09:23
allsans.pem
9.87
KB
-rw-r--r--
2025-06-04 09:23
ann_module.py
1.09
KB
-rw-r--r--
2025-06-04 09:23
ann_module2.py
519
B
-rw-r--r--
2025-06-04 09:23
ann_module3.py
448
B
-rw-r--r--
2025-06-04 09:23
ann_module4.py
81
B
-rw-r--r--
2025-06-04 09:23
ann_module5.py
202
B
-rw-r--r--
2025-06-04 09:23
ann_module6.py
138
B
-rw-r--r--
2025-06-04 09:23
ann_module7.py
295
B
-rw-r--r--
2025-06-04 09:23
audiotest.au
27.48
KB
-rw-r--r--
2025-06-04 09:23
audiotests.py
12.13
KB
-rw-r--r--
2025-06-04 09:23
audit-tests.py
11.35
KB
-rw-r--r--
2025-06-04 09:23
autotest.py
209
B
-rw-r--r--
2025-06-04 09:23
bad_coding.py
24
B
-rw-r--r--
2025-06-04 09:23
bad_coding2.py
30
B
-rw-r--r--
2025-06-04 09:23
bad_getattr.py
61
B
-rw-r--r--
2025-06-04 09:23
bad_getattr2.py
77
B
-rw-r--r--
2025-06-04 09:23
bad_getattr3.py
139
B
-rw-r--r--
2025-06-04 09:23
badcert.pem
1.88
KB
-rw-r--r--
2025-06-04 09:23
badkey.pem
2.11
KB
-rw-r--r--
2025-06-04 09:23
badsyntax_3131.py
32
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future10.py
95
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future3.py
172
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future4.py
153
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future5.py
184
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future6.py
161
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future7.py
196
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future8.py
122
B
-rw-r--r--
2025-06-04 09:23
badsyntax_future9.py
142
B
-rw-r--r--
2025-06-04 09:23
badsyntax_pep3120.py
14
B
-rw-r--r--
2025-06-04 09:23
bisect_cmd.py
5.21
KB
-rwxr-xr-x
2025-06-04 09:23
cfgparser.1
67
B
-rw-r--r--
2025-06-04 09:23
cfgparser.2
19.02
KB
-rw-r--r--
2025-06-04 09:23
cfgparser.3
1.55
KB
-rw-r--r--
2025-06-04 09:23
clinic.test
94.05
KB
-rw-r--r--
2025-06-04 09:23
cmath_testcases.txt
141.05
KB
-rw-r--r--
2025-06-04 09:23
coding20731.py
22
B
-rw-r--r--
2025-06-04 09:23
curses_tests.py
1.21
KB
-rwxr-xr-x
2025-06-04 09:23
dataclass_module_1.py
837
B
-rw-r--r--
2025-06-04 09:23
dataclass_module_1_str.py
835
B
-rw-r--r--
2025-06-04 09:23
dataclass_module_2.py
756
B
-rw-r--r--
2025-06-04 09:23
dataclass_module_2_str.py
754
B
-rw-r--r--
2025-06-04 09:23
dataclass_textanno.py
126
B
-rw-r--r--
2025-06-04 09:23
datetimetester.py
245.16
KB
-rw-r--r--
2025-06-04 09:23
dis_module.py
76
B
-rw-r--r--
2025-06-04 09:23
doctest_aliases.py
240
B
-rw-r--r--
2025-06-04 09:23
doctest_lineno.py
914
B
-rw-r--r--
2025-06-04 09:23
double_const.py
1.18
KB
-rw-r--r--
2025-06-04 09:23
empty.vbs
70
B
-rw-r--r--
2025-06-04 09:23
exception_hierarchy.txt
1.81
KB
-rw-r--r--
2025-06-04 09:23
ffdh3072.pem
2.16
KB
-rw-r--r--
2025-06-04 09:23
final_a.py
411
B
-rw-r--r--
2025-06-04 09:23
final_b.py
411
B
-rw-r--r--
2025-06-04 09:23
floating_points.txt
15.92
KB
-rw-r--r--
2025-06-04 09:23
fork_wait.py
2.23
KB
-rw-r--r--
2025-06-04 09:23
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
2025-06-04 09:23
future_test1.py
229
B
-rw-r--r--
2025-06-04 09:23
future_test2.py
149
B
-rw-r--r--
2025-06-04 09:23
gdb_sample.py
153
B
-rw-r--r--
2025-06-04 09:23
good_getattr.py
198
B
-rw-r--r--
2025-06-04 09:23
idnsans.pem
9.71
KB
-rw-r--r--
2025-06-04 09:23
ieee754.txt
3.21
KB
-rw-r--r--
2025-06-04 09:23
imp_dummy.py
63
B
-rw-r--r--
2025-06-04 09:23
inspect_fodder.py
1.88
KB
-rw-r--r--
2025-06-04 09:23
inspect_fodder2.py
3.69
KB
-rw-r--r--
2025-06-04 09:23
inspect_stock_annotations.py
509
B
-rw-r--r--
2025-06-04 09:23
inspect_stringized_annotations.py
612
B
-rw-r--r--
2025-06-04 09:23
inspect_stringized_annotations_2.py
60
B
-rw-r--r--
2025-06-04 09:23
keycert.passwd.pem
4.13
KB
-rw-r--r--
2025-06-04 09:23
keycert.pem
3.96
KB
-rw-r--r--
2025-06-04 09:23
keycert2.pem
3.98
KB
-rw-r--r--
2025-06-04 09:23
keycert3.pem
9.23
KB
-rw-r--r--
2025-06-04 09:23
keycert4.pem
9.24
KB
-rw-r--r--
2025-06-04 09:23
keycertecc.pem
5.5
KB
-rw-r--r--
2025-06-04 09:23
list_tests.py
16.65
KB
-rw-r--r--
2025-06-04 09:23
lock_tests.py
30.15
KB
-rw-r--r--
2025-06-04 09:23
mailcap.txt
1.24
KB
-rw-r--r--
2025-06-04 09:23
make_ssl_certs.py
9.25
KB
-rw-r--r--
2025-06-04 09:23
mapping_tests.py
21.83
KB
-rw-r--r--
2025-06-04 09:23
math_testcases.txt
23.19
KB
-rw-r--r--
2025-06-04 09:23
memory_watchdog.py
859
B
-rw-r--r--
2025-06-04 09:23
mime.types
47.37
KB
-rw-r--r--
2025-06-04 09:23
mock_socket.py
3.7
KB
-rw-r--r--
2025-06-04 09:23
mod_generics_cache.py
1.13
KB
-rw-r--r--
2025-06-04 09:23
mp_fork_bomb.py
448
B
-rw-r--r--
2025-06-04 09:23
mp_preload.py
351
B
-rw-r--r--
2025-06-04 09:23
multibytecodec_support.py
14.19
KB
-rw-r--r--
2025-06-04 09:23
nokia.pem
1.88
KB
-rw-r--r--
2025-06-04 09:23
nosan.pem
7.54
KB
-rw-r--r--
2025-06-04 09:23
nullbytecert.pem
5.31
KB
-rw-r--r--
2025-06-04 09:23
nullcert.pem
0
B
-rw-r--r--
2025-06-04 09:23
pickletester.py
141.12
KB
-rw-r--r--
2025-06-04 09:23
profilee.py
2.97
KB
-rw-r--r--
2025-06-04 09:23
pstats.pck
65.05
KB
-rw-r--r--
2025-06-04 09:23
pycacert.pem
5.53
KB
-rw-r--r--
2025-06-04 09:23
pycakey.pem
2.43
KB
-rw-r--r--
2025-06-04 09:23
pyclbr_input.py
648
B
-rw-r--r--
2025-06-04 09:23
pydoc_mod.py
961
B
-rw-r--r--
2025-06-04 09:23
pydocfodder.py
6.18
KB
-rw-r--r--
2025-06-04 09:23
pythoninfo.py
23.52
KB
-rw-r--r--
2025-06-04 09:23
randv2_32.pck
7.34
KB
-rw-r--r--
2025-06-04 09:23
randv2_64.pck
7.19
KB
-rw-r--r--
2025-06-04 09:23
randv3.pck
7.82
KB
-rw-r--r--
2025-06-04 09:23
re_tests.py
25.93
KB
-rwxr-xr-x
2025-06-04 09:23
recursion.tar
516
B
-rw-r--r--
2025-06-04 09:23
regrtest.py
1.26
KB
-rwxr-xr-x
2025-06-04 09:23
relimport.py
27
B
-rw-r--r--
2025-06-04 09:23
reperf.py
538
B
-rw-r--r--
2025-06-04 09:23
revocation.crl
800
B
-rw-r--r--
2025-06-04 09:23
sample_doctest.py
1.02
KB
-rw-r--r--
2025-06-04 09:23
sample_doctest_no_docstrings.py
227
B
-rw-r--r--
2025-06-04 09:23
sample_doctest_no_doctests.py
269
B
-rw-r--r--
2025-06-04 09:23
secp384r1.pem
256
B
-rw-r--r--
2025-06-04 09:23
selfsigned_pythontestdotnet.pem
2.08
KB
-rw-r--r--
2025-06-04 09:23
seq_tests.py
14.87
KB
-rw-r--r--
2025-06-04 09:23
sgml_input.html
8.1
KB
-rw-r--r--
2025-06-04 09:23
signalinterproctester.py
2.74
KB
-rw-r--r--
2025-06-04 09:23
sortperf.py
4.69
KB
-rw-r--r--
2025-06-04 09:23
ssl_cert.pem
1.53
KB
-rw-r--r--
2025-06-04 09:23
ssl_key.passwd.pem
2.59
KB
-rw-r--r--
2025-06-04 09:23
ssl_key.pem
2.43
KB
-rw-r--r--
2025-06-04 09:23
ssl_servers.py
7.11
KB
-rw-r--r--
2025-06-04 09:23
ssltests.py
1.03
KB
-rw-r--r--
2025-06-04 09:23
string_tests.py
68.03
KB
-rw-r--r--
2025-06-04 09:23
talos-2019-0758.pem
1.3
KB
-rw-r--r--
2025-06-04 09:23
test___all__.py
4.54
KB
-rw-r--r--
2025-06-04 09:23
test___future__.py
2.36
KB
-rw-r--r--
2025-06-04 09:23
test__locale.py
7.83
KB
-rw-r--r--
2025-06-04 09:23
test__opcode.py
3.05
KB
-rw-r--r--
2025-06-04 09:23
test__osx_support.py
13.64
KB
-rw-r--r--
2025-06-04 09:23
test__xxsubinterpreters.py
78.94
KB
-rw-r--r--
2025-06-04 09:23
test_abc.py
23.19
KB
-rw-r--r--
2025-06-04 09:23
test_abstract_numbers.py
1.49
KB
-rw-r--r--
2025-06-04 09:23
test_aifc.py
17.77
KB
-rw-r--r--
2025-06-04 09:23
test_argparse.py
181.08
KB
-rw-r--r--
2025-06-04 09:23
test_array.py
55.21
KB
-rwxr-xr-x
2025-06-04 09:23
test_asdl_parser.py
4.44
KB
-rw-r--r--
2025-06-04 09:23
test_ast.py
107.27
KB
-rw-r--r--
2025-06-04 09:23
test_asyncgen.py
46.8
KB
-rw-r--r--
2025-06-04 09:23
test_asynchat.py
9.4
KB
-rw-r--r--
2025-06-04 09:23
test_asyncore.py
26.13
KB
-rw-r--r--
2025-06-04 09:23
test_atexit.py
3.14
KB
-rw-r--r--
2025-06-04 09:23
test_audioop.py
28.24
KB
-rw-r--r--
2025-06-04 09:23
test_audit.py
6.46
KB
-rw-r--r--
2025-06-04 09:23
test_augassign.py
7.68
KB
-rw-r--r--
2025-06-04 09:23
test_base64.py
34.51
KB
-rw-r--r--
2025-06-04 09:23
test_baseexception.py
7.77
KB
-rw-r--r--
2025-06-04 09:23
test_bdb.py
43.63
KB
-rw-r--r--
2025-06-04 09:23
test_bigaddrspace.py
2.83
KB
-rw-r--r--
2025-06-04 09:23
test_bigmem.py
44.78
KB
-rw-r--r--
2025-06-04 09:23
test_binascii.py
19.27
KB
-rw-r--r--
2025-06-04 09:23
test_binhex.py
2.1
KB
-rw-r--r--
2025-06-04 09:23
test_binop.py
14.14
KB
-rw-r--r--
2025-06-04 09:23
test_bisect.py
15.71
KB
-rw-r--r--
2025-06-04 09:23
test_bool.py
12.73
KB
-rw-r--r--
2025-06-04 09:23
test_buffer.py
160.31
KB
-rw-r--r--
2025-06-04 09:23
test_bufio.py
2.58
KB
-rw-r--r--
2025-06-04 09:23
test_builtin.py
85.98
KB
-rw-r--r--
2025-06-04 09:23
test_bytes.py
76.03
KB
-rw-r--r--
2025-06-04 09:23
test_bz2.py
37.23
KB
-rw-r--r--
2025-06-04 09:23
test_c_locale_coercion.py
18.92
KB
-rw-r--r--
2025-06-04 09:23
test_calendar.py
51.02
KB
-rw-r--r--
2025-06-04 09:23
test_call.py
26.23
KB
-rw-r--r--
2025-06-04 09:23
test_cgi.py
22.26
KB
-rw-r--r--
2025-06-04 09:23
test_cgitb.py
2.54
KB
-rw-r--r--
2025-06-04 09:23
test_charmapcodec.py
1.77
KB
-rw-r--r--
2025-06-04 09:23
test_check_c_globals.py
1.02
KB
-rw-r--r--
2025-06-04 09:23
test_class.py
17.41
KB
-rw-r--r--
2025-06-04 09:23
test_clinic.py
43.03
KB
-rw-r--r--
2025-06-04 09:23
test_cmath.py
24.08
KB
-rw-r--r--
2025-06-04 09:23
test_cmd.py
6.1
KB
-rw-r--r--
2025-06-04 09:23
test_cmd_line.py
37.59
KB
-rw-r--r--
2025-06-04 09:23
test_cmd_line_script.py
33.43
KB
-rw-r--r--
2025-06-04 09:23
test_code.py
12.67
KB
-rw-r--r--
2025-06-04 09:23
test_code_module.py
5.53
KB
-rw-r--r--
2025-06-04 09:23
test_codeccallbacks.py
47.43
KB
-rw-r--r--
2025-06-04 09:23
test_codecencodings_cn.py
3.86
KB
-rw-r--r--
2025-06-04 09:23
test_codecencodings_hk.py
701
B
-rw-r--r--
2025-06-04 09:23
test_codecencodings_iso2022.py
3.65
KB
-rw-r--r--
2025-06-04 09:23
test_codecencodings_jp.py
4.79
KB
-rw-r--r--
2025-06-04 09:23
test_codecencodings_kr.py
2.96
KB
-rw-r--r--
2025-06-04 09:23
test_codecencodings_tw.py
681
B
-rw-r--r--
2025-06-04 09:23
test_codecmaps_cn.py
746
B
-rw-r--r--
2025-06-04 09:23
test_codecmaps_hk.py
386
B
-rw-r--r--
2025-06-04 09:23
test_codecmaps_jp.py
1.7
KB
-rw-r--r--
2025-06-04 09:23
test_codecmaps_kr.py
1.16
KB
-rw-r--r--
2025-06-04 09:23
test_codecmaps_tw.py
705
B
-rw-r--r--
2025-06-04 09:23
test_codecs.py
133.35
KB
-rw-r--r--
2025-06-04 09:23
test_codeop.py
9.18
KB
-rw-r--r--
2025-06-04 09:23
test_collections.py
92.15
KB
-rw-r--r--
2025-06-04 09:23
test_colorsys.py
3.83
KB
-rw-r--r--
2025-06-04 09:23
test_compare.py
3.74
KB
-rw-r--r--
2025-06-04 09:23
test_compile.py
46.33
KB
-rw-r--r--
2025-06-04 09:23
test_compileall.py
47.55
KB
-rw-r--r--
2025-06-04 09:23
test_complex.py
32.54
KB
-rw-r--r--
2025-06-04 09:23
test_concurrent_futures.py
56.63
KB
-rw-r--r--
2025-06-04 09:23
test_configparser.py
85.4
KB
-rw-r--r--
2025-06-04 09:23
test_contains.py
3.35
KB
-rw-r--r--
2025-06-04 09:23
test_context.py
30.63
KB
-rw-r--r--
2025-06-04 09:23
test_contextlib.py
36.9
KB
-rw-r--r--
2025-06-04 09:23
test_contextlib_async.py
20.67
KB
-rw-r--r--
2025-06-04 09:23
test_copy.py
26.63
KB
-rw-r--r--
2025-06-04 09:23
test_copyreg.py
4.39
KB
-rw-r--r--
2025-06-04 09:23
test_coroutines.py
63.79
KB
-rw-r--r--
2025-06-04 09:23
test_cprofile.py
6.33
KB
-rw-r--r--
2025-06-04 09:23
test_crashers.py
1.17
KB
-rw-r--r--
2025-06-04 09:23
test_crypt.py
4.14
KB
-rw-r--r--
2025-06-04 09:23
test_csv.py
52.99
KB
-rw-r--r--
2025-06-04 09:23
test_ctypes.py
199
B
-rw-r--r--
2025-06-04 09:23
test_curses.py
46.58
KB
-rw-r--r--
2025-06-04 09:23
test_dataclasses.py
126.75
KB
-rw-r--r--
2025-06-04 09:23
test_datetime.py
2.31
KB
-rw-r--r--
2025-06-04 09:23
test_dbm.py
6.11
KB
-rw-r--r--
2025-06-04 09:23
test_dbm_dumb.py
10.68
KB
-rw-r--r--
2025-06-04 09:23
test_dbm_gnu.py
6.51
KB
-rw-r--r--
2025-06-04 09:23
test_dbm_ndbm.py
5.12
KB
-rw-r--r--
2025-06-04 09:23
test_decimal.py
209.81
KB
-rw-r--r--
2025-06-04 09:23
test_decorators.py
14.42
KB
-rw-r--r--
2025-06-04 09:23
test_defaultdict.py
6.13
KB
-rw-r--r--
2025-06-04 09:23
test_deque.py
33.63
KB
-rw-r--r--
2025-06-04 09:23
test_descr.py
192.65
KB
-rw-r--r--
2025-06-04 09:23
test_descrtut.py
11.57
KB
-rw-r--r--
2025-06-04 09:23
test_devpoll.py
4.44
KB
-rw-r--r--
2025-06-04 09:23
test_dict.py
50.72
KB
-rw-r--r--
2025-06-04 09:23
test_dict_version.py
6.1
KB
-rw-r--r--
2025-06-04 09:23
test_dictcomps.py
5.15
KB
-rw-r--r--
2025-06-04 09:23
test_dictviews.py
13.69
KB
-rw-r--r--
2025-06-04 09:23
test_difflib.py
21.47
KB
-rw-r--r--
2025-06-04 09:23
test_difflib_expect.html
100.85
KB
-rw-r--r--
2025-06-04 09:23
test_dis.py
56.47
KB
-rw-r--r--
2025-06-04 09:23
test_distutils.py
587
B
-rw-r--r--
2025-06-04 09:23
test_doctest.py
101.1
KB
-rw-r--r--
2025-06-04 09:23
test_doctest.txt
300
B
-rw-r--r--
2025-06-04 09:23
test_doctest2.py
2.36
KB
-rw-r--r--
2025-06-04 09:23
test_doctest2.txt
392
B
-rw-r--r--
2025-06-04 09:23
test_doctest3.txt
82
B
-rw-r--r--
2025-06-04 09:23
test_doctest4.txt
244
B
-rw-r--r--
2025-06-04 09:23
test_docxmlrpc.py
8.67
KB
-rw-r--r--
2025-06-04 09:23
test_dtrace.py
5.14
KB
-rw-r--r--
2025-06-04 09:23
test_dynamic.py
4.29
KB
-rw-r--r--
2025-06-04 09:23
test_dynamicclassattribute.py
9.57
KB
-rw-r--r--
2025-06-04 09:23
test_eintr.py
584
B
-rw-r--r--
2025-06-04 09:23
test_embed.py
55.88
KB
-rw-r--r--
2025-06-04 09:23
test_ensurepip.py
12.2
KB
-rw-r--r--
2025-06-04 09:23
test_enum.py
121.13
KB
-rw-r--r--
2025-06-04 09:23
test_enumerate.py
8.46
KB
-rw-r--r--
2025-06-04 09:23
test_eof.py
3.02
KB
-rw-r--r--
2025-06-04 09:23
test_epoll.py
9.14
KB
-rw-r--r--
2025-06-04 09:23
test_errno.py
1.04
KB
-rw-r--r--
2025-06-04 09:23
test_exception_hierarchy.py
7.43
KB
-rw-r--r--
2025-06-04 09:23
test_exception_variations.py
3.86
KB
-rw-r--r--
2025-06-04 09:23
test_exceptions.py
90.94
KB
-rw-r--r--
2025-06-04 09:23
test_extcall.py
14.05
KB
-rw-r--r--
2025-06-04 09:23
test_faulthandler.py
30.11
KB
-rw-r--r--
2025-06-04 09:23
test_fcntl.py
7.43
KB
-rw-r--r--
2025-06-04 09:23
test_file.py
11.78
KB
-rw-r--r--
2025-06-04 09:23
test_file_eintr.py
10.61
KB
-rw-r--r--
2025-06-04 09:23
test_filecmp.py
10.33
KB
-rw-r--r--
2025-06-04 09:23
test_fileinput.py
40.18
KB
-rw-r--r--
2025-06-04 09:23
test_fileio.py
19.93
KB
-rw-r--r--
2025-06-04 09:23
test_finalization.py
14.66
KB
-rw-r--r--
2025-06-04 09:23
test_float.py
66.39
KB
-rw-r--r--
2025-06-04 09:23
test_flufl.py
1.55
KB
-rw-r--r--
2025-06-04 09:23
test_fnmatch.py
11.1
KB
-rw-r--r--
2025-06-04 09:23
test_fork1.py
3.24
KB
-rw-r--r--
2025-06-04 09:23
test_format.py
23.91
KB
-rw-r--r--
2025-06-04 09:23
test_fractions.py
29.7
KB
-rw-r--r--
2025-06-04 09:23
test_frame.py
6.22
KB
-rw-r--r--
2025-06-04 09:23
test_frozen.py
943
B
-rw-r--r--
2025-06-04 09:23
test_fstring.py
52.54
KB
-rw-r--r--
2025-06-04 09:23
test_ftplib.py
41.99
KB
-rw-r--r--
2025-06-04 09:23
test_funcattrs.py
14.86
KB
-rw-r--r--
2025-06-04 09:23
test_functools.py
102.67
KB
-rw-r--r--
2025-06-04 09:23
test_future.py
14.88
KB
-rw-r--r--
2025-06-04 09:23
test_future3.py
490
B
-rw-r--r--
2025-06-04 09:23
test_future4.py
222
B
-rw-r--r--
2025-06-04 09:23
test_future5.py
510
B
-rw-r--r--
2025-06-04 09:23
test_gc.py
45.92
KB
-rw-r--r--
2025-06-04 09:23
test_gdb.py
41.71
KB
-rw-r--r--
2025-06-04 09:23
test_generator_stop.py
943
B
-rw-r--r--
2025-06-04 09:23
test_generators.py
63.77
KB
-rw-r--r--
2025-06-04 09:23
test_genericalias.py
12.77
KB
-rw-r--r--
2025-06-04 09:23
test_genericclass.py
9.28
KB
-rw-r--r--
2025-06-04 09:23
test_genericpath.py
21.84
KB
-rw-r--r--
2025-06-04 09:23
test_genexps.py
7.63
KB
-rw-r--r--
2025-06-04 09:23
test_getopt.py
6.78
KB
-rw-r--r--
2025-06-04 09:23
test_getpass.py
6.29
KB
-rw-r--r--
2025-06-04 09:23
test_gettext.py
41.42
KB
-rw-r--r--
2025-06-04 09:23
test_glob.py
15.35
KB
-rw-r--r--
2025-06-04 09:23
test_global.py
1.38
KB
-rw-r--r--
2025-06-04 09:23
test_grammar.py
63.22
KB
-rw-r--r--
2025-06-04 09:23
test_graphlib.py
8.34
KB
-rw-r--r--
2025-06-04 09:23
test_grp.py
3.67
KB
-rw-r--r--
2025-06-04 09:23
test_gzip.py
30.63
KB
-rw-r--r--
2025-06-04 09:23
test_hash.py
11.45
KB
-rw-r--r--
2025-06-04 09:23
test_hashlib.py
44.92
KB
-rw-r--r--
2025-06-04 09:23
test_heapq.py
16.45
KB
-rw-r--r--
2025-06-04 09:23
test_hmac.py
25.41
KB
-rw-r--r--
2025-06-04 09:23
test_html.py
4.23
KB
-rw-r--r--
2025-06-04 09:23
test_htmlparser.py
32.93
KB
-rw-r--r--
2025-06-04 09:23
test_http_cookiejar.py
78.4
KB
-rw-r--r--
2025-06-04 09:23
test_http_cookies.py
18.71
KB
-rw-r--r--
2025-06-04 09:23
test_httplib.py
79.14
KB
-rw-r--r--
2025-06-04 09:23
test_httpservers.py
55.11
KB
-rw-r--r--
2025-06-04 09:23
test_idle.py
1014
B
-rw-r--r--
2025-06-04 09:23
test_imaplib.py
42.13
KB
-rw-r--r--
2025-06-04 09:23
test_imghdr.py
4.69
KB
-rw-r--r--
2025-06-04 09:23
test_imp.py
18.93
KB
-rw-r--r--
2025-06-04 09:23
test_index.py
8.37
KB
-rw-r--r--
2025-06-04 09:23
test_inspect.py
172.66
KB
-rw-r--r--
2025-06-04 09:23
test_int.py
28.32
KB
-rw-r--r--
2025-06-04 09:23
test_int_literal.py
6.89
KB
-rw-r--r--
2025-06-04 09:23
test_interpreters.py
22.48
KB
-rw-r--r--
2025-06-04 09:23
test_io.py
171.42
KB
-rw-r--r--
2025-06-04 09:23
test_ioctl.py
3.24
KB
-rw-r--r--
2025-06-04 09:23
test_ipaddress.py
116.78
KB
-rw-r--r--
2025-06-04 09:23
test_isinstance.py
12.96
KB
-rw-r--r--
2025-06-04 09:23
test_iter.py
36.76
KB
-rw-r--r--
2025-06-04 09:23
test_iterlen.py
7.1
KB
-rw-r--r--
2025-06-04 09:23
test_itertools.py
108.43
KB
-rw-r--r--
2025-06-04 09:23
test_keyword.py
1.97
KB
-rw-r--r--
2025-06-04 09:23
test_keywordonlyarg.py
6.89
KB
-rw-r--r--
2025-06-04 09:23
test_kqueue.py
8.76
KB
-rw-r--r--
2025-06-04 09:23
test_largefile.py
9.98
KB
-rw-r--r--
2025-06-04 09:23
test_lib2to3.py
318
B
-rw-r--r--
2025-06-04 09:23
test_linecache.py
9.64
KB
-rw-r--r--
2025-06-04 09:23
test_list.py
7.98
KB
-rw-r--r--
2025-06-04 09:23
test_listcomps.py
4.17
KB
-rw-r--r--
2025-06-04 09:23
test_lltrace.py
3.13
KB
-rw-r--r--
2025-06-04 09:23
test_locale.py
24.64
KB
-rw-r--r--
2025-06-04 09:23
test_logging.py
196.58
KB
-rw-r--r--
2025-06-04 09:23
test_long.py
54.55
KB
-rw-r--r--
2025-06-04 09:23
test_longexp.py
233
B
-rw-r--r--
2025-06-04 09:23
test_lzma.py
88.18
KB
-rw-r--r--
2025-06-04 09:23
test_mailbox.py
91.79
KB
-rw-r--r--
2025-06-04 09:23
test_mailcap.py
10.16
KB
-rw-r--r--
2025-06-04 09:23
test_marshal.py
20.46
KB
-rw-r--r--
2025-06-04 09:23
test_math.py
90.7
KB
-rw-r--r--
2025-06-04 09:23
test_memoryio.py
31.48
KB
-rw-r--r--
2025-06-04 09:23
test_memoryview.py
21.37
KB
-rw-r--r--
2025-06-04 09:23
test_metaclass.py
6.21
KB
-rw-r--r--
2025-06-04 09:23
test_mimetypes.py
13.85
KB
-rw-r--r--
2025-06-04 09:23
test_minidom.py
68.81
KB
-rw-r--r--
2025-06-04 09:23
test_mmap.py
31.06
KB
-rw-r--r--
2025-06-04 09:23
test_module.py
12.37
KB
-rw-r--r--
2025-06-04 09:23
test_modulefinder.py
12.2
KB
-rw-r--r--
2025-06-04 09:23
test_msilib.py
5.41
KB
-rw-r--r--
2025-06-04 09:23
test_multibytecodec.py
15.76
KB
-rw-r--r--
2025-06-04 09:23
test_multiprocessing_fork.py
477
B
-rw-r--r--
2025-06-04 09:23
test_multiprocessing_forkserver.py
392
B
-rw-r--r--
2025-06-04 09:23
test_multiprocessing_main_handling.py
11.57
KB
-rw-r--r--
2025-06-04 09:23
test_multiprocessing_spawn.py
277
B
-rw-r--r--
2025-06-04 09:23
test_named_expressions.py
20.62
KB
-rw-r--r--
2025-06-04 09:23
test_netrc.py
6.01
KB
-rw-r--r--
2025-06-04 09:23
test_nis.py
1.17
KB
-rw-r--r--
2025-06-04 09:23
test_nntplib.py
62.68
KB
-rw-r--r--
2025-06-04 09:23
test_ntpath.py
38.67
KB
-rw-r--r--
2025-06-04 09:23
test_numeric_tower.py
8
KB
-rw-r--r--
2025-06-04 09:23
test_opcache.py
529
B
-rw-r--r--
2025-06-04 09:23
test_opcodes.py
3.59
KB
-rw-r--r--
2025-06-04 09:23
test_openpty.py
600
B
-rw-r--r--
2025-06-04 09:23
test_operator.py
24.05
KB
-rw-r--r--
2025-06-04 09:23
test_optparse.py
61.02
KB
-rw-r--r--
2025-06-04 09:23
test_ordered_dict.py
31.61
KB
-rw-r--r--
2025-06-04 09:23
test_os.py
167.95
KB
-rw-r--r--
2025-06-04 09:23
test_ossaudiodev.py
7.07
KB
-rw-r--r--
2025-06-04 09:23
test_osx_env.py
1.31
KB
-rw-r--r--
2025-06-04 09:23
test_pathlib.py
109.86
KB
-rw-r--r--
2025-06-04 09:23
test_patma.py
84.78
KB
-rw-r--r--
2025-06-04 09:23
test_pdb.py
68.89
KB
-rw-r--r--
2025-06-04 09:23
test_peepholer.py
19.77
KB
-rw-r--r--
2025-06-04 09:23
test_pickle.py
19.71
KB
-rw-r--r--
2025-06-04 09:23
test_picklebuffer.py
4.99
KB
-rw-r--r--
2025-06-04 09:23
test_pickletools.py
4.13
KB
-rw-r--r--
2025-06-04 09:23
test_pipes.py
6.71
KB
-rw-r--r--
2025-06-04 09:23
test_pkg.py
9.59
KB
-rw-r--r--
2025-06-04 09:23
test_pkgutil.py
21.21
KB
-rw-r--r--
2025-06-04 09:23
test_platform.py
19.98
KB
-rw-r--r--
2025-06-04 09:23
test_plistlib.py
38.73
KB
-rw-r--r--
2025-06-04 09:23
test_poll.py
7.27
KB
-rw-r--r--
2025-06-04 09:23
test_popen.py
2.08
KB
-rw-r--r--
2025-06-04 09:23
test_poplib.py
17.54
KB
-rw-r--r--
2025-06-04 09:23
test_positional_only_arg.py
17.77
KB
-rw-r--r--
2025-06-04 09:23
test_posix.py
87.32
KB
-rw-r--r--
2025-06-04 09:23
test_posixpath.py
32.11
KB
-rw-r--r--
2025-06-04 09:23
test_pow.py
5.43
KB
-rw-r--r--
2025-06-04 09:23
test_pprint.py
50.31
KB
-rw-r--r--
2025-06-04 09:23
test_print.py
7.72
KB
-rw-r--r--
2025-06-04 09:23
test_profile.py
8.69
KB
-rw-r--r--
2025-06-04 09:23
test_property.py
11.35
KB
-rw-r--r--
2025-06-04 09:23
test_pstats.py
3.31
KB
-rw-r--r--
2025-06-04 09:23
test_pty.py
16.84
KB
-rw-r--r--
2025-06-04 09:23
test_pulldom.py
12.66
KB
-rw-r--r--
2025-06-04 09:23
test_pwd.py
4.29
KB
-rw-r--r--
2025-06-04 09:23
test_py_compile.py
11.44
KB
-rw-r--r--
2025-06-04 09:23
test_pyclbr.py
9.84
KB
-rw-r--r--
2025-06-04 09:23
test_pydoc.py
60.53
KB
-rw-r--r--
2025-06-04 09:23
test_pyexpat.py
28.42
KB
-rw-r--r--
2025-06-04 09:23
test_queue.py
20.51
KB
-rw-r--r--
2025-06-04 09:23
test_quopri.py
7.78
KB
-rw-r--r--
2025-06-04 09:23
test_raise.py
13.44
KB
-rw-r--r--
2025-06-04 09:23
test_random.py
55.18
KB
-rw-r--r--
2025-06-04 09:23
test_range.py
24.64
KB
-rw-r--r--
2025-06-04 09:23
test_re.py
112.86
KB
-rw-r--r--
2025-06-04 09:23
test_readline.py
14.24
KB
-rw-r--r--
2025-06-04 09:23
test_regrtest.py
49.5
KB
-rw-r--r--
2025-06-04 09:23
test_repl.py
3.96
KB
-rw-r--r--
2025-06-04 09:23
test_reprlib.py
15.13
KB
-rw-r--r--
2025-06-04 09:23
test_resource.py
7.04
KB
-rw-r--r--
2025-06-04 09:23
test_richcmp.py
11.91
KB
-rw-r--r--
2025-06-04 09:23
test_rlcompleter.py
7.1
KB
-rw-r--r--
2025-06-04 09:23
test_robotparser.py
10.88
KB
-rw-r--r--
2025-06-04 09:23
test_runpy.py
33.86
KB
-rw-r--r--
2025-06-04 09:23
test_sax.py
54.6
KB
-rw-r--r--
2025-06-04 09:23
test_sched.py
7.28
KB
-rw-r--r--
2025-06-04 09:23
test_scope.py
19.83
KB
-rw-r--r--
2025-06-04 09:23
test_script_helper.py
5.78
KB
-rw-r--r--
2025-06-04 09:23
test_secrets.py
4.28
KB
-rw-r--r--
2025-06-04 09:23
test_select.py
3.32
KB
-rw-r--r--
2025-06-04 09:23
test_selectors.py
18.27
KB
-rw-r--r--
2025-06-04 09:23
test_set.py
69.09
KB
-rw-r--r--
2025-06-04 09:23
test_setcomps.py
4.15
KB
-rw-r--r--
2025-06-04 09:23
test_shelve.py
6.02
KB
-rw-r--r--
2025-06-04 09:23
test_shlex.py
13.48
KB
-rw-r--r--
2025-06-04 09:23
test_shutil.py
105.72
KB
-rw-r--r--
2025-06-04 09:23
test_signal.py
48.8
KB
-rw-r--r--
2025-06-04 09:23
test_site.py
27.8
KB
-rw-r--r--
2025-06-04 09:23
test_slice.py
9.23
KB
-rw-r--r--
2025-06-04 09:23
test_smtpd.py
40.65
KB
-rw-r--r--
2025-06-04 09:23
test_smtplib.py
60.05
KB
-rw-r--r--
2025-06-04 09:23
test_smtpnet.py
2.99
KB
-rw-r--r--
2025-06-04 09:23
test_sndhdr.py
1.43
KB
-rw-r--r--
2025-06-04 09:23
test_socket.py
246.76
KB
-rw-r--r--
2025-06-04 09:23
test_socketserver.py
17.89
KB
-rw-r--r--
2025-06-04 09:23
test_sort.py
13.42
KB
-rw-r--r--
2025-06-04 09:23
test_source_encoding.py
9.03
KB
-rw-r--r--
2025-06-04 09:23
test_spwd.py
2.73
KB
-rw-r--r--
2025-06-04 09:23
test_sqlite.py
988
B
-rw-r--r--
2025-06-04 09:23
test_ssl.py
217.26
KB
-rw-r--r--
2025-06-04 09:23
test_startfile.py
1.7
KB
-rw-r--r--
2025-06-04 09:23
test_stat.py
8.58
KB
-rw-r--r--
2025-06-04 09:23
test_statistics.py
113.22
KB
-rw-r--r--
2025-06-04 09:23
test_strftime.py
7.54
KB
-rw-r--r--
2025-06-04 09:23
test_string.py
19.8
KB
-rw-r--r--
2025-06-04 09:23
test_string_literals.py
10.2
KB
-rw-r--r--
2025-06-04 09:23
test_stringprep.py
3.04
KB
-rw-r--r--
2025-06-04 09:23
test_strptime.py
34.42
KB
-rw-r--r--
2025-06-04 09:23
test_strtod.py
20.06
KB
-rw-r--r--
2025-06-04 09:23
test_struct.py
36.19
KB
-rw-r--r--
2025-06-04 09:23
test_structseq.py
4.42
KB
-rw-r--r--
2025-06-04 09:23
test_subclassinit.py
8.12
KB
-rw-r--r--
2025-06-04 09:23
test_subprocess.py
156.33
KB
-rw-r--r--
2025-06-04 09:23
test_sunau.py
5.98
KB
-rw-r--r--
2025-06-04 09:23
test_sundry.py
2.1
KB
-rw-r--r--
2025-06-04 09:23
test_super.py
9.6
KB
-rw-r--r--
2025-06-04 09:23
test_support.py
25.33
KB
-rw-r--r--
2025-06-04 09:23
test_symtable.py
9.36
KB
-rw-r--r--
2025-06-04 09:23
test_syntax.py
52.33
KB
-rw-r--r--
2025-06-04 09:23
test_sys.py
58.56
KB
-rw-r--r--
2025-06-04 09:23
test_sys_setprofile.py
13.19
KB
-rw-r--r--
2025-06-04 09:23
test_sys_settrace.py
62.72
KB
-rw-r--r--
2025-06-04 09:23
test_sysconfig.py
18.92
KB
-rw-r--r--
2025-06-04 09:23
test_syslog.py
2.71
KB
-rw-r--r--
2025-06-04 09:23
test_tabnanny.py
13.44
KB
-rw-r--r--
2025-06-04 09:23
test_tarfile.py
152.06
KB
-rw-r--r--
2025-06-04 09:23
test_tcl.py
31.54
KB
-rw-r--r--
2025-06-04 09:23
test_telnetlib.py
12.74
KB
-rw-r--r--
2025-06-04 09:23
test_tempfile.py
65.97
KB
-rw-r--r--
2025-06-04 09:23
test_textwrap.py
41.89
KB
-rw-r--r--
2025-06-04 09:23
test_thread.py
8.54
KB
-rw-r--r--
2025-06-04 09:23
test_threadedtempfile.py
1.87
KB
-rw-r--r--
2025-06-04 09:23
test_threading.py
59.46
KB
-rw-r--r--
2025-06-04 09:23
test_threading_local.py
6.66
KB
-rw-r--r--
2025-06-04 09:23
test_threadsignals.py
10.11
KB
-rw-r--r--
2025-06-04 09:23
test_time.py
39.93
KB
-rw-r--r--
2025-06-04 09:23
test_timeit.py
15.2
KB
-rw-r--r--
2025-06-04 09:23
test_timeout.py
11
KB
-rw-r--r--
2025-06-04 09:23
test_tix.py
1.05
KB
-rw-r--r--
2025-06-04 09:23
test_tk.py
546
B
-rw-r--r--
2025-06-04 09:23
test_tokenize.py
64.51
KB
-rw-r--r--
2025-06-04 09:23
test_trace.py
20.4
KB
-rw-r--r--
2025-06-04 09:23
test_traceback.py
54.55
KB
-rw-r--r--
2025-06-04 09:23
test_tracemalloc.py
39.17
KB
-rw-r--r--
2025-06-04 09:23
test_ttk_guionly.py
986
B
-rw-r--r--
2025-06-04 09:23
test_ttk_textonly.py
16.69
KB
-rw-r--r--
2025-06-04 09:23
test_tuple.py
18.85
KB
-rw-r--r--
2025-06-04 09:23
test_turtle.py
12.75
KB
-rw-r--r--
2025-06-04 09:23
test_type_annotations.py
3.7
KB
-rw-r--r--
2025-06-04 09:23
test_type_comments.py
10.54
KB
-rw-r--r--
2025-06-04 09:23
test_typechecks.py
2.55
KB
-rw-r--r--
2025-06-04 09:23
test_types.py
75.67
KB
-rw-r--r--
2025-06-04 09:23
test_typing.py
179.66
KB
-rw-r--r--
2025-06-04 09:23
test_ucn.py
9.52
KB
-rw-r--r--
2025-06-04 09:23
test_unary.py
1.63
KB
-rw-r--r--
2025-06-04 09:23
test_unicode.py
120.59
KB
-rw-r--r--
2025-06-04 09:23
test_unicode_file.py
5.71
KB
-rw-r--r--
2025-06-04 09:23
test_unicode_file_functions.py
6.74
KB
-rw-r--r--
2025-06-04 09:23
test_unicode_identifiers.py
984
B
-rw-r--r--
2025-06-04 09:23
test_unicodedata.py
16.21
KB
-rw-r--r--
2025-06-04 09:23
test_unittest.py
226
B
-rw-r--r--
2025-06-04 09:23
test_univnewlines.py
3.88
KB
-rw-r--r--
2025-06-04 09:23
test_unpack.py
3.01
KB
-rw-r--r--
2025-06-04 09:23
test_unpack_ex.py
9.91
KB
-rw-r--r--
2025-06-04 09:23
test_unparse.py
18.59
KB
-rw-r--r--
2025-06-04 09:23
test_urllib.py
70.08
KB
-rw-r--r--
2025-06-04 09:23
test_urllib2.py
78.97
KB
-rw-r--r--
2025-06-04 09:23
test_urllib2_localnet.py
25.5
KB
-rw-r--r--
2025-06-04 09:23
test_urllib2net.py
14.07
KB
-rw-r--r--
2025-06-04 09:23
test_urllib_response.py
1.89
KB
-rw-r--r--
2025-06-04 09:23
test_urllibnet.py
9.32
KB
-rw-r--r--
2025-06-04 09:23
test_urlparse.py
67.31
KB
-rw-r--r--
2025-06-04 09:23
test_userdict.py
7.56
KB
-rw-r--r--
2025-06-04 09:23
test_userlist.py
1.97
KB
-rw-r--r--
2025-06-04 09:23
test_userstring.py
2.4
KB
-rw-r--r--
2025-06-04 09:23
test_utf8_mode.py
10.29
KB
-rw-r--r--
2025-06-04 09:23
test_utf8source.py
1.15
KB
-rw-r--r--
2025-06-04 09:23
test_uu.py
8.92
KB
-rw-r--r--
2025-06-04 09:23
test_uuid.py
40
KB
-rwxr-xr-x
2025-06-04 09:23
test_venv.py
22.63
KB
-rw-r--r--
2025-06-04 09:23
test_wait3.py
1.81
KB
-rw-r--r--
2025-06-04 09:23
test_wait4.py
1.16
KB
-rw-r--r--
2025-06-04 09:23
test_wave.py
6.5
KB
-rw-r--r--
2025-06-04 09:23
test_weakref.py
73.74
KB
-rw-r--r--
2025-06-04 09:23
test_weakset.py
15.42
KB
-rw-r--r--
2025-06-04 09:23
test_webbrowser.py
10.6
KB
-rw-r--r--
2025-06-04 09:23
test_winconsoleio.py
6.57
KB
-rw-r--r--
2025-06-04 09:23
test_winreg.py
22.2
KB
-rw-r--r--
2025-06-04 09:23
test_winsound.py
4.61
KB
-rw-r--r--
2025-06-04 09:23
test_with.py
25.99
KB
-rw-r--r--
2025-06-04 09:23
test_wsgiref.py
30.2
KB
-rw-r--r--
2025-06-04 09:23
test_xdrlib.py
2.17
KB
-rw-r--r--
2025-06-04 09:23
test_xml_dom_minicompat.py
4.18
KB
-rw-r--r--
2025-06-04 09:23
test_xml_etree.py
160.6
KB
-rw-r--r--
2025-06-04 09:23
test_xml_etree_c.py
8.48
KB
-rw-r--r--
2025-06-04 09:23
test_xmlrpc.py
57.66
KB
-rw-r--r--
2025-06-04 09:23
test_xmlrpc_net.py
954
B
-rw-r--r--
2025-06-04 09:23
test_xxlimited.py
2.13
KB
-rw-r--r--
2025-06-04 09:23
test_xxtestfuzz.py
690
B
-rw-r--r--
2025-06-04 09:23
test_yield_from.py
30.09
KB
-rw-r--r--
2025-06-04 09:23
test_zipapp.py
15.92
KB
-rw-r--r--
2025-06-04 09:23
test_zipfile.py
131.16
KB
-rw-r--r--
2025-06-04 09:23
test_zipfile64.py
5.86
KB
-rw-r--r--
2025-06-04 09:23
test_zipimport.py
33.56
KB
-rw-r--r--
2025-06-04 09:23
test_zipimport_support.py
10.46
KB
-rw-r--r--
2025-06-04 09:23
test_zlib.py
34.31
KB
-rw-r--r--
2025-06-04 09:23
testcodec.py
1.02
KB
-rw-r--r--
2025-06-04 09:23
testtar.tar
425
KB
-rw-r--r--
2025-06-04 09:23
testtar.tar.xz
172
B
-rw-r--r--
2025-06-04 09:23
tf_inherit_check.py
714
B
-rw-r--r--
2025-06-04 09:23
time_hashlib.py
2.87
KB
-rw-r--r--
2025-06-04 09:23
tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
443
B
-rw-r--r--
2025-06-04 09:23
tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
302
B
-rw-r--r--
2025-06-04 09:23
tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
421
B
-rw-r--r--
2025-06-04 09:23
tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
326
B
-rw-r--r--
2025-06-04 09:23
tokenize_tests.txt
2.65
KB
-rw-r--r--
2025-06-04 09:23
win_console_handler.py
1.38
KB
-rw-r--r--
2025-06-04 09:23
xmltests.py
499
B
-rw-r--r--
2025-06-04 09:23
zip_cp437_header.zip
270
B
-rw-r--r--
2025-06-04 09:23
zipdir.zip
374
B
-rw-r--r--
2025-06-04 09:23
Save
Rename
"""Test the arraymodule. Roger E. Masse """ import collections.abc import unittest from test import support from test.support import os_helper from test.support import _2G import weakref import pickle import operator import struct import sys import array from array import _array_reconstructor as array_reconstructor sizeof_wchar = array.array('u').itemsize class ArraySubclass(array.array): pass class ArraySubclassWithKwargs(array.array): def __init__(self, typecode, newarg=None): array.array.__init__(self) typecodes = 'ubBhHiIlLfdqQ' class MiscTest(unittest.TestCase): def test_array_is_sequence(self): self.assertIsInstance(array.array("B"), collections.abc.MutableSequence) self.assertIsInstance(array.array("B"), collections.abc.Reversible) def test_bad_constructor(self): self.assertRaises(TypeError, array.array) self.assertRaises(TypeError, array.array, spam=42) self.assertRaises(TypeError, array.array, 'xx') self.assertRaises(ValueError, array.array, 'x') @support.cpython_only def test_disallow_instantiation(self): my_array = array.array("I") support.check_disallow_instantiation( self, type(iter(my_array)), my_array ) @support.cpython_only def test_immutable(self): # bpo-43908: check that array.array is immutable with self.assertRaises(TypeError): array.array.foo = 1 def test_empty(self): # Exercise code for handling zero-length arrays a = array.array('B') a[:] = a self.assertEqual(len(a), 0) self.assertEqual(len(a + a), 0) self.assertEqual(len(a * 3), 0) a += a self.assertEqual(len(a), 0) # Machine format codes. # # Search for "enum machine_format_code" in Modules/arraymodule.c to get the # authoritative values. UNKNOWN_FORMAT = -1 UNSIGNED_INT8 = 0 SIGNED_INT8 = 1 UNSIGNED_INT16_LE = 2 UNSIGNED_INT16_BE = 3 SIGNED_INT16_LE = 4 SIGNED_INT16_BE = 5 UNSIGNED_INT32_LE = 6 UNSIGNED_INT32_BE = 7 SIGNED_INT32_LE = 8 SIGNED_INT32_BE = 9 UNSIGNED_INT64_LE = 10 UNSIGNED_INT64_BE = 11 SIGNED_INT64_LE = 12 SIGNED_INT64_BE = 13 IEEE_754_FLOAT_LE = 14 IEEE_754_FLOAT_BE = 15 IEEE_754_DOUBLE_LE = 16 IEEE_754_DOUBLE_BE = 17 UTF16_LE = 18 UTF16_BE = 19 UTF32_LE = 20 UTF32_BE = 21 class ArrayReconstructorTest(unittest.TestCase): def test_error(self): self.assertRaises(TypeError, array_reconstructor, "", "b", 0, b"") self.assertRaises(TypeError, array_reconstructor, str, "b", 0, b"") self.assertRaises(TypeError, array_reconstructor, array.array, "b", '', b"") self.assertRaises(TypeError, array_reconstructor, array.array, "b", 0, "") self.assertRaises(ValueError, array_reconstructor, array.array, "?", 0, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "b", UNKNOWN_FORMAT, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "b", 22, b"") self.assertRaises(ValueError, array_reconstructor, array.array, "d", 16, b"a") def test_numbers(self): testcases = ( (['B', 'H', 'I', 'L'], UNSIGNED_INT8, '=BBBB', [0x80, 0x7f, 0, 0xff]), (['b', 'h', 'i', 'l'], SIGNED_INT8, '=bbb', [-0x80, 0x7f, 0]), (['H', 'I', 'L'], UNSIGNED_INT16_LE, '<HHHH', [0x8000, 0x7fff, 0, 0xffff]), (['H', 'I', 'L'], UNSIGNED_INT16_BE, '>HHHH', [0x8000, 0x7fff, 0, 0xffff]), (['h', 'i', 'l'], SIGNED_INT16_LE, '<hhh', [-0x8000, 0x7fff, 0]), (['h', 'i', 'l'], SIGNED_INT16_BE, '>hhh', [-0x8000, 0x7fff, 0]), (['I', 'L'], UNSIGNED_INT32_LE, '<IIII', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['I', 'L'], UNSIGNED_INT32_BE, '>IIII', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['i', 'l'], SIGNED_INT32_LE, '<iii', [-1<<31, (1<<31)-1, 0]), (['i', 'l'], SIGNED_INT32_BE, '>iii', [-1<<31, (1<<31)-1, 0]), (['L'], UNSIGNED_INT64_LE, '<QQQQ', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['L'], UNSIGNED_INT64_BE, '>QQQQ', [1<<31, (1<<31)-1, 0, (1<<32)-1]), (['l'], SIGNED_INT64_LE, '<qqq', [-1<<31, (1<<31)-1, 0]), (['l'], SIGNED_INT64_BE, '>qqq', [-1<<31, (1<<31)-1, 0]), # The following tests for INT64 will raise an OverflowError # when run on a 32-bit machine. The tests are simply skipped # in that case. (['L'], UNSIGNED_INT64_LE, '<QQQQ', [1<<63, (1<<63)-1, 0, (1<<64)-1]), (['L'], UNSIGNED_INT64_BE, '>QQQQ', [1<<63, (1<<63)-1, 0, (1<<64)-1]), (['l'], SIGNED_INT64_LE, '<qqq', [-1<<63, (1<<63)-1, 0]), (['l'], SIGNED_INT64_BE, '>qqq', [-1<<63, (1<<63)-1, 0]), (['f'], IEEE_754_FLOAT_LE, '<ffff', [16711938.0, float('inf'), float('-inf'), -0.0]), (['f'], IEEE_754_FLOAT_BE, '>ffff', [16711938.0, float('inf'), float('-inf'), -0.0]), (['d'], IEEE_754_DOUBLE_LE, '<dddd', [9006104071832581.0, float('inf'), float('-inf'), -0.0]), (['d'], IEEE_754_DOUBLE_BE, '>dddd', [9006104071832581.0, float('inf'), float('-inf'), -0.0]) ) for testcase in testcases: valid_typecodes, mformat_code, struct_fmt, values = testcase arraystr = struct.pack(struct_fmt, *values) for typecode in valid_typecodes: try: a = array.array(typecode, values) except OverflowError: continue # Skip this test case. b = array_reconstructor( array.array, typecode, mformat_code, arraystr) self.assertEqual(a, b, msg="{0!r} != {1!r}; testcase={2!r}".format(a, b, testcase)) def test_unicode(self): teststr = "Bonne Journ\xe9e \U0002030a\U00020347" testcases = ( (UTF16_LE, "UTF-16-LE"), (UTF16_BE, "UTF-16-BE"), (UTF32_LE, "UTF-32-LE"), (UTF32_BE, "UTF-32-BE") ) for testcase in testcases: mformat_code, encoding = testcase a = array.array('u', teststr) b = array_reconstructor( array.array, 'u', mformat_code, teststr.encode(encoding)) self.assertEqual(a, b, msg="{0!r} != {1!r}; testcase={2!r}".format(a, b, testcase)) class BaseTest: # Required class attributes (provided by subclasses # typecode: the typecode to test # example: an initializer usable in the constructor for this type # smallerexample: the same length as example, but smaller # biggerexample: the same length as example, but bigger # outside: An entry that is not in example # minitemsize: the minimum guaranteed itemsize def assertEntryEqual(self, entry1, entry2): self.assertEqual(entry1, entry2) def badtypecode(self): # Return a typecode that is different from our own return typecodes[(typecodes.index(self.typecode)+1) % len(typecodes)] def test_constructor(self): a = array.array(self.typecode) self.assertEqual(a.typecode, self.typecode) self.assertGreaterEqual(a.itemsize, self.minitemsize) self.assertRaises(TypeError, array.array, self.typecode, None) def test_len(self): a = array.array(self.typecode) a.append(self.example[0]) self.assertEqual(len(a), 1) a = array.array(self.typecode, self.example) self.assertEqual(len(a), len(self.example)) def test_buffer_info(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.buffer_info, 42) bi = a.buffer_info() self.assertIsInstance(bi, tuple) self.assertEqual(len(bi), 2) self.assertIsInstance(bi[0], int) self.assertIsInstance(bi[1], int) self.assertEqual(bi[1], len(a)) def test_byteswap(self): if self.typecode == 'u': example = '\U00100100' else: example = self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.byteswap, 42) if a.itemsize in (1, 2, 4, 8): b = array.array(self.typecode, example) b.byteswap() if a.itemsize==1: self.assertEqual(a, b) else: self.assertNotEqual(a, b) b.byteswap() self.assertEqual(a, b) def test_copy(self): import copy a = array.array(self.typecode, self.example) b = copy.copy(a) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) def test_deepcopy(self): import copy a = array.array(self.typecode, self.example) b = copy.deepcopy(a) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) def test_reduce_ex(self): a = array.array(self.typecode, self.example) for protocol in range(3): self.assertIs(a.__reduce_ex__(protocol)[0], array.array) for protocol in range(3, pickle.HIGHEST_PROTOCOL + 1): self.assertIs(a.__reduce_ex__(protocol)[0], array_reconstructor) def test_pickle(self): for protocol in range(pickle.HIGHEST_PROTOCOL + 1): a = array.array(self.typecode, self.example) b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) a = ArraySubclass(self.typecode, self.example) a.x = 10 b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) self.assertEqual(a.x, b.x) self.assertEqual(type(a), type(b)) def test_pickle_for_empty_array(self): for protocol in range(pickle.HIGHEST_PROTOCOL + 1): a = array.array(self.typecode) b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) a = ArraySubclass(self.typecode) a.x = 10 b = pickle.loads(pickle.dumps(a, protocol)) self.assertNotEqual(id(a), id(b)) self.assertEqual(a, b) self.assertEqual(a.x, b.x) self.assertEqual(type(a), type(b)) def test_iterator_pickle(self): orig = array.array(self.typecode, self.example) data = list(orig) data2 = data[::-1] for proto in range(pickle.HIGHEST_PROTOCOL + 1): # initial iterator itorig = iter(orig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.fromlist(data2) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), data + data2) # running iterator next(itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.fromlist(data2) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), data[1:] + data2) # empty iterator for i in range(1, len(data)): next(itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.fromlist(data2) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), data2) # exhausted iterator self.assertRaises(StopIteration, next, itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.fromlist(data2) self.assertEqual(list(it), []) def test_exhausted_iterator(self): a = array.array(self.typecode, self.example) self.assertEqual(list(a), list(self.example)) exhit = iter(a) empit = iter(a) for x in exhit: # exhaust the iterator next(empit) # not exhausted a.append(self.outside) self.assertEqual(list(exhit), []) self.assertEqual(list(empit), [self.outside]) self.assertEqual(list(a), list(self.example) + [self.outside]) def test_reverse_iterator(self): a = array.array(self.typecode, self.example) self.assertEqual(list(a), list(self.example)) self.assertEqual(list(reversed(a)), list(iter(a))[::-1]) def test_reverse_iterator_picking(self): orig = array.array(self.typecode, self.example) data = list(orig) data2 = [self.outside] + data rev_data = data[len(data)-2::-1] + [self.outside] for proto in range(pickle.HIGHEST_PROTOCOL + 1): # initial iterator itorig = reversed(orig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.insert(0, self.outside) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), rev_data) self.assertEqual(list(a), data2) # running iterator next(itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.insert(0, self.outside) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), rev_data[1:]) self.assertEqual(list(a), data2) # empty iterator for i in range(1, len(data)): next(itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.insert(0, self.outside) self.assertEqual(type(it), type(itorig)) self.assertEqual(list(it), []) self.assertEqual(list(a), data2) # exhausted iterator self.assertRaises(StopIteration, next, itorig) d = pickle.dumps((itorig, orig), proto) it, a = pickle.loads(d) a.insert(0, self.outside) self.assertEqual(list(it), []) self.assertEqual(list(a), data2) def test_exhausted_reverse_iterator(self): a = array.array(self.typecode, self.example) self.assertEqual(list(a), list(self.example)) exhit = reversed(a) empit = reversed(a) for x in exhit: # exhaust the iterator next(empit) # Pointing past the 0th position. a.insert(0, self.outside) self.assertEqual(list(exhit), []) # The iterator index points past the 0th position so inserting # an element in the beginning does not make it appear. self.assertEqual(list(empit), []) self.assertEqual(list(a), [self.outside] + list(self.example)) def test_insert(self): a = array.array(self.typecode, self.example) a.insert(0, self.example[0]) self.assertEqual(len(a), 1+len(self.example)) self.assertEqual(a[0], a[1]) self.assertRaises(TypeError, a.insert) self.assertRaises(TypeError, a.insert, None) self.assertRaises(TypeError, a.insert, 0, None) a = array.array(self.typecode, self.example) a.insert(-1, self.example[0]) self.assertEqual( a, array.array( self.typecode, self.example[:-1] + self.example[:1] + self.example[-1:] ) ) a = array.array(self.typecode, self.example) a.insert(-1000, self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example) ) a = array.array(self.typecode, self.example) a.insert(1000, self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example + self.example[:1]) ) def test_tofromfile(self): a = array.array(self.typecode, 2*self.example) self.assertRaises(TypeError, a.tofile) os_helper.unlink(os_helper.TESTFN) f = open(os_helper.TESTFN, 'wb') try: a.tofile(f) f.close() b = array.array(self.typecode) f = open(os_helper.TESTFN, 'rb') self.assertRaises(TypeError, b.fromfile) b.fromfile(f, len(self.example)) self.assertEqual(b, array.array(self.typecode, self.example)) self.assertNotEqual(a, b) self.assertRaises(EOFError, b.fromfile, f, len(self.example)+1) self.assertEqual(a, b) f.close() finally: if not f.closed: f.close() os_helper.unlink(os_helper.TESTFN) def test_fromfile_ioerror(self): # Issue #5395: Check if fromfile raises a proper OSError # instead of EOFError. a = array.array(self.typecode) f = open(os_helper.TESTFN, 'wb') try: self.assertRaises(OSError, a.fromfile, f, len(self.example)) finally: f.close() os_helper.unlink(os_helper.TESTFN) def test_filewrite(self): a = array.array(self.typecode, 2*self.example) f = open(os_helper.TESTFN, 'wb') try: f.write(a) f.close() b = array.array(self.typecode) f = open(os_helper.TESTFN, 'rb') b.fromfile(f, len(self.example)) self.assertEqual(b, array.array(self.typecode, self.example)) self.assertNotEqual(a, b) b.fromfile(f, len(self.example)) self.assertEqual(a, b) f.close() finally: if not f.closed: f.close() os_helper.unlink(os_helper.TESTFN) def test_tofromlist(self): a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tolist, 42) self.assertRaises(TypeError, b.fromlist) self.assertRaises(TypeError, b.fromlist, 42) self.assertRaises(TypeError, b.fromlist, [None]) b.fromlist(a.tolist()) self.assertEqual(a, b) def test_tofrombytes(self): a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tobytes, 42) self.assertRaises(TypeError, b.frombytes) self.assertRaises(TypeError, b.frombytes, 42) b.frombytes(a.tobytes()) c = array.array(self.typecode, bytearray(a.tobytes())) self.assertEqual(a, b) self.assertEqual(a, c) if a.itemsize>1: self.assertRaises(ValueError, b.frombytes, b"x") def test_fromarray(self): a = array.array(self.typecode, self.example) b = array.array(self.typecode, a) self.assertEqual(a, b) def test_repr(self): a = array.array(self.typecode, 2*self.example) self.assertEqual(a, eval(repr(a), {"array": array.array})) a = array.array(self.typecode) self.assertEqual(repr(a), "array('%s')" % self.typecode) def test_str(self): a = array.array(self.typecode, 2*self.example) str(a) def test_cmp(self): a = array.array(self.typecode, self.example) self.assertIs(a == 42, False) self.assertIs(a != 42, True) self.assertIs(a == a, True) self.assertIs(a != a, False) self.assertIs(a < a, False) self.assertIs(a <= a, True) self.assertIs(a > a, False) self.assertIs(a >= a, True) al = array.array(self.typecode, self.smallerexample) ab = array.array(self.typecode, self.biggerexample) self.assertIs(a == 2*a, False) self.assertIs(a != 2*a, True) self.assertIs(a < 2*a, True) self.assertIs(a <= 2*a, True) self.assertIs(a > 2*a, False) self.assertIs(a >= 2*a, False) self.assertIs(a == al, False) self.assertIs(a != al, True) self.assertIs(a < al, False) self.assertIs(a <= al, False) self.assertIs(a > al, True) self.assertIs(a >= al, True) self.assertIs(a == ab, False) self.assertIs(a != ab, True) self.assertIs(a < ab, True) self.assertIs(a <= ab, True) self.assertIs(a > ab, False) self.assertIs(a >= ab, False) def test_add(self): a = array.array(self.typecode, self.example) \ + array.array(self.typecode, self.example[::-1]) self.assertEqual( a, array.array(self.typecode, self.example + self.example[::-1]) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__add__, b) self.assertRaises(TypeError, a.__add__, "bad") def test_iadd(self): a = array.array(self.typecode, self.example[::-1]) b = a a += array.array(self.typecode, 2*self.example) self.assertIs(a, b) self.assertEqual( a, array.array(self.typecode, self.example[::-1]+2*self.example) ) a = array.array(self.typecode, self.example) a += a self.assertEqual( a, array.array(self.typecode, self.example + self.example) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__add__, b) self.assertRaises(TypeError, a.__iadd__, "bad") def test_mul(self): a = 5*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode, 5*self.example) ) a = array.array(self.typecode, self.example)*5 self.assertEqual( a, array.array(self.typecode, self.example*5) ) a = 0*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode) ) a = (-1)*array.array(self.typecode, self.example) self.assertEqual( a, array.array(self.typecode) ) a = 5 * array.array(self.typecode, self.example[:1]) self.assertEqual( a, array.array(self.typecode, [a[0]] * 5) ) self.assertRaises(TypeError, a.__mul__, "bad") def test_imul(self): a = array.array(self.typecode, self.example) b = a a *= 5 self.assertIs(a, b) self.assertEqual( a, array.array(self.typecode, 5*self.example) ) a *= 0 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a *= 1000 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a *= -1 self.assertIs(a, b) self.assertEqual(a, array.array(self.typecode)) a = array.array(self.typecode, self.example) a *= -1 self.assertEqual(a, array.array(self.typecode)) self.assertRaises(TypeError, a.__imul__, "bad") def test_getitem(self): a = array.array(self.typecode, self.example) self.assertEntryEqual(a[0], self.example[0]) self.assertEntryEqual(a[0], self.example[0]) self.assertEntryEqual(a[-1], self.example[-1]) self.assertEntryEqual(a[-1], self.example[-1]) self.assertEntryEqual(a[len(self.example)-1], self.example[-1]) self.assertEntryEqual(a[-len(self.example)], self.example[0]) self.assertRaises(TypeError, a.__getitem__) self.assertRaises(IndexError, a.__getitem__, len(self.example)) self.assertRaises(IndexError, a.__getitem__, -len(self.example)-1) def test_setitem(self): a = array.array(self.typecode, self.example) a[0] = a[-1] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[0] = a[-1] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[len(self.example)-1] = a[0] self.assertEntryEqual(a[0], a[-1]) a = array.array(self.typecode, self.example) a[-len(self.example)] = a[-1] self.assertEntryEqual(a[0], a[-1]) self.assertRaises(TypeError, a.__setitem__) self.assertRaises(TypeError, a.__setitem__, None) self.assertRaises(TypeError, a.__setitem__, 0, None) self.assertRaises( IndexError, a.__setitem__, len(self.example), self.example[0] ) self.assertRaises( IndexError, a.__setitem__, -len(self.example)-1, self.example[0] ) def test_delitem(self): a = array.array(self.typecode, self.example) del a[0] self.assertEqual( a, array.array(self.typecode, self.example[1:]) ) a = array.array(self.typecode, self.example) del a[-1] self.assertEqual( a, array.array(self.typecode, self.example[:-1]) ) a = array.array(self.typecode, self.example) del a[len(self.example)-1] self.assertEqual( a, array.array(self.typecode, self.example[:-1]) ) a = array.array(self.typecode, self.example) del a[-len(self.example)] self.assertEqual( a, array.array(self.typecode, self.example[1:]) ) self.assertRaises(TypeError, a.__delitem__) self.assertRaises(TypeError, a.__delitem__, None) self.assertRaises(IndexError, a.__delitem__, len(self.example)) self.assertRaises(IndexError, a.__delitem__, -len(self.example)-1) def test_getslice(self): a = array.array(self.typecode, self.example) self.assertEqual(a[:], a) self.assertEqual( a[1:], array.array(self.typecode, self.example[1:]) ) self.assertEqual( a[:1], array.array(self.typecode, self.example[:1]) ) self.assertEqual( a[:-1], array.array(self.typecode, self.example[:-1]) ) self.assertEqual( a[-1:], array.array(self.typecode, self.example[-1:]) ) self.assertEqual( a[-1:-1], array.array(self.typecode) ) self.assertEqual( a[2:1], array.array(self.typecode) ) self.assertEqual( a[1000:], array.array(self.typecode) ) self.assertEqual(a[-1000:], a) self.assertEqual(a[:1000], a) self.assertEqual( a[:-1000], array.array(self.typecode) ) self.assertEqual(a[-1000:1000], a) self.assertEqual( a[2000:1000], array.array(self.typecode) ) def test_extended_getslice(self): # Test extended slicing by comparing with list slicing # (Assumes list conversion works correctly, too) a = array.array(self.typecode, self.example) indices = (0, None, 1, 3, 19, 100, sys.maxsize, -1, -2, -31, -100) for start in indices: for stop in indices: # Everything except the initial 0 (invalid step) for step in indices[1:]: self.assertEqual(list(a[start:stop:step]), list(a)[start:stop:step]) def test_setslice(self): a = array.array(self.typecode, self.example) a[:1] = a self.assertEqual( a, array.array(self.typecode, self.example + self.example[1:]) ) a = array.array(self.typecode, self.example) a[:-1] = a self.assertEqual( a, array.array(self.typecode, self.example + self.example[-1:]) ) a = array.array(self.typecode, self.example) a[-1:] = a self.assertEqual( a, array.array(self.typecode, self.example[:-1] + self.example) ) a = array.array(self.typecode, self.example) a[1:] = a self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example) ) a = array.array(self.typecode, self.example) a[1:-1] = a self.assertEqual( a, array.array( self.typecode, self.example[:1] + self.example + self.example[-1:] ) ) a = array.array(self.typecode, self.example) a[1000:] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) a[-1000:] = a self.assertEqual( a, array.array(self.typecode, self.example) ) a = array.array(self.typecode, self.example) a[:1000] = a self.assertEqual( a, array.array(self.typecode, self.example) ) a = array.array(self.typecode, self.example) a[:-1000] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) a[1:0] = a self.assertEqual( a, array.array(self.typecode, self.example[:1] + self.example + self.example[1:]) ) a = array.array(self.typecode, self.example) a[2000:1000] = a self.assertEqual( a, array.array(self.typecode, 2*self.example) ) a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.__setitem__, slice(0, 0), None) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), None) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.__setitem__, slice(0, 0), b) self.assertRaises(TypeError, a.__setitem__, slice(0, 1), b) def test_extended_set_del_slice(self): indices = (0, None, 1, 3, 19, 100, sys.maxsize, -1, -2, -31, -100) for start in indices: for stop in indices: # Everything except the initial 0 (invalid step) for step in indices[1:]: a = array.array(self.typecode, self.example) L = list(a) # Make sure we have a slice of exactly the right length, # but with (hopefully) different data. data = L[start:stop:step] data.reverse() L[start:stop:step] = data a[start:stop:step] = array.array(self.typecode, data) self.assertEqual(a, array.array(self.typecode, L)) del L[start:stop:step] del a[start:stop:step] self.assertEqual(a, array.array(self.typecode, L)) def test_index(self): example = 2*self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.index) for x in example: self.assertEqual(a.index(x), example.index(x)) self.assertRaises(ValueError, a.index, None) self.assertRaises(ValueError, a.index, self.outside) a = array.array('i', [-2, -1, 0, 0, 1, 2]) self.assertEqual(a.index(0), 2) self.assertEqual(a.index(0, 2), 2) self.assertEqual(a.index(0, -4), 2) self.assertEqual(a.index(-2, -10), 0) self.assertEqual(a.index(0, 3), 3) self.assertEqual(a.index(0, -3), 3) self.assertEqual(a.index(0, 3, 4), 3) self.assertEqual(a.index(0, -3, -2), 3) self.assertRaises(ValueError, a.index, 2, 0, -10) def test_count(self): example = 2*self.example a = array.array(self.typecode, example) self.assertRaises(TypeError, a.count) for x in example: self.assertEqual(a.count(x), example.count(x)) self.assertEqual(a.count(self.outside), 0) self.assertEqual(a.count(None), 0) def test_remove(self): for x in self.example: example = 2*self.example a = array.array(self.typecode, example) pos = example.index(x) example2 = example[:pos] + example[pos+1:] a.remove(x) self.assertEqual(a, array.array(self.typecode, example2)) a = array.array(self.typecode, self.example) self.assertRaises(ValueError, a.remove, self.outside) self.assertRaises(ValueError, a.remove, None) def test_pop(self): a = array.array(self.typecode) self.assertRaises(IndexError, a.pop) a = array.array(self.typecode, 2*self.example) self.assertRaises(TypeError, a.pop, 42, 42) self.assertRaises(TypeError, a.pop, None) self.assertRaises(IndexError, a.pop, len(a)) self.assertRaises(IndexError, a.pop, -len(a)-1) self.assertEntryEqual(a.pop(0), self.example[0]) self.assertEqual( a, array.array(self.typecode, self.example[1:]+self.example) ) self.assertEntryEqual(a.pop(1), self.example[2]) self.assertEqual( a, array.array(self.typecode, self.example[1:2]+self.example[3:]+self.example) ) self.assertEntryEqual(a.pop(0), self.example[1]) self.assertEntryEqual(a.pop(), self.example[-1]) self.assertEqual( a, array.array(self.typecode, self.example[3:]+self.example[:-1]) ) def test_reverse(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.reverse, 42) a.reverse() self.assertEqual( a, array.array(self.typecode, self.example[::-1]) ) def test_extend(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.extend) a.extend(array.array(self.typecode, self.example[::-1])) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) a = array.array(self.typecode, self.example) a.extend(a) self.assertEqual( a, array.array(self.typecode, self.example+self.example) ) b = array.array(self.badtypecode()) self.assertRaises(TypeError, a.extend, b) a = array.array(self.typecode, self.example) a.extend(self.example[::-1]) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) def test_constructor_with_iterable_argument(self): a = array.array(self.typecode, iter(self.example)) b = array.array(self.typecode, self.example) self.assertEqual(a, b) # non-iterable argument self.assertRaises(TypeError, array.array, self.typecode, 10) # pass through errors raised in __iter__ class A: def __iter__(self): raise UnicodeError self.assertRaises(UnicodeError, array.array, self.typecode, A()) # pass through errors raised in next() def B(): raise UnicodeError yield None self.assertRaises(UnicodeError, array.array, self.typecode, B()) def test_coveritertraverse(self): try: import gc except ImportError: self.skipTest('gc module not available') a = array.array(self.typecode) l = [iter(a)] l.append(l) gc.collect() def test_buffer(self): a = array.array(self.typecode, self.example) m = memoryview(a) expected = m.tobytes() self.assertEqual(a.tobytes(), expected) self.assertEqual(a.tobytes()[0], expected[0]) # Resizing is forbidden when there are buffer exports. # For issue 4509, we also check after each error that # the array was not modified. self.assertRaises(BufferError, a.append, a[0]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.extend, a[0:1]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.remove, a[0]) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.pop, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.fromlist, a.tolist()) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, a.frombytes, a.tobytes()) self.assertEqual(m.tobytes(), expected) if self.typecode == 'u': self.assertRaises(BufferError, a.fromunicode, a.tounicode()) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.imul, a, 2) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.imul, a, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.setitem, a, slice(0, 0), a) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.delitem, a, 0) self.assertEqual(m.tobytes(), expected) self.assertRaises(BufferError, operator.delitem, a, slice(0, 1)) self.assertEqual(m.tobytes(), expected) def test_weakref(self): s = array.array(self.typecode, self.example) p = weakref.proxy(s) self.assertEqual(p.tobytes(), s.tobytes()) s = None support.gc_collect() # For PyPy or other GCs. self.assertRaises(ReferenceError, len, p) @unittest.skipUnless(hasattr(sys, 'getrefcount'), 'test needs sys.getrefcount()') def test_bug_782369(self): for i in range(10): b = array.array('B', range(64)) rc = sys.getrefcount(10) for i in range(10): b = array.array('B', range(64)) self.assertEqual(rc, sys.getrefcount(10)) def test_subclass_with_kwargs(self): # SF bug #1486663 -- this used to erroneously raise a TypeError ArraySubclassWithKwargs('b', newarg=1) def test_create_from_bytes(self): # XXX This test probably needs to be moved in a subclass or # generalized to use self.typecode. a = array.array('H', b"1234") self.assertEqual(len(a) * a.itemsize, 4) @support.cpython_only def test_sizeof_with_buffer(self): a = array.array(self.typecode, self.example) basesize = support.calcvobjsize('Pn2Pi') buffer_size = a.buffer_info()[1] * a.itemsize support.check_sizeof(self, a, basesize + buffer_size) @support.cpython_only def test_sizeof_without_buffer(self): a = array.array(self.typecode) basesize = support.calcvobjsize('Pn2Pi') support.check_sizeof(self, a, basesize) def test_initialize_with_unicode(self): if self.typecode != 'u': with self.assertRaises(TypeError) as cm: a = array.array(self.typecode, 'foo') self.assertIn("cannot use a str", str(cm.exception)) with self.assertRaises(TypeError) as cm: a = array.array(self.typecode, array.array('u', 'foo')) self.assertIn("cannot use a unicode array", str(cm.exception)) else: a = array.array(self.typecode, "foo") a = array.array(self.typecode, array.array('u', 'foo')) @support.cpython_only def test_obsolete_write_lock(self): from _testcapi import getbuffer_with_null_view a = array.array('B', b"") self.assertRaises(BufferError, getbuffer_with_null_view, a) def test_free_after_iterating(self): support.check_free_after_iterating(self, iter, array.array, (self.typecode,)) support.check_free_after_iterating(self, reversed, array.array, (self.typecode,)) class StringTest(BaseTest): def test_setitem(self): super().test_setitem() a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.__setitem__, 0, self.example[:2]) class UnicodeTest(StringTest, unittest.TestCase): typecode = 'u' example = '\x01\u263a\x00\ufeff' smallerexample = '\x01\u263a\x00\ufefe' biggerexample = '\x01\u263a\x01\ufeff' outside = str('\x33') minitemsize = 2 def test_unicode(self): self.assertRaises(TypeError, array.array, 'b', 'foo') a = array.array('u', '\xa0\xc2\u1234') a.fromunicode(' ') a.fromunicode('') a.fromunicode('') a.fromunicode('\x11abc\xff\u1234') s = a.tounicode() self.assertEqual(s, '\xa0\xc2\u1234 \x11abc\xff\u1234') self.assertEqual(a.itemsize, sizeof_wchar) s = '\x00="\'a\\b\x80\xff\u0000\u0001\u1234' a = array.array('u', s) self.assertEqual( repr(a), "array('u', '\\x00=\"\\'a\\\\b\\x80\xff\\x00\\x01\u1234')") self.assertRaises(TypeError, a.fromunicode) def test_issue17223(self): # this used to crash if sizeof_wchar == 4: # U+FFFFFFFF is an invalid code point in Unicode 6.0 invalid_str = b'\xff\xff\xff\xff' else: # PyUnicode_FromUnicode() cannot fail with 16-bit wchar_t self.skipTest("specific to 32-bit wchar_t") a = array.array('u', invalid_str) self.assertRaises(ValueError, a.tounicode) self.assertRaises(ValueError, str, a) class NumberTest(BaseTest): def test_extslice(self): a = array.array(self.typecode, range(5)) self.assertEqual(a[::], a) self.assertEqual(a[::2], array.array(self.typecode, [0,2,4])) self.assertEqual(a[1::2], array.array(self.typecode, [1,3])) self.assertEqual(a[::-1], array.array(self.typecode, [4,3,2,1,0])) self.assertEqual(a[::-2], array.array(self.typecode, [4,2,0])) self.assertEqual(a[3::-2], array.array(self.typecode, [3,1])) self.assertEqual(a[-100:100:], a) self.assertEqual(a[100:-100:-1], a[::-1]) self.assertEqual(a[-100:100:2], array.array(self.typecode, [0,2,4])) self.assertEqual(a[1000:2000:2], array.array(self.typecode, [])) self.assertEqual(a[-1000:-2000:-2], array.array(self.typecode, [])) def test_delslice(self): a = array.array(self.typecode, range(5)) del a[::2] self.assertEqual(a, array.array(self.typecode, [1,3])) a = array.array(self.typecode, range(5)) del a[1::2] self.assertEqual(a, array.array(self.typecode, [0,2,4])) a = array.array(self.typecode, range(5)) del a[1::-2] self.assertEqual(a, array.array(self.typecode, [0,2,3,4])) a = array.array(self.typecode, range(10)) del a[::1000] self.assertEqual(a, array.array(self.typecode, [1,2,3,4,5,6,7,8,9])) # test issue7788 a = array.array(self.typecode, range(10)) del a[9::1<<333] def test_assignment(self): a = array.array(self.typecode, range(10)) a[::2] = array.array(self.typecode, [42]*5) self.assertEqual(a, array.array(self.typecode, [42, 1, 42, 3, 42, 5, 42, 7, 42, 9])) a = array.array(self.typecode, range(10)) a[::-4] = array.array(self.typecode, [10]*3) self.assertEqual(a, array.array(self.typecode, [0, 10, 2, 3, 4, 10, 6, 7, 8 ,10])) a = array.array(self.typecode, range(4)) a[::-1] = a self.assertEqual(a, array.array(self.typecode, [3, 2, 1, 0])) a = array.array(self.typecode, range(10)) b = a[:] c = a[:] ins = array.array(self.typecode, range(2)) a[2:3] = ins b[slice(2,3)] = ins c[2:3:] = ins def test_iterationcontains(self): a = array.array(self.typecode, range(10)) self.assertEqual(list(a), list(range(10))) b = array.array(self.typecode, [20]) self.assertEqual(a[-1] in a, True) self.assertEqual(b[0] not in a, True) def check_overflow(self, lower, upper): # method to be used by subclasses # should not overflow assigning lower limit a = array.array(self.typecode, [lower]) a[0] = lower # should overflow assigning less than lower limit self.assertRaises(OverflowError, array.array, self.typecode, [lower-1]) self.assertRaises(OverflowError, a.__setitem__, 0, lower-1) # should not overflow assigning upper limit a = array.array(self.typecode, [upper]) a[0] = upper # should overflow assigning more than upper limit self.assertRaises(OverflowError, array.array, self.typecode, [upper+1]) self.assertRaises(OverflowError, a.__setitem__, 0, upper+1) def test_subclassing(self): typecode = self.typecode class ExaggeratingArray(array.array): __slots__ = ['offset'] def __new__(cls, typecode, data, offset): return array.array.__new__(cls, typecode, data) def __init__(self, typecode, data, offset): self.offset = offset def __getitem__(self, i): return array.array.__getitem__(self, i) + self.offset a = ExaggeratingArray(self.typecode, [3, 6, 7, 11], 4) self.assertEntryEqual(a[0], 7) self.assertRaises(AttributeError, setattr, a, "color", "blue") def test_frombytearray(self): a = array.array('b', range(10)) b = array.array(self.typecode, a) self.assertEqual(a, b) class IntegerNumberTest(NumberTest): def test_type_error(self): a = array.array(self.typecode) a.append(42) with self.assertRaises(TypeError): a.append(42.0) with self.assertRaises(TypeError): a[0] = 42.0 class Intable: def __init__(self, num): self._num = num def __index__(self): return self._num def __int__(self): return self._num def __sub__(self, other): return Intable(int(self) - int(other)) def __add__(self, other): return Intable(int(self) + int(other)) class SignedNumberTest(IntegerNumberTest): example = [-1, 0, 1, 42, 0x7f] smallerexample = [-1, 0, 1, 42, 0x7e] biggerexample = [-1, 0, 1, 43, 0x7f] outside = 23 def test_overflow(self): a = array.array(self.typecode) lower = -1 * int(pow(2, a.itemsize * 8 - 1)) upper = int(pow(2, a.itemsize * 8 - 1)) - 1 self.check_overflow(lower, upper) self.check_overflow(Intable(lower), Intable(upper)) class UnsignedNumberTest(IntegerNumberTest): example = [0, 1, 17, 23, 42, 0xff] smallerexample = [0, 1, 17, 23, 42, 0xfe] biggerexample = [0, 1, 17, 23, 43, 0xff] outside = 0xaa def test_overflow(self): a = array.array(self.typecode) lower = 0 upper = int(pow(2, a.itemsize * 8)) - 1 self.check_overflow(lower, upper) self.check_overflow(Intable(lower), Intable(upper)) def test_bytes_extend(self): s = bytes(self.example) a = array.array(self.typecode, self.example) a.extend(s) self.assertEqual( a, array.array(self.typecode, self.example+self.example) ) a = array.array(self.typecode, self.example) a.extend(bytearray(reversed(s))) self.assertEqual( a, array.array(self.typecode, self.example+self.example[::-1]) ) class ByteTest(SignedNumberTest, unittest.TestCase): typecode = 'b' minitemsize = 1 class UnsignedByteTest(UnsignedNumberTest, unittest.TestCase): typecode = 'B' minitemsize = 1 class ShortTest(SignedNumberTest, unittest.TestCase): typecode = 'h' minitemsize = 2 class UnsignedShortTest(UnsignedNumberTest, unittest.TestCase): typecode = 'H' minitemsize = 2 class IntTest(SignedNumberTest, unittest.TestCase): typecode = 'i' minitemsize = 2 class UnsignedIntTest(UnsignedNumberTest, unittest.TestCase): typecode = 'I' minitemsize = 2 class LongTest(SignedNumberTest, unittest.TestCase): typecode = 'l' minitemsize = 4 class UnsignedLongTest(UnsignedNumberTest, unittest.TestCase): typecode = 'L' minitemsize = 4 class LongLongTest(SignedNumberTest, unittest.TestCase): typecode = 'q' minitemsize = 8 class UnsignedLongLongTest(UnsignedNumberTest, unittest.TestCase): typecode = 'Q' minitemsize = 8 class FPTest(NumberTest): example = [-42.0, 0, 42, 1e5, -1e10] smallerexample = [-42.0, 0, 42, 1e5, -2e10] biggerexample = [-42.0, 0, 42, 1e5, 1e10] outside = 23 def assertEntryEqual(self, entry1, entry2): self.assertAlmostEqual(entry1, entry2) def test_nan(self): a = array.array(self.typecode, [float('nan')]) b = array.array(self.typecode, [float('nan')]) self.assertIs(a != b, True) self.assertIs(a == b, False) self.assertIs(a > b, False) self.assertIs(a >= b, False) self.assertIs(a < b, False) self.assertIs(a <= b, False) def test_byteswap(self): a = array.array(self.typecode, self.example) self.assertRaises(TypeError, a.byteswap, 42) if a.itemsize in (1, 2, 4, 8): b = array.array(self.typecode, self.example) b.byteswap() if a.itemsize==1: self.assertEqual(a, b) else: # On alphas treating the byte swapped bit patters as # floats/doubles results in floating point exceptions # => compare the 8bit string values instead self.assertNotEqual(a.tobytes(), b.tobytes()) b.byteswap() self.assertEqual(a, b) class FloatTest(FPTest, unittest.TestCase): typecode = 'f' minitemsize = 4 class DoubleTest(FPTest, unittest.TestCase): typecode = 'd' minitemsize = 8 def test_alloc_overflow(self): from sys import maxsize a = array.array('d', [-1]*65536) try: a *= maxsize//65536 + 1 except MemoryError: pass else: self.fail("Array of size > maxsize created - MemoryError expected") b = array.array('d', [ 2.71828183, 3.14159265, -1]) try: b * (maxsize//3 + 1) except MemoryError: pass else: self.fail("Array of size > maxsize created - MemoryError expected") class LargeArrayTest(unittest.TestCase): typecode = 'b' def example(self, size): # We assess a base memuse of <=2.125 for constructing this array base = array.array(self.typecode, [0, 1, 2, 3, 4, 5, 6, 7]) * (size // 8) base += array.array(self.typecode, [99]*(size % 8) + [8, 9, 10, 11]) return base @support.bigmemtest(_2G, memuse=2.125) def test_example_data(self, size): example = self.example(size) self.assertEqual(len(example), size+4) @support.bigmemtest(_2G, memuse=2.125) def test_access(self, size): example = self.example(size) self.assertEqual(example[0], 0) self.assertEqual(example[-(size+4)], 0) self.assertEqual(example[size], 8) self.assertEqual(example[-4], 8) self.assertEqual(example[size+3], 11) self.assertEqual(example[-1], 11) @support.bigmemtest(_2G, memuse=2.125+1) def test_slice(self, size): example = self.example(size) self.assertEqual(list(example[:4]), [0, 1, 2, 3]) self.assertEqual(list(example[-4:]), [8, 9, 10, 11]) part = example[1:-1] self.assertEqual(len(part), size+2) self.assertEqual(part[0], 1) self.assertEqual(part[-1], 10) del part part = example[::2] self.assertEqual(len(part), (size+5)//2) self.assertEqual(list(part[:4]), [0, 2, 4, 6]) if size % 2: self.assertEqual(list(part[-2:]), [9, 11]) else: self.assertEqual(list(part[-2:]), [8, 10]) @support.bigmemtest(_2G, memuse=2.125) def test_count(self, size): example = self.example(size) self.assertEqual(example.count(0), size//8) self.assertEqual(example.count(11), 1) @support.bigmemtest(_2G, memuse=2.125) def test_append(self, size): example = self.example(size) example.append(12) self.assertEqual(example[-1], 12) @support.bigmemtest(_2G, memuse=2.125) def test_extend(self, size): example = self.example(size) example.extend(iter([12, 13, 14, 15])) self.assertEqual(len(example), size+8) self.assertEqual(list(example[-8:]), [8, 9, 10, 11, 12, 13, 14, 15]) @support.bigmemtest(_2G, memuse=2.125) def test_frombytes(self, size): example = self.example(size) example.frombytes(b'abcd') self.assertEqual(len(example), size+8) self.assertEqual(list(example[-8:]), [8, 9, 10, 11] + list(b'abcd')) @support.bigmemtest(_2G, memuse=2.125) def test_fromlist(self, size): example = self.example(size) example.fromlist([12, 13, 14, 15]) self.assertEqual(len(example), size+8) self.assertEqual(list(example[-8:]), [8, 9, 10, 11, 12, 13, 14, 15]) @support.bigmemtest(_2G, memuse=2.125) def test_index(self, size): example = self.example(size) self.assertEqual(example.index(0), 0) self.assertEqual(example.index(1), 1) self.assertEqual(example.index(7), 7) self.assertEqual(example.index(11), size+3) @support.bigmemtest(_2G, memuse=2.125) def test_insert(self, size): example = self.example(size) example.insert(0, 12) example.insert(10, 13) example.insert(size+1, 14) self.assertEqual(len(example), size+7) self.assertEqual(example[0], 12) self.assertEqual(example[10], 13) self.assertEqual(example[size+1], 14) @support.bigmemtest(_2G, memuse=2.125) def test_pop(self, size): example = self.example(size) self.assertEqual(example.pop(0), 0) self.assertEqual(example[0], 1) self.assertEqual(example.pop(size+1), 10) self.assertEqual(example[size+1], 11) self.assertEqual(example.pop(1), 2) self.assertEqual(example[1], 3) self.assertEqual(len(example), size+1) self.assertEqual(example.pop(), 11) self.assertEqual(len(example), size) @support.bigmemtest(_2G, memuse=2.125) def test_remove(self, size): example = self.example(size) example.remove(0) self.assertEqual(len(example), size+3) self.assertEqual(example[0], 1) example.remove(10) self.assertEqual(len(example), size+2) self.assertEqual(example[size], 9) self.assertEqual(example[size+1], 11) @support.bigmemtest(_2G, memuse=2.125) def test_reverse(self, size): example = self.example(size) example.reverse() self.assertEqual(len(example), size+4) self.assertEqual(example[0], 11) self.assertEqual(example[3], 8) self.assertEqual(example[-1], 0) example.reverse() self.assertEqual(len(example), size+4) self.assertEqual(list(example[:4]), [0, 1, 2, 3]) self.assertEqual(list(example[-4:]), [8, 9, 10, 11]) # list takes about 9 bytes per element @support.bigmemtest(_2G, memuse=2.125+9) def test_tolist(self, size): example = self.example(size) ls = example.tolist() self.assertEqual(len(ls), len(example)) self.assertEqual(ls[:8], list(example[:8])) self.assertEqual(ls[-8:], list(example[-8:])) if __name__ == "__main__": unittest.main()