with self.assertRaises(channels.ChannelClosedError):
channels.close(fix.cid, force=True)
else:
- run_interp(interp.id, f"""
+ run_interp(interp.id, """
with helpers.expect_channel_closed():
channels.recv(cid)
""")
- run_interp(interp.id, f"""
+ run_interp(interp.id, """
with helpers.expect_channel_closed():
channels.send(cid, b'spam')
""")
- run_interp(interp.id, f"""
+ run_interp(interp.id, """
with helpers.expect_channel_closed():
channels.close(cid)
""")
- run_interp(interp.id, f"""
+ run_interp(interp.id, """
with helpers.expect_channel_closed():
channels.close(cid, force=True)
""")
"""))
shared = {'spam': b'ham'}
- script = dedent(f"""
+ script = dedent("""
ns2 = dict(vars())
del ns2['__builtins__']
""")
# XXX Fix this test!
@unittest.skip('blocking forever')
def test_still_running_at_exit(self):
- script = dedent(f"""
+ script = dedent("""
from textwrap import dedent
import threading
import _xxsubinterpreters as _interpreters
@threading_helper.requires_working_threading()
def test_gilstate_ensure_no_deadlock(self):
# See https://github.com/python/cpython/issues/96071
- code = textwrap.dedent(f"""
+ code = textwrap.dedent("""
import _testcapi
def callback():
foo.__code__ = foo.__code__.replace(
co_code=b'\xe5' + foo.__code__.co_code[1:])
- msg = f"unknown opcode 229"
+ msg = "unknown opcode 229"
with self.assertRaisesRegex(SystemError, msg):
foo()
class SetUsingInstanceFromIterable(MutableSet):
def __init__(self, values, created_by):
if not created_by:
- raise ValueError(f'created_by must be specified')
+ raise ValueError('created_by must be specified')
self.created_by = created_by
self._values = set(values)
f"coroutine '{corofn.__qualname__}' was never awaited\n",
"Coroutine created at (most recent call last)\n",
f' File "{a1_filename}", line {a1_lineno}, in a1\n',
- f' return corofn() # comment in a1',
+ " return corofn() # comment in a1",
]))
check(2, "".join([
f"coroutine '{corofn.__qualname__}' was never awaited\n",
"Coroutine created at (most recent call last)\n",
f' File "{a2_filename}", line {a2_lineno}, in a2\n',
- f' return a1() # comment in a2\n',
+ " return a1() # comment in a2\n",
f' File "{a1_filename}", line {a1_lineno}, in a1\n',
- f' return corofn() # comment in a1',
+ " return corofn() # comment in a1",
]))
finally:
class Subclass(typ): pass
with self.assertRaisesRegex(ValueError,
- f"mutable default .*Subclass'>"
- ' for field z is not allowed'
+ "mutable default .*Subclass'>"
+ " for field z is not allowed"
):
@dataclass
class Point:
print(f"--- {cmd} failed ---")
print(f"stdout:\n{out}")
print(f"stderr:\n{err}")
- print(f"------")
+ print("------")
self.assertEqual(p.returncode, returncode,
"bad returncode %d, stderr is %r" %
self.init_count = mod.initialized_count()
return self
- SCRIPT_BODY = ModuleSnapshot.SCRIPT_BODY + textwrap.dedent(f'''
+ SCRIPT_BODY = ModuleSnapshot.SCRIPT_BODY + textwrap.dedent('''
snapshot['module'].update(dict(
int_const=mod.int_const,
str_const=mod.str_const,
def test_filter_to_tag(self):
company = "PythonTestSuite"
- data = self.run_py([f"-V:3.100"])
+ data = self.run_py(["-V:3.100"])
self.assertEqual("X.Y.exe", data["LaunchCommand"])
self.assertEqual(company, data["env.company"])
self.assertEqual("3.100", data["env.tag"])
- data = self.run_py([f"-V:3.100-32"])
+ data = self.run_py(["-V:3.100-32"])
self.assertEqual("X.Y-32.exe", data["LaunchCommand"])
self.assertEqual(company, data["env.company"])
self.assertEqual("3.100-32", data["env.tag"])
- data = self.run_py([f"-V:3.100-arm64"])
+ data = self.run_py(["-V:3.100-arm64"])
self.assertEqual("X.Y-arm64.exe -X fake_arg_for_test", data["LaunchCommand"])
self.assertEqual(company, data["env.company"])
self.assertEqual("3.100-arm64", data["env.tag"])
def test_filter_with_single_install(self):
company = "PythonTestSuite1"
data = self.run_py(
- [f"-V:Nonexistent"],
+ ["-V:Nonexistent"],
env={"PYLAUNCHER_LIMIT_TO_COMPANY": company},
expect_returncode=103,
)
data = self.run_py(["--version"], argv=f'{argv0} --version')
self.assertEqual("PythonTestSuite", data["SearchInfo.company"])
self.assertEqual("3.100", data["SearchInfo.tag"])
- self.assertEqual(f'X.Y.exe --version', data["stdout"].strip())
+ self.assertEqual("X.Y.exe --version", data["stdout"].strip())
def test_py_default_in_list(self):
data = self.run_py(["-0"], env=TEST_PY_ENV)
self.assertIn("9PJPW5LDXLZ5", cmd)
def test_literal_shebang_absolute(self):
- with self.script(f"#! C:/some_random_app -witharg") as script:
+ with self.script("#! C:/some_random_app -witharg") as script:
data = self.run_py([script])
self.assertEqual(
f"C:\\some_random_app -witharg {script}",
)
def test_literal_shebang_relative(self):
- with self.script(f"#! ..\\some_random_app -witharg") as script:
+ with self.script("#! ..\\some_random_app -witharg") as script:
data = self.run_py([script])
self.assertEqual(
f"{script.parent.parent}\\some_random_app -witharg {script}",
)
def test_literal_shebang_quoted(self):
- with self.script(f'#! "some random app" -witharg') as script:
+ with self.script('#! "some random app" -witharg') as script:
data = self.run_py([script])
self.assertEqual(
f'"{script.parent}\\some random app" -witharg {script}',
data["stdout"].strip(),
)
- with self.script(f'#! some" random "app -witharg') as script:
+ with self.script('#! some" random "app -witharg') as script:
data = self.run_py([script])
self.assertEqual(
f'"{script.parent}\\some random app" -witharg {script}',
)
def test_literal_shebang_quoted_escape(self):
- with self.script(f'#! some\\" random "app -witharg') as script:
+ with self.script('#! some\\" random "app -witharg') as script:
data = self.run_py([script])
self.assertEqual(
f'"{script.parent}\\some\\ random app" -witharg {script}',
self.assertInBytecode(f, 'LOAD_FAST', "a73")
def test_setting_lineno_no_undefined(self):
- code = textwrap.dedent(f"""\
+ code = textwrap.dedent("""\
def f():
x = y = 2
if not x:
self.assertEqual(f.__code__.co_code, co_code)
def test_setting_lineno_one_undefined(self):
- code = textwrap.dedent(f"""\
+ code = textwrap.dedent("""\
def f():
x = y = 2
if not x:
self.assertEqual(f.__code__.co_code, co_code)
def test_setting_lineno_two_undefined(self):
- code = textwrap.dedent(f"""\
+ code = textwrap.dedent("""\
def f():
x = y = 2
if not x:
def test_recursive_cursor_init(self):
conv = lambda x: self.cur.__init__(self.con)
with patch.dict(sqlite.converters, {"INIT": conv}):
- self.cur.execute(f'select x as "x [INIT]", x from test')
+ self.cur.execute('select x as "x [INIT]", x from test')
self.assertRaisesRegex(sqlite.ProgrammingError, self.msg,
self.cur.fetchall)
def test_recursive_cursor_close(self):
conv = lambda x: self.cur.close()
with patch.dict(sqlite.converters, {"CLOSE": conv}):
- self.cur.execute(f'select x as "x [CLOSE]", x from test')
+ self.cur.execute('select x as "x [CLOSE]", x from test')
self.assertRaisesRegex(sqlite.ProgrammingError, self.msg,
self.cur.fetchall)
def test_recursive_cursor_iter(self):
conv = lambda x, l=[]: self.cur.fetchone() if l else l.append(None)
with patch.dict(sqlite.converters, {"ITER": conv}):
- self.cur.execute(f'select x as "x [ITER]", x from test')
+ self.cur.execute('select x as "x [ITER]", x from test')
self.assertRaisesRegex(sqlite.ProgrammingError, self.msg,
self.cur.fetchall)
# callback errors to sqlite3_step(); this implies that OperationalError
# is _not_ raised.
with patch.object(WindowSumInt, "finalize", side_effect=BadWindow):
- name = f"exception_in_finalize"
+ name = "exception_in_finalize"
self.con.create_window_function(name, 1, WindowSumInt)
self.cur.execute(self.query % name)
self.cur.fetchall()
)()
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 2}, in f",
- f" .method",
- f" ^^^^^^",
+ " .method",
+ " ^^^^^^",
]
self.assertEqual(actual, expected)
)()
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 2}, in f",
- f" method",
+ " method",
]
self.assertEqual(actual, expected)
)()
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 2}, in f",
- f" . method",
- f" ^^^^^^",
+ " . method",
+ " ^^^^^^",
]
self.assertEqual(actual, expected)
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 1}, in f",
- f" width",
+ " width",
]
self.assertEqual(actual, expected)
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 2}, in f",
- f" raise ValueError(width)",
+ " raise ValueError(width)",
]
self.assertEqual(actual, expected)
actual = self.get_exception(f)
expected = [
- f"Traceback (most recent call last):",
+ "Traceback (most recent call last):",
f" File \"{__file__}\", line {self.callable_line}, in get_exception",
- f" callable()",
+ " callable()",
f" File \"{__file__}\", line {f.__code__.co_firstlineno + 4}, in f",
- f" print(1, www(",
- f" ^^^^",
+ " print(1, www(",
+ " ^^^^",
]
self.assertEqual(actual, expected)
formatted = ''.join(teg.format()).split('\n')
expected = [
- f' | ExceptionGroup: eg (2 sub-exceptions)',
- f' +-+---------------- 1 ----------------',
- f' | ExceptionGroup: eg1 (3 sub-exceptions)',
- f' +-+---------------- 1 ----------------',
- f' | ValueError: 0',
- f' +---------------- 2 ----------------',
- f' | ValueError: 1',
- f' +---------------- ... ----------------',
- f' | and 1 more exception',
- f' +------------------------------------',
- f' +---------------- 2 ----------------',
- f' | ExceptionGroup: eg2 (10 sub-exceptions)',
- f' +-+---------------- 1 ----------------',
- f' | TypeError: 0',
- f' +---------------- 2 ----------------',
- f' | TypeError: 1',
- f' +---------------- ... ----------------',
- f' | and 8 more exceptions',
- f' +------------------------------------',
- f'']
+ ' | ExceptionGroup: eg (2 sub-exceptions)',
+ ' +-+---------------- 1 ----------------',
+ ' | ExceptionGroup: eg1 (3 sub-exceptions)',
+ ' +-+---------------- 1 ----------------',
+ ' | ValueError: 0',
+ ' +---------------- 2 ----------------',
+ ' | ValueError: 1',
+ ' +---------------- ... ----------------',
+ ' | and 1 more exception',
+ ' +------------------------------------',
+ ' +---------------- 2 ----------------',
+ ' | ExceptionGroup: eg2 (10 sub-exceptions)',
+ ' +-+---------------- 1 ----------------',
+ ' | TypeError: 0',
+ ' +---------------- 2 ----------------',
+ ' | TypeError: 1',
+ ' +---------------- ... ----------------',
+ ' | and 8 more exceptions',
+ ' +------------------------------------',
+ '']
self.assertEqual(formatted, expected)
formatted = ''.join(teg.format()).split('\n')
expected = [
- f' | ExceptionGroup: exc (3 sub-exceptions)',
- f' +-+---------------- 1 ----------------',
- f' | ValueError: -2',
- f' +---------------- 2 ----------------',
- f' | ExceptionGroup: exc (3 sub-exceptions)',
- f' +-+---------------- 1 ----------------',
- f' | ValueError: -1',
- f' +---------------- 2 ----------------',
- f' | ... (max_group_depth is 2)',
- f' +---------------- 3 ----------------',
- f' | ValueError: 1',
- f' +------------------------------------',
- f' +---------------- 3 ----------------',
- f' | ValueError: 2',
- f' +------------------------------------',
- f'']
+ ' | ExceptionGroup: exc (3 sub-exceptions)',
+ ' +-+---------------- 1 ----------------',
+ ' | ValueError: -2',
+ ' +---------------- 2 ----------------',
+ ' | ExceptionGroup: exc (3 sub-exceptions)',
+ ' +-+---------------- 1 ----------------',
+ ' | ValueError: -1',
+ ' +---------------- 2 ----------------',
+ ' | ... (max_group_depth is 2)',
+ ' +---------------- 3 ----------------',
+ ' | ValueError: 1',
+ ' +------------------------------------',
+ ' +---------------- 3 ----------------',
+ ' | ValueError: 2',
+ ' +------------------------------------',
+ '']
self.assertEqual(formatted, expected)