Chris Withers wrote at 2008-12-13 10:18 +0000:
>Dieter Maurer wrote:
>> I think that in some cases, it would be useful for an adapter factory
>> to say 'I cannot handle this case' and then the adapter lookup
>> is continued. Maybe, this is already supported?
>> Then, maybe, you can use it?
>That's exactly what returning None indicates...
>>> def some_adapter(obj):
>>>   if something:
>>>     return None
>>>   return somethingelse
>> Your use case seems to abuse adaptation:
>>   Adaptation to an interface must always return an object which provides
>>   the interface.
>>   "None", by default, only provides very few interfaces 
>...indeed, however, I really do want to return None here.

Then, use something different from adaptation (as adaptation does
not fit your wishes).

I expect that your adapter factory can raise "ComponentLookupError"
when it cannot handle the adaptation and then the "default" argument
of the adapter lookup will take effect.

   adapter = IMyInterface(obj, None)
   if adapter is None:
      # adaptation impossible

   def adapter_factory(...):
      raise ComponentLookupError()

Zope-Dev maillist  -
**  No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to