[Checkins] SVN: Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo. Add utilityinfos, that inform about utilities in context of an object.

Uli Fouquet uli at gnufix.de
Wed Jun 18 05:31:14 EDT 2008


Log message for revision 87495:
  Add utilityinfos, that inform about utilities in context of an object.

Changed:
  A   Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py
  A   Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.txt

-=-
Added: Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py
===================================================================
--- Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py	                        (rev 0)
+++ Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.py	2008-06-18 09:31:13 UTC (rev 87495)
@@ -0,0 +1,27 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Infos about utilities.
+"""
+from zope.component import globalregistry
+
+class UtilityInfo(object):
+
+    def __init__(self, obj=None):
+        self.context = obj
+
+    def getAllUtilities(self):
+        return [
+            dict(name=x.name, provided=x.provided,
+                 registry=x.registry, component=x.component)
+            for x in list(globalregistry.base.registeredUtilities())]

Added: Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.txt
===================================================================
--- Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.txt	                        (rev 0)
+++ Sandbox/ulif/zope.introspector/src/zope/introspector/utilityinfo.txt	2008-06-18 09:31:13 UTC (rev 87495)
@@ -0,0 +1,60 @@
+Determining utilites for objects
+********************************
+
+Get informed about all local and global utilities for an object.
+
+:Test-Layer: functional
+
+zope.introspector provides the ``UtilityInfo`` for determining
+utilities, that are available for specific contexts. Contrary to
+adapters, utilities tend to be context-less. We must, however, take
+care, that local utilities are only registered for objects in the same
+site. 
+
+Let's start with a simple object::
+
+  >>> class Mammoth(object):
+  ...   pass
+
+We define an utility::
+
+  >>> from zope.interface import Interface, implements
+  >>> from zope.component import provideUtility
+
+  >>> class ITestUtility(Interface):
+  ...   pass
+
+  >>> class TestUtility(object):
+  ...   implements(ITestUtility)
+
+
+Now we register it globally and unnamed::
+
+  >>> provideUtility(TestUtility(), provides=ITestUtility, name='')
+
+Make sure, the utility was really registered::
+
+  >>> from zope.component import getUtility
+  >>> getUtility(ITestUtility, name='', context=None)
+  <TestUtility object at 0x...>
+
+We create an instance of the mammoth::
+
+  >>> manfred = Mammoth()
+
+Using ``UtilityInfo`` we can ask for all the utilities for our
+particular mammoth::
+
+  >>> from zope.introspector import UtilityInfo
+  >>> info = UtilityInfo(manfred)
+  >>> from pprint import pprint
+  >>> pprint(info.getAllUtilities())
+  [{'component': <ZODB.DB.DB object at 0x...>,
+    'name': 'unnamed',
+    'provided': <InterfaceClass ZODB.interfaces.IDatabase>,
+    'registry': <BaseGlobalComponents base>},
+   {'component': <TestUtility object at 0x...>,
+    'name': '',
+    'provided': <InterfaceClass __builtin__.ITestUtility>,
+    'registry': <BaseGlobalComponents base>}]
+



More information about the Checkins mailing list