Message156577
Well, the exception is NotImplementedError. It's raised explicitly in pygame\__init__.py
I uncommented my commented-out print statement in inspect.py, and added a traceback print, and ran pydoc like this:
c:\python32\python.exe c:\python32\Lib\pydoc.py -p 7464
The I viewed http://localhost:7464/pygame.html in a web browser, and the pydoc server printed:
Server ready at http://localhost:7464/
Server commands: [b]rowser, [q]uit
server> c:\python32\Lib\inspect.py:105: RuntimeWarning: use scrap: No module named scrap
(ImportError: No module named scrap)
result = (hasattr(object, "__get__")
dbg: ismethoddescriptor(<pygame.MissingModule object at 0x03763F90>) failed, exception=NotImplementedError('scrap module not available\n(ImportError: No module named scrap)',)
Traceback (most recent call last):
File "c:\python32\Lib\inspect.py", line 105, in ismethoddescriptor
result = (hasattr(object, "__get__")
File "c:\python32\lib\site-packages\pygame\__init__.py", line 74, in __getattr__
raise NotImplementedError(MissingPygameModule)
NotImplementedError: scrap module not available
(ImportError: No module named scrap)
------------------------------------------------------------
c:\python32\Lib\inspect.py:105: RuntimeWarning: use sndarray: no module named numpy or Numeric found
(ImportError: no module named numpy or Numeric found)
result = (hasattr(object, "__get__")
dbg: ismethoddescriptor(<pygame.MissingModule object at 0x0376EFF0>) failed, exception=NotImplementedError('sndarray module not available\n(ImportError: no module named numpy or Numeric found)',)
Traceback (most recent call last):
...(etc.)
Here's the modified ismethoddescriptor() in inspect.py:
def ismethoddescriptor(object):
"""Return true if the object is a method descriptor.
But not if ismethod() or isclass() or isfunction() are true.
This is new in Python 2.2, and, for example, is true of int.__add__.
An object passing this test has a __get__ attribute but not a __set__
attribute, but beyond that the set of attributes varies. __name__ is
usually sensible, and __doc__ often is.
Methods implemented via descriptors that also pass one of the other
tests return false from the ismethoddescriptor() test, simply because
the other tests promise more -- you can, e.g., count on having the
__func__ attribute (etc) when an object passes ismethod()."""
import traceback
try:
result = (hasattr(object, "__get__")
and not hasattr(object, "__set__") # else it's a data descriptor
and not ismethod(object) # mutual exclusion
and not isfunction(object)
and not isclass(object))
except Exception as whichone:
print('dbg: ismethoddescriptor('+repr(object)+') failed, exception='+repr(whichone))
traceback.print_exc(file=sys.stdout)
print("-"*60 + '\n')
result = False
return result |
|
Date |
User |
Action |
Args |
2012-03-22 15:39:04 | ncdave4life | set | recipients:
+ ncdave4life, r.david.murray |
2012-03-22 15:39:04 | ncdave4life | set | messageid: <1332430744.6.0.41603542026.issue14367@psf.upfronthosting.co.za> |
2012-03-22 15:39:04 | ncdave4life | link | issue14367 messages |
2012-03-22 15:39:03 | ncdave4life | create | |
|