[Zope-dev] Interfaces vs ZCA concepts
Martijn Faassen
faassen at startifact.com
Thu Dec 17 07:07:01 EST 2009
Tres Seaver wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Martin Aspeli wrote:
>> Tres Seaver wrote:
>>
>>> In either case, I think TypeError (or maybe LookupError) is the *right*
>>> choice: we don't want to "hide" zope.component's API functions and then
>>> turn around and require folks to import zope.component just to catch its
>>> local exception types.
>> Yeah, that's a compelling reason.
>
> I have checked in a branch which makes failed adaptation (inside the
> __call__ of an interface) raise a LookupError instead of a TypeError:
> the branch also documents the semantics of __call__. I would like to
> merge this to the trunk a 3.6.0 version (bumped to indicate the
> quasi-API change).
>
> http://svn.zope.org/zope.interface/branches/tseaver-raise_lookup_error/?rev=106688&view=rev
While I'm fine with the principle of this change, I do consider it
dangerous - people might be catching TypeError now instead of using the
"alternate" argument. Quite a bit of code depending on TypeError (even
if undocumented) might unexpectedly break.
We could support both errors by introducing an exception that subclasses
both TypeError and LookupError. The question is whether such a strategy
would help us deprecate TypeError altogether - I don't see how we can
detect that TypeError was caught instead of LookupError when our
exception is handled, so we can't output any messages..
Besides this you've documented the default argument as "default" while
it is in fact "alternate" (which we want to deprecate in favor of
default), so the documentation of __call__ isn't correct.
I think this needs some more thinking, unfortunately. I wish I could see
a gradual way forward on moving from TypeError to LookupError.
Regards,
Martijn
More information about the Zope-Dev
mailing list