Linux server1.dn-server.com 4.18.0-553.89.1.lve.el8.x86_64 #1 SMP Wed Dec 10 13:58:50 UTC 2025 x86_64
LiteSpeed
Server IP : 195.201.204.189 & Your IP : 216.73.216.188
Domains :
Cant Read [ /etc/named.conf ]
User : beriska1
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
opt /
alt /
python35 /
lib64 /
python3.5 /
test /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
audiodata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
capath
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
cjkencodings
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
data
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
decimaltestdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
eintrdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
encoded_modules
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
imghdrdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
sndhdrdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
subprocessdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
support
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_asyncio
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_email
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_import
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_importlib
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_json
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_tools
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
test_warnings
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
tracedmodules
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
xmltestdata
[ DIR ]
drwxr-xr-x
2026-05-01 04:20
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
2019-11-02 02:32
__init__.py
47
B
-rw-r--r--
2021-09-24 12:03
__main__.py
55
B
-rw-r--r--
2021-09-24 12:03
_test_multiprocessing.py
129.13
KB
-rw-r--r--
2021-09-24 12:03
allsans.pem
2.12
KB
-rw-r--r--
2019-11-02 02:32
audiotests.py
12.13
KB
-rw-r--r--
2021-09-24 12:03
autotest.py
211
B
-rw-r--r--
2021-09-24 12:03
bad_coding.py
24
B
-rw-r--r--
2021-09-24 12:03
bad_coding2.py
30
B
-rw-r--r--
2021-09-24 12:03
badcert.pem
1.88
KB
-rw-r--r--
2019-11-02 02:32
badkey.pem
2.11
KB
-rw-r--r--
2019-11-02 02:32
badsyntax_3131.py
32
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async1.py
45
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async2.py
45
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async3.py
44
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async4.py
27
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async5.py
33
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async6.py
27
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async7.py
35
B
-rw-r--r--
2021-09-24 12:03
badsyntax_async8.py
37
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future10.py
95
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future3.py
172
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future4.py
153
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future5.py
184
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future6.py
161
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future7.py
196
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future8.py
122
B
-rw-r--r--
2021-09-24 12:03
badsyntax_future9.py
142
B
-rw-r--r--
2021-09-24 12:03
badsyntax_pep3120.py
14
B
-rw-r--r--
2021-09-24 12:03
bisect.py
4.83
KB
-rwxr-xr-x
2021-09-24 12:03
bytecode_helper.py
1.56
KB
-rw-r--r--
2021-09-24 12:03
cfgparser.1
21
B
-rw-r--r--
2019-11-02 02:32
cfgparser.2
19.02
KB
-rw-r--r--
2019-11-02 02:32
cfgparser.3
1.55
KB
-rw-r--r--
2019-11-02 02:32
cmath_testcases.txt
133.86
KB
-rw-r--r--
2019-11-02 02:32
coding20731.py
18
B
-rw-r--r--
2021-09-24 12:03
curses_tests.py
1.22
KB
-rwxr-xr-x
2021-09-24 12:03
datetimetester.py
153.48
KB
-rw-r--r--
2021-09-24 12:03
dh1024.pem
300
B
-rw-r--r--
2019-11-02 02:32
dis_module.py
76
B
-rw-r--r--
2021-09-24 12:03
doctest_aliases.py
240
B
-rw-r--r--
2021-09-24 12:03
double_const.py
1.18
KB
-rw-r--r--
2021-09-24 12:03
empty.vbs
70
B
-rw-r--r--
2019-11-02 02:32
exception_hierarchy.txt
1.75
KB
-rw-r--r--
2019-11-02 02:32
final_a.py
411
B
-rw-r--r--
2021-09-24 12:03
final_b.py
411
B
-rw-r--r--
2021-09-24 12:03
floating_points.txt
15.92
KB
-rw-r--r--
2019-11-02 02:32
fork_wait.py
2.29
KB
-rw-r--r--
2021-09-24 12:03
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
2019-11-02 02:32
future_test1.py
229
B
-rw-r--r--
2021-09-24 12:03
future_test2.py
149
B
-rw-r--r--
2021-09-24 12:03
gdb_sample.py
153
B
-rw-r--r--
2021-09-24 12:03
ieee754.txt
3.21
KB
-rw-r--r--
2019-11-02 02:32
imp_dummy.py
63
B
-rw-r--r--
2021-09-24 12:03
inspect_fodder.py
1.14
KB
-rw-r--r--
2021-09-24 12:03
inspect_fodder2.py
1.77
KB
-rw-r--r--
2021-09-24 12:03
keycert.passwd.pem
1.79
KB
-rw-r--r--
2019-11-02 02:32
keycert.pem
1.74
KB
-rw-r--r--
2019-11-02 02:32
keycert2.pem
1.75
KB
-rw-r--r--
2019-11-02 02:32
keycert3.pem
3.96
KB
-rw-r--r--
2019-11-02 02:32
keycert4.pem
3.96
KB
-rw-r--r--
2019-11-02 02:32
list_tests.py
17.96
KB
-rw-r--r--
2021-09-24 12:03
lock_tests.py
27.46
KB
-rw-r--r--
2021-09-24 12:03
mailcap.txt
1.24
KB
-rw-r--r--
2019-11-02 02:32
make_ssl_certs.py
6.63
KB
-rw-r--r--
2021-09-24 12:03
mapping_tests.py
21.49
KB
-rw-r--r--
2021-09-24 12:03
math_testcases.txt
23.19
KB
-rw-r--r--
2019-11-02 02:32
memory_watchdog.py
859
B
-rw-r--r--
2021-09-24 12:03
mime.types
47.37
KB
-rw-r--r--
2019-11-02 02:32
mock_socket.py
3.53
KB
-rw-r--r--
2021-09-24 12:03
mod_generics_cache.py
224
B
-rw-r--r--
2021-09-24 12:03
mp_fork_bomb.py
448
B
-rw-r--r--
2021-09-24 12:03
mp_preload.py
351
B
-rw-r--r--
2021-09-24 12:03
multibytecodec_support.py
14.44
KB
-rw-r--r--
2021-09-24 12:03
nokia.pem
1.88
KB
-rw-r--r--
2019-11-02 02:32
nullbytecert.pem
5.31
KB
-rw-r--r--
2019-11-02 02:32
nullcert.pem
0
B
-rw-r--r--
2019-11-02 02:32
outstanding_bugs.py
370
B
-rw-r--r--
2021-09-24 12:03
pickletester.py
100.52
KB
-rw-r--r--
2021-09-24 12:03
profilee.py
2.97
KB
-rw-r--r--
2021-09-24 12:03
pstats.pck
65.05
KB
-rw-r--r--
2019-11-02 02:32
pycacert.pem
4.21
KB
-rw-r--r--
2019-11-02 02:32
pycakey.pem
1.66
KB
-rw-r--r--
2019-11-02 02:32
pyclbr_input.py
648
B
-rw-r--r--
2021-09-24 12:03
pydoc_mod.py
708
B
-rw-r--r--
2021-09-24 12:03
pydocfodder.py
6.18
KB
-rw-r--r--
2021-09-24 12:03
pystone.py
7.56
KB
-rwxr-xr-x
2021-09-24 12:03
randv2_32.pck
7.34
KB
-rw-r--r--
2019-11-02 02:32
randv2_64.pck
7.19
KB
-rw-r--r--
2019-11-02 02:32
randv3.pck
7.82
KB
-rw-r--r--
2019-11-02 02:32
re_tests.py
31.05
KB
-rwxr-xr-x
2021-09-24 12:03
regrtest.py
67.22
KB
-rwxr-xr-x
2021-09-24 12:03
relimport.py
27
B
-rw-r--r--
2021-09-24 12:03
reperf.py
538
B
-rw-r--r--
2021-09-24 12:03
revocation.crl
625
B
-rw-r--r--
2019-11-02 02:32
sample_doctest.py
1.02
KB
-rw-r--r--
2021-09-24 12:03
sample_doctest_no_docstrings.py
227
B
-rw-r--r--
2021-09-24 12:03
sample_doctest_no_doctests.py
269
B
-rw-r--r--
2021-09-24 12:03
selfsigned_pythontestdotnet.pem
2.08
KB
-rw-r--r--
2019-11-02 02:32
seq_tests.py
14.08
KB
-rw-r--r--
2021-09-24 12:03
sgml_input.html
8.1
KB
-rw-r--r--
2019-11-02 02:32
sha256.pem
8.15
KB
-rw-r--r--
2019-11-02 02:32
sortperf.py
4.69
KB
-rw-r--r--
2021-09-24 12:03
ssl_cert.pem
867
B
-rw-r--r--
2019-11-02 02:32
ssl_key.passwd.pem
963
B
-rw-r--r--
2019-11-02 02:32
ssl_key.pem
916
B
-rw-r--r--
2019-11-02 02:32
ssl_servers.py
7.08
KB
-rw-r--r--
2021-09-24 12:03
ssltests.py
1.03
KB
-rw-r--r--
2021-09-24 12:03
string_tests.py
63.91
KB
-rw-r--r--
2021-09-24 12:03
talos-2019-0758.pem
1.3
KB
-rw-r--r--
2019-11-02 02:32
test___all__.py
3.72
KB
-rw-r--r--
2021-09-24 12:03
test___future__.py
2.36
KB
-rw-r--r--
2021-09-24 12:03
test__locale.py
7.72
KB
-rw-r--r--
2021-09-24 12:03
test__opcode.py
850
B
-rw-r--r--
2021-09-24 12:03
test__osx_support.py
11.4
KB
-rw-r--r--
2021-09-24 12:03
test_abc.py
13.33
KB
-rw-r--r--
2021-09-24 12:03
test_abstract_numbers.py
1.49
KB
-rw-r--r--
2021-09-24 12:03
test_aifc.py
15.98
KB
-rw-r--r--
2021-09-24 12:03
test_argparse.py
160.89
KB
-rw-r--r--
2021-09-24 12:03
test_array.py
46.68
KB
-rw-r--r--
2021-09-24 12:03
test_asdl_parser.py
3.92
KB
-rw-r--r--
2021-09-24 12:03
test_ast.py
43.83
KB
-rw-r--r--
2021-09-24 12:03
test_asynchat.py
11.25
KB
-rw-r--r--
2021-09-24 12:03
test_asyncore.py
25.95
KB
-rw-r--r--
2021-09-24 12:03
test_atexit.py
4.76
KB
-rw-r--r--
2021-09-24 12:03
test_audioop.py
28.05
KB
-rw-r--r--
2021-09-24 12:03
test_augassign.py
7.47
KB
-rw-r--r--
2021-09-24 12:03
test_base64.py
29.77
KB
-rw-r--r--
2021-09-24 12:03
test_bigaddrspace.py
2.92
KB
-rw-r--r--
2021-09-24 12:03
test_bigmem.py
44.18
KB
-rw-r--r--
2021-09-24 12:03
test_binascii.py
14.02
KB
-rw-r--r--
2021-09-24 12:03
test_binhex.py
1.47
KB
-rw-r--r--
2021-09-24 12:03
test_binop.py
12.77
KB
-rw-r--r--
2021-09-24 12:03
test_bisect.py
13.63
KB
-rw-r--r--
2021-09-24 12:03
test_bool.py
11.91
KB
-rw-r--r--
2021-09-24 12:03
test_buffer.py
158.83
KB
-rw-r--r--
2021-09-24 12:03
test_bufio.py
2.54
KB
-rw-r--r--
2021-09-24 12:03
test_builtin.py
65.17
KB
-rw-r--r--
2021-09-24 12:03
test_bytes.py
57.46
KB
-rw-r--r--
2021-09-24 12:03
test_bz2.py
36.49
KB
-rw-r--r--
2021-09-24 12:03
test_calendar.py
43.59
KB
-rw-r--r--
2021-09-24 12:03
test_call.py
3.01
KB
-rw-r--r--
2021-09-24 12:03
test_capi.py
23.21
KB
-rw-r--r--
2021-09-24 12:03
test_cgi.py
19.33
KB
-rw-r--r--
2021-09-24 12:03
test_cgitb.py
2.44
KB
-rw-r--r--
2021-09-24 12:03
test_charmapcodec.py
1.69
KB
-rw-r--r--
2021-09-24 12:03
test_class.py
15.08
KB
-rw-r--r--
2021-09-24 12:03
test_cmath.py
23.03
KB
-rw-r--r--
2021-09-24 12:03
test_cmd.py
6.11
KB
-rw-r--r--
2021-09-24 12:03
test_cmd_line.py
20.01
KB
-rw-r--r--
2021-09-24 12:03
test_cmd_line_script.py
28.18
KB
-rw-r--r--
2021-09-24 12:03
test_code.py
5.13
KB
-rw-r--r--
2021-09-24 12:03
test_code_module.py
4.14
KB
-rw-r--r--
2021-09-24 12:03
test_codeccallbacks.py
40.88
KB
-rw-r--r--
2021-09-24 12:03
test_codecencodings_cn.py
3.88
KB
-rw-r--r--
2021-09-24 12:03
test_codecencodings_hk.py
726
B
-rw-r--r--
2021-09-24 12:03
test_codecencodings_iso2022.py
1.38
KB
-rw-r--r--
2021-09-24 12:03
test_codecencodings_jp.py
4.82
KB
-rw-r--r--
2021-09-24 12:03
test_codecencodings_kr.py
2.98
KB
-rw-r--r--
2021-09-24 12:03
test_codecencodings_tw.py
706
B
-rw-r--r--
2021-09-24 12:03
test_codecmaps_cn.py
771
B
-rw-r--r--
2021-09-24 12:03
test_codecmaps_hk.py
411
B
-rw-r--r--
2021-09-24 12:03
test_codecmaps_jp.py
1.73
KB
-rw-r--r--
2021-09-24 12:03
test_codecmaps_kr.py
1.19
KB
-rw-r--r--
2021-09-24 12:03
test_codecmaps_tw.py
730
B
-rw-r--r--
2021-09-24 12:03
test_codecs.py
118.79
KB
-rw-r--r--
2021-09-24 12:03
test_codeop.py
7.39
KB
-rw-r--r--
2021-09-24 12:03
test_collections.py
62.14
KB
-rw-r--r--
2021-09-24 12:03
test_colorsys.py
3.83
KB
-rw-r--r--
2021-09-24 12:03
test_compare.py
3.82
KB
-rw-r--r--
2021-09-24 12:03
test_compile.py
26.33
KB
-rw-r--r--
2021-09-24 12:03
test_compileall.py
20.61
KB
-rw-r--r--
2021-09-24 12:03
test_complex.py
28.84
KB
-rw-r--r--
2021-09-24 12:03
test_concurrent_futures.py
25.28
KB
-rw-r--r--
2021-09-24 12:03
test_configparser.py
82.34
KB
-rw-r--r--
2021-09-24 12:03
test_contains.py
2.5
KB
-rw-r--r--
2021-09-24 12:03
test_contextlib.py
29.51
KB
-rw-r--r--
2021-09-24 12:03
test_copy.py
25.77
KB
-rw-r--r--
2021-09-24 12:03
test_copyreg.py
4.04
KB
-rw-r--r--
2021-09-24 12:03
test_coroutines.py
47.08
KB
-rw-r--r--
2021-09-24 12:03
test_cprofile.py
5.43
KB
-rw-r--r--
2021-09-24 12:03
test_crashers.py
1.16
KB
-rw-r--r--
2021-09-24 12:03
test_crypt.py
1.06
KB
-rw-r--r--
2021-09-24 12:03
test_csv.py
42.62
KB
-rw-r--r--
2021-09-24 12:03
test_ctypes.py
184
B
-rw-r--r--
2021-09-24 12:03
test_curses.py
17.6
KB
-rw-r--r--
2021-09-24 12:03
test_datetime.py
1.8
KB
-rw-r--r--
2021-09-24 12:03
test_dbm.py
6.05
KB
-rw-r--r--
2021-09-24 12:03
test_dbm_dumb.py
7.99
KB
-rw-r--r--
2021-09-24 12:03
test_dbm_gnu.py
3.28
KB
-rw-r--r--
2021-09-24 12:03
test_dbm_ndbm.py
2.17
KB
-rw-r--r--
2021-09-24 12:03
test_decimal.py
204.64
KB
-rw-r--r--
2021-09-24 12:03
test_decorators.py
9.48
KB
-rw-r--r--
2021-09-24 12:03
test_defaultdict.py
5.89
KB
-rw-r--r--
2021-09-24 12:03
test_deque.py
32.56
KB
-rw-r--r--
2021-09-24 12:03
test_descr.py
182.08
KB
-rw-r--r--
2021-09-24 12:03
test_descrtut.py
11.5
KB
-rw-r--r--
2021-09-24 12:03
test_devpoll.py
4.53
KB
-rw-r--r--
2021-09-24 12:03
test_dict.py
33.19
KB
-rw-r--r--
2021-09-24 12:03
test_dictcomps.py
3.69
KB
-rw-r--r--
2021-09-24 12:03
test_dictviews.py
10.13
KB
-rw-r--r--
2021-09-24 12:03
test_difflib.py
19.15
KB
-rw-r--r--
2021-09-24 12:03
test_difflib_expect.html
100.86
KB
-rw-r--r--
2019-11-02 02:32
test_dis.py
42.14
KB
-rw-r--r--
2021-09-24 12:03
test_distutils.py
375
B
-rw-r--r--
2021-09-24 12:03
test_doctest.py
93.24
KB
-rw-r--r--
2021-09-24 12:03
test_doctest.txt
300
B
-rw-r--r--
2019-11-02 02:32
test_doctest2.py
2.3
KB
-rw-r--r--
2021-09-24 12:03
test_doctest2.txt
392
B
-rw-r--r--
2019-11-02 02:32
test_doctest3.txt
82
B
-rw-r--r--
2019-11-02 02:32
test_doctest4.txt
244
B
-rw-r--r--
2019-11-02 02:32
test_docxmlrpc.py
8.73
KB
-rw-r--r--
2021-09-24 12:03
test_dummy_thread.py
9.16
KB
-rw-r--r--
2021-09-24 12:03
test_dummy_threading.py
1.7
KB
-rw-r--r--
2021-09-24 12:03
test_dynamic.py
4.31
KB
-rw-r--r--
2021-09-24 12:03
test_dynamicclassattribute.py
9.57
KB
-rw-r--r--
2021-09-24 12:03
test_eintr.py
687
B
-rw-r--r--
2021-09-24 12:03
test_ensurepip.py
11.4
KB
-rw-r--r--
2021-09-24 12:03
test_enum.py
60.52
KB
-rw-r--r--
2021-09-24 12:03
test_enumerate.py
7.68
KB
-rw-r--r--
2021-09-24 12:03
test_eof.py
803
B
-rw-r--r--
2021-09-24 12:03
test_epoll.py
8.62
KB
-rw-r--r--
2021-09-24 12:03
test_errno.py
1.04
KB
-rw-r--r--
2021-09-24 12:03
test_exception_variations.py
3.86
KB
-rw-r--r--
2021-09-24 12:03
test_exceptions.py
40.46
KB
-rw-r--r--
2021-09-24 12:03
test_extcall.py
11.52
KB
-rw-r--r--
2021-09-24 12:03
test_faulthandler.py
23.45
KB
-rw-r--r--
2021-09-24 12:03
test_fcntl.py
5.1
KB
-rw-r--r--
2021-09-24 12:03
test_file.py
11.09
KB
-rw-r--r--
2021-09-24 12:03
test_file_eintr.py
10.6
KB
-rw-r--r--
2021-09-24 12:03
test_filecmp.py
8.69
KB
-rw-r--r--
2021-09-24 12:03
test_fileinput.py
36.77
KB
-rw-r--r--
2021-09-24 12:03
test_fileio.py
18.57
KB
-rw-r--r--
2021-09-24 12:03
test_finalization.py
14.16
KB
-rw-r--r--
2021-09-24 12:03
test_float.py
60.05
KB
-rw-r--r--
2021-09-24 12:03
test_flufl.py
750
B
-rw-r--r--
2021-09-24 12:03
test_fnmatch.py
4.69
KB
-rw-r--r--
2021-09-24 12:03
test_fork1.py
3.74
KB
-rw-r--r--
2021-09-24 12:03
test_format.py
22.57
KB
-rw-r--r--
2021-09-24 12:03
test_fractions.py
25.84
KB
-rw-r--r--
2021-09-24 12:03
test_frame.py
4.37
KB
-rw-r--r--
2021-09-24 12:03
test_ftplib.py
37.08
KB
-rw-r--r--
2021-09-24 12:03
test_funcattrs.py
12.7
KB
-rw-r--r--
2021-09-24 12:03
test_functools.py
74.47
KB
-rw-r--r--
2021-09-24 12:03
test_future.py
3.74
KB
-rw-r--r--
2021-09-24 12:03
test_future3.py
490
B
-rw-r--r--
2021-09-24 12:03
test_future4.py
105
B
-rw-r--r--
2021-09-24 12:03
test_future5.py
510
B
-rw-r--r--
2021-09-24 12:03
test_gc.py
33.37
KB
-rw-r--r--
2021-09-24 12:03
test_gdb.py
36.38
KB
-rw-r--r--
2021-09-24 12:03
test_generators.py
58.2
KB
-rw-r--r--
2021-09-24 12:03
test_genericpath.py
18.36
KB
-rw-r--r--
2021-09-24 12:03
test_genexps.py
7.12
KB
-rw-r--r--
2021-09-24 12:03
test_getargs2.py
36.1
KB
-rw-r--r--
2021-09-24 12:03
test_getopt.py
6.75
KB
-rw-r--r--
2021-09-24 12:03
test_getpass.py
6.29
KB
-rw-r--r--
2021-09-24 12:03
test_gettext.py
32.8
KB
-rw-r--r--
2021-09-24 12:03
test_glob.py
12.39
KB
-rw-r--r--
2021-09-24 12:03
test_global.py
1.25
KB
-rw-r--r--
2021-09-24 12:03
test_grammar.py
36.48
KB
-rw-r--r--
2021-09-24 12:03
test_grp.py
3.22
KB
-rw-r--r--
2021-09-24 12:03
test_gzip.py
22.27
KB
-rw-r--r--
2021-09-24 12:03
test_hash.py
11.44
KB
-rw-r--r--
2021-09-24 12:03
test_hashlib.py
21.44
KB
-rw-r--r--
2021-09-24 12:03
test_heapq.py
14.64
KB
-rw-r--r--
2021-09-24 12:03
test_hmac.py
20.03
KB
-rw-r--r--
2021-09-24 12:03
test_html.py
4.23
KB
-rw-r--r--
2021-09-24 12:03
test_htmlparser.py
31.96
KB
-rw-r--r--
2021-09-24 12:03
test_http_cookiejar.py
74.54
KB
-rw-r--r--
2021-09-24 12:03
test_http_cookies.py
18.17
KB
-rw-r--r--
2021-09-24 12:03
test_httplib.py
65.96
KB
-rw-r--r--
2021-09-24 12:03
test_httpservers.py
38.29
KB
-rw-r--r--
2021-09-24 12:03
test_idle.py
756
B
-rw-r--r--
2021-09-24 12:03
test_imaplib.py
35.46
KB
-rw-r--r--
2021-09-24 12:03
test_imghdr.py
4.37
KB
-rw-r--r--
2021-09-24 12:03
test_imp.py
15.41
KB
-rw-r--r--
2021-09-24 12:03
test_index.py
8.37
KB
-rw-r--r--
2021-09-24 12:03
test_inspect.py
136.84
KB
-rw-r--r--
2021-09-24 12:03
test_int.py
17.71
KB
-rw-r--r--
2021-09-24 12:03
test_int_literal.py
6.89
KB
-rw-r--r--
2021-09-24 12:03
test_io.py
144.79
KB
-rw-r--r--
2021-09-24 12:03
test_ioctl.py
3.19
KB
-rw-r--r--
2021-09-24 12:03
test_ipaddress.py
85.14
KB
-rw-r--r--
2021-09-24 12:03
test_isinstance.py
9.77
KB
-rw-r--r--
2021-09-24 12:03
test_iter.py
31.25
KB
-rw-r--r--
2021-09-24 12:03
test_iterlen.py
7.12
KB
-rw-r--r--
2021-09-24 12:03
test_itertools.py
91.42
KB
-rw-r--r--
2021-09-24 12:03
test_keyword.py
5.7
KB
-rw-r--r--
2021-09-24 12:03
test_keywordonlyarg.py
7.05
KB
-rw-r--r--
2021-09-24 12:03
test_kqueue.py
8.14
KB
-rw-r--r--
2021-09-24 12:03
test_largefile.py
6.4
KB
-rw-r--r--
2021-09-24 12:03
test_lib2to3.py
101
B
-rw-r--r--
2021-09-24 12:03
test_linecache.py
6.43
KB
-rw-r--r--
2021-09-24 12:03
test_list.py
5.33
KB
-rw-r--r--
2021-09-24 12:03
test_listcomps.py
3.76
KB
-rw-r--r--
2021-09-24 12:03
test_locale.py
21.84
KB
-rw-r--r--
2021-09-24 12:03
test_logging.py
147.04
KB
-rw-r--r--
2021-09-24 12:03
test_long.py
48.38
KB
-rw-r--r--
2021-09-24 12:03
test_longexp.py
233
B
-rw-r--r--
2021-09-24 12:03
test_lzma.py
76.59
KB
-rw-r--r--
2021-09-24 12:03
test_macpath.py
6.04
KB
-rw-r--r--
2021-09-24 12:03
test_macurl2path.py
1.8
KB
-rw-r--r--
2021-09-24 12:03
test_mailbox.py
90.51
KB
-rw-r--r--
2021-09-24 12:03
test_mailcap.py
9.89
KB
-rw-r--r--
2021-09-24 12:03
test_marshal.py
17.7
KB
-rw-r--r--
2021-09-24 12:03
test_math.py
53.51
KB
-rw-r--r--
2021-09-24 12:03
test_memoryio.py
30.24
KB
-rw-r--r--
2021-09-24 12:03
test_memoryview.py
17.44
KB
-rw-r--r--
2021-09-24 12:03
test_metaclass.py
6.2
KB
-rw-r--r--
2021-09-24 12:03
test_mimetypes.py
4.08
KB
-rw-r--r--
2021-09-24 12:03
test_minidom.py
63.91
KB
-rw-r--r--
2021-09-24 12:03
test_mmap.py
27.3
KB
-rw-r--r--
2021-09-24 12:03
test_module.py
8.44
KB
-rw-r--r--
2021-09-24 12:03
test_modulefinder.py
9.05
KB
-rw-r--r--
2021-09-24 12:03
test_msilib.py
1.38
KB
-rw-r--r--
2021-09-24 12:03
test_multibytecodec.py
10.07
KB
-rw-r--r--
2021-09-24 12:03
test_multiprocessing_fork.py
174
B
-rw-r--r--
2021-09-24 12:03
test_multiprocessing_forkserver.py
180
B
-rw-r--r--
2021-09-24 12:03
test_multiprocessing_main_handling.py
11.26
KB
-rw-r--r--
2021-09-24 12:03
test_multiprocessing_spawn.py
175
B
-rw-r--r--
2021-09-24 12:03
test_netrc.py
4.5
KB
-rw-r--r--
2021-09-24 12:03
test_nis.py
1.14
KB
-rw-r--r--
2021-09-24 12:03
test_nntplib.py
60.53
KB
-rw-r--r--
2021-09-24 12:03
test_normalization.py
3.34
KB
-rw-r--r--
2021-09-24 12:03
test_ntpath.py
21.4
KB
-rw-r--r--
2021-09-24 12:03
test_numeric_tower.py
7.18
KB
-rw-r--r--
2021-09-24 12:03
test_opcodes.py
2.53
KB
-rw-r--r--
2021-09-24 12:03
test_openpty.py
600
B
-rw-r--r--
2021-09-24 12:03
test_operator.py
22.78
KB
-rw-r--r--
2021-09-24 12:03
test_optparse.py
60.8
KB
-rw-r--r--
2021-09-24 12:03
test_ordered_dict.py
26
KB
-rw-r--r--
2021-09-24 12:03
test_os.py
120.02
KB
-rw-r--r--
2021-09-24 12:03
test_ossaudiodev.py
7.05
KB
-rw-r--r--
2021-09-24 12:03
test_osx_env.py
1.3
KB
-rw-r--r--
2021-09-24 12:03
test_parser.py
29.6
KB
-rw-r--r--
2021-09-24 12:03
test_pathlib.py
85.31
KB
-rw-r--r--
2021-09-24 12:03
test_pdb.py
34.08
KB
-rw-r--r--
2021-09-24 12:03
test_peepholer.py
12.33
KB
-rw-r--r--
2021-09-24 12:03
test_pep247.py
2.12
KB
-rw-r--r--
2021-09-24 12:03
test_pep277.py
6.84
KB
-rw-r--r--
2021-09-24 12:03
test_pep3120.py
1.15
KB
-rw-r--r--
2021-09-24 12:03
test_pep3131.py
902
B
-rw-r--r--
2021-09-24 12:03
test_pep3151.py
7.24
KB
-rw-r--r--
2021-09-24 12:03
test_pep352.py
6.88
KB
-rw-r--r--
2021-09-24 12:03
test_pep380.py
28.8
KB
-rw-r--r--
2021-09-24 12:03
test_pep479.py
943
B
-rw-r--r--
2021-09-24 12:03
test_pickle.py
16.07
KB
-rw-r--r--
2021-09-24 12:03
test_pickletools.py
2.37
KB
-rw-r--r--
2021-09-24 12:03
test_pipes.py
6.32
KB
-rw-r--r--
2021-09-24 12:03
test_pkg.py
9.48
KB
-rw-r--r--
2021-09-24 12:03
test_pkgimport.py
2.67
KB
-rw-r--r--
2021-09-24 12:03
test_pkgutil.py
17.13
KB
-rw-r--r--
2021-09-24 12:03
test_platform.py
14.44
KB
-rw-r--r--
2021-09-24 12:03
test_plistlib.py
23.38
KB
-rw-r--r--
2021-09-24 12:03
test_poll.py
6.46
KB
-rw-r--r--
2021-09-24 12:03
test_popen.py
1.98
KB
-rw-r--r--
2021-09-24 12:03
test_poplib.py
16.25
KB
-rw-r--r--
2021-09-24 12:03
test_posix.py
51.69
KB
-rw-r--r--
2021-09-24 12:03
test_posixpath.py
26.01
KB
-rw-r--r--
2021-09-24 12:03
test_pow.py
4.38
KB
-rw-r--r--
2021-09-24 12:03
test_pprint.py
43.49
KB
-rw-r--r--
2021-09-24 12:03
test_print.py
4.16
KB
-rw-r--r--
2021-09-24 12:03
test_profile.py
7.61
KB
-rw-r--r--
2021-09-24 12:03
test_property.py
8.34
KB
-rw-r--r--
2021-09-24 12:03
test_pstats.py
1.17
KB
-rw-r--r--
2021-09-24 12:03
test_pty.py
10.9
KB
-rw-r--r--
2021-09-24 12:03
test_pulldom.py
12.08
KB
-rw-r--r--
2021-09-24 12:03
test_pwd.py
4.08
KB
-rw-r--r--
2021-09-24 12:03
test_py_compile.py
5.21
KB
-rw-r--r--
2021-09-24 12:03
test_pyclbr.py
6.79
KB
-rw-r--r--
2021-09-24 12:03
test_pydoc.py
39.47
KB
-rw-r--r--
2021-09-24 12:03
test_pyexpat.py
26.52
KB
-rw-r--r--
2021-09-24 12:03
test_queue.py
12.71
KB
-rw-r--r--
2021-09-24 12:03
test_quopri.py
7.78
KB
-rw-r--r--
2021-09-24 12:03
test_raise.py
11.03
KB
-rw-r--r--
2021-09-24 12:03
test_random.py
32.47
KB
-rw-r--r--
2021-09-24 12:03
test_range.py
24.19
KB
-rw-r--r--
2021-09-24 12:03
test_re.py
88.39
KB
-rw-r--r--
2021-09-24 12:03
test_readline.py
11.42
KB
-rw-r--r--
2021-09-24 12:03
test_regrtest.py
34.03
KB
-rw-r--r--
2021-09-24 12:03
test_reprlib.py
15.12
KB
-rw-r--r--
2021-09-24 12:03
test_resource.py
6.98
KB
-rw-r--r--
2021-09-24 12:03
test_richcmp.py
10.77
KB
-rw-r--r--
2021-09-24 12:03
test_rlcompleter.py
4.68
KB
-rw-r--r--
2021-09-24 12:03
test_robotparser.py
7.35
KB
-rw-r--r--
2021-09-24 12:03
test_runpy.py
30.95
KB
-rw-r--r--
2021-09-24 12:03
test_sax.py
43.59
KB
-rw-r--r--
2021-09-24 12:03
test_sched.py
6.43
KB
-rw-r--r--
2021-09-24 12:03
test_scope.py
19.7
KB
-rw-r--r--
2021-09-24 12:03
test_script_helper.py
5.02
KB
-rw-r--r--
2021-09-24 12:03
test_select.py
2.65
KB
-rw-r--r--
2021-09-24 12:03
test_selectors.py
16.27
KB
-rw-r--r--
2021-09-24 12:03
test_set.py
63.58
KB
-rw-r--r--
2021-09-24 12:03
test_setcomps.py
3.7
KB
-rw-r--r--
2021-09-24 12:03
test_shelve.py
6.24
KB
-rw-r--r--
2021-09-24 12:03
test_shlex.py
6.09
KB
-rw-r--r--
2021-09-24 12:03
test_shutil.py
74.79
KB
-rw-r--r--
2021-09-24 12:03
test_signal.py
38.1
KB
-rw-r--r--
2021-09-24 12:03
test_site.py
19.2
KB
-rw-r--r--
2021-09-24 12:03
test_slice.py
8.25
KB
-rw-r--r--
2021-09-24 12:03
test_smtpd.py
40.7
KB
-rw-r--r--
2021-09-24 12:03
test_smtplib.py
48.76
KB
-rw-r--r--
2021-09-24 12:03
test_smtpnet.py
2.7
KB
-rw-r--r--
2021-09-24 12:03
test_sndhdr.py
1.43
KB
-rw-r--r--
2021-09-24 12:03
test_socket.py
198.65
KB
-rw-r--r--
2021-09-24 12:03
test_socketserver.py
10.42
KB
-rw-r--r--
2021-09-24 12:03
test_sort.py
8.47
KB
-rw-r--r--
2021-09-24 12:03
test_source_encoding.py
7.88
KB
-rw-r--r--
2021-09-24 12:03
test_spwd.py
2.29
KB
-rw-r--r--
2021-09-24 12:03
test_sqlite.py
893
B
-rw-r--r--
2021-09-24 12:03
test_ssl.py
151.89
KB
-rw-r--r--
2021-09-24 12:03
test_startfile.py
1.17
KB
-rw-r--r--
2021-09-24 12:03
test_stat.py
7.99
KB
-rw-r--r--
2021-09-24 12:03
test_statistics.py
68.88
KB
-rw-r--r--
2021-09-24 12:03
test_strftime.py
7.42
KB
-rw-r--r--
2021-09-24 12:03
test_string.py
17.73
KB
-rw-r--r--
2021-09-24 12:03
test_stringprep.py
3.04
KB
-rw-r--r--
2021-09-24 12:03
test_strlit.py
7.96
KB
-rw-r--r--
2021-09-24 12:03
test_strptime.py
28.83
KB
-rw-r--r--
2021-09-24 12:03
test_strtod.py
20.06
KB
-rw-r--r--
2021-09-24 12:03
test_struct.py
26.99
KB
-rw-r--r--
2021-09-24 12:03
test_structmembers.py
4.7
KB
-rw-r--r--
2021-09-24 12:03
test_structseq.py
3.87
KB
-rw-r--r--
2021-09-24 12:03
test_subprocess.py
118.75
KB
-rw-r--r--
2021-09-24 12:03
test_sunau.py
4.55
KB
-rw-r--r--
2021-09-24 12:03
test_sundry.py
2.08
KB
-rw-r--r--
2021-09-24 12:03
test_super.py
4.73
KB
-rw-r--r--
2021-09-24 12:03
test_support.py
12.39
KB
-rw-r--r--
2021-09-24 12:03
test_symtable.py
6.17
KB
-rw-r--r--
2021-09-24 12:03
test_syntax.py
18.75
KB
-rw-r--r--
2021-09-24 12:03
test_sys.py
44.78
KB
-rw-r--r--
2021-09-24 12:03
test_sys_setprofile.py
10.9
KB
-rw-r--r--
2021-09-24 12:03
test_sys_settrace.py
24.93
KB
-rw-r--r--
2021-09-24 12:03
test_sysconfig.py
17.68
KB
-rw-r--r--
2021-09-24 12:03
test_syslog.py
1.15
KB
-rw-r--r--
2021-09-24 12:03
test_tarfile.py
91.51
KB
-rw-r--r--
2021-09-24 12:03
test_tcl.py
27.43
KB
-rw-r--r--
2021-09-24 12:03
test_telnetlib.py
12.56
KB
-rw-r--r--
2021-09-24 12:03
test_tempfile.py
50.21
KB
-rw-r--r--
2021-09-24 12:03
test_textwrap.py
37.69
KB
-rw-r--r--
2021-09-24 12:03
test_thread.py
8.06
KB
-rw-r--r--
2021-09-24 12:03
test_threaded_import.py
8.52
KB
-rw-r--r--
2021-09-24 12:03
test_threadedtempfile.py
1.89
KB
-rw-r--r--
2021-09-24 12:03
test_threading.py
38.92
KB
-rw-r--r--
2021-09-24 12:03
test_threading_local.py
6.13
KB
-rw-r--r--
2021-09-24 12:03
test_threadsignals.py
9.22
KB
-rw-r--r--
2021-09-24 12:03
test_time.py
38.01
KB
-rw-r--r--
2021-09-24 12:03
test_timeit.py
13.61
KB
-rw-r--r--
2021-09-24 12:03
test_timeout.py
11.11
KB
-rw-r--r--
2021-09-24 12:03
test_tix.py
756
B
-rw-r--r--
2021-09-24 12:03
test_tk.py
362
B
-rw-r--r--
2021-09-24 12:03
test_tokenize.py
58.62
KB
-rw-r--r--
2021-09-24 12:03
test_trace.py
14.58
KB
-rw-r--r--
2021-09-24 12:03
test_traceback.py
34.72
KB
-rw-r--r--
2021-09-24 12:03
test_tracemalloc.py
30.1
KB
-rw-r--r--
2021-09-24 12:03
test_ttk_guionly.py
756
B
-rw-r--r--
2021-09-24 12:03
test_ttk_textonly.py
309
B
-rw-r--r--
2021-09-24 12:03
test_tuple.py
7.35
KB
-rw-r--r--
2021-09-24 12:03
test_turtle.py
12.36
KB
-rw-r--r--
2021-09-24 12:03
test_typechecks.py
2.55
KB
-rw-r--r--
2021-09-24 12:03
test_types.py
52.54
KB
-rw-r--r--
2021-09-24 12:03
test_typing.py
79.92
KB
-rw-r--r--
2021-09-24 12:03
test_ucn.py
9.35
KB
-rw-r--r--
2021-09-24 12:03
test_unary.py
1.63
KB
-rw-r--r--
2021-09-24 12:03
test_unicode.py
127.39
KB
-rw-r--r--
2021-09-24 12:03
test_unicode_file.py
5.73
KB
-rw-r--r--
2021-09-24 12:03
test_unicodedata.py
11.89
KB
-rw-r--r--
2021-09-24 12:03
test_unittest.py
286
B
-rw-r--r--
2021-09-24 12:03
test_univnewlines.py
3.83
KB
-rw-r--r--
2021-09-24 12:03
test_unpack.py
2.57
KB
-rw-r--r--
2021-09-24 12:03
test_unpack_ex.py
8.74
KB
-rw-r--r--
2021-09-24 12:03
test_urllib.py
66.43
KB
-rw-r--r--
2021-09-24 12:03
test_urllib2.py
71.83
KB
-rw-r--r--
2021-09-24 12:03
test_urllib2_localnet.py
24.11
KB
-rw-r--r--
2021-09-24 12:03
test_urllib2net.py
12.36
KB
-rw-r--r--
2021-09-24 12:03
test_urllib_response.py
1.69
KB
-rw-r--r--
2021-09-24 12:03
test_urllibnet.py
8.84
KB
-rw-r--r--
2021-09-24 12:03
test_urlparse.py
55.89
KB
-rw-r--r--
2021-09-24 12:03
test_userdict.py
7.66
KB
-rw-r--r--
2021-09-24 12:03
test_userlist.py
1.82
KB
-rw-r--r--
2021-09-24 12:03
test_userstring.py
1.46
KB
-rw-r--r--
2021-09-24 12:03
test_uu.py
7.39
KB
-rw-r--r--
2021-09-24 12:03
test_uuid.py
22.12
KB
-rw-r--r--
2021-09-24 12:03
test_venv.py
17.43
KB
-rw-r--r--
2021-09-24 12:03
test_wait3.py
1.16
KB
-rw-r--r--
2021-09-24 12:03
test_wait4.py
1.15
KB
-rw-r--r--
2021-09-24 12:03
test_wave.py
3.93
KB
-rw-r--r--
2021-09-24 12:03
test_weakref.py
64.45
KB
-rw-r--r--
2021-09-24 12:03
test_weakset.py
15.08
KB
-rw-r--r--
2021-09-24 12:03
test_webbrowser.py
6.32
KB
-rw-r--r--
2021-09-24 12:03
test_winreg.py
20.52
KB
-rw-r--r--
2021-09-24 12:03
test_winsound.py
3.72
KB
-rw-r--r--
2021-09-24 12:03
test_with.py
25.68
KB
-rw-r--r--
2021-09-24 12:03
test_wsgiref.py
27.08
KB
-rw-r--r--
2021-09-24 12:03
test_xdrlib.py
2.17
KB
-rw-r--r--
2021-09-24 12:03
test_xml_dom_minicompat.py
4.18
KB
-rw-r--r--
2021-09-24 12:03
test_xml_etree.py
112.18
KB
-rw-r--r--
2021-09-24 12:03
test_xml_etree_c.py
4.3
KB
-rw-r--r--
2021-09-24 12:03
test_xmlrpc.py
51.75
KB
-rw-r--r--
2021-09-24 12:03
test_xmlrpc_net.py
1.03
KB
-rw-r--r--
2021-09-24 12:03
test_zipapp.py
13.74
KB
-rw-r--r--
2021-09-24 12:03
test_zipfile.py
85.1
KB
-rw-r--r--
2021-09-24 12:03
test_zipfile64.py
5.72
KB
-rw-r--r--
2021-09-24 12:03
test_zipimport.py
26.9
KB
-rw-r--r--
2021-09-24 12:03
test_zipimport_support.py
10.47
KB
-rw-r--r--
2021-09-24 12:03
test_zlib.py
32.46
KB
-rw-r--r--
2021-09-24 12:03
testcodec.py
1.02
KB
-rw-r--r--
2021-09-24 12:03
testtar.tar
425
KB
-rw-r--r--
2019-11-02 02:32
tf_inherit_check.py
714
B
-rw-r--r--
2021-09-24 12:03
threaded_import_hangers.py
1.45
KB
-rw-r--r--
2021-09-24 12:03
time_hashlib.py
2.83
KB
-rw-r--r--
2021-09-24 12:03
tokenize_tests-latin1-coding-cookie-and-utf8-bom-sig.txt
444
B
-rw-r--r--
2019-11-02 02:32
tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txt
303
B
-rw-r--r--
2019-11-02 02:32
tokenize_tests-utf8-coding-cookie-and-no-utf8-bom-sig.txt
421
B
-rw-r--r--
2019-11-02 02:32
tokenize_tests-utf8-coding-cookie-and-utf8-bom-sig.txt
327
B
-rw-r--r--
2019-11-02 02:32
tokenize_tests.txt
2.65
KB
-rw-r--r--
2019-11-02 02:32
win_console_handler.py
1.38
KB
-rw-r--r--
2021-09-24 12:03
wrongcert.pem
1.84
KB
-rw-r--r--
2019-11-02 02:32
xmltests.py
499
B
-rw-r--r--
2021-09-24 12:03
zip_cp437_header.zip
270
B
-rw-r--r--
2019-11-02 02:32
zipdir.zip
374
B
-rw-r--r--
2019-11-02 02:32
Save
Rename
"""Test the arraymodule. Roger E. Masse """ import unittest from test import support import weakref import pickle import operator import io import math import struct import sys import warnings import array from array import _array_reconstructor as array_reconstructor try: # Try to determine availability of long long independently # of the array module under test struct.calcsize('@q') have_long_long = True except struct.error: have_long_long = False 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 = "ubBhHiIlLfd" if have_long_long: typecodes += 'qQ' class MiscTest(unittest.TestCase): 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') 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): 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(type(it), type(itorig)) self.assertEqual(list(it), data2) 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) support.unlink(support.TESTFN) f = open(support.TESTFN, 'wb') try: a.tofile(f) f.close() b = array.array(self.typecode) f = open(support.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() support.unlink(support.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(support.TESTFN, 'wb') try: self.assertRaises(OSError, a.fromfile, f, len(self.example)) finally: f.close() support.unlink(support.TESTFN) def test_filewrite(self): a = array.array(self.typecode, 2*self.example) f = open(support.TESTFN, 'wb') try: f.write(a) f.close() b = array.array(self.typecode) f = open(support.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() support.unlink(support.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_tofromstring(self): # Warnings not raised when arguments are incorrect as Argument Clinic # handles that before the warning can be raised. nb_warnings = 2 with warnings.catch_warnings(record=True) as r: warnings.filterwarnings("always", message=r"(to|from)string\(\) is deprecated", category=DeprecationWarning) a = array.array(self.typecode, 2*self.example) b = array.array(self.typecode) self.assertRaises(TypeError, a.tostring, 42) self.assertRaises(TypeError, b.fromstring) self.assertRaises(TypeError, b.fromstring, 42) b.fromstring(a.tostring()) self.assertEqual(a, b) if a.itemsize>1: self.assertRaises(ValueError, b.fromstring, "x") nb_warnings += 1 self.assertEqual(len(r), nb_warnings) 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, -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, -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) 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 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) 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 __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 @unittest.skipIf(not have_long_long, 'need long long support') class LongLongTest(SignedNumberTest, unittest.TestCase): typecode = 'q' minitemsize = 8 @unittest.skipIf(not have_long_long, 'need long long support') 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_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") if __name__ == "__main__": unittest.main()