On 2/25/2015 4:35 PM, Nick Coghlan wrote:
Setting the action to "always" and filtering on the main module should do the trick:
import warnings warnings.filterwarnings("always", module="__main__")
Changing interactive-mode python is irrelevant to gui environments running on batch-mode python, except for adding another requirement for simulating interactive python and its command prompt. Idle starts idlelib/PyShell.py in one process (the Idle process) and (in default mode) idlelib/run.py in a second process (the User process) and makes a bidirectional connection. The Idle process compiles user code with compile(codestring, ...) and sends the code object to the User process, which executes it with exec(usercode, namespace).
Both processes already import warnings. If I add the line above to run.py, I get
Warning (from warnings module): File "__main__", line 1 DeprecationWarning: Deprecated
(on stderr) instead of nothing. I presume this should be sufficient for runtime warnings, but are there any raised during compilation (like SyntaxWarnings, or Py3kWarnings in 2.7)? I see nothing in the compile() doc about turning warnings on or off.