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.217.130
Domains :
Cant Read [ /etc/named.conf ]
User : beriska1
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
opt /
alt /
python312 /
lib64 /
python3.12 /
test /
Delete
Unzip
Name
Size
Permission
Date
Action
__pycache__
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
audiodata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
certdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
cjkencodings
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
configdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
crashers
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
data
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
decimaltestdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
dtracedata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
encoded_modules
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
imghdrdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
leakers
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
libregrtest
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
regrtestdata
[ DIR ]
drwxr-xr-x
2026-04-20 11:15
sndhdrdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
subprocessdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
support
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_ast
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_asyncio
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_capi
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_cext
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_concurrent_futures
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_cppext
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_ctypes
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_dataclasses
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_doctest
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_email
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_future_stmt
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_gdb
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_import
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_importlib
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_inspect
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_json
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_lib2to3
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_module
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_multiprocessing_fork
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_multiprocessing_forkserver
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_multiprocessing_spawn
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_peg_generator
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_pydoc
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_sqlite3
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_tkinter
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_tomllib
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_tools
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_ttk
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_unittest
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_warnings
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_zipfile
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
test_zoneinfo
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
tokenizedata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
tracedmodules
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
translationdata
[ DIR ]
drwxr-xr-x
2026-04-20 11:15
typinganndata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
wheeldata
[ DIR ]
drwxr-xr-x
2026-05-05 23:12
xmltestdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
ziptestdata
[ DIR ]
drwxr-xr-x
2026-05-05 23:07
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
2026-03-03 16:09
__init__.py
47
B
-rw-r--r--
2026-04-20 11:09
__main__.py
67
B
-rw-r--r--
2026-04-20 11:09
_test_atexit.py
3.61
KB
-rw-r--r--
2026-04-20 11:09
_test_eintr.py
17.72
KB
-rw-r--r--
2026-04-20 11:09
_test_embed_set_config.py
8.64
KB
-rw-r--r--
2026-04-20 11:09
_test_embed_structseq.py
1.99
KB
-rw-r--r--
2026-04-20 11:09
_test_multiprocessing.py
216.26
KB
-rw-r--r--
2026-04-20 11:09
_test_venv_multiprocessing.py
796
B
-rw-r--r--
2026-04-20 11:09
archiver_tests.py
6.1
KB
-rw-r--r--
2026-04-20 11:09
audiotest.au
27.48
KB
-rw-r--r--
2026-03-03 16:09
audiotests.py
12.13
KB
-rw-r--r--
2026-04-20 11:09
audit-tests.py
13.76
KB
-rw-r--r--
2026-04-20 11:09
autotest.py
214
B
-rw-r--r--
2026-04-20 11:09
bisect_cmd.py
5.36
KB
-rwxr-xr-x
2026-04-20 11:09
clinic.test.c
139.1
KB
-rw-r--r--
2026-03-03 16:09
cmath_testcases.txt
141.2
KB
-rw-r--r--
2026-03-03 16:09
curses_tests.py
1.23
KB
-rwxr-xr-x
2026-04-20 11:09
datetimetester.py
265.73
KB
-rw-r--r--
2026-04-20 11:09
dis_module.py
76
B
-rw-r--r--
2026-04-20 11:09
empty.vbs
70
B
-rw-r--r--
2026-03-03 16:09
exception_hierarchy.txt
2.33
KB
-rw-r--r--
2026-03-03 16:09
floating_points.txt
15.92
KB
-rw-r--r--
2026-03-03 16:09
fork_wait.py
2.29
KB
-rw-r--r--
2026-04-20 11:09
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
2026-03-03 16:09
ieee754.txt
3.15
KB
-rw-r--r--
2026-03-03 16:09
levenshtein_examples.json
406.44
KB
-rw-r--r--
2026-03-03 16:09
list_tests.py
16.9
KB
-rw-r--r--
2026-04-20 11:09
lock_tests.py
35.64
KB
-rw-r--r--
2026-04-20 11:09
mailcap.txt
1.24
KB
-rw-r--r--
2026-03-03 16:09
mapping_tests.py
21.87
KB
-rw-r--r--
2026-04-20 11:09
math_testcases.txt
23.19
KB
-rw-r--r--
2026-03-03 16:09
memory_watchdog.py
711
B
-rw-r--r--
2026-04-20 11:09
mime.types
47.37
KB
-rw-r--r--
2026-03-03 16:09
mock_socket.py
3.69
KB
-rw-r--r--
2026-04-20 11:09
mp_fork_bomb.py
448
B
-rw-r--r--
2026-04-20 11:09
mp_preload.py
351
B
-rw-r--r--
2026-04-20 11:09
multibytecodec_support.py
14.19
KB
-rw-r--r--
2026-04-20 11:09
pickletester.py
172.37
KB
-rw-r--r--
2026-04-20 11:09
profilee.py
2.97
KB
-rw-r--r--
2026-04-20 11:09
pstats.pck
65.05
KB
-rw-r--r--
2026-03-03 16:09
pyclbr_input.py
1.63
KB
-rw-r--r--
2026-04-20 11:09
pythoninfo.py
28.35
KB
-rw-r--r--
2026-04-20 11:09
randv2_32.pck
7.34
KB
-rw-r--r--
2026-03-03 16:09
randv2_64.pck
7.19
KB
-rw-r--r--
2026-03-03 16:09
randv3.pck
7.82
KB
-rw-r--r--
2026-03-03 16:09
re_tests.py
25.94
KB
-rwxr-xr-x
2026-04-20 11:09
recursion.tar
516
B
-rw-r--r--
2026-03-03 16:09
regrtest.py
1.28
KB
-rwxr-xr-x
2026-04-20 11:09
relimport.py
27
B
-rw-r--r--
2026-04-20 11:09
reperf.py
538
B
-rw-r--r--
2026-04-20 11:09
seq_tests.py
14.96
KB
-rw-r--r--
2026-04-20 11:09
signalinterproctester.py
3.12
KB
-rw-r--r--
2026-04-20 11:09
ssl_servers.py
7.12
KB
-rw-r--r--
2026-04-20 11:09
ssltests.py
1.03
KB
-rw-r--r--
2026-04-20 11:09
string_tests.py
71.24
KB
-rw-r--r--
2026-04-20 11:09
test___all__.py
5.04
KB
-rw-r--r--
2026-04-20 11:09
test__locale.py
12.52
KB
-rw-r--r--
2026-04-20 11:09
test__opcode.py
4.14
KB
-rw-r--r--
2026-04-20 11:09
test__osx_support.py
13.53
KB
-rw-r--r--
2026-04-20 11:09
test__xxinterpchannels.py
52.19
KB
-rw-r--r--
2026-04-20 11:09
test__xxsubinterpreters.py
27.5
KB
-rw-r--r--
2026-04-20 11:09
test_abc.py
23.81
KB
-rw-r--r--
2026-04-20 11:09
test_abstract_numbers.py
5.81
KB
-rw-r--r--
2026-04-20 11:09
test_aifc.py
17.84
KB
-rw-r--r--
2026-04-20 11:09
test_argparse.py
218.49
KB
-rw-r--r--
2026-04-20 11:09
test_array.py
55.44
KB
-rw-r--r--
2026-04-20 11:09
test_asdl_parser.py
4.44
KB
-rw-r--r--
2026-04-20 11:09
test_asyncgen.py
53.94
KB
-rw-r--r--
2026-04-20 11:09
test_atexit.py
3.2
KB
-rw-r--r--
2026-04-20 11:09
test_audioop.py
28.32
KB
-rw-r--r--
2026-04-20 11:09
test_audit.py
9.22
KB
-rw-r--r--
2026-04-20 11:09
test_augassign.py
7.68
KB
-rw-r--r--
2026-04-20 11:09
test_base64.py
35.05
KB
-rw-r--r--
2026-04-20 11:09
test_baseexception.py
7.77
KB
-rw-r--r--
2026-04-20 11:09
test_bdb.py
44.17
KB
-rw-r--r--
2026-04-20 11:09
test_bigaddrspace.py
2.83
KB
-rw-r--r--
2026-04-20 11:09
test_bigmem.py
45.01
KB
-rw-r--r--
2026-04-20 11:09
test_binascii.py
20.09
KB
-rw-r--r--
2026-04-20 11:09
test_binop.py
14.14
KB
-rw-r--r--
2026-04-20 11:09
test_bisect.py
16.63
KB
-rw-r--r--
2026-04-20 11:09
test_bool.py
14.25
KB
-rw-r--r--
2026-04-20 11:09
test_buffer.py
171.88
KB
-rw-r--r--
2026-04-20 11:09
test_bufio.py
2.56
KB
-rw-r--r--
2026-04-20 11:09
test_builtin.py
96.66
KB
-rw-r--r--
2026-04-20 11:09
test_bytes.py
82.01
KB
-rw-r--r--
2026-04-20 11:09
test_bz2.py
42.59
KB
-rw-r--r--
2026-04-20 11:09
test_c_locale_coercion.py
20.99
KB
-rw-r--r--
2026-04-20 11:09
test_calendar.py
51.78
KB
-rw-r--r--
2026-04-20 11:09
test_call.py
35.21
KB
-rw-r--r--
2026-04-20 11:09
test_cgi.py
22.27
KB
-rw-r--r--
2026-04-20 11:09
test_cgitb.py
2.62
KB
-rw-r--r--
2026-04-20 11:09
test_charmapcodec.py
1.77
KB
-rw-r--r--
2026-04-20 11:09
test_class.py
22.02
KB
-rw-r--r--
2026-04-20 11:09
test_clinic.py
85.41
KB
-rw-r--r--
2026-04-20 11:09
test_cmath.py
22.47
KB
-rw-r--r--
2026-04-20 11:09
test_cmd.py
6.49
KB
-rw-r--r--
2026-04-20 11:09
test_cmd_line.py
39.51
KB
-rw-r--r--
2026-04-20 11:09
test_cmd_line_script.py
34.93
KB
-rw-r--r--
2026-04-20 11:09
test_code.py
25.7
KB
-rw-r--r--
2026-04-20 11:09
test_code_module.py
12.73
KB
-rw-r--r--
2026-04-20 11:09
test_codeccallbacks.py
49.23
KB
-rw-r--r--
2026-04-20 11:09
test_codecencodings_cn.py
3.86
KB
-rw-r--r--
2026-04-20 11:09
test_codecencodings_hk.py
701
B
-rw-r--r--
2026-04-20 11:09
test_codecencodings_iso2022.py
3.65
KB
-rw-r--r--
2026-04-20 11:09
test_codecencodings_jp.py
4.79
KB
-rw-r--r--
2026-04-20 11:09
test_codecencodings_kr.py
2.96
KB
-rw-r--r--
2026-04-20 11:09
test_codecencodings_tw.py
681
B
-rw-r--r--
2026-04-20 11:09
test_codecmaps_cn.py
746
B
-rw-r--r--
2026-04-20 11:09
test_codecmaps_hk.py
386
B
-rw-r--r--
2026-04-20 11:09
test_codecmaps_jp.py
1.7
KB
-rw-r--r--
2026-04-20 11:09
test_codecmaps_kr.py
1.16
KB
-rw-r--r--
2026-04-20 11:09
test_codecmaps_tw.py
705
B
-rw-r--r--
2026-04-20 11:09
test_codecs.py
137.42
KB
-rw-r--r--
2026-04-20 11:09
test_codeop.py
8.68
KB
-rw-r--r--
2026-04-20 11:09
test_collections.py
93.47
KB
-rw-r--r--
2026-04-20 11:09
test_colorsys.py
4.27
KB
-rw-r--r--
2026-04-20 11:09
test_compare.py
17.46
KB
-rw-r--r--
2026-04-20 11:09
test_compile.py
81.24
KB
-rw-r--r--
2026-04-20 11:09
test_compileall.py
48.53
KB
-rw-r--r--
2026-04-20 11:09
test_compiler_assemble.py
2.46
KB
-rw-r--r--
2026-04-20 11:09
test_compiler_codegen.py
1.72
KB
-rw-r--r--
2026-04-20 11:09
test_complex.py
35.21
KB
-rw-r--r--
2026-04-20 11:09
test_configparser.py
85.34
KB
-rw-r--r--
2026-04-20 11:09
test_contains.py
3.35
KB
-rw-r--r--
2026-04-20 11:09
test_context.py
31.1
KB
-rw-r--r--
2026-04-20 11:09
test_contextlib.py
43.08
KB
-rw-r--r--
2026-04-20 11:09
test_contextlib_async.py
23.99
KB
-rw-r--r--
2026-04-20 11:09
test_copy.py
26.52
KB
-rw-r--r--
2026-04-20 11:09
test_copyreg.py
4.36
KB
-rw-r--r--
2026-04-20 11:09
test_coroutines.py
67.47
KB
-rw-r--r--
2026-04-20 11:09
test_cprofile.py
9.44
KB
-rw-r--r--
2026-04-20 11:09
test_crashers.py
1.17
KB
-rw-r--r--
2026-04-20 11:09
test_crypt.py
4.19
KB
-rw-r--r--
2026-04-20 11:09
test_csv.py
61.59
KB
-rw-r--r--
2026-04-20 11:09
test_curses.py
50.14
KB
-rw-r--r--
2026-04-20 11:09
test_datetime.py
2.67
KB
-rw-r--r--
2026-04-20 11:09
test_dbm.py
6.83
KB
-rw-r--r--
2026-04-20 11:09
test_dbm_dumb.py
11.08
KB
-rw-r--r--
2026-04-20 11:09
test_dbm_gnu.py
7.64
KB
-rw-r--r--
2026-04-20 11:09
test_dbm_ndbm.py
5.91
KB
-rw-r--r--
2026-04-20 11:09
test_decimal.py
217.94
KB
-rw-r--r--
2026-04-20 11:09
test_decorators.py
14.63
KB
-rw-r--r--
2026-04-20 11:09
test_defaultdict.py
6.1
KB
-rw-r--r--
2026-04-20 11:09
test_deque.py
33.16
KB
-rw-r--r--
2026-04-20 11:09
test_descr.py
196.2
KB
-rw-r--r--
2026-04-20 11:09
test_descrtut.py
10.98
KB
-rw-r--r--
2026-04-20 11:09
test_devpoll.py
4.44
KB
-rw-r--r--
2026-04-20 11:09
test_dict.py
51.33
KB
-rw-r--r--
2026-04-20 11:09
test_dict_version.py
6.1
KB
-rw-r--r--
2026-04-20 11:09
test_dictcomps.py
6.55
KB
-rw-r--r--
2026-04-20 11:09
test_dictviews.py
14.82
KB
-rw-r--r--
2026-04-20 11:09
test_difflib.py
21.47
KB
-rw-r--r--
2026-04-20 11:09
test_difflib_expect.html
100.9
KB
-rw-r--r--
2026-03-03 16:09
test_dis.py
83.45
KB
-rw-r--r--
2026-04-20 11:09
test_docxmlrpc.py
9.1
KB
-rw-r--r--
2026-04-20 11:09
test_dtrace.py
7.98
KB
-rw-r--r--
2026-04-20 11:09
test_dynamic.py
6
KB
-rw-r--r--
2026-04-20 11:09
test_dynamicclassattribute.py
9.57
KB
-rw-r--r--
2026-04-20 11:09
test_eintr.py
627
B
-rw-r--r--
2026-04-20 11:09
test_embed.py
69.88
KB
-rw-r--r--
2026-04-20 11:09
test_ensurepip.py
11.49
KB
-rw-r--r--
2026-04-20 11:09
test_enum.py
188.15
KB
-rw-r--r--
2026-04-20 11:09
test_enumerate.py
9.14
KB
-rw-r--r--
2026-04-20 11:09
test_eof.py
7.94
KB
-rw-r--r--
2026-04-20 11:09
test_epoll.py
9.4
KB
-rw-r--r--
2026-04-20 11:09
test_errno.py
1.04
KB
-rw-r--r--
2026-04-20 11:09
test_except_star.py
39.7
KB
-rw-r--r--
2026-04-20 11:09
test_exception_group.py
34.03
KB
-rw-r--r--
2026-04-20 11:09
test_exception_hierarchy.py
7.54
KB
-rw-r--r--
2026-04-20 11:09
test_exception_variations.py
13.74
KB
-rw-r--r--
2026-04-20 11:09
test_exceptions.py
83.63
KB
-rw-r--r--
2026-04-20 11:09
test_extcall.py
14.69
KB
-rw-r--r--
2026-04-20 11:09
test_faulthandler.py
30.31
KB
-rw-r--r--
2026-04-20 11:09
test_fcntl.py
7.76
KB
-rw-r--r--
2026-04-20 11:09
test_file.py
11.78
KB
-rw-r--r--
2026-04-20 11:09
test_file_eintr.py
10.74
KB
-rw-r--r--
2026-04-20 11:09
test_filecmp.py
11.98
KB
-rw-r--r--
2026-04-20 11:09
test_fileinput.py
37.86
KB
-rw-r--r--
2026-04-20 11:09
test_fileio.py
19.98
KB
-rw-r--r--
2026-04-20 11:09
test_fileutils.py
951
B
-rw-r--r--
2026-04-20 11:09
test_finalization.py
14.66
KB
-rw-r--r--
2026-04-20 11:09
test_float.py
64.65
KB
-rw-r--r--
2026-04-20 11:09
test_flufl.py
2.81
KB
-rw-r--r--
2026-04-20 11:09
test_fnmatch.py
10.68
KB
-rw-r--r--
2026-04-20 11:09
test_fork1.py
3.3
KB
-rw-r--r--
2026-04-20 11:09
test_format.py
28.44
KB
-rw-r--r--
2026-04-20 11:09
test_fractions.py
65.65
KB
-rw-r--r--
2026-04-20 11:09
test_frame.py
14.04
KB
-rw-r--r--
2026-04-20 11:09
test_frozen.py
2.2
KB
-rw-r--r--
2026-04-20 11:09
test_fstring.py
64.74
KB
-rw-r--r--
2026-04-20 11:09
test_ftplib.py
41.97
KB
-rw-r--r--
2026-04-20 11:09
test_funcattrs.py
15.71
KB
-rw-r--r--
2026-04-20 11:09
test_functools.py
114.02
KB
-rw-r--r--
2026-04-20 11:09
test_gc.py
47.71
KB
-rw-r--r--
2026-04-20 11:09
test_generator_stop.py
943
B
-rw-r--r--
2026-04-20 11:09
test_generators.py
66.48
KB
-rw-r--r--
2026-04-20 11:09
test_genericalias.py
17.78
KB
-rw-r--r--
2026-04-20 11:09
test_genericclass.py
9.44
KB
-rw-r--r--
2026-04-20 11:09
test_genericpath.py
23.25
KB
-rw-r--r--
2026-04-20 11:09
test_genexps.py
7.3
KB
-rw-r--r--
2026-04-20 11:09
test_getopt.py
6.94
KB
-rw-r--r--
2026-04-20 11:09
test_getpass.py
6.37
KB
-rw-r--r--
2026-04-20 11:09
test_getpath.py
44.36
KB
-rw-r--r--
2026-04-20 11:09
test_gettext.py
41.96
KB
-rw-r--r--
2026-04-20 11:09
test_glob.py
18.21
KB
-rw-r--r--
2026-04-20 11:09
test_global.py
1.2
KB
-rw-r--r--
2026-04-20 11:09
test_grammar.py
66.31
KB
-rw-r--r--
2026-04-20 11:09
test_graphlib.py
8.31
KB
-rw-r--r--
2026-04-20 11:09
test_grp.py
3.67
KB
-rw-r--r--
2026-04-20 11:09
test_gzip.py
41.48
KB
-rw-r--r--
2026-04-20 11:09
test_hash.py
12.11
KB
-rw-r--r--
2026-04-20 11:09
test_hashlib.py
46.71
KB
-rw-r--r--
2026-04-20 11:09
test_heapq.py
16.42
KB
-rw-r--r--
2026-04-20 11:09
test_hmac.py
26.06
KB
-rw-r--r--
2026-04-20 11:09
test_html.py
4.23
KB
-rw-r--r--
2026-04-20 11:09
test_htmlparser.py
45.58
KB
-rw-r--r--
2026-04-20 11:09
test_http_cookiejar.py
81.55
KB
-rw-r--r--
2026-04-20 11:09
test_http_cookies.py
23.59
KB
-rw-r--r--
2026-04-20 11:09
test_httplib.py
99.04
KB
-rw-r--r--
2026-04-20 11:09
test_httpservers.py
57.95
KB
-rw-r--r--
2026-04-20 11:09
test_idle.py
831
B
-rw-r--r--
2026-04-20 11:09
test_imaplib.py
42.11
KB
-rw-r--r--
2026-04-20 11:09
test_imghdr.py
4.81
KB
-rw-r--r--
2026-04-20 11:09
test_index.py
8.37
KB
-rw-r--r--
2026-04-20 11:09
test_int.py
33.97
KB
-rw-r--r--
2026-04-20 11:09
test_int_literal.py
6.89
KB
-rw-r--r--
2026-04-20 11:09
test_interpreters.py
32.11
KB
-rw-r--r--
2026-04-20 11:09
test_io.py
183.89
KB
-rw-r--r--
2026-04-20 11:09
test_ioctl.py
3.24
KB
-rw-r--r--
2026-04-20 11:09
test_ipaddress.py
126.69
KB
-rw-r--r--
2026-04-20 11:09
test_isinstance.py
12.95
KB
-rw-r--r--
2026-04-20 11:09
test_iter.py
38.23
KB
-rw-r--r--
2026-04-20 11:09
test_iterlen.py
7.1
KB
-rw-r--r--
2026-04-20 11:09
test_itertools.py
113.53
KB
-rw-r--r--
2026-04-20 11:09
test_keyword.py
2
KB
-rw-r--r--
2026-04-20 11:09
test_keywordonlyarg.py
6.89
KB
-rw-r--r--
2026-04-20 11:09
test_kqueue.py
9.36
KB
-rw-r--r--
2026-04-20 11:09
test_largefile.py
11.05
KB
-rw-r--r--
2026-04-20 11:09
test_launcher.py
28.75
KB
-rw-r--r--
2026-04-20 11:09
test_linecache.py
12.56
KB
-rw-r--r--
2026-04-20 11:09
test_list.py
9.6
KB
-rw-r--r--
2026-04-20 11:09
test_listcomps.py
24.02
KB
-rw-r--r--
2026-04-20 11:09
test_lltrace.py
3.71
KB
-rw-r--r--
2026-04-20 11:09
test_locale.py
24.69
KB
-rw-r--r--
2026-04-20 11:09
test_logging.py
251.7
KB
-rw-r--r--
2026-04-20 11:09
test_long.py
63.4
KB
-rw-r--r--
2026-04-20 11:09
test_longexp.py
233
B
-rw-r--r--
2026-04-20 11:09
test_lzma.py
93
KB
-rw-r--r--
2026-04-20 11:09
test_mailbox.py
93.91
KB
-rw-r--r--
2026-04-20 11:09
test_mailcap.py
11.48
KB
-rw-r--r--
2026-04-20 11:09
test_marshal.py
23.15
KB
-rw-r--r--
2026-04-20 11:09
test_math.py
108.3
KB
-rw-r--r--
2026-04-20 11:09
test_math_property.py
1.15
KB
-rw-r--r--
2026-04-20 11:09
test_memoryio.py
32.65
KB
-rw-r--r--
2026-04-20 11:09
test_memoryview.py
22.23
KB
-rw-r--r--
2026-04-20 11:09
test_metaclass.py
6.19
KB
-rw-r--r--
2026-04-20 11:09
test_mimetypes.py
15.74
KB
-rw-r--r--
2026-04-20 11:09
test_minidom.py
69.56
KB
-rw-r--r--
2026-04-20 11:09
test_mmap.py
38.56
KB
-rw-r--r--
2026-04-20 11:09
test_modulefinder.py
12.21
KB
-rw-r--r--
2026-04-20 11:09
test_monitoring.py
55.76
KB
-rw-r--r--
2026-04-20 11:09
test_msilib.py
5.52
KB
-rw-r--r--
2026-04-20 11:09
test_multibytecodec.py
15.79
KB
-rw-r--r--
2026-04-20 11:09
test_multiprocessing_main_handling.py
11.48
KB
-rw-r--r--
2026-04-20 11:09
test_named_expressions.py
29.62
KB
-rw-r--r--
2026-04-20 11:09
test_netrc.py
11.86
KB
-rw-r--r--
2026-04-20 11:09
test_nis.py
1.25
KB
-rw-r--r--
2026-04-20 11:09
test_nntplib.py
62.7
KB
-rw-r--r--
2026-04-20 11:09
test_ntpath.py
64.11
KB
-rw-r--r--
2026-04-20 11:09
test_numeric_tower.py
8
KB
-rw-r--r--
2026-04-20 11:09
test_opcache.py
10.89
KB
-rw-r--r--
2026-04-20 11:09
test_opcodes.py
3.62
KB
-rw-r--r--
2026-04-20 11:09
test_openpty.py
600
B
-rw-r--r--
2026-04-20 11:09
test_operator.py
26.72
KB
-rw-r--r--
2026-04-20 11:09
test_optparse.py
61.39
KB
-rw-r--r--
2026-04-20 11:09
test_ordered_dict.py
39.96
KB
-rw-r--r--
2026-04-20 11:09
test_os.py
181.05
KB
-rw-r--r--
2026-04-20 11:09
test_ossaudiodev.py
7.27
KB
-rw-r--r--
2026-04-20 11:09
test_osx_env.py
1.31
KB
-rw-r--r--
2026-04-20 11:09
test_pathlib.py
138.01
KB
-rw-r--r--
2026-04-20 11:09
test_patma.py
86.6
KB
-rw-r--r--
2026-04-20 11:09
test_pdb.py
92.92
KB
-rw-r--r--
2026-04-20 11:09
test_peepholer.py
40.6
KB
-rw-r--r--
2026-04-20 11:09
test_pep646_syntax.py
7.79
KB
-rw-r--r--
2026-04-20 11:09
test_perf_profiler.py
11.41
KB
-rw-r--r--
2026-04-20 11:09
test_perfmaps.py
685
B
-rw-r--r--
2026-04-20 11:09
test_pickle.py
21.24
KB
-rw-r--r--
2026-04-20 11:09
test_picklebuffer.py
4.99
KB
-rw-r--r--
2026-04-20 11:09
test_pickletools.py
16.78
KB
-rw-r--r--
2026-04-20 11:09
test_pipes.py
6.79
KB
-rw-r--r--
2026-04-20 11:09
test_pkg.py
9.59
KB
-rw-r--r--
2026-04-20 11:09
test_pkgutil.py
26.22
KB
-rw-r--r--
2026-04-20 11:09
test_platform.py
21.53
KB
-rw-r--r--
2026-04-20 11:09
test_plistlib.py
42.62
KB
-rw-r--r--
2026-04-20 11:09
test_poll.py
7.39
KB
-rw-r--r--
2026-04-20 11:09
test_popen.py
2.36
KB
-rw-r--r--
2026-04-20 11:09
test_poplib.py
18.02
KB
-rw-r--r--
2026-04-20 11:09
test_positional_only_arg.py
18.44
KB
-rw-r--r--
2026-04-20 11:09
test_posix.py
96.25
KB
-rw-r--r--
2026-04-20 11:09
test_posixpath.py
44.92
KB
-rw-r--r--
2026-04-20 11:09
test_pow.py
6.38
KB
-rw-r--r--
2026-04-20 11:09
test_pprint.py
50.59
KB
-rw-r--r--
2026-04-20 11:09
test_print.py
8.05
KB
-rw-r--r--
2026-04-20 11:09
test_profile.py
8.69
KB
-rw-r--r--
2026-04-20 11:09
test_property.py
19.33
KB
-rw-r--r--
2026-04-20 11:09
test_pstats.py
4.31
KB
-rw-r--r--
2026-04-20 11:09
test_pty.py
16.18
KB
-rw-r--r--
2026-04-20 11:09
test_pulldom.py
12.33
KB
-rw-r--r--
2026-04-20 11:09
test_pwd.py
4.32
KB
-rw-r--r--
2026-04-20 11:09
test_py_compile.py
11.93
KB
-rw-r--r--
2026-04-20 11:09
test_pyclbr.py
10.25
KB
-rw-r--r--
2026-04-20 11:09
test_pyexpat.py
39.22
KB
-rw-r--r--
2026-04-20 11:09
test_queue.py
20.61
KB
-rw-r--r--
2026-04-20 11:09
test_quopri.py
7.87
KB
-rw-r--r--
2026-04-20 11:09
test_raise.py
13.44
KB
-rw-r--r--
2026-04-20 11:09
test_random.py
57.01
KB
-rw-r--r--
2026-04-20 11:09
test_range.py
26.53
KB
-rw-r--r--
2026-04-20 11:09
test_re.py
144.79
KB
-rw-r--r--
2026-04-20 11:09
test_readline.py
15.72
KB
-rw-r--r--
2026-04-20 11:09
test_regrtest.py
92.51
KB
-rw-r--r--
2026-04-20 11:09
test_repl.py
6.34
KB
-rw-r--r--
2026-04-20 11:09
test_reprlib.py
29.07
KB
-rw-r--r--
2026-04-20 11:09
test_resource.py
7.12
KB
-rw-r--r--
2026-04-20 11:09
test_richcmp.py
11.95
KB
-rw-r--r--
2026-04-20 11:09
test_rlcompleter.py
7.4
KB
-rw-r--r--
2026-04-20 11:09
test_robotparser.py
11.02
KB
-rw-r--r--
2026-04-20 11:09
test_runpy.py
33.99
KB
-rw-r--r--
2026-04-20 11:09
test_sax.py
54.63
KB
-rw-r--r--
2026-04-20 11:09
test_sched.py
7.38
KB
-rw-r--r--
2026-04-20 11:09
test_scope.py
21.94
KB
-rw-r--r--
2026-04-20 11:09
test_script_helper.py
5.82
KB
-rw-r--r--
2026-04-20 11:09
test_secrets.py
4.28
KB
-rw-r--r--
2026-04-20 11:09
test_select.py
3.42
KB
-rw-r--r--
2026-04-20 11:09
test_selectors.py
19.64
KB
-rw-r--r--
2026-04-20 11:09
test_set.py
71.31
KB
-rw-r--r--
2026-04-20 11:09
test_setcomps.py
5.24
KB
-rw-r--r--
2026-04-20 11:09
test_shelve.py
6.42
KB
-rw-r--r--
2026-04-20 11:09
test_shlex.py
13.39
KB
-rw-r--r--
2026-04-20 11:09
test_shutil.py
136.86
KB
-rw-r--r--
2026-04-20 11:09
test_signal.py
52.58
KB
-rw-r--r--
2026-04-20 11:09
test_site.py
29.77
KB
-rw-r--r--
2026-04-20 11:09
test_slice.py
9.46
KB
-rw-r--r--
2026-04-20 11:09
test_smtplib.py
60.02
KB
-rw-r--r--
2026-04-20 11:09
test_smtpnet.py
3.03
KB
-rw-r--r--
2026-04-20 11:09
test_sndhdr.py
1.51
KB
-rw-r--r--
2026-04-20 11:09
test_socket.py
260.33
KB
-rw-r--r--
2026-04-20 11:09
test_socketserver.py
17.39
KB
-rw-r--r--
2026-04-20 11:09
test_sort.py
13.59
KB
-rw-r--r--
2026-04-20 11:09
test_source_encoding.py
12.65
KB
-rw-r--r--
2026-04-20 11:09
test_spwd.py
2.83
KB
-rw-r--r--
2026-04-20 11:09
test_ssl.py
216.52
KB
-rw-r--r--
2026-04-20 11:09
test_stable_abi_ctypes.py
24.75
KB
-rw-r--r--
2026-04-20 11:09
test_startfile.py
1.7
KB
-rw-r--r--
2026-04-20 11:09
test_stat.py
8.92
KB
-rw-r--r--
2026-04-20 11:09
test_statistics.py
120.02
KB
-rw-r--r--
2026-04-20 11:09
test_strftime.py
7.4
KB
-rw-r--r--
2026-04-20 11:09
test_string.py
21.86
KB
-rw-r--r--
2026-04-20 11:09
test_string_literals.py
14.1
KB
-rw-r--r--
2026-04-20 11:09
test_stringprep.py
3.04
KB
-rw-r--r--
2026-04-20 11:09
test_strptime.py
41.95
KB
-rw-r--r--
2026-04-20 11:09
test_strtod.py
20.06
KB
-rw-r--r--
2026-04-20 11:09
test_struct.py
39.18
KB
-rw-r--r--
2026-04-20 11:09
test_structseq.py
7.72
KB
-rw-r--r--
2026-04-20 11:09
test_subclassinit.py
8.04
KB
-rw-r--r--
2026-04-20 11:09
test_subprocess.py
161.37
KB
-rw-r--r--
2026-04-20 11:09
test_sunau.py
6.09
KB
-rw-r--r--
2026-04-20 11:09
test_sundry.py
1.02
KB
-rw-r--r--
2026-04-20 11:09
test_super.py
14.79
KB
-rw-r--r--
2026-04-20 11:09
test_support.py
27.05
KB
-rw-r--r--
2026-04-20 11:09
test_symtable.py
17.56
KB
-rw-r--r--
2026-04-20 11:09
test_syntax.py
73.95
KB
-rw-r--r--
2026-04-20 11:09
test_sys.py
67.37
KB
-rw-r--r--
2026-04-20 11:09
test_sys_setprofile.py
14.53
KB
-rw-r--r--
2026-04-20 11:09
test_sys_settrace.py
84.56
KB
-rw-r--r--
2026-04-20 11:09
test_sysconfig.py
26.08
KB
-rw-r--r--
2026-04-20 11:09
test_syslog.py
4.7
KB
-rw-r--r--
2026-04-20 11:09
test_tabnanny.py
13.9
KB
-rw-r--r--
2026-04-20 11:09
test_tarfile.py
180.51
KB
-rw-r--r--
2026-04-20 11:09
test_tcl.py
30.3
KB
-rw-r--r--
2026-04-20 11:09
test_telnetlib.py
12.85
KB
-rw-r--r--
2026-04-20 11:09
test_tempfile.py
75.5
KB
-rw-r--r--
2026-04-20 11:09
test_termios.py
10.96
KB
-rw-r--r--
2026-04-20 11:09
test_textwrap.py
41.89
KB
-rw-r--r--
2026-04-20 11:09
test_thread.py
8.87
KB
-rw-r--r--
2026-04-20 11:09
test_threadedtempfile.py
1.93
KB
-rw-r--r--
2026-04-20 11:09
test_threading.py
74.21
KB
-rw-r--r--
2026-04-20 11:09
test_threading_local.py
7.01
KB
-rw-r--r--
2026-04-20 11:09
test_threadsignals.py
9.87
KB
-rw-r--r--
2026-04-20 11:09
test_time.py
44.65
KB
-rw-r--r--
2026-04-20 11:09
test_timeit.py
15.2
KB
-rw-r--r--
2026-04-20 11:09
test_timeout.py
10.74
KB
-rw-r--r--
2026-04-20 11:09
test_tix.py
1.05
KB
-rw-r--r--
2026-04-20 11:09
test_tokenize.py
118
KB
-rw-r--r--
2026-04-20 11:09
test_trace.py
21.52
KB
-rw-r--r--
2026-04-20 11:09
test_traceback.py
144.4
KB
-rw-r--r--
2026-04-20 11:09
test_tracemalloc.py
40.97
KB
-rw-r--r--
2026-04-20 11:09
test_ttk_textonly.py
16.69
KB
-rw-r--r--
2026-04-20 11:09
test_tty.py
3.63
KB
-rw-r--r--
2026-04-20 11:09
test_tuple.py
19.8
KB
-rw-r--r--
2026-04-20 11:09
test_turtle.py
14.04
KB
-rw-r--r--
2026-04-20 11:09
test_type_aliases.py
12.74
KB
-rw-r--r--
2026-04-20 11:09
test_type_annotations.py
6.23
KB
-rw-r--r--
2026-04-20 11:09
test_type_cache.py
6.6
KB
-rw-r--r--
2026-04-20 11:09
test_type_comments.py
10.5
KB
-rw-r--r--
2026-04-20 11:09
test_type_params.py
38.87
KB
-rw-r--r--
2026-04-20 11:09
test_typechecks.py
2.55
KB
-rw-r--r--
2026-04-20 11:09
test_types.py
82.38
KB
-rw-r--r--
2026-04-20 11:09
test_typing.py
343.33
KB
-rw-r--r--
2026-04-20 11:09
test_ucn.py
9.71
KB
-rw-r--r--
2026-04-20 11:09
test_unary.py
1.52
KB
-rw-r--r--
2026-04-20 11:09
test_unicode.py
125.43
KB
-rw-r--r--
2026-04-20 11:09
test_unicode_file.py
5.72
KB
-rw-r--r--
2026-04-20 11:09
test_unicode_file_functions.py
6.91
KB
-rw-r--r--
2026-04-20 11:09
test_unicode_identifiers.py
997
B
-rw-r--r--
2026-04-20 11:09
test_unicodedata.py
17.01
KB
-rw-r--r--
2026-04-20 11:09
test_univnewlines.py
3.85
KB
-rw-r--r--
2026-04-20 11:09
test_unpack.py
3.51
KB
-rw-r--r--
2026-04-20 11:09
test_unpack_ex.py
9.98
KB
-rw-r--r--
2026-04-20 11:09
test_unparse.py
27.96
KB
-rw-r--r--
2026-04-20 11:09
test_urllib.py
73.04
KB
-rw-r--r--
2026-04-20 11:09
test_urllib2.py
80.82
KB
-rw-r--r--
2026-04-20 11:09
test_urllib2_localnet.py
25.64
KB
-rw-r--r--
2026-04-20 11:09
test_urllib2net.py
13.96
KB
-rw-r--r--
2026-04-20 11:09
test_urllib_response.py
2.04
KB
-rw-r--r--
2026-04-20 11:09
test_urllibnet.py
9.41
KB
-rw-r--r--
2026-04-20 11:09
test_urlparse.py
81.41
KB
-rw-r--r--
2026-04-20 11:09
test_userdict.py
7.56
KB
-rw-r--r--
2026-04-20 11:09
test_userlist.py
1.97
KB
-rw-r--r--
2026-04-20 11:09
test_userstring.py
2.52
KB
-rw-r--r--
2026-04-20 11:09
test_utf8_mode.py
10.31
KB
-rw-r--r--
2026-04-20 11:09
test_utf8source.py
1.08
KB
-rw-r--r--
2026-04-20 11:09
test_uu.py
9.2
KB
-rw-r--r--
2026-04-20 11:09
test_uuid.py
44.28
KB
-rw-r--r--
2026-04-20 11:09
test_venv.py
37.42
KB
-rw-r--r--
2026-04-20 11:09
test_wait3.py
1.74
KB
-rw-r--r--
2026-04-20 11:09
test_wait4.py
1.14
KB
-rw-r--r--
2026-04-20 11:09
test_wave.py
7.64
KB
-rw-r--r--
2026-04-20 11:09
test_weakref.py
74.32
KB
-rw-r--r--
2026-04-20 11:09
test_weakset.py
16.3
KB
-rw-r--r--
2026-04-20 11:09
test_webbrowser.py
10.5
KB
-rw-r--r--
2026-04-20 11:09
test_winapi.py
2.63
KB
-rw-r--r--
2026-04-20 11:09
test_winconsoleio.py
7.6
KB
-rw-r--r--
2026-04-20 11:09
test_winreg.py
22.48
KB
-rw-r--r--
2026-04-20 11:09
test_winsound.py
5.17
KB
-rw-r--r--
2026-04-20 11:09
test_with.py
27.78
KB
-rw-r--r--
2026-04-20 11:09
test_wmi.py
3.31
KB
-rw-r--r--
2026-04-20 11:09
test_wsgiref.py
30.25
KB
-rw-r--r--
2026-04-20 11:09
test_xdrlib.py
2.25
KB
-rw-r--r--
2026-04-20 11:09
test_xml_dom_minicompat.py
4.18
KB
-rw-r--r--
2026-04-20 11:09
test_xml_dom_xmlbuilder.py
3.1
KB
-rw-r--r--
2026-04-20 11:09
test_xml_etree.py
168.95
KB
-rw-r--r--
2026-04-20 11:09
test_xml_etree_c.py
9.34
KB
-rw-r--r--
2026-04-20 11:09
test_xmlrpc.py
58.08
KB
-rw-r--r--
2026-04-20 11:09
test_xmlrpc_net.py
954
B
-rw-r--r--
2026-04-20 11:09
test_xxlimited.py
2.46
KB
-rw-r--r--
2026-04-20 11:09
test_xxtestfuzz.py
690
B
-rw-r--r--
2026-04-20 11:09
test_yield_from.py
50.23
KB
-rw-r--r--
2026-04-20 11:09
test_zipapp.py
16.7
KB
-rw-r--r--
2026-04-20 11:09
test_zipfile64.py
5.78
KB
-rw-r--r--
2026-04-20 11:09
test_zipimport.py
31.88
KB
-rw-r--r--
2026-04-20 11:09
test_zipimport_support.py
10.57
KB
-rw-r--r--
2026-04-20 11:09
test_zlib.py
41.66
KB
-rw-r--r--
2026-04-20 11:09
testcodec.py
1.02
KB
-rw-r--r--
2026-04-20 11:09
testtar.tar
425
KB
-rw-r--r--
2026-03-03 16:09
testtar.tar.xz
172
B
-rw-r--r--
2026-03-03 16:09
tf_inherit_check.py
714
B
-rw-r--r--
2026-04-20 11:09
time_hashlib.py
2.87
KB
-rw-r--r--
2026-04-20 11:09
win_console_handler.py
1.38
KB
-rw-r--r--
2026-04-20 11:09
xmltests.py
499
B
-rw-r--r--
2026-04-20 11:09
zip_cp437_header.zip
270
B
-rw-r--r--
2026-03-03 16:09
zipdir.zip
374
B
-rw-r--r--
2026-03-03 16:09
zipdir_backslash.zip
192
B
-rw-r--r--
2026-03-03 16:09
Save
Rename
import unittest from test.support import cpython_only, requires_limited_api, skip_on_s390x, is_wasi, Py_DEBUG try: import _testcapi except ImportError: _testcapi = None import struct import collections import itertools import gc import contextlib import sys import types class BadStr(str): def __eq__(self, other): return True def __hash__(self): # Guaranteed different hash return str.__hash__(self) ^ 3 class FunctionCalls(unittest.TestCase): def test_kwargs_order(self): # bpo-34320: **kwargs should preserve order of passed OrderedDict od = collections.OrderedDict([('a', 1), ('b', 2)]) od.move_to_end('a') expected = list(od.items()) def fn(**kw): return kw res = fn(**od) self.assertIsInstance(res, dict) self.assertEqual(list(res.items()), expected) def test_frames_are_popped_after_failed_calls(self): # GH-93252: stuff blows up if we don't pop the new frame after # recovering from failed calls: def f(): pass for _ in range(1000): try: f(None) except TypeError: pass # BOOM! @cpython_only class CFunctionCallsErrorMessages(unittest.TestCase): def test_varargs0(self): msg = r"__contains__\(\) takes exactly one argument \(0 given\)" self.assertRaisesRegex(TypeError, msg, {}.__contains__) def test_varargs2(self): msg = r"__contains__\(\) takes exactly one argument \(2 given\)" self.assertRaisesRegex(TypeError, msg, {}.__contains__, 0, 1) def test_varargs3(self): msg = r"^from_bytes\(\) takes at most 2 positional arguments \(3 given\)" self.assertRaisesRegex(TypeError, msg, int.from_bytes, b'a', 'little', False) def test_varargs1min(self): msg = r"get expected at least 1 argument, got 0" self.assertRaisesRegex(TypeError, msg, {}.get) msg = r"expected 1 argument, got 0" self.assertRaisesRegex(TypeError, msg, {}.__delattr__) def test_varargs2min(self): msg = r"getattr expected at least 2 arguments, got 0" self.assertRaisesRegex(TypeError, msg, getattr) def test_varargs1max(self): msg = r"input expected at most 1 argument, got 2" self.assertRaisesRegex(TypeError, msg, input, 1, 2) def test_varargs2max(self): msg = r"get expected at most 2 arguments, got 3" self.assertRaisesRegex(TypeError, msg, {}.get, 1, 2, 3) def test_varargs1_kw(self): msg = r"__contains__\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, {}.__contains__, x=2) def test_varargs2_kw(self): msg = r"__contains__\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, {}.__contains__, x=2, y=2) def test_varargs3_kw(self): msg = r"bool\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, bool, x=2) def test_varargs4_kw(self): msg = r"^list[.]index\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, [].index, x=2) def test_varargs5_kw(self): msg = r"^hasattr\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, hasattr, x=2) def test_varargs6_kw(self): msg = r"^getattr\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, getattr, x=2) def test_varargs7_kw(self): msg = r"^next\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, next, x=2) def test_varargs8_kw(self): msg = r"^_struct[.]pack\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, struct.pack, x=2) def test_varargs9_kw(self): msg = r"^_struct[.]pack_into\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, struct.pack_into, x=2) def test_varargs10_kw(self): msg = r"^deque[.]index\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, collections.deque().index, x=2) def test_varargs11_kw(self): msg = r"^Struct[.]pack\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, struct.Struct.pack, struct.Struct(""), x=2) def test_varargs12_kw(self): msg = r"^staticmethod\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, staticmethod, func=id) def test_varargs13_kw(self): msg = r"^classmethod\(\) takes no keyword arguments$" self.assertRaisesRegex(TypeError, msg, classmethod, func=id) def test_varargs14_kw(self): msg = r"^product\(\) takes at most 1 keyword argument \(2 given\)$" self.assertRaisesRegex(TypeError, msg, itertools.product, 0, repeat=1, foo=2) def test_varargs15_kw(self): msg = r"^ImportError\(\) takes at most 3 keyword arguments \(4 given\)$" self.assertRaisesRegex(TypeError, msg, ImportError, 0, name=1, path=2, name_from=3, foo=3) def test_varargs16_kw(self): msg = r"^min\(\) takes at most 2 keyword arguments \(3 given\)$" self.assertRaisesRegex(TypeError, msg, min, 0, default=1, key=2, foo=3) def test_varargs17_kw(self): msg = r"'foo' is an invalid keyword argument for print\(\)$" self.assertRaisesRegex(TypeError, msg, print, 0, sep=1, end=2, file=3, flush=4, foo=5) def test_varargs18_kw(self): # _PyArg_UnpackKeywordsWithVararg() msg = r"invalid keyword argument for print\(\)$" with self.assertRaisesRegex(TypeError, msg): print(0, 1, **{BadStr('foo'): ','}) def test_varargs19_kw(self): # _PyArg_UnpackKeywords() msg = r"invalid keyword argument for round\(\)$" with self.assertRaisesRegex(TypeError, msg): round(1.75, **{BadStr('foo'): 1}) def test_oldargs0_1(self): msg = r"keys\(\) takes no arguments \(1 given\)" self.assertRaisesRegex(TypeError, msg, {}.keys, 0) def test_oldargs0_2(self): msg = r"keys\(\) takes no arguments \(2 given\)" self.assertRaisesRegex(TypeError, msg, {}.keys, 0, 1) def test_oldargs0_1_kw(self): msg = r"keys\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, {}.keys, x=2) def test_oldargs0_2_kw(self): msg = r"keys\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, {}.keys, x=2, y=2) def test_oldargs1_0(self): msg = r"count\(\) takes exactly one argument \(0 given\)" self.assertRaisesRegex(TypeError, msg, [].count) def test_oldargs1_2(self): msg = r"count\(\) takes exactly one argument \(2 given\)" self.assertRaisesRegex(TypeError, msg, [].count, 1, 2) def test_oldargs1_0_kw(self): msg = r"count\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, [].count, x=2) def test_oldargs1_1_kw(self): msg = r"count\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, [].count, {}, x=2) def test_oldargs1_2_kw(self): msg = r"count\(\) takes no keyword arguments" self.assertRaisesRegex(TypeError, msg, [].count, x=2, y=2) def test_object_not_callable(self): msg = r"^'object' object is not callable$" self.assertRaisesRegex(TypeError, msg, object()) def test_module_not_callable_no_suggestion_0(self): msg = r"^'module' object is not callable$" self.assertRaisesRegex(TypeError, msg, types.ModuleType("mod")) def test_module_not_callable_no_suggestion_1(self): msg = r"^'module' object is not callable$" mod = types.ModuleType("mod") mod.mod = 42 self.assertRaisesRegex(TypeError, msg, mod) def test_module_not_callable_no_suggestion_2(self): msg = r"^'module' object is not callable$" mod = types.ModuleType("mod") del mod.__name__ self.assertRaisesRegex(TypeError, msg, mod) def test_module_not_callable_no_suggestion_3(self): msg = r"^'module' object is not callable$" mod = types.ModuleType("mod") mod.__name__ = 42 self.assertRaisesRegex(TypeError, msg, mod) def test_module_not_callable_suggestion(self): msg = r"^'module' object is not callable\. Did you mean: 'mod\.mod\(\.\.\.\)'\?$" mod = types.ModuleType("mod") mod.mod = lambda: ... self.assertRaisesRegex(TypeError, msg, mod) class TestCallingConventions(unittest.TestCase): """Test calling using various C calling conventions (METH_*) from Python Subclasses test several kinds of functions (module-level, methods, class methods static methods) using these attributes: obj: the object that contains tested functions (as attributes) expected_self: expected "self" argument to the C function The base class tests module-level functions. """ def setUp(self): self.obj = self.expected_self = _testcapi def test_varargs(self): self.assertEqual( self.obj.meth_varargs(1, 2, 3), (self.expected_self, (1, 2, 3)), ) def test_varargs_ext(self): self.assertEqual( self.obj.meth_varargs(*(1, 2, 3)), (self.expected_self, (1, 2, 3)), ) def test_varargs_error_kw(self): msg = r"meth_varargs\(\) takes no keyword arguments" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_varargs(k=1), ) def test_varargs_keywords(self): self.assertEqual( self.obj.meth_varargs_keywords(1, 2, a=3, b=4), (self.expected_self, (1, 2), {'a': 3, 'b': 4}) ) def test_varargs_keywords_ext(self): self.assertEqual( self.obj.meth_varargs_keywords(*[1, 2], **{'a': 3, 'b': 4}), (self.expected_self, (1, 2), {'a': 3, 'b': 4}) ) def test_o(self): self.assertEqual(self.obj.meth_o(1), (self.expected_self, 1)) def test_o_ext(self): self.assertEqual(self.obj.meth_o(*[1]), (self.expected_self, 1)) def test_o_error_no_arg(self): msg = r"meth_o\(\) takes exactly one argument \(0 given\)" self.assertRaisesRegex(TypeError, msg, self.obj.meth_o) def test_o_error_two_args(self): msg = r"meth_o\(\) takes exactly one argument \(2 given\)" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_o(1, 2), ) def test_o_error_ext(self): msg = r"meth_o\(\) takes exactly one argument \(3 given\)" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_o(*(1, 2, 3)), ) def test_o_error_kw(self): msg = r"meth_o\(\) takes no keyword arguments" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_o(k=1), ) def test_o_error_arg_kw(self): msg = r"meth_o\(\) takes no keyword arguments" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_o(k=1), ) def test_noargs(self): self.assertEqual(self.obj.meth_noargs(), self.expected_self) def test_noargs_ext(self): self.assertEqual(self.obj.meth_noargs(*[]), self.expected_self) def test_noargs_error_arg(self): msg = r"meth_noargs\(\) takes no arguments \(1 given\)" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_noargs(1), ) def test_noargs_error_arg2(self): msg = r"meth_noargs\(\) takes no arguments \(2 given\)" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_noargs(1, 2), ) def test_noargs_error_ext(self): msg = r"meth_noargs\(\) takes no arguments \(3 given\)" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_noargs(*(1, 2, 3)), ) def test_noargs_error_kw(self): msg = r"meth_noargs\(\) takes no keyword arguments" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_noargs(k=1), ) def test_fastcall(self): self.assertEqual( self.obj.meth_fastcall(1, 2, 3), (self.expected_self, (1, 2, 3)), ) def test_fastcall_ext(self): self.assertEqual( self.obj.meth_fastcall(*(1, 2, 3)), (self.expected_self, (1, 2, 3)), ) def test_fastcall_error_kw(self): msg = r"meth_fastcall\(\) takes no keyword arguments" self.assertRaisesRegex( TypeError, msg, lambda: self.obj.meth_fastcall(k=1), ) def test_fastcall_keywords(self): self.assertEqual( self.obj.meth_fastcall_keywords(1, 2, a=3, b=4), (self.expected_self, (1, 2), {'a': 3, 'b': 4}) ) def test_fastcall_keywords_ext(self): self.assertEqual( self.obj.meth_fastcall_keywords(*(1, 2), **{'a': 3, 'b': 4}), (self.expected_self, (1, 2), {'a': 3, 'b': 4}) ) class TestCallingConventionsInstance(TestCallingConventions): """Test calling instance methods using various calling conventions""" def setUp(self): self.obj = self.expected_self = _testcapi.MethInstance() class TestCallingConventionsClass(TestCallingConventions): """Test calling class methods using various calling conventions""" def setUp(self): self.obj = self.expected_self = _testcapi.MethClass class TestCallingConventionsClassInstance(TestCallingConventions): """Test calling class methods on instance""" def setUp(self): self.obj = _testcapi.MethClass() self.expected_self = _testcapi.MethClass class TestCallingConventionsStatic(TestCallingConventions): """Test calling static methods using various calling conventions""" def setUp(self): self.obj = _testcapi.MethStatic() self.expected_self = None def pyfunc(arg1, arg2): return [arg1, arg2] def pyfunc_noarg(): return "noarg" class PythonClass: def method(self, arg1, arg2): return [arg1, arg2] def method_noarg(self): return "noarg" @classmethod def class_method(cls): return "classmethod" @staticmethod def static_method(): return "staticmethod" PYTHON_INSTANCE = PythonClass() NULL_OR_EMPTY = object() class FastCallTests(unittest.TestCase): """Test calling using various callables from C """ # Test calls with positional arguments CALLS_POSARGS = [ # (func, args: tuple, result) # Python function with 2 arguments (pyfunc, (1, 2), [1, 2]), # Python function without argument (pyfunc_noarg, (), "noarg"), # Python class methods (PythonClass.class_method, (), "classmethod"), (PythonClass.static_method, (), "staticmethod"), # Python instance methods (PYTHON_INSTANCE.method, (1, 2), [1, 2]), (PYTHON_INSTANCE.method_noarg, (), "noarg"), (PYTHON_INSTANCE.class_method, (), "classmethod"), (PYTHON_INSTANCE.static_method, (), "staticmethod"), # C callables are added later ] # Test calls with positional and keyword arguments CALLS_KWARGS = [ # (func, args: tuple, kwargs: dict, result) # Python function with 2 arguments (pyfunc, (1,), {'arg2': 2}, [1, 2]), (pyfunc, (), {'arg1': 1, 'arg2': 2}, [1, 2]), # Python instance methods (PYTHON_INSTANCE.method, (1,), {'arg2': 2}, [1, 2]), (PYTHON_INSTANCE.method, (), {'arg1': 1, 'arg2': 2}, [1, 2]), # C callables are added later ] # Add all the calling conventions and variants of C callables _instance = _testcapi.MethInstance() for obj, expected_self in ( (_testcapi, _testcapi), # module-level function (_instance, _instance), # bound method (_testcapi.MethClass, _testcapi.MethClass), # class method on class (_testcapi.MethClass(), _testcapi.MethClass), # class method on inst. (_testcapi.MethStatic, None), # static method ): CALLS_POSARGS.extend([ (obj.meth_varargs, (1, 2), (expected_self, (1, 2))), (obj.meth_varargs_keywords, (1, 2), (expected_self, (1, 2), NULL_OR_EMPTY)), (obj.meth_fastcall, (1, 2), (expected_self, (1, 2))), (obj.meth_fastcall, (), (expected_self, ())), (obj.meth_fastcall_keywords, (1, 2), (expected_self, (1, 2), NULL_OR_EMPTY)), (obj.meth_fastcall_keywords, (), (expected_self, (), NULL_OR_EMPTY)), (obj.meth_noargs, (), expected_self), (obj.meth_o, (123, ), (expected_self, 123)), ]) CALLS_KWARGS.extend([ (obj.meth_varargs_keywords, (1, 2), {'x': 'y'}, (expected_self, (1, 2), {'x': 'y'})), (obj.meth_varargs_keywords, (), {'x': 'y'}, (expected_self, (), {'x': 'y'})), (obj.meth_varargs_keywords, (1, 2), {}, (expected_self, (1, 2), NULL_OR_EMPTY)), (obj.meth_fastcall_keywords, (1, 2), {'x': 'y'}, (expected_self, (1, 2), {'x': 'y'})), (obj.meth_fastcall_keywords, (), {'x': 'y'}, (expected_self, (), {'x': 'y'})), (obj.meth_fastcall_keywords, (1, 2), {}, (expected_self, (1, 2), NULL_OR_EMPTY)), ]) def check_result(self, result, expected): if isinstance(expected, tuple) and expected[-1] is NULL_OR_EMPTY: if result[-1] in ({}, None): expected = (*expected[:-1], result[-1]) self.assertEqual(result, expected) def test_fastcall(self): # Test _PyObject_FastCall() for func, args, expected in self.CALLS_POSARGS: with self.subTest(func=func, args=args): result = _testcapi.pyobject_fastcall(func, args) self.check_result(result, expected) if not args: # args=NULL, nargs=0 result = _testcapi.pyobject_fastcall(func, None) self.check_result(result, expected) def test_vectorcall_dict(self): # Test PyObject_VectorcallDict() for func, args, expected in self.CALLS_POSARGS: with self.subTest(func=func, args=args): # kwargs=NULL result = _testcapi.pyobject_fastcalldict(func, args, None) self.check_result(result, expected) if not args: # args=NULL, nargs=0, kwargs=NULL result = _testcapi.pyobject_fastcalldict(func, None, None) self.check_result(result, expected) for func, args, kwargs, expected in self.CALLS_KWARGS: with self.subTest(func=func, args=args, kwargs=kwargs): result = _testcapi.pyobject_fastcalldict(func, args, kwargs) self.check_result(result, expected) def test_vectorcall(self): # Test PyObject_Vectorcall() for func, args, expected in self.CALLS_POSARGS: with self.subTest(func=func, args=args): # kwnames=NULL result = _testcapi.pyobject_vectorcall(func, args, None) self.check_result(result, expected) # kwnames=() result = _testcapi.pyobject_vectorcall(func, args, ()) self.check_result(result, expected) if not args: # kwnames=NULL result = _testcapi.pyobject_vectorcall(func, None, None) self.check_result(result, expected) # kwnames=() result = _testcapi.pyobject_vectorcall(func, None, ()) self.check_result(result, expected) for func, args, kwargs, expected in self.CALLS_KWARGS: with self.subTest(func=func, args=args, kwargs=kwargs): kwnames = tuple(kwargs.keys()) args = args + tuple(kwargs.values()) result = _testcapi.pyobject_vectorcall(func, args, kwnames) self.check_result(result, expected) def test_fastcall_clearing_dict(self): # Test bpo-36907: the point of the test is just checking that this # does not crash. class IntWithDict: __slots__ = ["kwargs"] def __init__(self, **kwargs): self.kwargs = kwargs def __index__(self): self.kwargs.clear() gc.collect() return 0 x = IntWithDict(optimize=IntWithDict()) # We test the argument handling of "compile" here, the compilation # itself is not relevant. When we pass flags=x below, x.__index__() is # called, which changes the keywords dict. compile("pass", "", "exec", x, **x.kwargs) Py_TPFLAGS_HAVE_VECTORCALL = 1 << 11 Py_TPFLAGS_METHOD_DESCRIPTOR = 1 << 17 def testfunction(self): """some doc""" return self def testfunction_kw(self, *, kw): """some doc""" return self ADAPTIVE_WARMUP_DELAY = 2 class TestPEP590(unittest.TestCase): def test_method_descriptor_flag(self): import functools cached = functools.lru_cache(1)(testfunction) self.assertFalse(type(repr).__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(type(list.append).__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(type(list.__add__).__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(type(testfunction).__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(type(cached).__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(_testcapi.MethodDescriptorBase.__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertTrue(_testcapi.MethodDescriptorDerived.__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) self.assertFalse(_testcapi.MethodDescriptorNopGet.__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) # Mutable heap types should not inherit Py_TPFLAGS_METHOD_DESCRIPTOR class MethodDescriptorHeap(_testcapi.MethodDescriptorBase): pass self.assertFalse(MethodDescriptorHeap.__flags__ & Py_TPFLAGS_METHOD_DESCRIPTOR) def test_vectorcall_flag(self): self.assertTrue(_testcapi.MethodDescriptorBase.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) self.assertTrue(_testcapi.MethodDescriptorDerived.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) self.assertFalse(_testcapi.MethodDescriptorNopGet.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) self.assertTrue(_testcapi.MethodDescriptor2.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) # Mutable heap types should inherit Py_TPFLAGS_HAVE_VECTORCALL, # but should lose it when __call__ is overridden class MethodDescriptorHeap(_testcapi.MethodDescriptorBase): pass self.assertTrue(MethodDescriptorHeap.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) MethodDescriptorHeap.__call__ = print self.assertFalse(MethodDescriptorHeap.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) # Mutable heap types should not inherit Py_TPFLAGS_HAVE_VECTORCALL if # they define __call__ directly class MethodDescriptorHeap(_testcapi.MethodDescriptorBase): def __call__(self): pass self.assertFalse(MethodDescriptorHeap.__flags__ & Py_TPFLAGS_HAVE_VECTORCALL) def test_vectorcall_override(self): # Check that tp_call can correctly override vectorcall. # MethodDescriptorNopGet implements tp_call but it inherits from # MethodDescriptorBase, which implements vectorcall. Since # MethodDescriptorNopGet returns the args tuple when called, we check # additionally that no new tuple is created for this call. args = tuple(range(5)) f = _testcapi.MethodDescriptorNopGet() self.assertIs(f(*args), args) def test_vectorcall_override_on_mutable_class(self): """Setting __call__ should disable vectorcall""" TestType = _testcapi.make_vectorcall_class() instance = TestType() self.assertEqual(instance(), "tp_call") instance.set_vectorcall(TestType) self.assertEqual(instance(), "vectorcall") # assume vectorcall is used TestType.__call__ = lambda self: "custom" self.assertEqual(instance(), "custom") def test_vectorcall_override_with_subclass(self): """Setting __call__ on a superclass should disable vectorcall""" SuperType = _testcapi.make_vectorcall_class() class DerivedType(SuperType): pass instance = DerivedType() # Derived types with its own vectorcall should be unaffected UnaffectedType1 = _testcapi.make_vectorcall_class(DerivedType) UnaffectedType2 = _testcapi.make_vectorcall_class(SuperType) # Aside: Quickly check that the C helper actually made derived types self.assertTrue(issubclass(UnaffectedType1, DerivedType)) self.assertTrue(issubclass(UnaffectedType2, SuperType)) # Initial state: tp_call self.assertEqual(instance(), "tp_call") self.assertEqual(_testcapi.has_vectorcall_flag(SuperType), True) self.assertEqual(_testcapi.has_vectorcall_flag(DerivedType), True) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType1), True) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType2), True) # Setting the vectorcall function instance.set_vectorcall(SuperType) self.assertEqual(instance(), "vectorcall") self.assertEqual(_testcapi.has_vectorcall_flag(SuperType), True) self.assertEqual(_testcapi.has_vectorcall_flag(DerivedType), True) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType1), True) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType2), True) # Setting __call__ should remove vectorcall from all subclasses SuperType.__call__ = lambda self: "custom" self.assertEqual(instance(), "custom") self.assertEqual(_testcapi.has_vectorcall_flag(SuperType), False) self.assertEqual(_testcapi.has_vectorcall_flag(DerivedType), False) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType1), True) self.assertEqual(_testcapi.has_vectorcall_flag(UnaffectedType2), True) def test_vectorcall(self): # Test a bunch of different ways to call objects: # 1. vectorcall using PyVectorcall_Call() # (only for objects that support vectorcall directly) # 2. normal call # 3. vectorcall using PyObject_Vectorcall() # 4. call as bound method # 5. call using functools.partial # A list of (function, args, kwargs, result) calls to test calls = [(len, (range(42),), {}, 42), (list.append, ([], 0), {}, None), ([].append, (0,), {}, None), (sum, ([36],), {"start":6}, 42), (testfunction, (42,), {}, 42), (testfunction_kw, (42,), {"kw":None}, 42), (_testcapi.MethodDescriptorBase(), (0,), {}, True), (_testcapi.MethodDescriptorDerived(), (0,), {}, True), (_testcapi.MethodDescriptor2(), (0,), {}, False)] from _testcapi import pyobject_vectorcall, pyvectorcall_call from types import MethodType from functools import partial def vectorcall(func, args, kwargs): args = *args, *kwargs.values() kwnames = tuple(kwargs) return pyobject_vectorcall(func, args, kwnames) for (func, args, kwargs, expected) in calls: with self.subTest(str(func)): if not kwargs: self.assertEqual(expected, pyvectorcall_call(func, args)) self.assertEqual(expected, pyvectorcall_call(func, args, kwargs)) # Add derived classes (which do not support vectorcall directly, # but do support all other ways of calling). class MethodDescriptorHeap(_testcapi.MethodDescriptorBase): pass class MethodDescriptorOverridden(_testcapi.MethodDescriptorBase): def __call__(self, n): return 'new' class SuperBase: def __call__(self, *args): return super().__call__(*args) class MethodDescriptorSuper(SuperBase, _testcapi.MethodDescriptorBase): def __call__(self, *args): return super().__call__(*args) calls += [ (dict.update, ({},), {"key":True}, None), ({}.update, ({},), {"key":True}, None), (MethodDescriptorHeap(), (0,), {}, True), (MethodDescriptorOverridden(), (0,), {}, 'new'), (MethodDescriptorSuper(), (0,), {}, True), ] for (func, args, kwargs, expected) in calls: with self.subTest(str(func)): args1 = args[1:] meth = MethodType(func, args[0]) wrapped = partial(func) if not kwargs: self.assertEqual(expected, func(*args)) self.assertEqual(expected, pyobject_vectorcall(func, args, None)) self.assertEqual(expected, meth(*args1)) self.assertEqual(expected, wrapped(*args)) self.assertEqual(expected, func(*args, **kwargs)) self.assertEqual(expected, vectorcall(func, args, kwargs)) self.assertEqual(expected, meth(*args1, **kwargs)) self.assertEqual(expected, wrapped(*args, **kwargs)) def test_setvectorcall(self): from _testcapi import function_setvectorcall def f(num): return num + 1 assert_equal = self.assertEqual num = 10 assert_equal(11, f(num)) function_setvectorcall(f) # make sure specializer is triggered by running > 50 times for _ in range(10 * ADAPTIVE_WARMUP_DELAY): assert_equal("overridden", f(num)) def test_setvectorcall_load_attr_specialization_skip(self): from _testcapi import function_setvectorcall class X: def __getattribute__(self, attr): return attr assert_equal = self.assertEqual x = X() assert_equal("a", x.a) function_setvectorcall(X.__getattribute__) # make sure specialization doesn't trigger # when vectorcall is overridden for _ in range(ADAPTIVE_WARMUP_DELAY): assert_equal("overridden", x.a) def test_setvectorcall_load_attr_specialization_deopt(self): from _testcapi import function_setvectorcall class X: def __getattribute__(self, attr): return attr def get_a(x): return x.a assert_equal = self.assertEqual x = X() # trigger LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN specialization for _ in range(ADAPTIVE_WARMUP_DELAY): assert_equal("a", get_a(x)) function_setvectorcall(X.__getattribute__) # make sure specialized LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN # gets deopted due to overridden vectorcall for _ in range(ADAPTIVE_WARMUP_DELAY): assert_equal("overridden", get_a(x)) @requires_limited_api def test_vectorcall_limited_incoming(self): from _testcapi import pyobject_vectorcall obj = _testcapi.LimitedVectorCallClass() self.assertEqual(pyobject_vectorcall(obj, (), ()), "vectorcall called") @requires_limited_api def test_vectorcall_limited_outgoing(self): from _testcapi import call_vectorcall args_captured = [] kwargs_captured = [] def f(*args, **kwargs): args_captured.append(args) kwargs_captured.append(kwargs) return "success" self.assertEqual(call_vectorcall(f), "success") self.assertEqual(args_captured, [("foo",)]) self.assertEqual(kwargs_captured, [{"baz": "bar"}]) @requires_limited_api def test_vectorcall_limited_outgoing_method(self): from _testcapi import call_vectorcall_method args_captured = [] kwargs_captured = [] class TestInstance: def f(self, *args, **kwargs): args_captured.append(args) kwargs_captured.append(kwargs) return "success" self.assertEqual(call_vectorcall_method(TestInstance()), "success") self.assertEqual(args_captured, [("foo",)]) self.assertEqual(kwargs_captured, [{"baz": "bar"}]) class A: def method_two_args(self, x, y): pass @staticmethod def static_no_args(): pass @staticmethod def positional_only(arg, /): pass @cpython_only class TestErrorMessagesUseQualifiedName(unittest.TestCase): @contextlib.contextmanager def check_raises_type_error(self, message): with self.assertRaises(TypeError) as cm: yield self.assertEqual(str(cm.exception), message) def test_missing_arguments(self): msg = "A.method_two_args() missing 1 required positional argument: 'y'" with self.check_raises_type_error(msg): A().method_two_args("x") def test_too_many_positional(self): msg = "A.static_no_args() takes 0 positional arguments but 1 was given" with self.check_raises_type_error(msg): A.static_no_args("oops it's an arg") def test_positional_only_passed_as_keyword(self): msg = "A.positional_only() got some positional-only arguments passed as keyword arguments: 'arg'" with self.check_raises_type_error(msg): A.positional_only(arg="x") def test_unexpected_keyword(self): msg = "A.method_two_args() got an unexpected keyword argument 'bad'" with self.check_raises_type_error(msg): A().method_two_args(bad="x") def test_multiple_values(self): msg = "A.method_two_args() got multiple values for argument 'x'" with self.check_raises_type_error(msg): A().method_two_args("x", "y", x="oops") @cpython_only class TestRecursion(unittest.TestCase): @skip_on_s390x @unittest.skipIf(is_wasi and Py_DEBUG, "requires deep stack") def test_super_deep(self): def recurse(n): if n: recurse(n-1) def py_recurse(n, m): if n: py_recurse(n-1, m) else: c_py_recurse(m-1) def c_recurse(n): if n: _testcapi.pyobject_fastcall(c_recurse, (n-1,)) def c_py_recurse(m): if m: _testcapi.pyobject_fastcall(py_recurse, (1000, m)) depth = sys.getrecursionlimit() sys.setrecursionlimit(100_000) try: recurse(90_000) with self.assertRaises(RecursionError): recurse(101_000) c_recurse(100) with self.assertRaises(RecursionError): c_recurse(90_000) c_py_recurse(90) with self.assertRaises(RecursionError): c_py_recurse(100_000) finally: sys.setrecursionlimit(depth) class TestFunctionWithManyArgs(unittest.TestCase): def test_function_with_many_args(self): for N in (10, 500, 1000): with self.subTest(N=N): args = ",".join([f"a{i}" for i in range(N)]) src = f"def f({args}) : return a{N//2}" l = {} exec(src, {}, l) self.assertEqual(l['f'](*range(N)), N//2) if __name__ == "__main__": unittest.main()