[Zope-dev] __call__() takes exactly 1 argument (4 given)
!!!!!!!!!!!
Dieter Maurer
dieter at handshake.de
Mon Aug 18 21:38:09 EDT 2003
alan milligan wrote at 2003-8-18 09:41 +0000:
> ...
> I am getting this message out of HelpSys/STXTopic and
> Products/CMFCore/PortalContent using Zope2.6.2b2 and CMF1.3.1.
>
> It's happening out of ZPublisher/Publish calling the default method to
> publish the object.
>
> For some reason, the delivered code works fine in development (Linux 2.4.21,
> Python2.1.3, Zope 2.6.2b2, CMF1.3.1) but not in production, which strangely
> has the same software (different hardware though).
>
> I've patched both the offending __call__ method's function signatures to
> include REQUEST, *args, and **kw - which I believe is the standard signature
> for stuff called from ZPublisher.
This is not the case. Quite to the contrary, ZPublisher (its "mapply") cannot
handle "*args" and "**kw" argument definitions.
For some unknown reason, "mapply" seems to get the method signature
wrong and thinks it has to call the object with 4 arguments.
Apparently, your change did not modify what "mapply" sees and
your object now accepts (almost) arbitrary many arguments.
"mapply" is often tricked out by a "func_code" definition.
Maybe, your class has such an attribute and it does not
match the "__call__" signature?
Dieter
More information about the Zope-Dev
mailing list