[Zope3-dev] Re: adapter registration question

Chris Withers chris at simplistix.co.uk
Mon Nov 13 10:27:01 EST 2006


Christian Theune wrote:
> The problem you have is to provide a specification for the 'str' interface.

There are a couple of problems here...

1. str is both a "function" and a "class"

2. I was to register the "function" str as an adapter for, say, the 
"class" int to the "class" str, so there's not factory for the adapter, 
since it's a function

> Let's create a marker interface that promises everything that 'str' does:
> 
> class IString(zope.interface.Interface):
>     """A marker for the 'str' interface."""

As discussed elsewhere, you shouldn't need the marker interface, as you 
can adapt classes. However, given the edge-case nature of this, I can 
believe there might be "bugs" to be found here...

> Now, you can setup your adapter like this:
> 
> <adapter
> 	for="int"
> 	provides=".interfaces.IString"
> 	factory="str"/>

Well, that's not right ;-)

should be:

provide="str"

...and factory="str" is wrong for the reasons given above, or, put 
differently, because str()(1) will tell you that strings aren't callable ;-)

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the Zope3-dev mailing list