New submission from Mark Roseman:

One of the concerns with making significant structural changes to the IDLE 
codebase is breakage of external that might import a piece of idlelib (so not 
just 'import idlelib' but a particular submodule). 

PEP 434 already makes the case that this behaviour is unsupported ("the modules 
are undocumented and effectively private implementations"). In the interests of 
not digging this particular hole any further, I'm suggesting we make this 
official. 

I don't know what the appropriate mechanism would be (e.g. something in IDLE's 
README.txt file, something at the top of each IDLE module, etc.).

Based on some suggestions on idle-dev, I did some searching to find out what 
impact this might have. As expected, most uses import the whole thing, either 
documenting how to run IDLE, or launching it as an external editor. This is 
done as both "import idlelib" but also as "import idlelib.idle"

Turtledemo appears to be the only thing in stdlib that imports a piece of 
idlelib.

>From nullege.com, one reference to a now-defunct wiki/collaboration tool 
>called Springnote.  From programcreek.com, nothing significant.

Multiple applications do import PyShell as a way of starting a Python shell in 
their application. Usually they do just call PyShell.main(). Sometimes though 
they do "reach inside" in fairly significant ways that might break if the code 
were substantially changed. For example, search for PyShell in 
http://igraph.org/python/doc/igraph.app.shell-pysrc.html

I could locate no other significant uses based on Google search, etc.

The one exception I would therefore suggest to the "no importing submodules" 
would be importing PyShell to open up a Python shell window. I'd go further to 
suggest that the existing PyShell be called something else, and a new PyShell 
wrapper be created which documents an official API (with therefore very limited 
mucking inside), and then delegates to an actual implementation.

----------
components: IDLE
messages: 248540
nosy: Al.Sweigart, kbk, markroseman, roger.serwy, terry.reedy
priority: normal
severity: normal
status: open
title: deprecate importing components of IDLE
type: enhancement
versions: Python 3.5, Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24861>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to