summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/idlelib/pyshell.py3
-rw-r--r--Misc/NEWS.d/next/IDLE/2018-03-05-01-29-05.bpo-32984.NGjgT4.rst7
2 files changed, 10 insertions, 0 deletions
diff --git a/Lib/idlelib/pyshell.py b/Lib/idlelib/pyshell.py
index 8b07d52..ee13131 100755
--- a/Lib/idlelib/pyshell.py
+++ b/Lib/idlelib/pyshell.py
@@ -635,6 +635,9 @@ class ModifiedInterpreter(InteractiveInterpreter):
if source is None:
with tokenize.open(filename) as fp:
source = fp.read()
+ if use_subprocess:
+ source = (f"__file__ = r'''{os.path.abspath(filename)}'''\n"
+ + source + "\ndel __file__")
try:
code = compile(source, filename, "exec")
except (OverflowError, SyntaxError):
diff --git a/Misc/NEWS.d/next/IDLE/2018-03-05-01-29-05.bpo-32984.NGjgT4.rst b/Misc/NEWS.d/next/IDLE/2018-03-05-01-29-05.bpo-32984.NGjgT4.rst
new file mode 100644
index 0000000..15d40b7
--- /dev/null
+++ b/Misc/NEWS.d/next/IDLE/2018-03-05-01-29-05.bpo-32984.NGjgT4.rst
@@ -0,0 +1,7 @@
+Set ``__file__`` while running a startup file. Like Python, IDLE optionally
+runs one startup file in the Shell window before presenting the first interactive
+input prompt. For IDLE, ``-s`` runs a file named in environmental variable
+ :envvar:`IDLESTARTUP` or :envvar:`PYTHONSTARTUP`; ``-r file`` runs
+``file``. Python sets ``__file__`` to the startup file name before running the
+file and unsets it before the first prompt. IDLE now does the same when run
+normally, without the ``-n`` option.