Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 18.116.67.226
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
www /
server /
panel /
pyenv /
lib /
python3.12 /
test /
[ HOME SHELL ]
Name
Size
Permission
Action
audiodata
[ DIR ]
drwxr-xr-x
certdata
[ DIR ]
drwxr-xr-x
cjkencodings
[ DIR ]
drwxr-xr-x
configdata
[ DIR ]
drwxr-xr-x
crashers
[ DIR ]
drwxr-xr-x
data
[ DIR ]
drwxr-xr-x
decimaltestdata
[ DIR ]
drwxr-xr-x
dtracedata
[ DIR ]
drwxr-xr-x
encoded_modules
[ DIR ]
drwxr-xr-x
imghdrdata
[ DIR ]
drwxr-xr-x
leakers
[ DIR ]
drwxr-xr-x
libregrtest
[ DIR ]
drwxr-xr-x
regrtestdata
[ DIR ]
drwxr-xr-x
sndhdrdata
[ DIR ]
drwxr-xr-x
subprocessdata
[ DIR ]
drwxr-xr-x
support
[ DIR ]
drwxr-xr-x
test_asyncio
[ DIR ]
drwxr-xr-x
test_capi
[ DIR ]
drwxr-xr-x
test_concurrent_futures
[ DIR ]
drwxr-xr-x
test_cppext
[ DIR ]
drwxr-xr-x
test_ctypes
[ DIR ]
drwxr-xr-x
test_dataclasses
[ DIR ]
drwxr-xr-x
test_doctest
[ DIR ]
drwxr-xr-x
test_email
[ DIR ]
drwxr-xr-x
test_future_stmt
[ DIR ]
drwxr-xr-x
test_gdb
[ DIR ]
drwxr-xr-x
test_import
[ DIR ]
drwxr-xr-x
test_importlib
[ DIR ]
drwxr-xr-x
test_inspect
[ DIR ]
drwxr-xr-x
test_json
[ DIR ]
drwxr-xr-x
test_lib2to3
[ DIR ]
drwxr-xr-x
test_module
[ DIR ]
drwxr-xr-x
test_multiprocessing_fork
[ DIR ]
drwxr-xr-x
test_multiprocessing_forkserve...
[ DIR ]
drwxr-xr-x
test_multiprocessing_spawn
[ DIR ]
drwxr-xr-x
test_peg_generator
[ DIR ]
drwxr-xr-x
test_pydoc
[ DIR ]
drwxr-xr-x
test_sqlite3
[ DIR ]
drwxr-xr-x
test_tkinter
[ DIR ]
drwxr-xr-x
test_tomllib
[ DIR ]
drwxr-xr-x
test_tools
[ DIR ]
drwxr-xr-x
test_ttk
[ DIR ]
drwxr-xr-x
test_unittest
[ DIR ]
drwxr-xr-x
test_warnings
[ DIR ]
drwxr-xr-x
test_zipfile
[ DIR ]
drwxr-xr-x
test_zoneinfo
[ DIR ]
drwxr-xr-x
tokenizedata
[ DIR ]
drwxr-xr-x
tracedmodules
[ DIR ]
drwxr-xr-x
typinganndata
[ DIR ]
drwxr-xr-x
wheeldata
[ DIR ]
drwxr-xr-x
xmltestdata
[ DIR ]
drwxr-xr-x
ziptestdata
[ DIR ]
drwxr-xr-x
Sine-1000Hz-300ms.aif
60.25
KB
-rw-r--r--
__init__.py
47
B
-rw-r--r--
__main__.py
67
B
-rw-r--r--
_test_atexit.py
3.61
KB
-rw-r--r--
_test_eintr.py
17.75
KB
-rw-r--r--
_test_embed_set_config.py
8.64
KB
-rw-r--r--
_test_embed_structseq.py
1.99
KB
-rw-r--r--
_test_multiprocessing.py
206.66
KB
-rw-r--r--
_test_venv_multiprocessing.py
796
B
-rw-r--r--
archiver_tests.py
6.1
KB
-rw-r--r--
audiotest.au
27.48
KB
-rw-r--r--
audiotests.py
12.13
KB
-rw-r--r--
audit-tests.py
13.19
KB
-rw-r--r--
autotest.py
214
B
-rw-r--r--
badsyntax_pep3120.py
14
B
-rw-r--r--
bisect_cmd.py
5.34
KB
-rwxr-xr-x
clinic.test.c
138.59
KB
-rw-r--r--
cmath_testcases.txt
141.2
KB
-rw-r--r--
curses_tests.py
1.21
KB
-rwxr-xr-x
datetimetester.py
260.28
KB
-rw-r--r--
dis_module.py
76
B
-rw-r--r--
empty.vbs
70
B
-rw-r--r--
exception_hierarchy.txt
2.33
KB
-rw-r--r--
floating_points.txt
15.92
KB
-rw-r--r--
fork_wait.py
2.29
KB
-rw-r--r--
formatfloat_testcases.txt
7.45
KB
-rw-r--r--
ieee754.txt
3.15
KB
-rw-r--r--
levenshtein_examples.json
406.44
KB
-rw-r--r--
list_tests.py
16.64
KB
-rw-r--r--
lock_tests.py
35.48
KB
-rw-r--r--
mailcap.txt
1.24
KB
-rw-r--r--
mapping_tests.py
21.87
KB
-rw-r--r--
math_testcases.txt
23.19
KB
-rw-r--r--
memory_watchdog.py
711
B
-rw-r--r--
mime.types
47.37
KB
-rw-r--r--
mock_socket.py
3.69
KB
-rw-r--r--
mp_fork_bomb.py
448
B
-rw-r--r--
mp_preload.py
351
B
-rw-r--r--
multibytecodec_support.py
14.19
KB
-rw-r--r--
pickletester.py
143.84
KB
-rw-r--r--
profilee.py
2.97
KB
-rw-r--r--
pstats.pck
65.05
KB
-rw-r--r--
pyclbr_input.py
648
B
-rw-r--r--
pythoninfo.py
28.32
KB
-rw-r--r--
randv2_32.pck
7.34
KB
-rw-r--r--
randv2_64.pck
7.19
KB
-rw-r--r--
randv3.pck
7.82
KB
-rw-r--r--
re_tests.py
25.93
KB
-rwxr-xr-x
recursion.tar
516
B
-rw-r--r--
regrtest.py
1.27
KB
-rwxr-xr-x
relimport.py
27
B
-rw-r--r--
reperf.py
538
B
-rw-r--r--
seq_tests.py
14.96
KB
-rw-r--r--
signalinterproctester.py
3.12
KB
-rw-r--r--
ssl_servers.py
7.12
KB
-rw-r--r--
ssltests.py
1.03
KB
-rw-r--r--
string_tests.py
71.24
KB
-rw-r--r--
test___all__.py
5.04
KB
-rw-r--r--
test__locale.py
8.09
KB
-rw-r--r--
test__opcode.py
4.14
KB
-rw-r--r--
test__osx_support.py
13.62
KB
-rw-r--r--
test__xxinterpchannels.py
52.19
KB
-rw-r--r--
test__xxsubinterpreters.py
27.5
KB
-rw-r--r--
test_abc.py
23.81
KB
-rw-r--r--
test_abstract_numbers.py
5.81
KB
-rw-r--r--
test_aifc.py
17.84
KB
-rw-r--r--
test_argparse.py
189
KB
-rw-r--r--
test_array.py
55.27
KB
-rwxr-xr-x
test_asdl_parser.py
4.44
KB
-rw-r--r--
test_ast.py
140.71
KB
-rw-r--r--
test_asyncgen.py
47.39
KB
-rw-r--r--
test_atexit.py
3.2
KB
-rw-r--r--
test_audioop.py
28.32
KB
-rw-r--r--
test_audit.py
8.6
KB
-rw-r--r--
test_augassign.py
7.68
KB
-rw-r--r--
test_base64.py
35.05
KB
-rw-r--r--
test_baseexception.py
7.77
KB
-rw-r--r--
test_bdb.py
43.75
KB
-rw-r--r--
test_bigaddrspace.py
2.83
KB
-rw-r--r--
test_bigmem.py
45.01
KB
-rw-r--r--
test_binascii.py
19.35
KB
-rw-r--r--
test_binop.py
14.14
KB
-rw-r--r--
test_bisect.py
16.63
KB
-rw-r--r--
test_bool.py
14.25
KB
-rw-r--r--
test_buffer.py
171.31
KB
-rw-r--r--
test_bufio.py
2.56
KB
-rw-r--r--
test_builtin.py
95.14
KB
-rw-r--r--
test_bytes.py
80.57
KB
-rw-r--r--
test_bz2.py
42.61
KB
-rw-r--r--
test_c_locale_coercion.py
20.99
KB
-rw-r--r--
test_calendar.py
51.25
KB
-rw-r--r--
test_call.py
35.21
KB
-rw-r--r--
test_cgi.py
22.27
KB
-rw-r--r--
test_cgitb.py
2.62
KB
-rw-r--r--
test_charmapcodec.py
1.77
KB
-rw-r--r--
test_class.py
19.77
KB
-rw-r--r--
test_clinic.py
83.96
KB
-rw-r--r--
test_cmath.py
23.55
KB
-rw-r--r--
test_cmd.py
6.49
KB
-rw-r--r--
test_cmd_line.py
39.51
KB
-rw-r--r--
test_cmd_line_script.py
34.93
KB
-rw-r--r--
test_code.py
25.7
KB
-rw-r--r--
test_code_module.py
5.53
KB
-rw-r--r--
test_codeccallbacks.py
47.43
KB
-rw-r--r--
test_codecencodings_cn.py
3.86
KB
-rw-r--r--
test_codecencodings_hk.py
701
B
-rw-r--r--
test_codecencodings_iso2022.py
3.65
KB
-rw-r--r--
test_codecencodings_jp.py
4.79
KB
-rw-r--r--
test_codecencodings_kr.py
2.96
KB
-rw-r--r--
test_codecencodings_tw.py
681
B
-rw-r--r--
test_codecmaps_cn.py
746
B
-rw-r--r--
test_codecmaps_hk.py
386
B
-rw-r--r--
test_codecmaps_jp.py
1.7
KB
-rw-r--r--
test_codecmaps_kr.py
1.16
KB
-rw-r--r--
test_codecmaps_tw.py
705
B
-rw-r--r--
test_codecs.py
136.12
KB
-rw-r--r--
test_codeop.py
8.68
KB
-rw-r--r--
test_collections.py
93.47
KB
-rw-r--r--
test_colorsys.py
4.27
KB
-rw-r--r--
test_compare.py
17.46
KB
-rw-r--r--
test_compile.py
78.68
KB
-rw-r--r--
test_compileall.py
48.27
KB
-rw-r--r--
test_compiler_assemble.py
2.46
KB
-rw-r--r--
test_compiler_codegen.py
1.69
KB
-rw-r--r--
test_complex.py
35.37
KB
-rw-r--r--
test_configparser.py
85.34
KB
-rw-r--r--
test_contains.py
3.35
KB
-rw-r--r--
test_context.py
30.78
KB
-rw-r--r--
test_contextlib.py
43.12
KB
-rw-r--r--
test_contextlib_async.py
23.99
KB
-rw-r--r--
test_copy.py
26.52
KB
-rw-r--r--
test_copyreg.py
4.36
KB
-rw-r--r--
test_coroutines.py
67.47
KB
-rw-r--r--
test_cprofile.py
7.36
KB
-rw-r--r--
test_crashers.py
1.17
KB
-rw-r--r--
test_crypt.py
4.19
KB
-rw-r--r--
test_csv.py
61.27
KB
-rw-r--r--
test_curses.py
49.54
KB
-rw-r--r--
test_datetime.py
2.53
KB
-rw-r--r--
test_dbm.py
6.83
KB
-rw-r--r--
test_dbm_dumb.py
11.08
KB
-rw-r--r--
test_dbm_gnu.py
7.24
KB
-rw-r--r--
test_dbm_ndbm.py
5.91
KB
-rw-r--r--
test_decimal.py
216.13
KB
-rw-r--r--
test_decorators.py
14.63
KB
-rw-r--r--
test_defaultdict.py
6.1
KB
-rw-r--r--
test_deque.py
33.16
KB
-rw-r--r--
test_descr.py
196.13
KB
-rw-r--r--
test_descrtut.py
10.98
KB
-rw-r--r--
test_devpoll.py
4.44
KB
-rw-r--r--
test_dict.py
50.92
KB
-rw-r--r--
test_dict_version.py
6.1
KB
-rw-r--r--
test_dictcomps.py
5.15
KB
-rw-r--r--
test_dictviews.py
14.82
KB
-rw-r--r--
test_difflib.py
21.47
KB
-rw-r--r--
test_difflib_expect.html
100.85
KB
-rw-r--r--
test_dis.py
83
KB
-rw-r--r--
test_docxmlrpc.py
9.1
KB
-rw-r--r--
test_dtrace.py
7.98
KB
-rw-r--r--
test_dynamic.py
6
KB
-rw-r--r--
test_dynamicclassattribute.py
9.57
KB
-rw-r--r--
test_eintr.py
627
B
-rw-r--r--
test_embed.py
69.41
KB
-rw-r--r--
test_ensurepip.py
11.49
KB
-rw-r--r--
test_enum.py
186.78
KB
-rw-r--r--
test_enumerate.py
9.14
KB
-rw-r--r--
test_eof.py
3.1
KB
-rw-r--r--
test_epoll.py
9.4
KB
-rw-r--r--
test_errno.py
1.04
KB
-rw-r--r--
test_except_star.py
38.25
KB
-rw-r--r--
test_exception_group.py
34.03
KB
-rw-r--r--
test_exception_hierarchy.py
7.54
KB
-rw-r--r--
test_exception_variations.py
13.74
KB
-rw-r--r--
test_exceptions.py
76.46
KB
-rw-r--r--
test_extcall.py
14.69
KB
-rw-r--r--
test_faulthandler.py
30.31
KB
-rw-r--r--
test_fcntl.py
7.76
KB
-rw-r--r--
test_file.py
11.78
KB
-rw-r--r--
test_file_eintr.py
10.74
KB
-rw-r--r--
test_filecmp.py
10.33
KB
-rw-r--r--
test_fileinput.py
37.85
KB
-rw-r--r--
test_fileio.py
19.98
KB
-rw-r--r--
test_fileutils.py
951
B
-rw-r--r--
test_finalization.py
14.66
KB
-rw-r--r--
test_float.py
64.76
KB
-rw-r--r--
test_flufl.py
1.53
KB
-rw-r--r--
test_fnmatch.py
10.68
KB
-rw-r--r--
test_fork1.py
3.3
KB
-rw-r--r--
test_format.py
28.44
KB
-rw-r--r--
test_fractions.py
52.53
KB
-rw-r--r--
test_frame.py
14.04
KB
-rw-r--r--
test_frozen.py
2.2
KB
-rw-r--r--
test_fstring.py
64.71
KB
-rw-r--r--
test_ftplib.py
41.94
KB
-rw-r--r--
test_funcattrs.py
15.57
KB
-rw-r--r--
test_functools.py
109.31
KB
-rw-r--r--
test_gc.py
47.71
KB
-rw-r--r--
test_generator_stop.py
943
B
-rw-r--r--
test_generators.py
66.13
KB
-rw-r--r--
test_genericalias.py
17.78
KB
-rw-r--r--
test_genericclass.py
9.44
KB
-rw-r--r--
test_genericpath.py
22.29
KB
-rw-r--r--
test_genexps.py
7.3
KB
-rw-r--r--
test_getopt.py
6.6
KB
-rw-r--r--
test_getpass.py
6.37
KB
-rw-r--r--
test_getpath.py
44.36
KB
-rw-r--r--
test_gettext.py
35.67
KB
-rw-r--r--
test_glob.py
17.19
KB
-rw-r--r--
test_global.py
1.2
KB
-rw-r--r--
test_grammar.py
65.97
KB
-rw-r--r--
test_graphlib.py
8.31
KB
-rw-r--r--
test_grp.py
3.67
KB
-rw-r--r--
test_gzip.py
40.94
KB
-rw-r--r--
test_hash.py
12.11
KB
-rw-r--r--
test_hashlib.py
46.71
KB
-rw-r--r--
test_heapq.py
16.42
KB
-rw-r--r--
test_hmac.py
26.06
KB
-rw-r--r--
test_html.py
4.23
KB
-rw-r--r--
test_htmlparser.py
33.37
KB
-rw-r--r--
test_http_cookiejar.py
81.57
KB
-rw-r--r--
test_http_cookies.py
18.7
KB
-rw-r--r--
test_httplib.py
96.14
KB
-rw-r--r--
test_httpservers.py
56.43
KB
-rw-r--r--
test_idle.py
831
B
-rw-r--r--
test_imaplib.py
41.69
KB
-rw-r--r--
test_imghdr.py
4.81
KB
-rw-r--r--
test_index.py
8.37
KB
-rw-r--r--
test_int.py
33.34
KB
-rw-r--r--
test_int_literal.py
6.89
KB
-rw-r--r--
test_interpreters.py
32.11
KB
-rw-r--r--
test_io.py
182.76
KB
-rw-r--r--
test_ioctl.py
3.24
KB
-rw-r--r--
test_ipaddress.py
119.17
KB
-rw-r--r--
test_isinstance.py
12.95
KB
-rw-r--r--
test_iter.py
36.77
KB
-rw-r--r--
test_iterlen.py
7.1
KB
-rw-r--r--
test_itertools.py
106.61
KB
-rw-r--r--
test_keyword.py
2
KB
-rw-r--r--
test_keywordonlyarg.py
6.89
KB
-rw-r--r--
test_kqueue.py
9.36
KB
-rw-r--r--
test_largefile.py
10.17
KB
-rw-r--r--
test_launcher.py
27.23
KB
-rw-r--r--
test_linecache.py
11.04
KB
-rw-r--r--
test_list.py
8.93
KB
-rw-r--r--
test_listcomps.py
20.71
KB
-rw-r--r--
test_lltrace.py
3.71
KB
-rw-r--r--
test_locale.py
24.43
KB
-rw-r--r--
test_logging.py
241.62
KB
-rw-r--r--
test_long.py
63.33
KB
-rw-r--r--
test_longexp.py
233
B
-rw-r--r--
test_lzma.py
92.65
KB
-rw-r--r--
test_mailbox.py
93.91
KB
-rw-r--r--
test_mailcap.py
11.48
KB
-rw-r--r--
test_marshal.py
23.15
KB
-rw-r--r--
test_math.py
107.6
KB
-rw-r--r--
test_math_property.py
1.15
KB
-rw-r--r--
test_memoryio.py
32.65
KB
-rw-r--r--
test_memoryview.py
21.76
KB
-rw-r--r--
test_metaclass.py
6.19
KB
-rw-r--r--
test_mimetypes.py
15.28
KB
-rw-r--r--
test_minidom.py
68.42
KB
-rw-r--r--
test_mmap.py
38.56
KB
-rw-r--r--
test_modulefinder.py
12.21
KB
-rw-r--r--
test_monitoring.py
55.76
KB
-rw-r--r--
test_msilib.py
5.52
KB
-rw-r--r--
test_multibytecodec.py
15.79
KB
-rw-r--r--
test_multiprocessing_main_hand...
11.48
KB
-rw-r--r--
test_named_expressions.py
29.62
KB
-rw-r--r--
test_netrc.py
11.86
KB
-rw-r--r--
test_nis.py
1.25
KB
-rw-r--r--
test_nntplib.py
62.7
KB
-rw-r--r--
test_ntpath.py
52.48
KB
-rw-r--r--
test_numeric_tower.py
8
KB
-rw-r--r--
test_opcache.py
10.89
KB
-rw-r--r--
test_opcodes.py
3.62
KB
-rw-r--r--
test_openpty.py
600
B
-rw-r--r--
test_operator.py
26.72
KB
-rw-r--r--
test_optparse.py
61.02
KB
-rw-r--r--
test_ordered_dict.py
35.62
KB
-rw-r--r--
test_os.py
179.95
KB
-rw-r--r--
test_ossaudiodev.py
7.27
KB
-rw-r--r--
test_osx_env.py
1.31
KB
-rw-r--r--
test_pathlib.py
137.81
KB
-rw-r--r--
test_patma.py
86.03
KB
-rw-r--r--
test_pdb.py
86.53
KB
-rw-r--r--
test_peepholer.py
40.6
KB
-rw-r--r--
test_pep646_syntax.py
7.79
KB
-rw-r--r--
test_perf_profiler.py
11.27
KB
-rw-r--r--
test_perfmaps.py
685
B
-rw-r--r--
test_pickle.py
20.75
KB
-rw-r--r--
test_picklebuffer.py
4.99
KB
-rw-r--r--
test_pickletools.py
4.13
KB
-rw-r--r--
test_pipes.py
6.79
KB
-rw-r--r--
test_pkg.py
9.59
KB
-rw-r--r--
test_pkgutil.py
22.36
KB
-rw-r--r--
test_platform.py
21.59
KB
-rw-r--r--
test_plistlib.py
41.25
KB
-rw-r--r--
test_poll.py
7.39
KB
-rw-r--r--
test_popen.py
2.11
KB
-rw-r--r--
test_poplib.py
17.05
KB
-rw-r--r--
test_positional_only_arg.py
18.44
KB
-rw-r--r--
test_posix.py
95.07
KB
-rw-r--r--
test_posixpath.py
33.75
KB
-rw-r--r--
test_pow.py
6.38
KB
-rw-r--r--
test_pprint.py
50.59
KB
-rw-r--r--
test_print.py
7.72
KB
-rw-r--r--
test_profile.py
8.69
KB
-rw-r--r--
test_property.py
18.03
KB
-rw-r--r--
test_pstats.py
4.31
KB
-rw-r--r--
test_pty.py
16.18
KB
-rw-r--r--
test_pulldom.py
12.33
KB
-rw-r--r--
test_pwd.py
4.32
KB
-rw-r--r--
test_py_compile.py
11.93
KB
-rw-r--r--
test_pyclbr.py
10.15
KB
-rw-r--r--
test_pyexpat.py
29.35
KB
-rw-r--r--
test_queue.py
20.61
KB
-rw-r--r--
test_quopri.py
7.87
KB
-rw-r--r--
test_raise.py
13.44
KB
-rw-r--r--
test_random.py
56.69
KB
-rw-r--r--
test_range.py
26.53
KB
-rw-r--r--
test_re.py
131.37
KB
-rw-r--r--
test_readline.py
12.76
KB
-rw-r--r--
test_regrtest.py
90.02
KB
-rw-r--r--
test_repl.py
4.99
KB
-rw-r--r--
test_reprlib.py
27.77
KB
-rw-r--r--
test_resource.py
7.12
KB
-rw-r--r--
test_richcmp.py
11.95
KB
-rw-r--r--
test_rlcompleter.py
7.4
KB
-rw-r--r--
test_robotparser.py
11.02
KB
-rw-r--r--
test_runpy.py
33.95
KB
-rw-r--r--
test_sax.py
54.63
KB
-rw-r--r--
test_sched.py
7.38
KB
-rw-r--r--
test_scope.py
21.21
KB
-rw-r--r--
test_script_helper.py
5.82
KB
-rw-r--r--
test_secrets.py
4.28
KB
-rw-r--r--
test_select.py
3.42
KB
-rw-r--r--
test_selectors.py
19.64
KB
-rw-r--r--
test_set.py
71.31
KB
-rw-r--r--
test_setcomps.py
3.8
KB
-rw-r--r--
test_shelve.py
6.42
KB
-rw-r--r--
test_shlex.py
13.39
KB
-rw-r--r--
test_shutil.py
126.96
KB
-rw-r--r--
test_signal.py
52.42
KB
-rw-r--r--
test_site.py
29.79
KB
-rw-r--r--
test_slice.py
9.46
KB
-rw-r--r--
test_smtplib.py
60.02
KB
-rw-r--r--
test_smtpnet.py
3.03
KB
-rw-r--r--
test_sndhdr.py
1.51
KB
-rw-r--r--
test_socket.py
254.72
KB
-rw-r--r--
test_socketserver.py
17.39
KB
-rw-r--r--
test_sort.py
13.59
KB
-rw-r--r--
test_source_encoding.py
12.65
KB
-rw-r--r--
test_spwd.py
2.83
KB
-rw-r--r--
test_ssl.py
215.24
KB
-rw-r--r--
test_stable_abi_ctypes.py
24.75
KB
-rw-r--r--
test_startfile.py
1.7
KB
-rw-r--r--
test_stat.py
8.92
KB
-rw-r--r--
test_statistics.py
120.02
KB
-rw-r--r--
test_strftime.py
7.4
KB
-rw-r--r--
test_string.py
21.86
KB
-rw-r--r--
test_string_literals.py
13.07
KB
-rw-r--r--
test_stringprep.py
3.04
KB
-rw-r--r--
test_strptime.py
36.48
KB
-rw-r--r--
test_strtod.py
20.06
KB
-rw-r--r--
test_struct.py
38.45
KB
-rw-r--r--
test_structseq.py
7.23
KB
-rw-r--r--
test_subclassinit.py
8.04
KB
-rw-r--r--
test_subprocess.py
162.29
KB
-rw-r--r--
test_sunau.py
6.09
KB
-rw-r--r--
test_sundry.py
1.02
KB
-rw-r--r--
test_super.py
13.9
KB
-rw-r--r--
test_support.py
27.05
KB
-rw-r--r--
test_symtable.py
11.05
KB
-rw-r--r--
test_syntax.py
71.87
KB
-rw-r--r--
test_sys.py
65.64
KB
-rw-r--r--
test_sys_setprofile.py
13.71
KB
-rw-r--r--
test_sys_settrace.py
84.56
KB
-rw-r--r--
test_sysconfig.py
22.45
KB
-rw-r--r--
test_syslog.py
4.7
KB
-rw-r--r--
test_tabnanny.py
13.89
KB
-rw-r--r--
test_tarfile.py
159.67
KB
-rw-r--r--
test_tcl.py
27.22
KB
-rw-r--r--
test_telnetlib.py
12.85
KB
-rw-r--r--
test_tempfile.py
73.86
KB
-rw-r--r--
test_termios.py
10.95
KB
-rw-r--r--
test_textwrap.py
41.89
KB
-rw-r--r--
test_thread.py
8.87
KB
-rw-r--r--
test_threadedtempfile.py
1.93
KB
-rw-r--r--
test_threading.py
73
KB
-rw-r--r--
test_threading_local.py
6.58
KB
-rw-r--r--
test_threadsignals.py
9.87
KB
-rw-r--r--
test_time.py
42.44
KB
-rw-r--r--
test_timeit.py
15.2
KB
-rw-r--r--
test_timeout.py
10.74
KB
-rw-r--r--
test_tix.py
1.05
KB
-rw-r--r--
test_tokenize.py
115.33
KB
-rw-r--r--
test_trace.py
20.58
KB
-rw-r--r--
test_traceback.py
142.96
KB
-rw-r--r--
test_tracemalloc.py
39.54
KB
-rw-r--r--
test_ttk_textonly.py
16.69
KB
-rw-r--r--
test_tty.py
3.63
KB
-rw-r--r--
test_tuple.py
19.8
KB
-rw-r--r--
test_turtle.py
14.04
KB
-rw-r--r--
test_type_aliases.py
11.65
KB
-rw-r--r--
test_type_annotations.py
6.23
KB
-rw-r--r--
test_type_cache.py
6.6
KB
-rw-r--r--
test_type_comments.py
10.5
KB
-rw-r--r--
test_type_params.py
34.24
KB
-rw-r--r--
test_typechecks.py
2.55
KB
-rw-r--r--
test_types.py
80.76
KB
-rw-r--r--
test_typing.py
334.07
KB
-rw-r--r--
test_ucn.py
9.52
KB
-rw-r--r--
test_unary.py
1.52
KB
-rw-r--r--
test_unicode.py
124.82
KB
-rw-r--r--
test_unicode_file.py
5.72
KB
-rw-r--r--
test_unicode_file_functions.py
6.91
KB
-rw-r--r--
test_unicode_identifiers.py
997
B
-rw-r--r--
test_unicodedata.py
17.01
KB
-rw-r--r--
test_univnewlines.py
3.85
KB
-rw-r--r--
test_unpack.py
3.51
KB
-rw-r--r--
test_unpack_ex.py
9.89
KB
-rw-r--r--
test_unparse.py
27.75
KB
-rw-r--r--
test_urllib.py
70.17
KB
-rw-r--r--
test_urllib2.py
80.73
KB
-rw-r--r--
test_urllib2_localnet.py
25.59
KB
-rw-r--r--
test_urllib2net.py
13.96
KB
-rw-r--r--
test_urllib_response.py
2
KB
-rw-r--r--
test_urllibnet.py
9.41
KB
-rw-r--r--
test_urlparse.py
73.73
KB
-rw-r--r--
test_userdict.py
7.56
KB
-rw-r--r--
test_userlist.py
1.97
KB
-rw-r--r--
test_userstring.py
2.52
KB
-rw-r--r--
test_utf8_mode.py
10.31
KB
-rw-r--r--
test_utf8source.py
1.15
KB
-rw-r--r--
test_uu.py
9.2
KB
-rw-r--r--
test_uuid.py
44.26
KB
-rwxr-xr-x
test_venv.py
32.42
KB
-rw-r--r--
test_wait3.py
1.74
KB
-rw-r--r--
test_wait4.py
1.14
KB
-rw-r--r--
test_wave.py
7.64
KB
-rw-r--r--
test_weakref.py
74.32
KB
-rw-r--r--
test_weakset.py
16.3
KB
-rw-r--r--
test_webbrowser.py
10.5
KB
-rw-r--r--
test_winconsoleio.py
6.69
KB
-rw-r--r--
test_winreg.py
22.48
KB
-rw-r--r--
test_winsound.py
5.32
KB
-rw-r--r--
test_with.py
26.02
KB
-rw-r--r--
test_wmi.py
2.89
KB
-rw-r--r--
test_wsgiref.py
29.32
KB
-rw-r--r--
test_xdrlib.py
2.25
KB
-rw-r--r--
test_xml_dom_minicompat.py
4.18
KB
-rw-r--r--
test_xml_etree.py
160.22
KB
-rw-r--r--
test_xml_etree_c.py
9.34
KB
-rw-r--r--
test_xmlrpc.py
58.08
KB
-rw-r--r--
test_xmlrpc_net.py
954
B
-rw-r--r--
test_xxlimited.py
2.46
KB
-rw-r--r--
test_xxtestfuzz.py
690
B
-rw-r--r--
test_yield_from.py
50.23
KB
-rw-r--r--
test_zipapp.py
16.6
KB
-rw-r--r--
test_zipfile64.py
5.78
KB
-rw-r--r--
test_zipimport.py
32.97
KB
-rw-r--r--
test_zipimport_support.py
10.57
KB
-rw-r--r--
test_zlib.py
41.47
KB
-rw-r--r--
testcodec.py
1.02
KB
-rw-r--r--
testtar.tar
425
KB
-rw-r--r--
testtar.tar.xz
172
B
-rw-r--r--
tf_inherit_check.py
714
B
-rw-r--r--
time_hashlib.py
2.87
KB
-rw-r--r--
win_console_handler.py
1.38
KB
-rw-r--r--
xmltests.py
499
B
-rw-r--r--
zip_cp437_header.zip
270
B
-rw-r--r--
zipdir.zip
374
B
-rw-r--r--
zipdir_backslash.zip
192
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : test_named_expressions.py
import unittest GLOBAL_VAR = None class NamedExpressionInvalidTest(unittest.TestCase): def test_named_expression_invalid_01(self): code = """x := 0""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_02(self): code = """x = y := 0""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_03(self): code = """y := f(x)""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_04(self): code = """y0 = y1 := f(x)""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_06(self): code = """((a, b) := (1, 2))""" with self.assertRaisesRegex(SyntaxError, "cannot use assignment expressions with tuple"): exec(code, {}, {}) def test_named_expression_invalid_07(self): code = """def spam(a = b := 42): pass""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_08(self): code = """def spam(a: b := 42 = 5): pass""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_09(self): code = """spam(a=b := 'c')""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_10(self): code = """spam(x = y := f(x))""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_11(self): code = """spam(a=1, b := 2)""" with self.assertRaisesRegex(SyntaxError, "positional argument follows keyword argument"): exec(code, {}, {}) def test_named_expression_invalid_12(self): code = """spam(a=1, (b := 2))""" with self.assertRaisesRegex(SyntaxError, "positional argument follows keyword argument"): exec(code, {}, {}) def test_named_expression_invalid_13(self): code = """spam(a=1, (b := 2))""" with self.assertRaisesRegex(SyntaxError, "positional argument follows keyword argument"): exec(code, {}, {}) def test_named_expression_invalid_14(self): code = """(x := lambda: y := 1)""" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_15(self): code = """(lambda: x := 1)""" with self.assertRaisesRegex(SyntaxError, "cannot use assignment expressions with lambda"): exec(code, {}, {}) def test_named_expression_invalid_16(self): code = "[i + 1 for i in i := [1,2]]" with self.assertRaisesRegex(SyntaxError, "invalid syntax"): exec(code, {}, {}) def test_named_expression_invalid_17(self): code = "[i := 0, j := 1 for i, j in [(1, 2), (3, 4)]]" with self.assertRaisesRegex(SyntaxError, "did you forget parentheses around the comprehension target?"): exec(code, {}, {}) def test_named_expression_invalid_in_class_body(self): code = """class Foo(): [(42, 1 + ((( j := i )))) for i in range(5)] """ with self.assertRaisesRegex(SyntaxError, "assignment expression within a comprehension cannot be used in a class body"): exec(code, {}, {}) def test_named_expression_valid_rebinding_iteration_variable(self): # This test covers that we can reassign variables # that are not directly assigned in the # iterable part of a comprehension. cases = [ # Regression tests from https://github.com/python/cpython/issues/87447 ("Complex expression: c", "{0}(c := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: d", "{0}(d := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: e", "{0}(e := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: f", "{0}(f := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: g", "{0}(g := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: h", "{0}(h := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: i", "{0}(i := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: j", "{0}(j := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ] for test_case, code in cases: for lpar, rpar in [('(', ')'), ('[', ']'), ('{', '}')]: code = code.format(lpar, rpar) with self.subTest(case=test_case, lpar=lpar, rpar=rpar): # Names used in snippets are not defined, # but we are fine with it: just must not be a SyntaxError. # Names used in snippets are not defined, # but we are fine with it: just must not be a SyntaxError. with self.assertRaises(NameError): exec(code, {}) # Module scope with self.assertRaises(NameError): exec(code, {}, {}) # Class scope exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_iteration_variable(self): # This test covers that we cannot reassign variables # that are directly assigned in the iterable part of a comprehension. cases = [ # Regression tests from https://github.com/python/cpython/issues/87447 ("Complex expression: a", "a", "{0}(a := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ("Complex expression: b", "b", "{0}(b := 1) for a, (*b, c[d+e::f(g)], h.i) in j{1}"), ] for test_case, target, code in cases: msg = f"assignment expression cannot rebind comprehension iteration variable '{target}'" for lpar, rpar in [('(', ')'), ('[', ']'), ('{', '}')]: code = code.format(lpar, rpar) with self.subTest(case=test_case, lpar=lpar, rpar=rpar): # Names used in snippets are not defined, # but we are fine with it: just must not be a SyntaxError. # Names used in snippets are not defined, # but we are fine with it: just must not be a SyntaxError. with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_list_comprehension_iteration_variable(self): cases = [ ("Local reuse", 'i', "[i := 0 for i in range(5)]"), ("Nested reuse", 'j', "[[(j := 0) for i in range(5)] for j in range(5)]"), ("Reuse inner loop target", 'j', "[(j := 0) for i in range(5) for j in range(5)]"), ("Unpacking reuse", 'i', "[i := 0 for i, j in [(0, 1)]]"), ("Reuse in loop condition", 'i', "[i+1 for i in range(5) if (i := 0)]"), ("Unreachable reuse", 'i', "[False or (i:=0) for i in range(5)]"), ("Unreachable nested reuse", 'i', "[(i, j) for i in range(5) for j in range(5) if True or (i:=10)]"), ] for case, target, code in cases: msg = f"assignment expression cannot rebind comprehension iteration variable '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_list_comprehension_inner_loop(self): cases = [ ("Inner reuse", 'j', "[i for i in range(5) if (j := 0) for j in range(5)]"), ("Inner unpacking reuse", 'j', "[i for i in range(5) if (j := 0) for j, k in [(0, 1)]]"), ] for case, target, code in cases: msg = f"comprehension inner loop cannot rebind assignment expression target '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_list_comprehension_iterable_expression(self): cases = [ ("Top level", "[i for i in (i := range(5))]"), ("Inside tuple", "[i for i in (2, 3, i := range(5))]"), ("Inside list", "[i for i in [2, 3, i := range(5)]]"), ("Different name", "[i for i in (j := range(5))]"), ("Lambda expression", "[i for i in (lambda:(j := range(5)))()]"), ("Inner loop", "[i for i in range(5) for j in (i := range(5))]"), ("Nested comprehension", "[i for i in [j for j in (k := range(5))]]"), ("Nested comprehension condition", "[i for i in [j for j in range(5) if (j := True)]]"), ("Nested comprehension body", "[i for i in [(j := True) for j in range(5)]]"), ] msg = "assignment expression cannot be used in a comprehension iterable expression" for case, code in cases: with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_set_comprehension_iteration_variable(self): cases = [ ("Local reuse", 'i', "{i := 0 for i in range(5)}"), ("Nested reuse", 'j', "{{(j := 0) for i in range(5)} for j in range(5)}"), ("Reuse inner loop target", 'j', "{(j := 0) for i in range(5) for j in range(5)}"), ("Unpacking reuse", 'i', "{i := 0 for i, j in {(0, 1)}}"), ("Reuse in loop condition", 'i', "{i+1 for i in range(5) if (i := 0)}"), ("Unreachable reuse", 'i', "{False or (i:=0) for i in range(5)}"), ("Unreachable nested reuse", 'i', "{(i, j) for i in range(5) for j in range(5) if True or (i:=10)}"), # Regression tests from https://github.com/python/cpython/issues/87447 ("Complex expression: a", "a", "{(a := 1) for a, (*b, c[d+e::f(g)], h.i) in j}"), ("Complex expression: b", "b", "{(b := 1) for a, (*b, c[d+e::f(g)], h.i) in j}"), ] for case, target, code in cases: msg = f"assignment expression cannot rebind comprehension iteration variable '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_set_comprehension_inner_loop(self): cases = [ ("Inner reuse", 'j', "{i for i in range(5) if (j := 0) for j in range(5)}"), ("Inner unpacking reuse", 'j', "{i for i in range(5) if (j := 0) for j, k in {(0, 1)}}"), ] for case, target, code in cases: msg = f"comprehension inner loop cannot rebind assignment expression target '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_set_comprehension_iterable_expression(self): cases = [ ("Top level", "{i for i in (i := range(5))}"), ("Inside tuple", "{i for i in (2, 3, i := range(5))}"), ("Inside list", "{i for i in {2, 3, i := range(5)}}"), ("Different name", "{i for i in (j := range(5))}"), ("Lambda expression", "{i for i in (lambda:(j := range(5)))()}"), ("Inner loop", "{i for i in range(5) for j in (i := range(5))}"), ("Nested comprehension", "{i for i in {j for j in (k := range(5))}}"), ("Nested comprehension condition", "{i for i in {j for j in range(5) if (j := True)}}"), ("Nested comprehension body", "{i for i in {(j := True) for j in range(5)}}"), ] msg = "assignment expression cannot be used in a comprehension iterable expression" for case, code in cases: with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_dict_comprehension_iteration_variable(self): cases = [ ("Key reuse", 'i', "{(i := 0): 1 for i in range(5)}"), ("Value reuse", 'i', "{1: (i := 0) for i in range(5)}"), ("Both reuse", 'i', "{(i := 0): (i := 0) for i in range(5)}"), ("Nested reuse", 'j', "{{(j := 0): 1 for i in range(5)} for j in range(5)}"), ("Reuse inner loop target", 'j', "{(j := 0): 1 for i in range(5) for j in range(5)}"), ("Unpacking key reuse", 'i', "{(i := 0): 1 for i, j in {(0, 1)}}"), ("Unpacking value reuse", 'i', "{1: (i := 0) for i, j in {(0, 1)}}"), ("Reuse in loop condition", 'i', "{i+1: 1 for i in range(5) if (i := 0)}"), ("Unreachable reuse", 'i', "{(False or (i:=0)): 1 for i in range(5)}"), ("Unreachable nested reuse", 'i', "{i: j for i in range(5) for j in range(5) if True or (i:=10)}"), # Regression tests from https://github.com/python/cpython/issues/87447 ("Complex expression: a", "a", "{(a := 1): 1 for a, (*b, c[d+e::f(g)], h.i) in j}"), ("Complex expression: b", "b", "{(b := 1): 1 for a, (*b, c[d+e::f(g)], h.i) in j}"), ] for case, target, code in cases: msg = f"assignment expression cannot rebind comprehension iteration variable '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_rebinding_dict_comprehension_inner_loop(self): cases = [ ("Inner reuse", 'j', "{i: 1 for i in range(5) if (j := 0) for j in range(5)}"), ("Inner unpacking reuse", 'j', "{i: 1 for i in range(5) if (j := 0) for j, k in {(0, 1)}}"), ] for case, target, code in cases: msg = f"comprehension inner loop cannot rebind assignment expression target '{target}'" with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_dict_comprehension_iterable_expression(self): cases = [ ("Top level", "{i: 1 for i in (i := range(5))}"), ("Inside tuple", "{i: 1 for i in (2, 3, i := range(5))}"), ("Inside list", "{i: 1 for i in [2, 3, i := range(5)]}"), ("Different name", "{i: 1 for i in (j := range(5))}"), ("Lambda expression", "{i: 1 for i in (lambda:(j := range(5)))()}"), ("Inner loop", "{i: 1 for i in range(5) for j in (i := range(5))}"), ("Nested comprehension", "{i: 1 for i in {j: 2 for j in (k := range(5))}}"), ("Nested comprehension condition", "{i: 1 for i in {j: 2 for j in range(5) if (j := True)}}"), ("Nested comprehension body", "{i: 1 for i in {(j := True) for j in range(5)}}"), ] msg = "assignment expression cannot be used in a comprehension iterable expression" for case, code in cases: with self.subTest(case=case): with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}) # Module scope with self.assertRaisesRegex(SyntaxError, msg): exec(code, {}, {}) # Class scope with self.assertRaisesRegex(SyntaxError, msg): exec(f"lambda: {code}", {}) # Function scope def test_named_expression_invalid_mangled_class_variables(self): code = """class Foo: def bar(self): [[(__x:=2) for _ in range(2)] for __x in range(2)] """ with self.assertRaisesRegex(SyntaxError, "assignment expression cannot rebind comprehension iteration variable '__x'"): exec(code, {}, {}) class NamedExpressionAssignmentTest(unittest.TestCase): def test_named_expression_assignment_01(self): (a := 10) self.assertEqual(a, 10) def test_named_expression_assignment_02(self): a = 20 (a := a) self.assertEqual(a, 20) def test_named_expression_assignment_03(self): (total := 1 + 2) self.assertEqual(total, 3) def test_named_expression_assignment_04(self): (info := (1, 2, 3)) self.assertEqual(info, (1, 2, 3)) def test_named_expression_assignment_05(self): (x := 1, 2) self.assertEqual(x, 1) def test_named_expression_assignment_06(self): (z := (y := (x := 0))) self.assertEqual(x, 0) self.assertEqual(y, 0) self.assertEqual(z, 0) def test_named_expression_assignment_07(self): (loc := (1, 2)) self.assertEqual(loc, (1, 2)) def test_named_expression_assignment_08(self): if spam := "eggs": self.assertEqual(spam, "eggs") else: self.fail("variable was not assigned using named expression") def test_named_expression_assignment_09(self): if True and (spam := True): self.assertTrue(spam) else: self.fail("variable was not assigned using named expression") def test_named_expression_assignment_10(self): if (match := 10) == 10: self.assertEqual(match, 10) else: self.fail("variable was not assigned using named expression") def test_named_expression_assignment_11(self): def spam(a): return a input_data = [1, 2, 3] res = [(x, y, x/y) for x in input_data if (y := spam(x)) > 0] self.assertEqual(res, [(1, 1, 1.0), (2, 2, 1.0), (3, 3, 1.0)]) def test_named_expression_assignment_12(self): def spam(a): return a res = [[y := spam(x), x/y] for x in range(1, 5)] self.assertEqual(res, [[1, 1.0], [2, 1.0], [3, 1.0], [4, 1.0]]) def test_named_expression_assignment_13(self): length = len(lines := [1, 2]) self.assertEqual(length, 2) self.assertEqual(lines, [1,2]) def test_named_expression_assignment_14(self): """ Where all variables are positive integers, and a is at least as large as the n'th root of x, this algorithm returns the floor of the n'th root of x (and roughly doubling the number of accurate bits per iteration): """ a = 9 n = 2 x = 3 while a > (d := x // a**(n-1)): a = ((n-1)*a + d) // n self.assertEqual(a, 1) def test_named_expression_assignment_15(self): while a := False: self.fail("While body executed") # This will not run self.assertEqual(a, False) def test_named_expression_assignment_16(self): a, b = 1, 2 fib = {(c := a): (a := b) + (b := a + c) - b for __ in range(6)} self.assertEqual(fib, {1: 2, 2: 3, 3: 5, 5: 8, 8: 13, 13: 21}) def test_named_expression_assignment_17(self): a = [1] element = a[b:=0] self.assertEqual(b, 0) self.assertEqual(element, a[0]) def test_named_expression_assignment_18(self): class TwoDimensionalList: def __init__(self, two_dimensional_list): self.two_dimensional_list = two_dimensional_list def __getitem__(self, index): return self.two_dimensional_list[index[0]][index[1]] a = TwoDimensionalList([[1], [2]]) element = a[b:=0, c:=0] self.assertEqual(b, 0) self.assertEqual(c, 0) self.assertEqual(element, a.two_dimensional_list[b][c]) class NamedExpressionScopeTest(unittest.TestCase): def test_named_expression_scope_01(self): code = """def spam(): (a := 5) print(a)""" with self.assertRaisesRegex(NameError, "name 'a' is not defined"): exec(code, {}, {}) def test_named_expression_scope_02(self): total = 0 partial_sums = [total := total + v for v in range(5)] self.assertEqual(partial_sums, [0, 1, 3, 6, 10]) self.assertEqual(total, 10) def test_named_expression_scope_03(self): containsOne = any((lastNum := num) == 1 for num in [1, 2, 3]) self.assertTrue(containsOne) self.assertEqual(lastNum, 1) def test_named_expression_scope_04(self): def spam(a): return a res = [[y := spam(x), x/y] for x in range(1, 5)] self.assertEqual(y, 4) def test_named_expression_scope_05(self): def spam(a): return a input_data = [1, 2, 3] res = [(x, y, x/y) for x in input_data if (y := spam(x)) > 0] self.assertEqual(res, [(1, 1, 1.0), (2, 2, 1.0), (3, 3, 1.0)]) self.assertEqual(y, 3) def test_named_expression_scope_06(self): res = [[spam := i for i in range(3)] for j in range(2)] self.assertEqual(res, [[0, 1, 2], [0, 1, 2]]) self.assertEqual(spam, 2) def test_named_expression_scope_07(self): len(lines := [1, 2]) self.assertEqual(lines, [1, 2]) def test_named_expression_scope_08(self): def spam(a): return a def eggs(b): return b * 2 res = [spam(a := eggs(b := h)) for h in range(2)] self.assertEqual(res, [0, 2]) self.assertEqual(a, 2) self.assertEqual(b, 1) def test_named_expression_scope_09(self): def spam(a): return a def eggs(b): return b * 2 res = [spam(a := eggs(a := h)) for h in range(2)] self.assertEqual(res, [0, 2]) self.assertEqual(a, 2) def test_named_expression_scope_10(self): res = [b := [a := 1 for i in range(2)] for j in range(2)] self.assertEqual(res, [[1, 1], [1, 1]]) self.assertEqual(a, 1) self.assertEqual(b, [1, 1]) def test_named_expression_scope_11(self): res = [j := i for i in range(5)] self.assertEqual(res, [0, 1, 2, 3, 4]) self.assertEqual(j, 4) def test_named_expression_scope_17(self): b = 0 res = [b := i + b for i in range(5)] self.assertEqual(res, [0, 1, 3, 6, 10]) self.assertEqual(b, 10) def test_named_expression_scope_18(self): def spam(a): return a res = spam(b := 2) self.assertEqual(res, 2) self.assertEqual(b, 2) def test_named_expression_scope_19(self): def spam(a): return a res = spam((b := 2)) self.assertEqual(res, 2) self.assertEqual(b, 2) def test_named_expression_scope_20(self): def spam(a): return a res = spam(a=(b := 2)) self.assertEqual(res, 2) self.assertEqual(b, 2) def test_named_expression_scope_21(self): def spam(a, b): return a + b res = spam(c := 2, b=1) self.assertEqual(res, 3) self.assertEqual(c, 2) def test_named_expression_scope_22(self): def spam(a, b): return a + b res = spam((c := 2), b=1) self.assertEqual(res, 3) self.assertEqual(c, 2) def test_named_expression_scope_23(self): def spam(a, b): return a + b res = spam(b=(c := 2), a=1) self.assertEqual(res, 3) self.assertEqual(c, 2) def test_named_expression_scope_24(self): a = 10 def spam(): nonlocal a (a := 20) spam() self.assertEqual(a, 20) def test_named_expression_scope_25(self): ns = {} code = """a = 10 def spam(): global a (a := 20) spam()""" exec(code, ns, {}) self.assertEqual(ns["a"], 20) def test_named_expression_variable_reuse_in_comprehensions(self): # The compiler is expected to raise syntax error for comprehension # iteration variables, but should be fine with rebinding of other # names (e.g. globals, nonlocals, other assignment expressions) # The cases are all defined to produce the same expected result # Each comprehension is checked at both function scope and module scope rebinding = "[x := i for i in range(3) if (x := i) or not x]" filter_ref = "[x := i for i in range(3) if x or not x]" body_ref = "[x for i in range(3) if (x := i) or not x]" nested_ref = "[j for i in range(3) if x or not x for j in range(3) if (x := i)][:-3]" cases = [ ("Rebind global", f"x = 1; result = {rebinding}"), ("Rebind nonlocal", f"result, x = (lambda x=1: ({rebinding}, x))()"), ("Filter global", f"x = 1; result = {filter_ref}"), ("Filter nonlocal", f"result, x = (lambda x=1: ({filter_ref}, x))()"), ("Body global", f"x = 1; result = {body_ref}"), ("Body nonlocal", f"result, x = (lambda x=1: ({body_ref}, x))()"), ("Nested global", f"x = 1; result = {nested_ref}"), ("Nested nonlocal", f"result, x = (lambda x=1: ({nested_ref}, x))()"), ] for case, code in cases: with self.subTest(case=case): ns = {} exec(code, ns) self.assertEqual(ns["x"], 2) self.assertEqual(ns["result"], [0, 1, 2]) def test_named_expression_global_scope(self): sentinel = object() global GLOBAL_VAR def f(): global GLOBAL_VAR [GLOBAL_VAR := sentinel for _ in range(1)] self.assertEqual(GLOBAL_VAR, sentinel) try: f() self.assertEqual(GLOBAL_VAR, sentinel) finally: GLOBAL_VAR = None def test_named_expression_global_scope_no_global_keyword(self): sentinel = object() def f(): GLOBAL_VAR = None [GLOBAL_VAR := sentinel for _ in range(1)] self.assertEqual(GLOBAL_VAR, sentinel) f() self.assertEqual(GLOBAL_VAR, None) def test_named_expression_nonlocal_scope(self): sentinel = object() def f(): nonlocal_var = None def g(): nonlocal nonlocal_var [nonlocal_var := sentinel for _ in range(1)] g() self.assertEqual(nonlocal_var, sentinel) f() def test_named_expression_nonlocal_scope_no_nonlocal_keyword(self): sentinel = object() def f(): nonlocal_var = None def g(): [nonlocal_var := sentinel for _ in range(1)] g() self.assertEqual(nonlocal_var, None) f() def test_named_expression_scope_in_genexp(self): a = 1 b = [1, 2, 3, 4] genexp = (c := i + a for i in b) self.assertNotIn("c", locals()) for idx, elem in enumerate(genexp): self.assertEqual(elem, b[idx] + a) def test_named_expression_scope_mangled_names(self): class Foo: def f(self_): global __x1 __x1 = 0 [_Foo__x1 := 1 for a in [2]] self.assertEqual(__x1, 1) [__x1 := 2 for a in [3]] self.assertEqual(__x1, 2) Foo().f() self.assertEqual(_Foo__x1, 2) if __name__ == "__main__": unittest.main()
Close