On Nov 30, 2009, at 1:51 PM, Chris McDonough wrote:
> Shane Hathaway wrote:
...a good general argument, that Chris seemed to agree with and expand upon,
and that has some merit to me.
>> What do you think?
> + 1 with the following caveat:
> I think that method name should probably be "adapt"; "lookup" should maybe
> a separate method reserved for passing bare interfaces rather than objects
> which implement interfaces, e.g:
1) I very much like the idea of some helpers hanging around. However, my
current belief is that the factory "methods" ought to be callable objects that
allow introspection of the underlying registry. That's where the "lookup"
style behavior belongs, IMO, as well as other helpers. See below for examples.
2) As argued before, I think that "adapt" is an ok name for a single object,
but becomes a bad name once you have "multiadapters" in the mix. I would
prefer one of the options Matthias Lehmann proposed ("new" for instance).
3) I also think that "utility" is a bad name. Is "singleton" two letters too
long? If it is, I mind "utility" less than I mind "adapter".
IFoo.new(a, b) # finds and returns result of call
IFoo.new.lookup(IA, IB) # finds and returns callable
IFoo.new.find(IA, IB) # get all registration information
IFoo.new.find_stack(IA, IB) # get an iterable of the stack all registration
information for each registration for those two interfaces
IFoo.singleton() # finds and returns item
IFoo.singleton(name='baz') # finds and returns item
IFoo.singleton.lookup(name='baz') # same result in this case
IFoo.singleton.find(name='baz') # get all registration information
Side, but related point:
I wonder if there is value in the ability to spell
IFoo.singleton(a) # where "a" is a required object to the registration. This
would make utility registrations more powerful in a way that some people seem
to have been missing. It also makes things parallel with creation.
Zope-Dev maillist - Zope-Dev@zope.org
** No cross posts or HTML encoding! **
(Related lists -