This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author ncdave4life
Recipients ncdave4life, r.david.murray
Date 2012-03-22.15:39:03
SpamBayes Score 0.0
Marked as misclassified No
Message-id <1332430744.6.0.41603542026.issue14367@psf.upfronthosting.co.za>
In-reply-to
Content
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
History
Date User Action Args
2012-03-22 15:39:04ncdave4lifesetrecipients: + ncdave4life, r.david.murray
2012-03-22 15:39:04ncdave4lifesetmessageid: <1332430744.6.0.41603542026.issue14367@psf.upfronthosting.co.za>
2012-03-22 15:39:04ncdave4lifelinkissue14367 messages
2012-03-22 15:39:03ncdave4lifecreate