[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2020-11-06 Thread Irit Katriel


Change by Irit Katriel :


--
resolution:  -> duplicate
stage: test needed -> resolved
status: open -> closed
superseder:  -> "inspect" gets broken by some descriptors

___
Python tracker 

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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2019-06-06 Thread Rene Dudfield


Rene Dudfield  added the comment:

This can be closed.

$ python3 -m pydoc -p 7464

Then view in browser: http://localhost:7464/pygame.html


No error.

--
nosy: +illume

___
Python tracker 

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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2019-03-15 Thread Mark Lawrence


Change by Mark Lawrence :


--
nosy:  -BreamoreBoy

___
Python tracker 

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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2014-02-24 Thread Yury Selivanov

Yury Selivanov added the comment:

Is this still an issue?

--
nosy: +yselivanov

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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-24 Thread Éric Araujo

Changes by Éric Araujo mer...@netwok.org:


--
nosy: +eric.araujo

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-23 Thread Michael Foord

Michael Foord mich...@voidspace.org.uk added the comment:

So PyGame __init__.py has various not-a-module objects with __getattr__ that 
raises a NotImplementedError on every attribute access. Changing inspect to use 
getattr_static, so it doesn't trigger code execution on attribute access, would 
fix the problem.

Making pydoc resilient against exceptions is probably a *better* solution for 
the specific problem - although changing ismethoddescriptor to not trigger code 
execution would be good *as well*.

--

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-22 Thread R. David Murray

R. David Murray rdmur...@bitdance.com added the comment:

Thanks for the report and patch.  However, in general we prefer not to mask 
exceptions (doing that can hide bugs in programs).  It would probably be 
reasonable to fix this in pydoc, however.

Alternatively there might be a specific exception or set of exceptions that 
should indeed result in a False value.  What exception is being raised?  Can 
you provide a test case extracted from what pygame is doing that triggers the 
problem?

--
nosy: +r.david.murray
stage:  - test needed

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-22 Thread Dave Burton

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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-22 Thread R. David Murray

R. David Murray rdmur...@bitdance.com added the comment:

Michael, I thought you might be interested in this one since it looks like it 
might involve inspect executing code unexpectedly, and I know you worked on 
ways of not doing that...

--
nosy: +michael.foord

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-22 Thread Michael Foord

Michael Foord mich...@voidspace.org.uk added the comment:

The code is *already* triggering execution through the use of hasattr. It could 
be switched to use getattr_static instead, but the try...except in the patch 
looks reasonable whether or not that change is made.

--

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-22 Thread Antoine Pitrou

Antoine Pitrou pit...@free.fr added the comment:

Well, the exception shouldn't be silenced. As David said, I think it would be 
better to silence the exception in pydoc.
Besides, it would be nice to come with a standalone test case, because it's not 
clear exactly why pygame triggers this.

--
nosy: +pitrou

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-19 Thread Dave Burton

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

expect?  Did I type that??  Should be try/except, of course.

--

___
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



[issue14367] try/except block in ismethoddescriptor() in inspect.py, so that pydoc works with pygame in Python 3.2

2012-03-18 Thread Dave Burton

New submission from Dave Burton ncdave4l...@gmail.com:

I noticed that pydoc doesn't work for pygame under python 3.2.1 or 3.2.2 for 
Win32; it just reports:

NotImplementedError: scrap module not available (ImportError: No module
named scrap)

I made a small patch to inspect.py to solve the problem (I just added a
try/expect around the failing statement in ismethoddescriptor).   Here's the 
diff:
http://www.burtonsys.com/python32/inspect.diff

With that patch, pydoc works with pygame, and reports just a few pygame issues:
*scrap* = pygame.MissingModule object
*sndarray* = pygame.MissingModule object
*surfarray* = pygame.MissingModule object

--
components: Library (Lib)
files: inspect.diff
keywords: patch
messages: 156314
nosy: ncdave4life
priority: normal
severity: normal
status: open
title: try/except block in ismethoddescriptor() in inspect.py, so that pydoc 
works with pygame in Python 3.2
type: behavior
versions: Python 3.2
Added file: http://bugs.python.org/file24935/inspect.diff

___
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