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.119
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
src /
Python-3.10.14 /
Lib /
test /
Delete
Unzip
Name
Size
Permission
Date
Action
audiodata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
capath
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
cjkencodings
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
crashers
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
data
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
decimaltestdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
dtracedata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
encoded_modules
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
imghdrdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
leakers
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
libregrtest
[ DIR ]
drwxr-xr-x
2025-06-04 09:21
sndhdrdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
subprocessdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
support
[ DIR ]
drwxr-xr-x
2025-06-04 09:21
test_asyncio
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_capi
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_email
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_import
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_importlib
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_json
[ DIR ]
drwxr-xr-x
2025-06-04 09:21
test_peg_generator
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_tools
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_warnings
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
test_zoneinfo
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
tracedmodules
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
typinganndata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
xmltestdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
ziptestdata
[ DIR ]
drwxr-xr-x
2024-03-19 22:46
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
2024-03-19 22:46
__init__.py
47
B
-rw-r--r--
2024-03-19 22:46
__main__.py
41
B
-rw-r--r--
2024-03-19 22:46
_test_atexit.py
3.61
KB
-rw-r--r--
2024-03-19 22:46
_test_eintr.py
17.65
KB
-rw-r--r--
2024-03-19 22:46
_test_embed_set_config.py
8.55
KB
-rw-r--r--
2024-03-19 22:46
_test_multiprocessing.py
193.64
KB
-rw-r--r--
2024-03-19 22:46
_typed_dict_helper.py
494
B
-rw-r--r--
2024-03-19 22:46
allsans.pem
9.87
KB
-rw-r--r--
2024-03-19 22:46
ann_module.py
1.09
KB
-rw-r--r--
2024-03-19 22:46
ann_module2.py
519
B
-rw-r--r--
2024-03-19 22:46
ann_module3.py
448
B
-rw-r--r--
2024-03-19 22:46
ann_module4.py
81
B
-rw-r--r--
2024-03-19 22:46
ann_module5.py
202
B
-rw-r--r--
2024-03-19 22:46
ann_module6.py
138
B
-rw-r--r--
2024-03-19 22:46
ann_module7.py
295
B
-rw-r--r--
2024-03-19 22:46
audiotest.au
27.48
KB
-rw-r--r--
2024-03-19 22:46
audiotests.py
12.13
KB
-rw-r--r--
2024-03-19 22:46
audit-tests.py
11.35
KB
-rw-r--r--
2024-03-19 22:46
autotest.py
209
B
-rw-r--r--
2024-03-19 22:46
bad_coding.py
24
B
-rw-r--r--
2024-03-19 22:46
bad_coding2.py
30
B
-rw-r--r--
2024-03-19 22:46
bad_getattr.py
61
B
-rw-r--r--
2024-03-19 22:46
bad_getattr2.py
77
B
-rw-r--r--
2024-03-19 22:46
bad_getattr3.py
139
B
-rw-r--r--
2024-03-19 22:46
badcert.pem
1.88
KB
-rw-r--r--
2024-03-19 22:46
badkey.pem
2.11
KB
-rw-r--r--
2024-03-19 22:46
badsyntax_3131.py
32
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future10.py
95
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future3.py
172
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future4.py
153
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future5.py
184
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future6.py
161
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future7.py
196
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future8.py
122
B
-rw-r--r--
2024-03-19 22:46
badsyntax_future9.py
142
B
-rw-r--r--
2024-03-19 22:46
badsyntax_pep3120.py
14
B
-rw-r--r--
2024-03-19 22:46
bisect_cmd.py
5.21
KB
-rwxr-xr-x
2024-03-19 22:46
cfgparser.1
67
B
-rw-r--r--
2024-03-19 22:46
cfgparser.2
19.02
KB
-rw-r--r--
2024-03-19 22:46
cfgparser.3
1.55
KB
-rw-r--r--
2024-03-19 22:46
clinic.test
94.05
KB
-rw-r--r--
2024-03-19 22:46
cmath_testcases.txt
141.05
KB
-rw-r--r--
2024-03-19 22:46
coding20731.py
22
B
-rw-r--r--
2024-03-19 22:46
curses_tests.py
1.21
KB
-rwxr-xr-x
2024-03-19 22:46
dataclass_module_1.py
837
B
-rw-r--r--
2024-03-19 22:46
dataclass_module_1_str.py
835
B
-rw-r--r--
2024-03-19 22:46
dataclass_module_2.py
756
B
-rw-r--r--
2024-03-19 22:46
dataclass_module_2_str.py
754
B
-rw-r--r--
2024-03-19 22:46
dataclass_textanno.py
126
B
-rw-r--r--
2024-03-19 22:46
datetimetester.py
245.16
KB
-rw-r--r--
2024-03-19 22:46
dis_module.py
76
B
-rw-r--r--
2024-03-19 22:46
doctest_aliases.py
240
B
-rw-r--r--
2024-03-19 22:46
doctest_lineno.py
914
B
-rw-r--r--
2024-03-19 22:46
double_const.py
1.18
KB
-rw-r--r--
2024-03-19 22:46
empty.vbs
70
B
-rw-r--r--
2024-03-19 22:46
exception_hierarchy.txt
1.81
KB
-rw-r--r--
2024-03-19 22:46
ffdh3072.pem
2.16
KB
-rw-r--r--
2024-03-19 22:46
final_a.py
411
B
-rw-r--r--
2024-03-19 22:46
final_b.py
411
B
-rw-r--r--
2024-03-19 22:46
floating_points.txt
15.92
KB
-rw-r--r--
2024-03-19 22:46
fork_wait.py
2.23
KB
-rw-r--r--
2024-03-19 22:46
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
2024-03-19 22:46
future_test1.py
229
B
-rw-r--r--
2024-03-19 22:46
future_test2.py
149
B
-rw-r--r--
2024-03-19 22:46
gdb_sample.py
153
B
-rw-r--r--
2024-03-19 22:46
good_getattr.py
198
B
-rw-r--r--
2024-03-19 22:46
idnsans.pem
9.71
KB
-rw-r--r--
2024-03-19 22:46
ieee754.txt
3.21
KB
-rw-r--r--
2024-03-19 22:46
imp_dummy.py
63
B
-rw-r--r--
2024-03-19 22:46
inspect_fodder.py
1.88
KB
-rw-r--r--
2024-03-19 22:46
inspect_fodder2.py
3.69
KB
-rw-r--r--
2024-03-19 22:46
inspect_stock_annotations.py
509
B
-rw-r--r--
2024-03-19 22:46
inspect_stringized_annotations.py
612
B
-rw-r--r--
2024-03-19 22:46
inspect_stringized_annotations_2.py
60
B
-rw-r--r--
2024-03-19 22:46
keycert.passwd.pem
4.13
KB
-rw-r--r--
2024-03-19 22:46
keycert.pem
3.96
KB
-rw-r--r--
2024-03-19 22:46
keycert2.pem
3.98
KB
-rw-r--r--
2024-03-19 22:46
keycert3.pem
9.23
KB
-rw-r--r--
2024-03-19 22:46
keycert4.pem
9.24
KB
-rw-r--r--
2024-03-19 22:46
keycertecc.pem
5.5
KB
-rw-r--r--
2024-03-19 22:46
list_tests.py
16.65
KB
-rw-r--r--
2024-03-19 22:46
lock_tests.py
30.15
KB
-rw-r--r--
2024-03-19 22:46
mailcap.txt
1.24
KB
-rw-r--r--
2024-03-19 22:46
make_ssl_certs.py
9.25
KB
-rw-r--r--
2024-03-19 22:46
mapping_tests.py
21.83
KB
-rw-r--r--
2024-03-19 22:46
math_testcases.txt
23.19
KB
-rw-r--r--
2024-03-19 22:46
memory_watchdog.py
859
B
-rw-r--r--
2024-03-19 22:46
mime.types
47.37
KB
-rw-r--r--
2024-03-19 22:46
mock_socket.py
3.7
KB
-rw-r--r--
2024-03-19 22:46
mod_generics_cache.py
1.13
KB
-rw-r--r--
2024-03-19 22:46
mp_fork_bomb.py
448
B
-rw-r--r--
2024-03-19 22:46
mp_preload.py
351
B
-rw-r--r--
2024-03-19 22:46
multibytecodec_support.py
14.19
KB
-rw-r--r--
2024-03-19 22:46
nokia.pem
1.88
KB
-rw-r--r--
2024-03-19 22:46
nosan.pem
7.54
KB
-rw-r--r--
2024-03-19 22:46
nullbytecert.pem
5.31
KB
-rw-r--r--
2024-03-19 22:46
nullcert.pem
0
B
-rw-r--r--
2024-03-19 22:46
pickletester.py
141.12
KB
-rw-r--r--
2024-03-19 22:46
profilee.py
2.97
KB
-rw-r--r--
2024-03-19 22:46
pstats.pck
65.05
KB
-rw-r--r--
2024-03-19 22:46
pycacert.pem
5.53
KB
-rw-r--r--
2024-03-19 22:46
pycakey.pem
2.43
KB
-rw-r--r--
2024-03-19 22:46
pyclbr_input.py
648
B
-rw-r--r--
2024-03-19 22:46
pydoc_mod.py
961
B
-rw-r--r--
2024-03-19 22:46
pydocfodder.py
6.18
KB
-rw-r--r--
2024-03-19 22:46
pythoninfo.py
23.52
KB
-rw-r--r--
2024-03-19 22:46
randv2_32.pck
7.34
KB
-rw-r--r--
2024-03-19 22:46
randv2_64.pck
7.19
KB
-rw-r--r--
2024-03-19 22:46
randv3.pck
7.82
KB
-rw-r--r--
2024-03-19 22:46
re_tests.py
25.93
KB
-rwxr-xr-x
2024-03-19 22:46
recursion.tar
516
B
-rw-r--r--
2024-03-19 22:46
regrtest.py
1.26
KB
-rwxr-xr-x
2024-03-19 22:46
relimport.py
27
B
-rw-r--r--
2024-03-19 22:46
reperf.py
538
B
-rw-r--r--
2024-03-19 22:46
revocation.crl
800
B
-rw-r--r--
2024-03-19 22:46
sample_doctest.py
1.02
KB
-rw-r--r--
2024-03-19 22:46
sample_doctest_no_docstrings.py
227
B
-rw-r--r--
2024-03-19 22:46
sample_doctest_no_doctests.py
269
B
-rw-r--r--
2024-03-19 22:46
secp384r1.pem
256
B
-rw-r--r--
2024-03-19 22:46
selfsigned_pythontestdotnet.pem
2.08
KB
-rw-r--r--
2024-03-19 22:46
seq_tests.py
14.87
KB
-rw-r--r--
2024-03-19 22:46
sgml_input.html
8.1
KB
-rw-r--r--
2024-03-19 22:46
signalinterproctester.py
2.74
KB
-rw-r--r--
2024-03-19 22:46
sortperf.py
4.69
KB
-rw-r--r--
2024-03-19 22:46
ssl_cert.pem
1.53
KB
-rw-r--r--
2024-03-19 22:46
ssl_key.passwd.pem
2.59
KB
-rw-r--r--
2024-03-19 22:46
ssl_key.pem
2.43
KB
-rw-r--r--
2024-03-19 22:46
ssl_servers.py
7.11
KB
-rw-r--r--
2024-03-19 22:46
ssltests.py
1.03
KB
-rw-r--r--
2024-03-19 22:46
string_tests.py
68.03
KB
-rw-r--r--
2024-03-19 22:46
talos-2019-0758.pem
1.3
KB
-rw-r--r--
2024-03-19 22:46
test___all__.py
4.54
KB
-rw-r--r--
2024-03-19 22:46
test___future__.py
2.36
KB
-rw-r--r--
2024-03-19 22:46
test__locale.py
7.83
KB
-rw-r--r--
2024-03-19 22:46
test__opcode.py
3.05
KB
-rw-r--r--
2024-03-19 22:46
test__osx_support.py
13.64
KB
-rw-r--r--
2024-03-19 22:46
test__xxsubinterpreters.py
78.94
KB
-rw-r--r--
2024-03-19 22:46
test_abc.py
23.19
KB
-rw-r--r--
2024-03-19 22:46
test_abstract_numbers.py
1.49
KB
-rw-r--r--
2024-03-19 22:46
test_aifc.py
17.77
KB
-rw-r--r--
2024-03-19 22:46
test_argparse.py
181.08
KB
-rw-r--r--
2024-03-19 22:46
test_array.py
55.21
KB
-rwxr-xr-x
2024-03-19 22:46
test_asdl_parser.py
4.44
KB
-rw-r--r--
2024-03-19 22:46
test_ast.py
107.27
KB
-rw-r--r--
2024-03-19 22:46
test_asyncgen.py
46.8
KB
-rw-r--r--
2024-03-19 22:46
test_asynchat.py
9.4
KB
-rw-r--r--
2024-03-19 22:46
test_asyncore.py
26.13
KB
-rw-r--r--
2024-03-19 22:46
test_atexit.py
3.14
KB
-rw-r--r--
2024-03-19 22:46
test_audioop.py
28.24
KB
-rw-r--r--
2024-03-19 22:46
test_audit.py
6.46
KB
-rw-r--r--
2024-03-19 22:46
test_augassign.py
7.68
KB
-rw-r--r--
2024-03-19 22:46
test_base64.py
34.51
KB
-rw-r--r--
2024-03-19 22:46
test_baseexception.py
7.77
KB
-rw-r--r--
2024-03-19 22:46
test_bdb.py
43.63
KB
-rw-r--r--
2024-03-19 22:46
test_bigaddrspace.py
2.83
KB
-rw-r--r--
2024-03-19 22:46
test_bigmem.py
44.78
KB
-rw-r--r--
2024-03-19 22:46
test_binascii.py
19.27
KB
-rw-r--r--
2024-03-19 22:46
test_binhex.py
2.1
KB
-rw-r--r--
2024-03-19 22:46
test_binop.py
14.14
KB
-rw-r--r--
2024-03-19 22:46
test_bisect.py
15.71
KB
-rw-r--r--
2024-03-19 22:46
test_bool.py
12.73
KB
-rw-r--r--
2024-03-19 22:46
test_buffer.py
160.31
KB
-rw-r--r--
2024-03-19 22:46
test_bufio.py
2.58
KB
-rw-r--r--
2024-03-19 22:46
test_builtin.py
85.98
KB
-rw-r--r--
2024-03-19 22:46
test_bytes.py
76.03
KB
-rw-r--r--
2024-03-19 22:46
test_bz2.py
37.23
KB
-rw-r--r--
2024-03-19 22:46
test_c_locale_coercion.py
18.92
KB
-rw-r--r--
2024-03-19 22:46
test_calendar.py
51.02
KB
-rw-r--r--
2024-03-19 22:46
test_call.py
26.23
KB
-rw-r--r--
2024-03-19 22:46
test_cgi.py
22.26
KB
-rw-r--r--
2024-03-19 22:46
test_cgitb.py
2.54
KB
-rw-r--r--
2024-03-19 22:46
test_charmapcodec.py
1.77
KB
-rw-r--r--
2024-03-19 22:46
test_check_c_globals.py
1.02
KB
-rw-r--r--
2024-03-19 22:46
test_class.py
17.41
KB
-rw-r--r--
2024-03-19 22:46
test_clinic.py
43.03
KB
-rw-r--r--
2024-03-19 22:46
test_cmath.py
24.08
KB
-rw-r--r--
2024-03-19 22:46
test_cmd.py
6.1
KB
-rw-r--r--
2024-03-19 22:46
test_cmd_line.py
37.59
KB
-rw-r--r--
2024-03-19 22:46
test_cmd_line_script.py
33.43
KB
-rw-r--r--
2024-03-19 22:46
test_code.py
12.67
KB
-rw-r--r--
2024-03-19 22:46
test_code_module.py
5.53
KB
-rw-r--r--
2024-03-19 22:46
test_codeccallbacks.py
47.43
KB
-rw-r--r--
2024-03-19 22:46
test_codecencodings_cn.py
3.86
KB
-rw-r--r--
2024-03-19 22:46
test_codecencodings_hk.py
701
B
-rw-r--r--
2024-03-19 22:46
test_codecencodings_iso2022.py
3.65
KB
-rw-r--r--
2024-03-19 22:46
test_codecencodings_jp.py
4.79
KB
-rw-r--r--
2024-03-19 22:46
test_codecencodings_kr.py
2.96
KB
-rw-r--r--
2024-03-19 22:46
test_codecencodings_tw.py
681
B
-rw-r--r--
2024-03-19 22:46
test_codecmaps_cn.py
746
B
-rw-r--r--
2024-03-19 22:46
test_codecmaps_hk.py
386
B
-rw-r--r--
2024-03-19 22:46
test_codecmaps_jp.py
1.7
KB
-rw-r--r--
2024-03-19 22:46
test_codecmaps_kr.py
1.16
KB
-rw-r--r--
2024-03-19 22:46
test_codecmaps_tw.py
705
B
-rw-r--r--
2024-03-19 22:46
test_codecs.py
133.35
KB
-rw-r--r--
2024-03-19 22:46
test_codeop.py
9.18
KB
-rw-r--r--
2024-03-19 22:46
test_collections.py
92.15
KB
-rw-r--r--
2024-03-19 22:46
test_colorsys.py
3.83
KB
-rw-r--r--
2024-03-19 22:46
test_compare.py
3.74
KB
-rw-r--r--
2024-03-19 22:46
test_compile.py
46.33
KB
-rw-r--r--
2024-03-19 22:46
test_compileall.py
47.55
KB
-rw-r--r--
2024-03-19 22:46
test_complex.py
32.54
KB
-rw-r--r--
2024-03-19 22:46
test_concurrent_futures.py
56.63
KB
-rw-r--r--
2024-03-19 22:46
test_configparser.py
85.4
KB
-rw-r--r--
2024-03-19 22:46
test_contains.py
3.35
KB
-rw-r--r--
2024-03-19 22:46
test_context.py
30.63
KB
-rw-r--r--
2024-03-19 22:46
test_contextlib.py
36.9
KB
-rw-r--r--
2024-03-19 22:46
test_contextlib_async.py
20.67
KB
-rw-r--r--
2024-03-19 22:46
test_copy.py
26.63
KB
-rw-r--r--
2024-03-19 22:46
test_copyreg.py
4.39
KB
-rw-r--r--
2024-03-19 22:46
test_coroutines.py
63.79
KB
-rw-r--r--
2024-03-19 22:46
test_cprofile.py
6.33
KB
-rw-r--r--
2024-03-19 22:46
test_crashers.py
1.17
KB
-rw-r--r--
2024-03-19 22:46
test_crypt.py
4.14
KB
-rw-r--r--
2024-03-19 22:46
test_csv.py
52.99
KB
-rw-r--r--
2024-03-19 22:46
test_ctypes.py
199
B
-rw-r--r--
2024-03-19 22:46
test_curses.py
46.58
KB
-rw-r--r--
2024-03-19 22:46
test_dataclasses.py
126.75
KB
-rw-r--r--
2024-03-19 22:46
test_datetime.py
2.31
KB
-rw-r--r--
2024-03-19 22:46
test_dbm.py
6.11
KB
-rw-r--r--
2024-03-19 22:46
test_dbm_dumb.py
10.68
KB
-rw-r--r--
2024-03-19 22:46
test_dbm_gnu.py
6.51
KB
-rw-r--r--
2024-03-19 22:46
test_dbm_ndbm.py
5.12
KB
-rw-r--r--
2024-03-19 22:46
test_decimal.py
209.81
KB
-rw-r--r--
2024-03-19 22:46
test_decorators.py
14.42
KB
-rw-r--r--
2024-03-19 22:46
test_defaultdict.py
6.13
KB
-rw-r--r--
2024-03-19 22:46
test_deque.py
33.63
KB
-rw-r--r--
2024-03-19 22:46
test_descr.py
192.65
KB
-rw-r--r--
2024-03-19 22:46
test_descrtut.py
11.57
KB
-rw-r--r--
2024-03-19 22:46
test_devpoll.py
4.44
KB
-rw-r--r--
2024-03-19 22:46
test_dict.py
50.72
KB
-rw-r--r--
2024-03-19 22:46
test_dict_version.py
6.1
KB
-rw-r--r--
2024-03-19 22:46
test_dictcomps.py
5.15
KB
-rw-r--r--
2024-03-19 22:46
test_dictviews.py
13.69
KB
-rw-r--r--
2024-03-19 22:46
test_difflib.py
21.47
KB
-rw-r--r--
2024-03-19 22:46
test_difflib_expect.html
100.85
KB
-rw-r--r--
2024-03-19 22:46
test_dis.py
56.47
KB
-rw-r--r--
2024-03-19 22:46
test_distutils.py
587
B
-rw-r--r--
2024-03-19 22:46
test_doctest.py
101.1
KB
-rw-r--r--
2024-03-19 22:46
test_doctest.txt
300
B
-rw-r--r--
2024-03-19 22:46
test_doctest2.py
2.36
KB
-rw-r--r--
2024-03-19 22:46
test_doctest2.txt
392
B
-rw-r--r--
2024-03-19 22:46
test_doctest3.txt
82
B
-rw-r--r--
2024-03-19 22:46
test_doctest4.txt
244
B
-rw-r--r--
2024-03-19 22:46
test_docxmlrpc.py
8.67
KB
-rw-r--r--
2024-03-19 22:46
test_dtrace.py
5.14
KB
-rw-r--r--
2024-03-19 22:46
test_dynamic.py
4.29
KB
-rw-r--r--
2024-03-19 22:46
test_dynamicclassattribute.py
9.57
KB
-rw-r--r--
2024-03-19 22:46
test_eintr.py
584
B
-rw-r--r--
2024-03-19 22:46
test_embed.py
55.88
KB
-rw-r--r--
2024-03-19 22:46
test_ensurepip.py
12.2
KB
-rw-r--r--
2024-03-19 22:46
test_enum.py
121.13
KB
-rw-r--r--
2024-03-19 22:46
test_enumerate.py
8.46
KB
-rw-r--r--
2024-03-19 22:46
test_eof.py
3.02
KB
-rw-r--r--
2024-03-19 22:46
test_epoll.py
9.14
KB
-rw-r--r--
2024-03-19 22:46
test_errno.py
1.04
KB
-rw-r--r--
2024-03-19 22:46
test_exception_hierarchy.py
7.43
KB
-rw-r--r--
2024-03-19 22:46
test_exception_variations.py
3.86
KB
-rw-r--r--
2024-03-19 22:46
test_exceptions.py
90.94
KB
-rw-r--r--
2024-03-19 22:46
test_extcall.py
14.05
KB
-rw-r--r--
2024-03-19 22:46
test_faulthandler.py
30.11
KB
-rw-r--r--
2024-03-19 22:46
test_fcntl.py
7.43
KB
-rw-r--r--
2024-03-19 22:46
test_file.py
11.78
KB
-rw-r--r--
2024-03-19 22:46
test_file_eintr.py
10.61
KB
-rw-r--r--
2024-03-19 22:46
test_filecmp.py
10.33
KB
-rw-r--r--
2024-03-19 22:46
test_fileinput.py
40.18
KB
-rw-r--r--
2024-03-19 22:46
test_fileio.py
19.93
KB
-rw-r--r--
2024-03-19 22:46
test_finalization.py
14.66
KB
-rw-r--r--
2024-03-19 22:46
test_float.py
66.39
KB
-rw-r--r--
2024-03-19 22:46
test_flufl.py
1.55
KB
-rw-r--r--
2024-03-19 22:46
test_fnmatch.py
11.1
KB
-rw-r--r--
2024-03-19 22:46
test_fork1.py
3.24
KB
-rw-r--r--
2024-03-19 22:46
test_format.py
23.91
KB
-rw-r--r--
2024-03-19 22:46
test_fractions.py
29.7
KB
-rw-r--r--
2024-03-19 22:46
test_frame.py
6.22
KB
-rw-r--r--
2024-03-19 22:46
test_frozen.py
943
B
-rw-r--r--
2024-03-19 22:46
test_fstring.py
52.54
KB
-rw-r--r--
2024-03-19 22:46
test_ftplib.py
41.99
KB
-rw-r--r--
2024-03-19 22:46
test_funcattrs.py
14.86
KB
-rw-r--r--
2024-03-19 22:46
test_functools.py
102.67
KB
-rw-r--r--
2024-03-19 22:46
test_future.py
14.88
KB
-rw-r--r--
2024-03-19 22:46
test_future3.py
490
B
-rw-r--r--
2024-03-19 22:46
test_future4.py
222
B
-rw-r--r--
2024-03-19 22:46
test_future5.py
510
B
-rw-r--r--
2024-03-19 22:46
test_gc.py
45.92
KB
-rw-r--r--
2024-03-19 22:46
test_gdb.py
41.71
KB
-rw-r--r--
2024-03-19 22:46
test_generator_stop.py
943
B
-rw-r--r--
2024-03-19 22:46
test_generators.py
63.77
KB
-rw-r--r--
2024-03-19 22:46
test_genericalias.py
12.77
KB
-rw-r--r--
2024-03-19 22:46
test_genericclass.py
9.28
KB
-rw-r--r--
2024-03-19 22:46
test_genericpath.py
21.84
KB
-rw-r--r--
2024-03-19 22:46
test_genexps.py
7.63
KB
-rw-r--r--
2024-03-19 22:46
test_getopt.py
6.78
KB
-rw-r--r--
2024-03-19 22:46
test_getpass.py
6.29
KB
-rw-r--r--
2024-03-19 22:46
test_gettext.py
41.42
KB
-rw-r--r--
2024-03-19 22:46
test_glob.py
15.35
KB
-rw-r--r--
2024-03-19 22:46
test_global.py
1.38
KB
-rw-r--r--
2024-03-19 22:46
test_grammar.py
63.22
KB
-rw-r--r--
2024-03-19 22:46
test_graphlib.py
8.34
KB
-rw-r--r--
2024-03-19 22:46
test_grp.py
3.67
KB
-rw-r--r--
2024-03-19 22:46
test_gzip.py
30.63
KB
-rw-r--r--
2024-03-19 22:46
test_hash.py
11.45
KB
-rw-r--r--
2024-03-19 22:46
test_hashlib.py
44.92
KB
-rw-r--r--
2024-03-19 22:46
test_heapq.py
16.45
KB
-rw-r--r--
2024-03-19 22:46
test_hmac.py
25.41
KB
-rw-r--r--
2024-03-19 22:46
test_html.py
4.23
KB
-rw-r--r--
2024-03-19 22:46
test_htmlparser.py
32.93
KB
-rw-r--r--
2024-03-19 22:46
test_http_cookiejar.py
78.4
KB
-rw-r--r--
2024-03-19 22:46
test_http_cookies.py
18.71
KB
-rw-r--r--
2024-03-19 22:46
test_httplib.py
79.14
KB
-rw-r--r--
2024-03-19 22:46
test_httpservers.py
55.11
KB
-rw-r--r--
2024-03-19 22:46
test_idle.py
1014
B
-rw-r--r--
2024-03-19 22:46
test_imaplib.py
42.13
KB
-rw-r--r--
2024-03-19 22:46
test_imghdr.py
4.69
KB
-rw-r--r--
2024-03-19 22:46
test_imp.py
18.93
KB
-rw-r--r--
2024-03-19 22:46
test_index.py
8.37
KB
-rw-r--r--
2024-03-19 22:46
test_inspect.py
172.66
KB
-rw-r--r--
2024-03-19 22:46
test_int.py
28.32
KB
-rw-r--r--
2024-03-19 22:46
test_int_literal.py
6.89
KB
-rw-r--r--
2024-03-19 22:46
test_interpreters.py
22.48
KB
-rw-r--r--
2024-03-19 22:46
test_io.py
171.42
KB
-rw-r--r--
2024-03-19 22:46
test_ioctl.py
3.24
KB
-rw-r--r--
2024-03-19 22:46
test_ipaddress.py
116.78
KB
-rw-r--r--
2024-03-19 22:46
test_isinstance.py
12.96
KB
-rw-r--r--
2024-03-19 22:46
test_iter.py
36.76
KB
-rw-r--r--
2024-03-19 22:46
test_iterlen.py
7.1
KB
-rw-r--r--
2024-03-19 22:46
test_itertools.py
108.43
KB
-rw-r--r--
2024-03-19 22:46
test_keyword.py
1.97
KB
-rw-r--r--
2024-03-19 22:46
test_keywordonlyarg.py
6.89
KB
-rw-r--r--
2024-03-19 22:46
test_kqueue.py
8.76
KB
-rw-r--r--
2024-03-19 22:46
test_largefile.py
9.98
KB
-rw-r--r--
2024-03-19 22:46
test_lib2to3.py
318
B
-rw-r--r--
2024-03-19 22:46
test_linecache.py
9.64
KB
-rw-r--r--
2024-03-19 22:46
test_list.py
7.98
KB
-rw-r--r--
2024-03-19 22:46
test_listcomps.py
4.17
KB
-rw-r--r--
2024-03-19 22:46
test_lltrace.py
3.13
KB
-rw-r--r--
2024-03-19 22:46
test_locale.py
24.64
KB
-rw-r--r--
2024-03-19 22:46
test_logging.py
196.58
KB
-rw-r--r--
2024-03-19 22:46
test_long.py
54.55
KB
-rw-r--r--
2024-03-19 22:46
test_longexp.py
233
B
-rw-r--r--
2024-03-19 22:46
test_lzma.py
88.18
KB
-rw-r--r--
2024-03-19 22:46
test_mailbox.py
91.79
KB
-rw-r--r--
2024-03-19 22:46
test_mailcap.py
10.16
KB
-rw-r--r--
2024-03-19 22:46
test_marshal.py
20.46
KB
-rw-r--r--
2024-03-19 22:46
test_math.py
90.7
KB
-rw-r--r--
2024-03-19 22:46
test_memoryio.py
31.48
KB
-rw-r--r--
2024-03-19 22:46
test_memoryview.py
21.37
KB
-rw-r--r--
2024-03-19 22:46
test_metaclass.py
6.21
KB
-rw-r--r--
2024-03-19 22:46
test_mimetypes.py
13.85
KB
-rw-r--r--
2024-03-19 22:46
test_minidom.py
68.81
KB
-rw-r--r--
2024-03-19 22:46
test_mmap.py
31.06
KB
-rw-r--r--
2024-03-19 22:46
test_module.py
12.37
KB
-rw-r--r--
2024-03-19 22:46
test_modulefinder.py
12.2
KB
-rw-r--r--
2024-03-19 22:46
test_msilib.py
5.41
KB
-rw-r--r--
2024-03-19 22:46
test_multibytecodec.py
15.76
KB
-rw-r--r--
2024-03-19 22:46
test_multiprocessing_fork.py
477
B
-rw-r--r--
2024-03-19 22:46
test_multiprocessing_forkserver.py
392
B
-rw-r--r--
2024-03-19 22:46
test_multiprocessing_main_handling.py
11.57
KB
-rw-r--r--
2024-03-19 22:46
test_multiprocessing_spawn.py
277
B
-rw-r--r--
2024-03-19 22:46
test_named_expressions.py
20.62
KB
-rw-r--r--
2024-03-19 22:46
test_netrc.py
6.01
KB
-rw-r--r--
2024-03-19 22:46
test_nis.py
1.17
KB
-rw-r--r--
2024-03-19 22:46
test_nntplib.py
62.68
KB
-rw-r--r--
2024-03-19 22:46
test_ntpath.py
38.67
KB
-rw-r--r--
2024-03-19 22:46
test_numeric_tower.py
8
KB
-rw-r--r--
2024-03-19 22:46
test_opcache.py
529
B
-rw-r--r--
2024-03-19 22:46
test_opcodes.py
3.59
KB
-rw-r--r--
2024-03-19 22:46
test_openpty.py
600
B
-rw-r--r--
2024-03-19 22:46
test_operator.py
24.05
KB
-rw-r--r--
2024-03-19 22:46
test_optparse.py
61.02
KB
-rw-r--r--
2024-03-19 22:46
test_ordered_dict.py
31.61
KB
-rw-r--r--
2024-03-19 22:46
test_os.py
167.95
KB
-rw-r--r--
2024-03-19 22:46
test_ossaudiodev.py
7.07
KB
-rw-r--r--
2024-03-19 22:46
test_osx_env.py
1.31
KB
-rw-r--r--
2024-03-19 22:46
test_pathlib.py
109.86
KB
-rw-r--r--
2024-03-19 22:46
test_patma.py
84.78
KB
-rw-r--r--
2024-03-19 22:46
test_pdb.py
68.89
KB
-rw-r--r--
2024-03-19 22:46
test_peepholer.py
19.77
KB
-rw-r--r--
2024-03-19 22:46
test_pickle.py
19.71
KB
-rw-r--r--
2024-03-19 22:46
test_picklebuffer.py
4.99
KB
-rw-r--r--
2024-03-19 22:46
test_pickletools.py
4.13
KB
-rw-r--r--
2024-03-19 22:46
test_pipes.py
6.71
KB
-rw-r--r--
2024-03-19 22:46
test_pkg.py
9.59
KB
-rw-r--r--
2024-03-19 22:46
test_pkgutil.py
21.21
KB
-rw-r--r--
2024-03-19 22:46
test_platform.py
19.98
KB
-rw-r--r--
2024-03-19 22:46
test_plistlib.py
38.73
KB
-rw-r--r--
2024-03-19 22:46
test_poll.py
7.27
KB
-rw-r--r--
2024-03-19 22:46
test_popen.py
2.08
KB
-rw-r--r--
2024-03-19 22:46
test_poplib.py
17.54
KB
-rw-r--r--
2024-03-19 22:46
test_positional_only_arg.py
17.77
KB
-rw-r--r--
2024-03-19 22:46
test_posix.py
87.32
KB
-rw-r--r--
2024-03-19 22:46
test_posixpath.py
32.11
KB
-rw-r--r--
2024-03-19 22:46
test_pow.py
5.43
KB
-rw-r--r--
2024-03-19 22:46
test_pprint.py
50.31
KB
-rw-r--r--
2024-03-19 22:46
test_print.py
7.72
KB
-rw-r--r--
2024-03-19 22:46
test_profile.py
8.69
KB
-rw-r--r--
2024-03-19 22:46
test_property.py
11.35
KB
-rw-r--r--
2024-03-19 22:46
test_pstats.py
3.31
KB
-rw-r--r--
2024-03-19 22:46
test_pty.py
16.84
KB
-rw-r--r--
2024-03-19 22:46
test_pulldom.py
12.66
KB
-rw-r--r--
2024-03-19 22:46
test_pwd.py
4.29
KB
-rw-r--r--
2024-03-19 22:46
test_py_compile.py
11.44
KB
-rw-r--r--
2024-03-19 22:46
test_pyclbr.py
9.84
KB
-rw-r--r--
2024-03-19 22:46
test_pydoc.py
60.53
KB
-rw-r--r--
2024-03-19 22:46
test_pyexpat.py
28.42
KB
-rw-r--r--
2024-03-19 22:46
test_queue.py
20.51
KB
-rw-r--r--
2024-03-19 22:46
test_quopri.py
7.78
KB
-rw-r--r--
2024-03-19 22:46
test_raise.py
13.44
KB
-rw-r--r--
2024-03-19 22:46
test_random.py
55.18
KB
-rw-r--r--
2024-03-19 22:46
test_range.py
24.64
KB
-rw-r--r--
2024-03-19 22:46
test_re.py
112.86
KB
-rw-r--r--
2024-03-19 22:46
test_readline.py
14.24
KB
-rw-r--r--
2024-03-19 22:46
test_regrtest.py
49.5
KB
-rw-r--r--
2024-03-19 22:46
test_repl.py
3.96
KB
-rw-r--r--
2024-03-19 22:46
test_reprlib.py
15.13
KB
-rw-r--r--
2024-03-19 22:46
test_resource.py
7.04
KB
-rw-r--r--
2024-03-19 22:46
test_richcmp.py
11.91
KB
-rw-r--r--
2024-03-19 22:46
test_rlcompleter.py
7.1
KB
-rw-r--r--
2024-03-19 22:46
test_robotparser.py
10.88
KB
-rw-r--r--
2024-03-19 22:46
test_runpy.py
33.86
KB
-rw-r--r--
2024-03-19 22:46
test_sax.py
54.6
KB
-rw-r--r--
2024-03-19 22:46
test_sched.py
7.28
KB
-rw-r--r--
2024-03-19 22:46
test_scope.py
19.83
KB
-rw-r--r--
2024-03-19 22:46
test_script_helper.py
5.78
KB
-rw-r--r--
2024-03-19 22:46
test_secrets.py
4.28
KB
-rw-r--r--
2024-03-19 22:46
test_select.py
3.32
KB
-rw-r--r--
2024-03-19 22:46
test_selectors.py
18.27
KB
-rw-r--r--
2024-03-19 22:46
test_set.py
69.09
KB
-rw-r--r--
2024-03-19 22:46
test_setcomps.py
4.15
KB
-rw-r--r--
2024-03-19 22:46
test_shelve.py
6.02
KB
-rw-r--r--
2024-03-19 22:46
test_shlex.py
13.48
KB
-rw-r--r--
2024-03-19 22:46
test_shutil.py
105.72
KB
-rw-r--r--
2024-03-19 22:46
test_signal.py
48.8
KB
-rw-r--r--
2024-03-19 22:46
test_site.py
27.8
KB
-rw-r--r--
2024-03-19 22:46
test_slice.py
9.23
KB
-rw-r--r--
2024-03-19 22:46
test_smtpd.py
40.65
KB
-rw-r--r--
2024-03-19 22:46
test_smtplib.py
60.05
KB
-rw-r--r--
2024-03-19 22:46
test_smtpnet.py
2.99
KB
-rw-r--r--
2024-03-19 22:46
test_sndhdr.py
1.43
KB
-rw-r--r--
2024-03-19 22:46
test_socket.py
246.76
KB
-rw-r--r--
2024-03-19 22:46
test_socketserver.py
17.89
KB
-rw-r--r--
2024-03-19 22:46
test_sort.py
13.42
KB
-rw-r--r--
2024-03-19 22:46
test_source_encoding.py
9.03
KB
-rw-r--r--
2024-03-19 22:46
test_spwd.py
2.73
KB
-rw-r--r--
2024-03-19 22:46
test_sqlite.py
988
B
-rw-r--r--
2024-03-19 22:46
test_ssl.py
217.26
KB
-rw-r--r--
2024-03-19 22:46
test_startfile.py
1.7
KB
-rw-r--r--
2024-03-19 22:46
test_stat.py
8.58
KB
-rw-r--r--
2024-03-19 22:46
test_statistics.py
113.22
KB
-rw-r--r--
2024-03-19 22:46
test_strftime.py
7.54
KB
-rw-r--r--
2024-03-19 22:46
test_string.py
19.8
KB
-rw-r--r--
2024-03-19 22:46
test_string_literals.py
10.2
KB
-rw-r--r--
2024-03-19 22:46
test_stringprep.py
3.04
KB
-rw-r--r--
2024-03-19 22:46
test_strptime.py
34.42
KB
-rw-r--r--
2024-03-19 22:46
test_strtod.py
20.06
KB
-rw-r--r--
2024-03-19 22:46
test_struct.py
36.19
KB
-rw-r--r--
2024-03-19 22:46
test_structseq.py
4.42
KB
-rw-r--r--
2024-03-19 22:46
test_subclassinit.py
8.12
KB
-rw-r--r--
2024-03-19 22:46
test_subprocess.py
156.33
KB
-rw-r--r--
2024-03-19 22:46
test_sunau.py
5.98
KB
-rw-r--r--
2024-03-19 22:46
test_sundry.py
2.1
KB
-rw-r--r--
2024-03-19 22:46
test_super.py
9.6
KB
-rw-r--r--
2024-03-19 22:46
test_support.py
25.33
KB
-rw-r--r--
2024-03-19 22:46
test_symtable.py
9.36
KB
-rw-r--r--
2024-03-19 22:46
test_syntax.py
52.33
KB
-rw-r--r--
2024-03-19 22:46
test_sys.py
58.56
KB
-rw-r--r--
2024-03-19 22:46
test_sys_setprofile.py
13.19
KB
-rw-r--r--
2024-03-19 22:46
test_sys_settrace.py
62.72
KB
-rw-r--r--
2024-03-19 22:46
test_sysconfig.py
18.92
KB
-rw-r--r--
2024-03-19 22:46
test_syslog.py
2.71
KB
-rw-r--r--
2024-03-19 22:46
test_tabnanny.py
13.44
KB
-rw-r--r--
2024-03-19 22:46
test_tarfile.py
152.06
KB
-rw-r--r--
2024-03-19 22:46
test_tcl.py
31.54
KB
-rw-r--r--
2024-03-19 22:46
test_telnetlib.py
12.74
KB
-rw-r--r--
2024-03-19 22:46
test_tempfile.py
65.97
KB
-rw-r--r--
2024-03-19 22:46
test_textwrap.py
41.89
KB
-rw-r--r--
2024-03-19 22:46
test_thread.py
8.54
KB
-rw-r--r--
2024-03-19 22:46
test_threadedtempfile.py
1.87
KB
-rw-r--r--
2024-03-19 22:46
test_threading.py
59.46
KB
-rw-r--r--
2024-03-19 22:46
test_threading_local.py
6.66
KB
-rw-r--r--
2024-03-19 22:46
test_threadsignals.py
10.11
KB
-rw-r--r--
2024-03-19 22:46
test_time.py
39.93
KB
-rw-r--r--
2024-03-19 22:46
test_timeit.py
15.2
KB
-rw-r--r--
2024-03-19 22:46
test_timeout.py
11
KB
-rw-r--r--
2024-03-19 22:46
test_tix.py
1.05
KB
-rw-r--r--
2024-03-19 22:46
test_tk.py
546
B
-rw-r--r--
2024-03-19 22:46
test_tokenize.py
64.51
KB
-rw-r--r--
2024-03-19 22:46
test_trace.py
20.4
KB
-rw-r--r--
2024-03-19 22:46
test_traceback.py
54.55
KB
-rw-r--r--
2024-03-19 22:46
test_tracemalloc.py
39.17
KB
-rw-r--r--
2024-03-19 22:46
test_ttk_guionly.py
986
B
-rw-r--r--
2024-03-19 22:46
test_ttk_textonly.py
16.69
KB
-rw-r--r--
2024-03-19 22:46
test_tuple.py
18.85
KB
-rw-r--r--
2024-03-19 22:46
test_turtle.py
12.75
KB
-rw-r--r--
2024-03-19 22:46
test_type_annotations.py
3.7
KB
-rw-r--r--
2024-03-19 22:46
test_type_comments.py
10.54
KB
-rw-r--r--
2024-03-19 22:46
test_typechecks.py
2.55
KB
-rw-r--r--
2024-03-19 22:46
test_types.py
75.67
KB
-rw-r--r--
2024-03-19 22:46
test_typing.py
179.66
KB
-rw-r--r--
2024-03-19 22:46
test_ucn.py
9.52
KB
-rw-r--r--
2024-03-19 22:46
test_unary.py
1.63
KB
-rw-r--r--
2024-03-19 22:46
test_unicode.py
120.59
KB
-rw-r--r--
2024-03-19 22:46
test_unicode_file.py
5.71
KB
-rw-r--r--
2024-03-19 22:46
test_unicode_file_functions.py
6.74
KB
-rw-r--r--
2024-03-19 22:46
test_unicode_identifiers.py
984
B
-rw-r--r--
2024-03-19 22:46
test_unicodedata.py
16.21
KB
-rw-r--r--
2024-03-19 22:46
test_unittest.py
226
B
-rw-r--r--
2024-03-19 22:46
test_univnewlines.py
3.88
KB
-rw-r--r--
2024-03-19 22:46
test_unpack.py
3.01
KB
-rw-r--r--
2024-03-19 22:46
test_unpack_ex.py
9.91
KB
-rw-r--r--
2024-03-19 22:46
test_unparse.py
18.59
KB
-rw-r--r--
2024-03-19 22:46
test_urllib.py
70.08
KB
-rw-r--r--
2024-03-19 22:46
test_urllib2.py
78.97
KB
-rw-r--r--
2024-03-19 22:46
test_urllib2_localnet.py
25.5
KB
-rw-r--r--
2024-03-19 22:46
test_urllib2net.py
14.07
KB
-rw-r--r--
2024-03-19 22:46
test_urllib_response.py
1.89
KB
-rw-r--r--
2024-03-19 22:46
test_urllibnet.py
9.32
KB
-rw-r--r--
2024-03-19 22:46
test_urlparse.py
67.31
KB
-rw-r--r--
2024-03-19 22:46
test_userdict.py
7.56
KB
-rw-r--r--
2024-03-19 22:46
test_userlist.py
1.97
KB
-rw-r--r--
2024-03-19 22:46
test_userstring.py
2.4
KB
-rw-r--r--
2024-03-19 22:46
test_utf8_mode.py
10.29
KB
-rw-r--r--
2024-03-19 22:46
test_utf8source.py
1.15
KB
-rw-r--r--
2024-03-19 22:46
test_uu.py
8.92
KB
-rw-r--r--
2024-03-19 22:46
test_uuid.py
40
KB
-rwxr-xr-x
2024-03-19 22:46
test_venv.py
22.63
KB
-rw-r--r--
2024-03-19 22:46
test_wait3.py
1.81
KB
-rw-r--r--
2024-03-19 22:46
test_wait4.py
1.16
KB
-rw-r--r--
2024-03-19 22:46
test_wave.py
6.5
KB
-rw-r--r--
2024-03-19 22:46
test_weakref.py
73.74
KB
-rw-r--r--
2024-03-19 22:46
test_weakset.py
15.42
KB
-rw-r--r--
2024-03-19 22:46
test_webbrowser.py
10.6
KB
-rw-r--r--
2024-03-19 22:46
test_winconsoleio.py
6.57
KB
-rw-r--r--
2024-03-19 22:46
test_winreg.py
22.2
KB
-rw-r--r--
2024-03-19 22:46
test_winsound.py
4.61
KB
-rw-r--r--
2024-03-19 22:46
test_with.py
25.99
KB
-rw-r--r--
2024-03-19 22:46
test_wsgiref.py
30.2
KB
-rw-r--r--
2024-03-19 22:46
test_xdrlib.py
2.17
KB
-rw-r--r--
2024-03-19 22:46
test_xml_dom_minicompat.py
4.18
KB
-rw-r--r--
2024-03-19 22:46
test_xml_etree.py
160.6
KB
-rw-r--r--
2024-03-19 22:46
test_xml_etree_c.py
8.48
KB
-rw-r--r--
2024-03-19 22:46
test_xmlrpc.py
57.66
KB
-rw-r--r--
2024-03-19 22:46
test_xmlrpc_net.py
954
B
-rw-r--r--
2024-03-19 22:46
test_xxlimited.py
2.13
KB
-rw-r--r--
2024-03-19 22:46
test_xxtestfuzz.py
690
B
-rw-r--r--
2024-03-19 22:46
test_yield_from.py
30.09
KB
-rw-r--r--
2024-03-19 22:46
test_zipapp.py
15.92
KB
-rw-r--r--
2024-03-19 22:46
test_zipfile.py
131.16
KB
-rw-r--r--
2024-03-19 22:46
test_zipfile64.py
5.86
KB
-rw-r--r--
2024-03-19 22:46
test_zipimport.py
33.56
KB
-rw-r--r--
2024-03-19 22:46
test_zipimport_support.py
10.46
KB
-rw-r--r--
2024-03-19 22:46
test_zlib.py
34.31
KB
-rw-r--r--
2024-03-19 22:46
testcodec.py
1.02
KB
-rw-r--r--
2024-03-19 22:46
testtar.tar
425
KB
-rw-r--r--
2024-03-19 22:46
testtar.tar.xz
172
B
-rw-r--r--
2024-03-19 22:46
tf_inherit_check.py
714
B
-rw-r--r--
2024-03-19 22:46
time_hashlib.py
2.87
KB
-rw-r--r--
2024-03-19 22:46
tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
443
B
-rw-r--r--
2024-03-19 22:46
tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
302
B
-rw-r--r--
2024-03-19 22:46
tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
421
B
-rw-r--r--
2024-03-19 22:46
tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
326
B
-rw-r--r--
2024-03-19 22:46
tokenize_tests.txt
2.65
KB
-rw-r--r--
2024-03-19 22:46
win_console_handler.py
1.38
KB
-rw-r--r--
2024-03-19 22:46
xmltests.py
499
B
-rw-r--r--
2024-03-19 22:46
zip_cp437_header.zip
270
B
-rw-r--r--
2024-03-19 22:46
zipdir.zip
374
B
-rw-r--r--
2024-03-19 22:46
Save
Rename
from collections import abc import array import gc import math import operator import unittest import struct import sys import weakref from test import support from test.support import import_helper from test.support.script_helper import assert_python_ok ISBIGENDIAN = sys.byteorder == "big" integer_codes = 'b', 'B', 'h', 'H', 'i', 'I', 'l', 'L', 'q', 'Q', 'n', 'N' byteorders = '', '@', '=', '<', '>', '!' def iter_integer_formats(byteorders=byteorders): for code in integer_codes: for byteorder in byteorders: if (byteorder not in ('', '@') and code in ('n', 'N')): continue yield code, byteorder def string_reverse(s): return s[::-1] def bigendian_to_native(value): if ISBIGENDIAN: return value else: return string_reverse(value) class StructTest(unittest.TestCase): def test_isbigendian(self): self.assertEqual((struct.pack('=i', 1)[0] == 0), ISBIGENDIAN) def test_consistence(self): self.assertRaises(struct.error, struct.calcsize, 'Z') sz = struct.calcsize('i') self.assertEqual(sz * 3, struct.calcsize('iii')) fmt = 'cbxxxxxxhhhhiillffd?' fmt3 = '3c3b18x12h6i6l6f3d3?' sz = struct.calcsize(fmt) sz3 = struct.calcsize(fmt3) self.assertEqual(sz * 3, sz3) self.assertRaises(struct.error, struct.pack, 'iii', 3) self.assertRaises(struct.error, struct.pack, 'i', 3, 3, 3) self.assertRaises((TypeError, struct.error), struct.pack, 'i', 'foo') self.assertRaises((TypeError, struct.error), struct.pack, 'P', 'foo') self.assertRaises(struct.error, struct.unpack, 'd', b'flap') s = struct.pack('ii', 1, 2) self.assertRaises(struct.error, struct.unpack, 'iii', s) self.assertRaises(struct.error, struct.unpack, 'i', s) def test_transitiveness(self): c = b'a' b = 1 h = 255 i = 65535 l = 65536 f = 3.1415 d = 3.1415 t = True for prefix in ('', '@', '<', '>', '=', '!'): for format in ('xcbhilfd?', 'xcBHILfd?'): format = prefix + format s = struct.pack(format, c, b, h, i, l, f, d, t) cp, bp, hp, ip, lp, fp, dp, tp = struct.unpack(format, s) self.assertEqual(cp, c) self.assertEqual(bp, b) self.assertEqual(hp, h) self.assertEqual(ip, i) self.assertEqual(lp, l) self.assertEqual(int(100 * fp), int(100 * f)) self.assertEqual(int(100 * dp), int(100 * d)) self.assertEqual(tp, t) def test_new_features(self): # Test some of the new features in detail # (format, argument, big-endian result, little-endian result, asymmetric) tests = [ ('c', b'a', b'a', b'a', 0), ('xc', b'a', b'\0a', b'\0a', 0), ('cx', b'a', b'a\0', b'a\0', 0), ('s', b'a', b'a', b'a', 0), ('0s', b'helloworld', b'', b'', 1), ('1s', b'helloworld', b'h', b'h', 1), ('9s', b'helloworld', b'helloworl', b'helloworl', 1), ('10s', b'helloworld', b'helloworld', b'helloworld', 0), ('11s', b'helloworld', b'helloworld\0', b'helloworld\0', 1), ('20s', b'helloworld', b'helloworld'+10*b'\0', b'helloworld'+10*b'\0', 1), ('b', 7, b'\7', b'\7', 0), ('b', -7, b'\371', b'\371', 0), ('B', 7, b'\7', b'\7', 0), ('B', 249, b'\371', b'\371', 0), ('h', 700, b'\002\274', b'\274\002', 0), ('h', -700, b'\375D', b'D\375', 0), ('H', 700, b'\002\274', b'\274\002', 0), ('H', 0x10000-700, b'\375D', b'D\375', 0), ('i', 70000000, b'\004,\035\200', b'\200\035,\004', 0), ('i', -70000000, b'\373\323\342\200', b'\200\342\323\373', 0), ('I', 70000000, b'\004,\035\200', b'\200\035,\004', 0), ('I', 0x100000000-70000000, b'\373\323\342\200', b'\200\342\323\373', 0), ('l', 70000000, b'\004,\035\200', b'\200\035,\004', 0), ('l', -70000000, b'\373\323\342\200', b'\200\342\323\373', 0), ('L', 70000000, b'\004,\035\200', b'\200\035,\004', 0), ('L', 0x100000000-70000000, b'\373\323\342\200', b'\200\342\323\373', 0), ('f', 2.0, b'@\000\000\000', b'\000\000\000@', 0), ('d', 2.0, b'@\000\000\000\000\000\000\000', b'\000\000\000\000\000\000\000@', 0), ('f', -2.0, b'\300\000\000\000', b'\000\000\000\300', 0), ('d', -2.0, b'\300\000\000\000\000\000\000\000', b'\000\000\000\000\000\000\000\300', 0), ('?', 0, b'\0', b'\0', 0), ('?', 3, b'\1', b'\1', 1), ('?', True, b'\1', b'\1', 0), ('?', [], b'\0', b'\0', 1), ('?', (1,), b'\1', b'\1', 1), ] for fmt, arg, big, lil, asy in tests: for (xfmt, exp) in [('>'+fmt, big), ('!'+fmt, big), ('<'+fmt, lil), ('='+fmt, ISBIGENDIAN and big or lil)]: res = struct.pack(xfmt, arg) self.assertEqual(res, exp) self.assertEqual(struct.calcsize(xfmt), len(res)) rev = struct.unpack(xfmt, res)[0] if rev != arg: self.assertTrue(asy) def test_calcsize(self): expected_size = { 'b': 1, 'B': 1, 'h': 2, 'H': 2, 'i': 4, 'I': 4, 'l': 4, 'L': 4, 'q': 8, 'Q': 8, } # standard integer sizes for code, byteorder in iter_integer_formats(('=', '<', '>', '!')): format = byteorder+code size = struct.calcsize(format) self.assertEqual(size, expected_size[code]) # native integer sizes native_pairs = 'bB', 'hH', 'iI', 'lL', 'nN', 'qQ' for format_pair in native_pairs: for byteorder in '', '@': signed_size = struct.calcsize(byteorder + format_pair[0]) unsigned_size = struct.calcsize(byteorder + format_pair[1]) self.assertEqual(signed_size, unsigned_size) # bounds for native integer sizes self.assertEqual(struct.calcsize('b'), 1) self.assertLessEqual(2, struct.calcsize('h')) self.assertLessEqual(4, struct.calcsize('l')) self.assertLessEqual(struct.calcsize('h'), struct.calcsize('i')) self.assertLessEqual(struct.calcsize('i'), struct.calcsize('l')) self.assertLessEqual(8, struct.calcsize('q')) self.assertLessEqual(struct.calcsize('l'), struct.calcsize('q')) self.assertGreaterEqual(struct.calcsize('n'), struct.calcsize('i')) self.assertGreaterEqual(struct.calcsize('n'), struct.calcsize('P')) def test_integers(self): # Integer tests (bBhHiIlLqQnN). import binascii class IntTester(unittest.TestCase): def __init__(self, format): super(IntTester, self).__init__(methodName='test_one') self.format = format self.code = format[-1] self.byteorder = format[:-1] if not self.byteorder in byteorders: raise ValueError("unrecognized packing byteorder: %s" % self.byteorder) self.bytesize = struct.calcsize(format) self.bitsize = self.bytesize * 8 if self.code in tuple('bhilqn'): self.signed = True self.min_value = -(2**(self.bitsize-1)) self.max_value = 2**(self.bitsize-1) - 1 elif self.code in tuple('BHILQN'): self.signed = False self.min_value = 0 self.max_value = 2**self.bitsize - 1 else: raise ValueError("unrecognized format code: %s" % self.code) def test_one(self, x, pack=struct.pack, unpack=struct.unpack, unhexlify=binascii.unhexlify): format = self.format if self.min_value <= x <= self.max_value: expected = x if self.signed and x < 0: expected += 1 << self.bitsize self.assertGreaterEqual(expected, 0) expected = '%x' % expected if len(expected) & 1: expected = "0" + expected expected = expected.encode('ascii') expected = unhexlify(expected) expected = (b"\x00" * (self.bytesize - len(expected)) + expected) if (self.byteorder == '<' or self.byteorder in ('', '@', '=') and not ISBIGENDIAN): expected = string_reverse(expected) self.assertEqual(len(expected), self.bytesize) # Pack work? got = pack(format, x) self.assertEqual(got, expected) # Unpack work? retrieved = unpack(format, got)[0] self.assertEqual(x, retrieved) # Adding any byte should cause a "too big" error. self.assertRaises((struct.error, TypeError), unpack, format, b'\x01' + got) else: # x is out of range -- verify pack realizes that. self.assertRaises((OverflowError, ValueError, struct.error), pack, format, x) def run(self): from random import randrange # Create all interesting powers of 2. values = [] for exp in range(self.bitsize + 3): values.append(1 << exp) # Add some random values. for i in range(self.bitsize): val = 0 for j in range(self.bytesize): val = (val << 8) | randrange(256) values.append(val) # Values absorbed from other tests values.extend([300, 700000, sys.maxsize*4]) # Try all those, and their negations, and +-1 from # them. Note that this tests all power-of-2 # boundaries in range, and a few out of range, plus # +-(2**n +- 1). for base in values: for val in -base, base: for incr in -1, 0, 1: x = val + incr self.test_one(x) # Some error cases. class NotAnInt: def __int__(self): return 42 # Objects with an '__index__' method should be allowed # to pack as integers. That is assuming the implemented # '__index__' method returns an 'int'. class Indexable(object): def __init__(self, value): self._value = value def __index__(self): return self._value # If the '__index__' method raises a type error, then # '__int__' should be used with a deprecation warning. class BadIndex(object): def __index__(self): raise TypeError def __int__(self): return 42 self.assertRaises((TypeError, struct.error), struct.pack, self.format, "a string") self.assertRaises((TypeError, struct.error), struct.pack, self.format, randrange) self.assertRaises((TypeError, struct.error), struct.pack, self.format, 3+42j) self.assertRaises((TypeError, struct.error), struct.pack, self.format, NotAnInt()) self.assertRaises((TypeError, struct.error), struct.pack, self.format, BadIndex()) # Check for legitimate values from '__index__'. for obj in (Indexable(0), Indexable(10), Indexable(17), Indexable(42), Indexable(100), Indexable(127)): try: struct.pack(format, obj) except: self.fail("integer code pack failed on object " "with '__index__' method") # Check for bogus values from '__index__'. for obj in (Indexable(b'a'), Indexable('b'), Indexable(None), Indexable({'a': 1}), Indexable([1, 2, 3])): self.assertRaises((TypeError, struct.error), struct.pack, self.format, obj) for code, byteorder in iter_integer_formats(): format = byteorder+code t = IntTester(format) t.run() def test_nN_code(self): # n and N don't exist in standard sizes def assertStructError(func, *args, **kwargs): with self.assertRaises(struct.error) as cm: func(*args, **kwargs) self.assertIn("bad char in struct format", str(cm.exception)) for code in 'nN': for byteorder in ('=', '<', '>', '!'): format = byteorder+code assertStructError(struct.calcsize, format) assertStructError(struct.pack, format, 0) assertStructError(struct.unpack, format, b"") def test_p_code(self): # Test p ("Pascal string") code. for code, input, expected, expectedback in [ ('p', b'abc', b'\x00', b''), ('1p', b'abc', b'\x00', b''), ('2p', b'abc', b'\x01a', b'a'), ('3p', b'abc', b'\x02ab', b'ab'), ('4p', b'abc', b'\x03abc', b'abc'), ('5p', b'abc', b'\x03abc\x00', b'abc'), ('6p', b'abc', b'\x03abc\x00\x00', b'abc'), ('1000p', b'x'*1000, b'\xff' + b'x'*999, b'x'*255)]: got = struct.pack(code, input) self.assertEqual(got, expected) (got,) = struct.unpack(code, got) self.assertEqual(got, expectedback) def test_705836(self): # SF bug 705836. "<f" and ">f" had a severe rounding bug, where a carry # from the low-order discarded bits could propagate into the exponent # field, causing the result to be wrong by a factor of 2. for base in range(1, 33): # smaller <- largest representable float less than base. delta = 0.5 while base - delta / 2.0 != base: delta /= 2.0 smaller = base - delta # Packing this rounds away a solid string of trailing 1 bits. packed = struct.pack("<f", smaller) unpacked = struct.unpack("<f", packed)[0] # This failed at base = 2, 4, and 32, with unpacked = 1, 2, and # 16, respectively. self.assertEqual(base, unpacked) bigpacked = struct.pack(">f", smaller) self.assertEqual(bigpacked, string_reverse(packed)) unpacked = struct.unpack(">f", bigpacked)[0] self.assertEqual(base, unpacked) # Largest finite IEEE single. big = (1 << 24) - 1 big = math.ldexp(big, 127 - 23) packed = struct.pack(">f", big) unpacked = struct.unpack(">f", packed)[0] self.assertEqual(big, unpacked) # The same, but tack on a 1 bit so it rounds up to infinity. big = (1 << 25) - 1 big = math.ldexp(big, 127 - 24) self.assertRaises(OverflowError, struct.pack, ">f", big) def test_1530559(self): for code, byteorder in iter_integer_formats(): format = byteorder + code self.assertRaises(struct.error, struct.pack, format, 1.0) self.assertRaises(struct.error, struct.pack, format, 1.5) self.assertRaises(struct.error, struct.pack, 'P', 1.0) self.assertRaises(struct.error, struct.pack, 'P', 1.5) def test_unpack_from(self): test_string = b'abcd01234' fmt = '4s' s = struct.Struct(fmt) for cls in (bytes, bytearray): data = cls(test_string) self.assertEqual(s.unpack_from(data), (b'abcd',)) self.assertEqual(s.unpack_from(data, 2), (b'cd01',)) self.assertEqual(s.unpack_from(data, 4), (b'0123',)) for i in range(6): self.assertEqual(s.unpack_from(data, i), (data[i:i+4],)) for i in range(6, len(test_string) + 1): self.assertRaises(struct.error, s.unpack_from, data, i) for cls in (bytes, bytearray): data = cls(test_string) self.assertEqual(struct.unpack_from(fmt, data), (b'abcd',)) self.assertEqual(struct.unpack_from(fmt, data, 2), (b'cd01',)) self.assertEqual(struct.unpack_from(fmt, data, 4), (b'0123',)) for i in range(6): self.assertEqual(struct.unpack_from(fmt, data, i), (data[i:i+4],)) for i in range(6, len(test_string) + 1): self.assertRaises(struct.error, struct.unpack_from, fmt, data, i) # keyword arguments self.assertEqual(s.unpack_from(buffer=test_string, offset=2), (b'cd01',)) def test_pack_into(self): test_string = b'Reykjavik rocks, eow!' writable_buf = array.array('b', b' '*100) fmt = '21s' s = struct.Struct(fmt) # Test without offset s.pack_into(writable_buf, 0, test_string) from_buf = writable_buf.tobytes()[:len(test_string)] self.assertEqual(from_buf, test_string) # Test with offset. s.pack_into(writable_buf, 10, test_string) from_buf = writable_buf.tobytes()[:len(test_string)+10] self.assertEqual(from_buf, test_string[:10] + test_string) # Go beyond boundaries. small_buf = array.array('b', b' '*10) self.assertRaises((ValueError, struct.error), s.pack_into, small_buf, 0, test_string) self.assertRaises((ValueError, struct.error), s.pack_into, small_buf, 2, test_string) # Test bogus offset (issue 3694) sb = small_buf self.assertRaises((TypeError, struct.error), struct.pack_into, b'', sb, None) def test_pack_into_fn(self): test_string = b'Reykjavik rocks, eow!' writable_buf = array.array('b', b' '*100) fmt = '21s' pack_into = lambda *args: struct.pack_into(fmt, *args) # Test without offset. pack_into(writable_buf, 0, test_string) from_buf = writable_buf.tobytes()[:len(test_string)] self.assertEqual(from_buf, test_string) # Test with offset. pack_into(writable_buf, 10, test_string) from_buf = writable_buf.tobytes()[:len(test_string)+10] self.assertEqual(from_buf, test_string[:10] + test_string) # Go beyond boundaries. small_buf = array.array('b', b' '*10) self.assertRaises((ValueError, struct.error), pack_into, small_buf, 0, test_string) self.assertRaises((ValueError, struct.error), pack_into, small_buf, 2, test_string) def test_unpack_with_buffer(self): # SF bug 1563759: struct.unpack doesn't support buffer protocol objects data1 = array.array('B', b'\x12\x34\x56\x78') data2 = memoryview(b'\x12\x34\x56\x78') # XXX b'......XXXX......', 6, 4 for data in [data1, data2]: value, = struct.unpack('>I', data) self.assertEqual(value, 0x12345678) def test_bool(self): class ExplodingBool(object): def __bool__(self): raise OSError for prefix in tuple("<>!=")+('',): false = (), [], [], '', 0 true = [1], 'test', 5, -1, 0xffffffff+1, 0xffffffff/2 falseFormat = prefix + '?' * len(false) packedFalse = struct.pack(falseFormat, *false) unpackedFalse = struct.unpack(falseFormat, packedFalse) trueFormat = prefix + '?' * len(true) packedTrue = struct.pack(trueFormat, *true) unpackedTrue = struct.unpack(trueFormat, packedTrue) self.assertEqual(len(true), len(unpackedTrue)) self.assertEqual(len(false), len(unpackedFalse)) for t in unpackedFalse: self.assertFalse(t) for t in unpackedTrue: self.assertTrue(t) packed = struct.pack(prefix+'?', 1) self.assertEqual(len(packed), struct.calcsize(prefix+'?')) if len(packed) != 1: self.assertFalse(prefix, msg='encoded bool is not one byte: %r' %packed) try: struct.pack(prefix + '?', ExplodingBool()) except OSError: pass else: self.fail("Expected OSError: struct.pack(%r, " "ExplodingBool())" % (prefix + '?')) for c in [b'\x01', b'\x7f', b'\xff', b'\x0f', b'\xf0']: self.assertTrue(struct.unpack('>?', c)[0]) def test_count_overflow(self): hugecount = '{}b'.format(sys.maxsize+1) self.assertRaises(struct.error, struct.calcsize, hugecount) hugecount2 = '{}b{}H'.format(sys.maxsize//2, sys.maxsize//2) self.assertRaises(struct.error, struct.calcsize, hugecount2) def test_trailing_counter(self): store = array.array('b', b' '*100) # format lists containing only count spec should result in an error self.assertRaises(struct.error, struct.pack, '12345') self.assertRaises(struct.error, struct.unpack, '12345', b'') self.assertRaises(struct.error, struct.pack_into, '12345', store, 0) self.assertRaises(struct.error, struct.unpack_from, '12345', store, 0) # Format lists with trailing count spec should result in an error self.assertRaises(struct.error, struct.pack, 'c12345', 'x') self.assertRaises(struct.error, struct.unpack, 'c12345', b'x') self.assertRaises(struct.error, struct.pack_into, 'c12345', store, 0, 'x') self.assertRaises(struct.error, struct.unpack_from, 'c12345', store, 0) # Mixed format tests self.assertRaises(struct.error, struct.pack, '14s42', 'spam and eggs') self.assertRaises(struct.error, struct.unpack, '14s42', b'spam and eggs') self.assertRaises(struct.error, struct.pack_into, '14s42', store, 0, 'spam and eggs') self.assertRaises(struct.error, struct.unpack_from, '14s42', store, 0) def test_Struct_reinitialization(self): # Issue 9422: there was a memory leak when reinitializing a # Struct instance. This test can be used to detect the leak # when running with regrtest -L. s = struct.Struct('i') s.__init__('ii') def check_sizeof(self, format_str, number_of_codes): # The size of 'PyStructObject' totalsize = support.calcobjsize('2n3P') # The size taken up by the 'formatcode' dynamic array totalsize += struct.calcsize('P3n0P') * (number_of_codes + 1) support.check_sizeof(self, struct.Struct(format_str), totalsize) @support.cpython_only def test__sizeof__(self): for code in integer_codes: self.check_sizeof(code, 1) self.check_sizeof('BHILfdspP', 9) self.check_sizeof('B' * 1234, 1234) self.check_sizeof('fd', 2) self.check_sizeof('xxxxxxxxxxxxxx', 0) self.check_sizeof('100H', 1) self.check_sizeof('187s', 1) self.check_sizeof('20p', 1) self.check_sizeof('0s', 1) self.check_sizeof('0c', 0) def test_boundary_error_message(self): regex1 = ( r'pack_into requires a buffer of at least 6 ' r'bytes for packing 1 bytes at offset 5 ' r'\(actual buffer size is 1\)' ) with self.assertRaisesRegex(struct.error, regex1): struct.pack_into('b', bytearray(1), 5, 1) regex2 = ( r'unpack_from requires a buffer of at least 6 ' r'bytes for unpacking 1 bytes at offset 5 ' r'\(actual buffer size is 1\)' ) with self.assertRaisesRegex(struct.error, regex2): struct.unpack_from('b', bytearray(1), 5) def test_boundary_error_message_with_negative_offset(self): byte_list = bytearray(10) with self.assertRaisesRegex( struct.error, r'no space to pack 4 bytes at offset -2'): struct.pack_into('<I', byte_list, -2, 123) with self.assertRaisesRegex( struct.error, 'offset -11 out of range for 10-byte buffer'): struct.pack_into('<B', byte_list, -11, 123) with self.assertRaisesRegex( struct.error, r'not enough data to unpack 4 bytes at offset -2'): struct.unpack_from('<I', byte_list, -2) with self.assertRaisesRegex( struct.error, "offset -11 out of range for 10-byte buffer"): struct.unpack_from('<B', byte_list, -11) def test_boundary_error_message_with_large_offset(self): # Test overflows cause by large offset and value size (issue 30245) regex1 = ( r'pack_into requires a buffer of at least ' + str(sys.maxsize + 4) + r' bytes for packing 4 bytes at offset ' + str(sys.maxsize) + r' \(actual buffer size is 10\)' ) with self.assertRaisesRegex(struct.error, regex1): struct.pack_into('<I', bytearray(10), sys.maxsize, 1) regex2 = ( r'unpack_from requires a buffer of at least ' + str(sys.maxsize + 4) + r' bytes for unpacking 4 bytes at offset ' + str(sys.maxsize) + r' \(actual buffer size is 10\)' ) with self.assertRaisesRegex(struct.error, regex2): struct.unpack_from('<I', bytearray(10), sys.maxsize) def test_issue29802(self): # When the second argument of struct.unpack() was of wrong type # the Struct object was decrefed twice and the reference to # deallocated object was left in a cache. with self.assertRaises(TypeError): struct.unpack('b', 0) # Shouldn't crash. self.assertEqual(struct.unpack('b', b'a'), (b'a'[0],)) def test_format_attr(self): s = struct.Struct('=i2H') self.assertEqual(s.format, '=i2H') # use a bytes string s2 = struct.Struct(s.format.encode()) self.assertEqual(s2.format, s.format) def test_struct_cleans_up_at_runtime_shutdown(self): code = """if 1: import struct class C: def __init__(self): self.pack = struct.pack def __del__(self): self.pack('I', -42) struct.x = C() """ rc, stdout, stderr = assert_python_ok("-c", code) self.assertEqual(rc, 0) self.assertEqual(stdout.rstrip(), b"") self.assertIn(b"Exception ignored in:", stderr) self.assertIn(b"C.__del__", stderr) def test__struct_reference_cycle_cleaned_up(self): # Regression test for python/cpython#94207. # When we create a new struct module, trigger use of its cache, # and then delete it ... _struct_module = import_helper.import_fresh_module("_struct") module_ref = weakref.ref(_struct_module) _struct_module.calcsize("b") del _struct_module # Then the module should have been garbage collected. gc.collect() self.assertIsNone( module_ref(), "_struct module was not garbage collected") @support.cpython_only def test__struct_types_immutable(self): # See https://github.com/python/cpython/issues/94254 Struct = struct.Struct unpack_iterator = type(struct.iter_unpack("b", b'x')) for cls in (Struct, unpack_iterator): with self.subTest(cls=cls): with self.assertRaises(TypeError): cls.x = 1 def test_issue35714(self): # Embedded null characters should not be allowed in format strings. for s in '\0', '2\0i', b'\0': with self.assertRaisesRegex(struct.error, 'embedded null character'): struct.calcsize(s) class UnpackIteratorTest(unittest.TestCase): """ Tests for iterative unpacking (struct.Struct.iter_unpack). """ def test_construct(self): def _check_iterator(it): self.assertIsInstance(it, abc.Iterator) self.assertIsInstance(it, abc.Iterable) s = struct.Struct('>ibcp') it = s.iter_unpack(b"") _check_iterator(it) it = s.iter_unpack(b"1234567") _check_iterator(it) # Wrong bytes length with self.assertRaises(struct.error): s.iter_unpack(b"123456") with self.assertRaises(struct.error): s.iter_unpack(b"12345678") # Zero-length struct s = struct.Struct('>') with self.assertRaises(struct.error): s.iter_unpack(b"") with self.assertRaises(struct.error): s.iter_unpack(b"12") def test_uninstantiable(self): iter_unpack_type = type(struct.Struct(">ibcp").iter_unpack(b"")) self.assertRaises(TypeError, iter_unpack_type) def test_iterate(self): s = struct.Struct('>IB') b = bytes(range(1, 16)) it = s.iter_unpack(b) self.assertEqual(next(it), (0x01020304, 5)) self.assertEqual(next(it), (0x06070809, 10)) self.assertEqual(next(it), (0x0b0c0d0e, 15)) self.assertRaises(StopIteration, next, it) self.assertRaises(StopIteration, next, it) def test_arbitrary_buffer(self): s = struct.Struct('>IB') b = bytes(range(1, 11)) it = s.iter_unpack(memoryview(b)) self.assertEqual(next(it), (0x01020304, 5)) self.assertEqual(next(it), (0x06070809, 10)) self.assertRaises(StopIteration, next, it) self.assertRaises(StopIteration, next, it) def test_length_hint(self): lh = operator.length_hint s = struct.Struct('>IB') b = bytes(range(1, 16)) it = s.iter_unpack(b) self.assertEqual(lh(it), 3) next(it) self.assertEqual(lh(it), 2) next(it) self.assertEqual(lh(it), 1) next(it) self.assertEqual(lh(it), 0) self.assertRaises(StopIteration, next, it) self.assertEqual(lh(it), 0) def test_module_func(self): # Sanity check for the global struct.iter_unpack() it = struct.iter_unpack('>IB', bytes(range(1, 11))) self.assertEqual(next(it), (0x01020304, 5)) self.assertEqual(next(it), (0x06070809, 10)) self.assertRaises(StopIteration, next, it) self.assertRaises(StopIteration, next, it) def test_half_float(self): # Little-endian examples from: # http://en.wikipedia.org/wiki/Half_precision_floating-point_format format_bits_float__cleanRoundtrip_list = [ (b'\x00\x3c', 1.0), (b'\x00\xc0', -2.0), (b'\xff\x7b', 65504.0), # (max half precision) (b'\x00\x04', 2**-14), # ~= 6.10352 * 10**-5 (min pos normal) (b'\x01\x00', 2**-24), # ~= 5.96046 * 10**-8 (min pos subnormal) (b'\x00\x00', 0.0), (b'\x00\x80', -0.0), (b'\x00\x7c', float('+inf')), (b'\x00\xfc', float('-inf')), (b'\x55\x35', 0.333251953125), # ~= 1/3 ] for le_bits, f in format_bits_float__cleanRoundtrip_list: be_bits = le_bits[::-1] self.assertEqual(f, struct.unpack('<e', le_bits)[0]) self.assertEqual(le_bits, struct.pack('<e', f)) self.assertEqual(f, struct.unpack('>e', be_bits)[0]) self.assertEqual(be_bits, struct.pack('>e', f)) if sys.byteorder == 'little': self.assertEqual(f, struct.unpack('e', le_bits)[0]) self.assertEqual(le_bits, struct.pack('e', f)) else: self.assertEqual(f, struct.unpack('e', be_bits)[0]) self.assertEqual(be_bits, struct.pack('e', f)) # Check for NaN handling: format_bits__nan_list = [ ('<e', b'\x01\xfc'), ('<e', b'\x00\xfe'), ('<e', b'\xff\xff'), ('<e', b'\x01\x7c'), ('<e', b'\x00\x7e'), ('<e', b'\xff\x7f'), ] for formatcode, bits in format_bits__nan_list: self.assertTrue(math.isnan(struct.unpack('<e', bits)[0])) self.assertTrue(math.isnan(struct.unpack('>e', bits[::-1])[0])) # Check that packing produces a bit pattern representing a quiet NaN: # all exponent bits and the msb of the fraction should all be 1. packed = struct.pack('<e', math.nan) self.assertEqual(packed[1] & 0x7e, 0x7e) packed = struct.pack('<e', -math.nan) self.assertEqual(packed[1] & 0x7e, 0x7e) # Checks for round-to-even behavior format_bits_float__rounding_list = [ ('>e', b'\x00\x01', 2.0**-25 + 2.0**-35), # Rounds to minimum subnormal ('>e', b'\x00\x00', 2.0**-25), # Underflows to zero (nearest even mode) ('>e', b'\x00\x00', 2.0**-26), # Underflows to zero ('>e', b'\x03\xff', 2.0**-14 - 2.0**-24), # Largest subnormal. ('>e', b'\x03\xff', 2.0**-14 - 2.0**-25 - 2.0**-65), ('>e', b'\x04\x00', 2.0**-14 - 2.0**-25), ('>e', b'\x04\x00', 2.0**-14), # Smallest normal. ('>e', b'\x3c\x01', 1.0+2.0**-11 + 2.0**-16), # rounds to 1.0+2**(-10) ('>e', b'\x3c\x00', 1.0+2.0**-11), # rounds to 1.0 (nearest even mode) ('>e', b'\x3c\x00', 1.0+2.0**-12), # rounds to 1.0 ('>e', b'\x7b\xff', 65504), # largest normal ('>e', b'\x7b\xff', 65519), # rounds to 65504 ('>e', b'\x80\x01', -2.0**-25 - 2.0**-35), # Rounds to minimum subnormal ('>e', b'\x80\x00', -2.0**-25), # Underflows to zero (nearest even mode) ('>e', b'\x80\x00', -2.0**-26), # Underflows to zero ('>e', b'\xbc\x01', -1.0-2.0**-11 - 2.0**-16), # rounds to 1.0+2**(-10) ('>e', b'\xbc\x00', -1.0-2.0**-11), # rounds to 1.0 (nearest even mode) ('>e', b'\xbc\x00', -1.0-2.0**-12), # rounds to 1.0 ('>e', b'\xfb\xff', -65519), # rounds to 65504 ] for formatcode, bits, f in format_bits_float__rounding_list: self.assertEqual(bits, struct.pack(formatcode, f)) # This overflows, and so raises an error format_bits_float__roundingError_list = [ # Values that round to infinity. ('>e', 65520.0), ('>e', 65536.0), ('>e', 1e300), ('>e', -65520.0), ('>e', -65536.0), ('>e', -1e300), ('<e', 65520.0), ('<e', 65536.0), ('<e', 1e300), ('<e', -65520.0), ('<e', -65536.0), ('<e', -1e300), ] for formatcode, f in format_bits_float__roundingError_list: self.assertRaises(OverflowError, struct.pack, formatcode, f) # Double rounding format_bits_float__doubleRoundingError_list = [ ('>e', b'\x67\xff', 0x1ffdffffff * 2**-26), # should be 2047, if double-rounded 64>32>16, becomes 2048 ] for formatcode, bits, f in format_bits_float__doubleRoundingError_list: self.assertEqual(bits, struct.pack(formatcode, f)) if __name__ == '__main__': unittest.main()