On Fri, Nov 27, 2009 at 02:38:55PM +0100, Martijn Faassen wrote:
> I'd ask people to think about this approach without considering 
> backwards compatibility issues first. Especially given the goal "making 
> component lookup disappear into the language" makes me think just all 
> making it calling an interface would be the most elegant approach.

You're convincing.

(I just can't force myself ignore backwards-compatibility issues, I

> So imagining we didn't have to worry about backwards compatibility, 
> would you still propose that API, making a difference between adapter 
> and utility lookup?


> What's the motivation?

The "utilities must be singletons" logic hardcoded in the ZCA.

provideAdapter(factory, adapts=(one, two, three))
provideAdapter(factory, adapts=(one, two))
provideAdapter(factory, adapts=(one, ))

The natural progression, to me, is

provideAdapter(factory, adapts=())

rather than


If we decide, ignoring BBB concerns, to make

  provideUtility(singleton, provides=IFoo)

be equivalent to

  provideAdapter(lambda: singleton, adapts=(), provides=IFoo)

then I'd be very happy to use


for utility lookup.

This also assumes that I'm free to

  provideAdapter(arbitrary_callable, adapts=()) 
and use computed-utility-lookup, or even create utilities on demand in
my arbitrary_callable.

Three cheers for utility and empty-tuple-adapter unification!

> And would you deprecate plain 
> adapter calls and prefer 'adapt' all the time?

Ignoring BBB, and assuming utilities-are-just-adapters-on-empty-tuples,
then I'd prefer to use your proposed IFoo(*args, **kw) syntax.
The more I think about it, the more I like this solution.

Ignoring BBB and assuming utilities are distinct fowl, I'd prefer to
have just IFoo.adapt(*args, **kw) and IFoo.utility(**kw).

The phrasing of your question ("deprecate") makes ignoring BBB
impossible, in which case I'd prefer to have a 100% backwards-compatible
IFoo(single_arg, [default]) + IFoo.adapt(*args, **kw) +

> So as to prevent bikeshedding the API too much, I'm going to take your 
> +0.5 anyway. :)

Marius Gedminas
http://pov.lt/ -- Zope 3 consulting and development

Attachment: signature.asc
Description: Digital signature

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope )

Reply via email to