[Zope3-dev] Re: a new zcml directive?
Martijn Faassen
faassen at infrae.com
Wed Mar 15 14:00:15 EST 2006
Jim Fulton wrote:
> Martijn Faassen wrote:
> ...
>
>> Then this and the __component_adapts__ hack should be enough to make
>> it work (still an unpleasant hack, that).
>
>
> Huh? Use adapter.
>
> class FactoryFactory:
>
> def __init__(self):
> # initialize a new factory
> ...
> implementer(self, someinterfacethatmyinstancesimplement)
> zope.component.adapter(theinterfacemyinstancesadapt)
Another one that I couldn't find but is indeed there, sorry. It's right
there in the zope.component README.txt with an example:
>>> def personJob(person):
... return getattr(person, 'job', None)
>>> personJob = interface.implementer(IJob)(personJob)
>>> personJob = component.adapter(IPerson)(personJob)
Okay, that's one step closer to support for this in the annotation
package, thanks!
In the new world for ZCML, ZCML as a language falls apart in a
minimalistic XML language, and some support code (such as
zope.app.annotation.AnnotationFactory) to help it do more advanced things.
One remaining benefit of higher-level ZCML is that it gets picked up by
apidoc and thus can be discovered fairly easily by developers as part of
the configuration story. While AnnotationFactory is doing definition and
is in Python code in the new world for ZCML, this act of definition is
closely associated with the act of registering it in ZCML.
It would be nice if we somehow retained discoverability for APIs that
are meant to work with ZCML - it's obvious from this subthread that it
takes some idiots^H^H^H^H^H^Hpeople a while to pick up an API... We'd
like people working with annotations to be able to find out that we have
this available. Perhaps a README.txt in the annotation package is enough
for now, though. Perhaps we can think of other ways to help make this
discoverable...
Regards,
Martijn
More information about the Zope3-dev
mailing list