[Zope-dev] Stacking zope.component registries
Marius Gedminas
marius at gedmin.as
Fri Apr 9 13:43:08 EDT 2010
On Thu, Apr 08, 2010 at 10:15:22PM -0400, Stephan Richter wrote:
> On Thursday 08 April 2010, Martin Aspeli wrote:
> > Right. However, any calls to provideAdapter() and friends would still
> > use the global registry, unless I monkey patch
> > zope.component.globalregistry.base, as would any ZCML directives, I guess.
>
> That's not really monkey patching. :-) I would consider this a valid part of
> the API. :-)
Then it's _badly-designed_ API. Look at globalregistry.py from
zope.component 3.4.0:
base = BaseGlobalComponents('base')
from zope.testing.cleanup import addCleanUp
addCleanUp(lambda: base.__init__('base'))
globalSiteManager = base
def getGlobalSiteManager():
return globalSiteManager
def provideAdapter(factory, adapts=None, provides=None, name=''):
base.registerAdapter(factory, adapts, provides, name, event=False)
...
There are two names for the same thing: 'base' and 'globalSiteManager'.
Different methods use different names. There's an assumption that you
can call __init__ on it before and after every test that uses placeless
setup. (I hadn't noticed that last part before; I assume it'll override
base.__bases__ and destroy any attempts of stacking.)
Marius Gedminas
--
http://pov.lt/ -- Zope 3 consulting and development
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://mail.zope.org/pipermail/zope-dev/attachments/20100409/400e1f01/attachment.bin
More information about the Zope-Dev
mailing list