本文整理汇总了Python中zope.interface.registry.Components.getAllUtilitiesRegisteredFor方法的典型用法代码示例。如果您正苦于以下问题:Python Components.getAllUtilitiesRegisteredFor方法的具体用法?Python Components.getAllUtilitiesRegisteredFor怎么用?Python Components.getAllUtilitiesRegisteredFor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zope.interface.registry.Components
的用法示例。
在下文中一共展示了Components.getAllUtilitiesRegisteredFor方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PackageConfigurator
# 需要导入模块: from zope.interface.registry import Components [as 别名]
# 或者: from zope.interface.registry.Components import getAllUtilitiesRegisteredFor [as 别名]
class PackageConfigurator(object):
default_depth = 3
def __init__(self, registry, resolve=None, target='includeme'):
self.registry = registry
self._resolve = resolve
self._target = target
self._depth = self.default_depth
self._configurator_registry = Components()
def add_configurator(self, configurator, name=''):
self._configurator_registry.registerUtility(configurator, IConfigurator, name)
def include(self, name, *args, **kwargs):
_logger.debug('start include: name=%s, args=%s, kwds=%s', name, args, kwargs)
includeme = name if callable(name) else get_includeme(name, resolve=self._resolve, depth=self._depth)
_logger.debug('include -> %s.%s', includeme.__module__, includeme.__name__)
return includeme(self)
def scan(self, package=None, **kw):
name = 'scan'
if package is None:
package = '.'
if isinstance(package, (six.string_types, six.text_type, six.binary_type)):
package = get_abs_dotted_name_caller_module(package, **kw)
for cfg in self._configurator_registry.getAllUtilitiesRegisteredFor(IConfigurator):
if hasattr(cfg, name) and callable(getattr(cfg, name)):
_logger.debug('scanning...: %s: %s', cfg.__module__, package)
cfg.scan(package)
def __getattr__(self, name):
if name.startswith('_'):
raise AttributeError(name)
configs = [cfg
for cfg in self._configurator_registry.getAllUtilitiesRegisteredFor(IConfigurator)
if hasattr(cfg, name) and callable(getattr(cfg, name))]
if configs:
for config in configs:
return getattr(config, name)
else:
raise AttributeError(name)
示例2: TestUtility
# 需要导入模块: from zope.interface.registry import Components [as 别名]
# 或者: from zope.interface.registry.Components import getAllUtilitiesRegisteredFor [as 别名]
#.........这里部分代码省略.........
self.components.registerUtility(test_object4, info=u'use 4 now')
self.assertEqual(self.components.getUtility(I1), test_object4)
def test_unregister_utility(self):
test_object = U1(1)
self.components.registerUtility(test_object)
self.assertEqual(self.components.getUtility(I1), test_object)
self.assertTrue(self.components.unregisterUtility(provided=I1))
self.assertFalse(self.components.unregisterUtility(provided=I1))
def test_unregister_utility_extended(self):
test_object = U1(1)
self.components.registerUtility(test_object)
self.assertFalse(self.components.unregisterUtility(U1(1)))
self.assertEqual(self.components.queryUtility(I1), test_object)
self.assertTrue(self.components.unregisterUtility(test_object))
self.assertTrue(self.components.queryUtility(I1) is None)
def test_get_utilities_for(self):
test_object1 = U1(1)
test_object2 = U12(2)
test_object3 = U12(3)
self.components.registerUtility(test_object1)
self.components.registerUtility(test_object2, I2)
self.components.registerUtility(test_object3, I2, u'name')
sorted_utilities = sorted(self.components.getUtilitiesFor(I2))
self.assertEqual(len(sorted_utilities), 2)
self.assertEqual(sorted_utilities[0], (u'', test_object2))
self.assertEqual(sorted_utilities[1], (u'name', test_object3))
def test_get_all_utilities_registered_for(self):
test_object1 = U1(1)
test_object2 = U12(2)
test_object3 = U12(3)
test_object4 = U('ext')
self.components.registerUtility(test_object1)
self.components.registerUtility(test_object2, I2)
self.components.registerUtility(test_object3, I2, u'name')
self.components.registerUtility(test_object4, I2e)
sorted_utilities = sorted(self.components.getUtilitiesFor(I2))
self.assertEqual(len(sorted_utilities), 2)
self.assertEqual(sorted_utilities[0], (u'', test_object2))
self.assertEqual(sorted_utilities[1], (u'name', test_object3))
all_utilities = self.components.getAllUtilitiesRegisteredFor(I2)
self.assertEqual(len(all_utilities), 3)
self.assertTrue(test_object2 in all_utilities)
self.assertTrue(test_object3 in all_utilities)
self.assertTrue(test_object4 in all_utilities)
self.assertTrue(self.components.unregisterUtility(test_object4, I2e))
self.assertEqual(self.components.getAllUtilitiesRegisteredFor(I2e), [])
def test_utility_events(self):
from zope.event import subscribers
old_subscribers = subscribers[:]
subscribers[:] = []
test_object = U1(1)
def log_event(event):
self.assertEqual(event.object.component, test_object)
subscribers.append(log_event)
self.components.registerUtility(test_object)
subscribers[:] = old_subscribers
def test_dont_leak_utility_registrations_in__subscribers(self):
"""
We've observed utilities getting left in _subscribers when they
get unregistered.
"""
class C:
def __init__(self, name):
self.name = name
def __repr__(self):
return "C(%s)" % self.name
c1 = C(1)
c2 = C(2)
self.components.registerUtility(c1, I1)
self.components.registerUtility(c1, I1)
utilities = list(self.components.getAllUtilitiesRegisteredFor(I1))
self.assertEqual(len(utilities), 1)
self.assertEqual(utilities[0], c1)
self.assertTrue(self.components.unregisterUtility(provided=I1))
utilities = list(self.components.getAllUtilitiesRegisteredFor(I1))
self.assertEqual(len(utilities), 0)
self.components.registerUtility(c1, I1)
self.components.registerUtility(c2, I1)
utilities = list(self.components.getAllUtilitiesRegisteredFor(I1))
self.assertEqual(len(utilities), 1)
self.assertEqual(utilities[0], c2)