[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-11-29 Thread Laura Creighton

Laura Creighton added the comment:

webmaster got another one of these today.

--

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-11-01 Thread Laura Creighton

Laura Creighton added the comment:

can I send a file

--
type: behavior -> enhancement
versions:  -Python 3.4
Added file: http://bugs.python.org/file40915/dia2.py

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-30 Thread Laura Creighton

Laura Creighton added the comment:

Re: misunderstanding

Sorry Terry.  From my end the great 4 day "weekend of mail.python.org needs to 
be rebuilt from scratch" happened precisely as I was about
to reply to your post.  The reply to Peter Otten showed up later 
as part of my mailer agent trying to send the thing every 4 hours for
a week.  So confusion reigns.

--

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Terry J. Reedy

Terry J. Reedy added the comment:

Either tkinter and tkinter.messagebox or subprocess must be imported to display 
a message when IDLE is started from an icon, and there is no console.  With 
subprocess, '''python -i -c "print('Cannot start IDLE (or whatever)')"''' 
should work.  If nothing else, this would be a way to display a message when 
import tkinter fails.

--

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Terry J. Reedy

Terry J. Reedy added the comment:

"I think that removing '' from sys.path, so that IDLE can run, is better than a 
nicer warning that it cannot run. This, of course, requires that sys not be 
shadowed, so that sys.path can be accessed."  So after importing sys, we should 
check sys.__file__, or do the manipulation in try: except: .  This will be part of a much more careful startup sequence.

--

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Terry J. Reedy

Terry J. Reedy added the comment:

Laura, I did not understand from your python-list post that you were 
complaining about shadowing disabling IDLE itself, as opposed to user code.  
That is partly because you followed up on Peter Otten complaining because IDLE 
tries to run user code the same way that python does.

The solution for IDLE itself is for IDLE to do what python does on startup, 
which is to ensure that the stdlib modules it needs are indeed imported from 
the stdlib.  I presume that python only prepends '' to sys.path *after* it does 
its imports.  Example:

>>> import sys; list(sys.modules)
[..., abc, ...]
C:\Users\Terry>echo "print('abc')" >abc  # verified with dir
C:\Users\Terry>python
>>> >>> import sys; sys.modules['abc'].__file__
'C:\\Programs\\Python35\\lib\\abc.py'

So IDLE should remove sys.path[0] from sys.path and, in the user process, 
restore it only after normal imports. Ignore -n single process mode for now.

Aside from this, the popup message needs to be changed, but better that it 
occur less often (by the fix above) or never (by switching to pipes?).

As for user code: I have in mind that there should be a doc how-to about 
tracebacks and exception messages, with a sections giving possible explanations 
and remedies for specific messages, such as the above.  This I would make 
messages like the above a link to the how-to entry.  In the meanwhile, we could 
consider a special case search of error message lines.

-I just noticed that this issue is the result of a pydev thread. Off to read 
that.

--
stage:  -> needs patch
type: enhancement -> behavior
versions: +Python 3.4

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Laura Creighton

Laura Creighton added the comment:

s/machines will/machines with/

(I was tired.)

--

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Laura Creighton

Laura Creighton added the comment:

Note that the full path name of the file that is doing the shadow
is of important interest to teachers.  We get machines will all sorts of 
garbage written on them -- the amount of hell caused by a misnamed turtle.py is 
hard to measure -- and anything as helps in the finding of the file as needs 
removing or renaming will be eternally welcome.

--
nosy: +lac

___
Python tracker 

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



[issue25514] better startup error messages in IDLE when stdlib modules shadowed

2015-10-29 Thread Mark Roseman

New submission from Mark Roseman:

When we create e.g. string.py that shadows a stdlib module needed by IDLE, it 
would be nice if a better error message could be shown, pointing to that cause.

Original message:

lac at smartwheels:~/junk$ echo "print ('hello there')" >string.py
lac at smartwheels:~/junk$ idle-python3.5
hello there
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/lib/python3.5/idlelib/run.py", line 10, in 
from idlelib import CallTips
  File "/usr/lib/python3.5/idlelib/CallTips.py", line 16, in 
from idlelib.HyperParser import HyperParser
  File "/usr/lib/python3.5/idlelib/HyperParser.py", line 14, in 
_ASCII_ID_CHARS = frozenset(string.ascii_letters + string.digits + "_")
AttributeError: module 'string' has no attribute 'ascii_letters'

IDLE then produces a popup that says:

IDLE's subprocess didn't make connection.  Either IDLE can't stat a subprocess 
por personal firewall software is blocking the connection. 



I think that life would be a whole lot easier for people if instead we got
a message:

Warning: local file /u/lac/junk/string.py shadows module named string in the 
Standard Library

I think that it is python exec that would have to do this -- though of
course the popup could also warn about shadowing in general, instead of
sending people on wild goose chases over their firewalls.

--

Laura, I think what you want should actually be more-or-less doable in IDLE.

The main routine that starts IDLE should be able to detect if it starts 
correctly (something unlikely to happen if a significant stdlib module is 
shadowed), watch for an attribute error of that form and try to determine if 
shadowing is the cause, and if so, reissue a saner error message.

The subprocess/firewall error is occurring because the ‘string’ problem in your 
example isn’t being hit right away so a few startup things already are 
happening. The point where we’re showing that error (as a result of a timeout) 
should be able to check as per the above that IDLE was able to start alright, 
and if not, change or ignore the timeout error.

There’ll probably be some cases (depending on exactly what gets shadowed) that 
may be difficult to get to work, but it should be able to handle most things.


See full thread starting at 
https://mail.python.org/pipermail/python-dev/2015-October/142061.html

--
components: IDLE
messages: 253693
nosy: kbk, markroseman, roger.serwy, terry.reedy
priority: normal
severity: normal
status: open
title: better startup error messages in IDLE when stdlib modules shadowed
type: enhancement
versions: Python 2.7, Python 3.5, Python 3.6

___
Python tracker 

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