Brian Kelley:
I accidentally derived a class from a module (types instead of
types.Dicttype)
... TypeError: function takes at most 2 arguments (3 given)
Shouldn't this report something like (TypeError: can't subclass from a
module) It goes to the right line, but I coudn't see where the function
was being called :)
Strangely enough, I asked this question last week, titled "class with
invalid base class". (Strange because Brian and I used to work
together but there's no causation for this correlation in questions.)
Merging answers from Thomas Heller and Michael Hudson
If the type(base class) is callable, which is true for all type objects
since 2.2, then it's called with three arguments: The name of
the new class, a tuple of the bases, and a dictionary.
However, ModuleType only takes two parameters, not three,
hence the TypeError.
I completely agree that the error message is inexplicable to all
but those whose heads have exploded.
Andrew
da***@dalkescientific.com