[New-bugs-announce] [issue11470] Flag inappropriate uses of callable class attributes
report at bugs.python.org
Fri Mar 11 20:22:09 CET 2011
New submission from Thomas Wouters <thomas at python.org>:
As discussed at the language summit at PyCon 2011, some code takes some liberties with setting class attributes to callable objects, like CFunctions, that (C)Python does not turn into methods. This is problematic because 1) CPython can't then turn that CFunction into a regular function, and 2) other implementations have to specialcase the builtins to emulate the behaviour.
This patch adds a warning when a non-descriptor, non-class callable attribute is accessed in a context that would have fired the descriptor. It also fixes a bunch of these warnings that show up when running the testsuite. Some of these warnings are obviously (to me) incorrect code -- like the io testsuite, which uses staticmethod around pyio.open but not io.open, or the encoding classes that use an encode function from an extension module as a class attribute. Some of the warnings are debatable, but have an obvious fix (wrap in staticmethod.) Some could be considered false-positives because they actually use (what amounts to) a a bound instance method as a class attribute (for example, re.compile('...').match.)
The patch is still a work in progress, I'm just uploading to start the discussion sooner rather than later.
components: Interpreter Core
title: Flag inappropriate uses of callable class attributes
type: feature request
versions: Python 3.3
Added file: http://bugs.python.org/file21085/nonmethod-warn.diff
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce