[Python-Dev] 2.3.5 and 2.4.1 release plans
Alex Martelli
aleax at aleax.it
Sun Feb 6 09:07:30 CET 2005
On 2005 Feb 06, at 08:34, Tim Peters wrote:
...
>> The easy fix: instead of cls.__mro__ use inspect.getmro which deals
>> with that specifically.
...
> Since the original bug report came from Zopeland, chances are good
> (although the report is too vague to be sure) that the problem
> involves ExtensionClass. That's complicated C code in Zope predating
True, of course. Still, any type w/o an __mro__ that's not recorded in
the dispatch table will tickle the same bug -- give the same traceback,
at least (if the original submitter would then proceed to tickle more
bugs once this one's solved, I can't know, of course -- but this one
does need fixing).
> Unsure whether this is enough, but at least inspect.getmro() isn't
> phased by an EC-derived class:
I'm pretty sure it's enough -- at least for SOME "types w/o __mro__".
Thanks to a suggestion from John Lenton on c.l.py, I was able to make a
unit test based on:
class C(type):
def __getattribute__(self, attr):
if attr == '__mro__':
raise AttributeError, "What, *me*, a __mro__? Nevah!"
return super(C, self).__getattribute__(attr)
class D(object):
__metaclass__ = C
Cheating, maybe, but it does show that the 2.3.5rc1 copy.py breaks and
moving to inspect.mro repairs the break, which is all one really asks
of a tiny unit test;-). So, I've committed test and fix on the 2.3
maintenance branch and marked the bug as fixed.
(Hmmmm, is it only me, or is sourceforce bug browsing broken for bugs
with 7-digits numbers? This one was 1114776 -- first one w/a 7-digit
number I had yet seen -- and in no way could I get the browser to list
it, it kept listing only 6-digit ones...).
Alex
More information about the Python-Dev
mailing list