Dave Burton <ncdave4l...@gmail.com> added the comment:

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

----------

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

Reply via email to