[ python-Bugs-417833 ] pydoc HTTP reload failure
SourceForge.net
noreply at sourceforge.net
Tue Aug 31 23:41:10 CEST 2004
Bugs item #417833, was opened at 2001-04-21 07:10
Message generated for change (Comment added) made by eparker
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=417833&group_id=5470
Category: Python Library
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Garth T Kidd (gtk)
Assigned to: Ka-Ping Yee (ping)
Summary: pydoc HTTP reload failure
Initial Comment:
pydoc, when run as a web server, can't cope with
reloads of modules which use 'from Package import
Module' syntax for imports.
To reproduce:
* extract the attached DemonstratePydocBug tarchive
into your Python 2.1 directory
* python -c Lib\pydoc.py -p 8192
* visit http://localhost:8192/DemonstratePydocBug.html
The rest of the instructions are there.
Demonstrated on Python 2.1 (#15, Apr 16 2001,
18:25:49) [MSC 32 bit (Intel)] on win32.
Funnily enough, there's no problem with trying the
following under Python interactively:
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> import DemonstratePydocBug.ReloadFails
>>> import DemonstratePydocBug.ReloadFails
>>> import DemonstratePydocBug.ReloadFails
>>> import DemonstratePydocBug.ReloadFails
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> from DemonstratePydocBug import ReloadFails
>>> from DemonstratePydocBug import ReloadFails
>>> from DemonstratePydocBug import ReloadFails
>>> from DemonstratePydocBug import ReloadFails
I'm dropping additional debugging code into pydoc.py
to see if I can figure out what's going on.
----------------------------------------------------------------------
Comment By: Eddie Parker (eparker)
Date: 2004-08-31 14:41
Message:
Logged In: YES
user_id=991512
This is still current, as of 08/31/2004. Rather annoying,
too. :(
----------------------------------------------------------------------
Comment By: Brett Cannon (bcannon)
Date: 2003-05-16 16:43
Message:
Logged In: YES
user_id=357491
Just as an update, this still seeems to be an issue in Python 2.3b1 w/ version
1.82 of pydoc
----------------------------------------------------------------------
Comment By: Garth T Kidd (gtk)
Date: 2001-04-21 09:15
Message:
Logged In: YES
user_id=59803
Using pydoc in the interpreter doesn't tickle any of these
bugs, so hopefully I can narrow my focus down to the
difference in handling between serve() and help().
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> import pydoc
>>> pydoc.help
Welcome to Python 2.1! This is the online help utility.
[...]
help> modules
Please wait a moment while I gather a list of all available
modules...
[list of modules]
Enter any module name to get more help. Or, type "modules
spam" to search for modules whose descriptions contain the
word "spam".
help> DemonstratePydocBug.ReloadFails
Help on module DemonstratePydocBug.ReloadFails in
DemonstratePydocBug:
NAME
DemonstratePydocBug.ReloadFails
FILE
c:\python21\lib\demonstratepydocbug\reloadfails.py
[...]
help> DemonstratePydocBug.TryThis
Help on module DemonstratePydocBug.TryThis in
DemonstratePydocBug:
NAME
DemonstratePydocBug.TryThis
[...]
----------------------------------------------------------------------
Comment By: Garth T Kidd (gtk)
Date: 2001-04-21 08:09
Message:
Logged In: YES
user_id=59803
Yet another demonstration case:
DemonstratePydocBug/TryThis.py:
import DemonstratePydocBug.Target
Target = DemonstratePydocBug.Target
This gives us a local Target variable, same as 'from
DemonstratePydocBug import Target'. Pydoc barfs on this on
the very first load. The traceback I hacked into pydoc
claims:
Traceback (most recent call last):
File "C:\Python21\Lib\pydoc.py", line 223, in safeimport
module = __import__(path)
File "c:\python21\lib\DemonstratePydocBug\TryThis.py",
line 9, in ?
Target = DemonstratePydocBug.Target
AttributeError: 'DemonstratePydocBug' module has no
attribute 'Target'
In the interpreter, everything's fine with both techniques
for getting Target:
C:\Python21\thirdparty\MoinMoin>python
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> from DemonstratePydocBug import Target
>>> Target
<module 'DemonstratePydocBug.Target' from 'c:\python21
\lib\DemonstratePydocBug\Target.pyc'>
>>>
C:\Python21\thirdparty\MoinMoin>python
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> import DemonstratePydocBug.Target
>>> Target = DemonstratePydocBug.Target
>>> Target
<module 'DemonstratePydocBug.Target' from 'c:\python21
\lib\DemonstratePydocBug\Target.pyc'>
>>>
----------------------------------------------------------------------
Comment By: Garth T Kidd (gtk)
Date: 2001-04-21 07:58
Message:
Logged In: YES
user_id=59803
WHOA. Belay that. I screwed up trying to run too many tests
in a row without shutting down the interpreter.
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> import pydoc
>>> import DemonstratePydocBug
>>> pydoc.help(DemonstratePydocBug.Target)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: 'DemonstratePydocBug' module has no
attribute 'Target'
Python 2.1 (#15, Apr 16 2001, 18:25:49) [MSC 32 bit
(Intel)] on win32
Type "copyright", "credits" or "license" for more
information.
>>> import pydoc
>>> import DemonstratePydocBug
>>> DemonstratePydocBug.Target
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: 'DemonstratePydocBug' module has no
attribute 'Target'
>>> import DemonstratePydocBug.Target
>>> DemonstratePydocBug.Target
<module 'DemonstratePydocBug.Target' from 'c:\python21
\lib\DemonstratePydocBug\Target.pyc'>
>>> pydoc.help(DemonstratePydocBug.Target)
Help on module DemonstratePydocBug.Target:
NAME
DemonstratePydocBug.Target
FILE
c:\python21\lib\demonstratepydocbug\target.py
DESCRIPTION
Target: module to help demonstrate the pydoc reload bug.
See the docstring in __init__.py for full details.
Reloading the description of this module in pydoc
should work,
but that's hardly unusual because it doesn't import
*anything*.
Try ReloadWorks and ReloadFails, instead.
DATA
__file__ = r'c:\python21
\lib\DemonstratePydocBug\Target.pyc'
__name__ = 'DemonstratePydocBug.Target'
>>> pydoc.help(DemonstratePydocBug.Target)
Help on module DemonstratePydocBug.Target:
NAME
DemonstratePydocBug.Target
...
----------------------------------------------------------------------
Comment By: Garth T Kidd (gtk)
Date: 2001-04-21 07:55
Message:
Logged In: YES
user_id=59803
>>> import pydoc
>>> import DemonstratePydocBug
>>> pydoc.help(DemonstratePydocBug.Target)
... we get good stuff...
>>> print DemonstratePydocBug.ReloadFails2
<module 'DemonstratePydocBug.ReloadFails2'
from 'DemonstratePydocBug\ReloadFails2.py'>
>>> pydoc.help(DemonstratePydocBug.ReloadFails2)
... we get good stuff...
----------------------------------------------------------------------
Comment By: Garth T Kidd (gtk)
Date: 2001-04-21 07:43
Message:
Logged In: YES
user_id=59803
I've found another demonstration case. Noting that
from package import module
gives you a variable called 'module', whilst
import package.module
gives you a variable called 'package', I thought I'd try
out another import syntax which wouldn't break code that
was trying out the first option:
import package.module as module
This also works under the Python 2.1 interpreter but breaks
pydoc 1.38. I've attached an updated demonstration
tarchive.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=417833&group_id=5470
More information about the Python-bugs-list
mailing list