[PEAK] PyProtocols: TypeError: Ambiguous adapter choice

luper rouch luper.rouch at gmail.com
Fri Jul 10 12:44:26 EDT 2009


The following code produces an error:

TypeError: ('Ambiguous adapter choice', <class
'__main__.FooOneAsFoo'>, <class '__main__.FooTwoAsFoo'>, 2, 2)

--- code begins ---

from protocols import Interface, advise

class IFoo(Interface):
   pass

class IFooOne(Interface):
   pass

class IFooTwo(Interface):
   pass

class FooOneAsFoo(object):
   advise(
           instancesProvide=[IFoo],
           asAdapterForProtocols=[IFooOne]
       )

class FooTwoAsFoo(object):
   advise(
           instancesProvide=[IFoo],
           asAdapterForProtocols=[IFooTwo]
       )

class ComposedFoo(object):
   advise(
           instancesProvide=[IFooOne, IFooTwo]
       )

--- code ends ---

Why is it ambiguous to write for example:

foo = FooOneAsFoo(ComposedFoo())

foo has an IFoo interface, adapted from the IFooOne interface of ComposedFoo.


More information about the PEAK mailing list