[issue22893] IDLE: __future__ does not work in startup code.

2020-08-11 Thread wyz23x2


Change by wyz23x2 :


--
title: Idle: __future__ does not work in startup code. -> IDLE: __future__ does 
not work in startup code.

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22893] Idle: __future__ does not work in startup code.

2020-06-13 Thread Terry J. Reedy


Change by Terry J. Reedy :


--
versions: +Python 3.10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22893] Idle: __future__ does not work in startup code.

2017-06-19 Thread Terry J. Reedy

Changes by Terry J. Reedy :


--
assignee:  -> terry.reedy
components: +IDLE

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22893] Idle: __future__ does not work in startup code.

2016-05-07 Thread Eric Fahlgren

Changes by Eric Fahlgren :


--
nosy: +eric.fahlgren

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22893] Idle: __future__ does not work in startup code.

2015-05-18 Thread Terry J. Reedy

Terry J. Reedy added the comment:

Easy test case using -c:
\python_d.exe -m idlelib.idle -c from __future__ import division; print(1/2)
 
0.5
 1/2
0
 division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)

Replace -m idlelib.idle with -i to get interactive interpreter and  1/2 
is .5 instead of 0.

---
Implementation of -s in PyShell.py
if o == '-s': startup = True  # line 1504
if startup:  # line 1586
filename = ...
if filename ...
... execfile(filename)
execfile (line 650) is the same method used to run -c and -r code. After 
compiling code, it calls runcode (779). That normally sends the code to the 
user process, but may run code in the debugger or in the idle process.  When 
the future import is run, it is just an import and not also a 'from __future__' 
statement.

Editor files are compiled in ScriptBinding.ScriptBinding.checksyntax.  This is 
why not affected by __future__ import in PyShell (#24222).  Run_module_event 
calls (interp.)runcode, as above.

I believe Shell input is run by .runsource, which is called by .runit, which is 
called when appropriate by the enter callback.

.runsource in turn calls the base class method 
code.InteractiveInterpreter.runsource, which uses 'self.compile', which is an 
instance of codeop.CommandCompiler.  codeop.CommandCompiler indirectly uses 
'self.compiler', which is an instance of codeop.Compiler.  The latter is what 
actually calls the builtin function compile, with self.flags (futures 
imported), it updates self.flags from the flags in the code returned by compile.

So I believe the solution is for the ExtendedInterpreter instance to get a 
reference to the Compiler instance, after InteractiveInterpreter is 
initialized, and call that, with symbol='exec' instead of 'single', instead of 
calling compile directly.

A reason not to use the same pipeline as for statements enter interactively is 
that there is extra code to account for the possibility of compiling correct 
partial statements. while True:\n is not an error at a prompt, since more may 
follow, but is as a complete code string.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22893
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue22893] Idle: __future__ does not work in startup code.

2014-11-17 Thread Terry J. Reedy

New submission from Terry J. Reedy:

https://stackoverflow.com/questions/26977236/how-can-i-use-future-division-in-the-idle-startup-file
 report what seems like possibly fixable perhaps buggy behavior with respect to 
__future__ imports.  More investigation is needed.

Any change here might interact with #5233 IDLE: exec IDLESTARTUP/PYTHONSTARTUP 
on restart

--
messages: 231304
nosy: terry.reedy
priority: normal
severity: normal
stage: needs patch
status: open
title: Idle: __future__ does not work in startup code.
type: behavior

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue22893
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com