mirror of https://github.com/python/cpython
gh-119443: Turn off from __future__ import annotations in REPL (#119493)
This commit is contained in:
parent
548a11d5cf
commit
a8e35e8eba
|
@ -100,7 +100,7 @@ class InteractiveColoredConsole(code.InteractiveConsole):
|
||||||
the_symbol = symbol if stmt is last_stmt else "exec"
|
the_symbol = symbol if stmt is last_stmt else "exec"
|
||||||
item = wrapper([stmt])
|
item = wrapper([stmt])
|
||||||
try:
|
try:
|
||||||
code = compile(item, filename, the_symbol)
|
code = compile(item, filename, the_symbol, dont_inherit=True)
|
||||||
except (OverflowError, ValueError):
|
except (OverflowError, ValueError):
|
||||||
self.showsyntaxerror(filename)
|
self.showsyntaxerror(filename)
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -94,3 +94,12 @@ class TestSimpleInteract(unittest.TestCase):
|
||||||
with patch.object(console, "showsyntaxerror") as mock_showsyntaxerror:
|
with patch.object(console, "showsyntaxerror") as mock_showsyntaxerror:
|
||||||
console.runsource(source)
|
console.runsource(source)
|
||||||
mock_showsyntaxerror.assert_called_once()
|
mock_showsyntaxerror.assert_called_once()
|
||||||
|
|
||||||
|
def test_no_active_future(self):
|
||||||
|
console = InteractiveColoredConsole()
|
||||||
|
source = "x: int = 1; print(__annotations__)"
|
||||||
|
f = io.StringIO()
|
||||||
|
with contextlib.redirect_stdout(f):
|
||||||
|
result = console.runsource(source)
|
||||||
|
self.assertFalse(result)
|
||||||
|
self.assertEqual(f.getvalue(), "{'x': <class 'int'>}\n")
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
The interactive REPL no longer runs with ``from __future__ import
|
||||||
|
annotations`` enabled. Patch by Jelle Zijlstra.
|
Loading…
Reference in New Issue