[Checkins] SVN: zope.component/branches/tlotze-patching-interfaces/src/zope/component/_ implemented adapt and utility methods that get patched onto interfaces during import
Thomas Lotze
tl at gocept.com
Thu Dec 17 09:10:40 EST 2009
Log message for revision 106701:
implemented adapt and utility methods that get patched onto interfaces during import
Changed:
U zope.component/branches/tlotze-patching-interfaces/src/zope/component/__init__.py
U zope.component/branches/tlotze-patching-interfaces/src/zope/component/_api.py
-=-
Modified: zope.component/branches/tlotze-patching-interfaces/src/zope/component/__init__.py
===================================================================
--- zope.component/branches/tlotze-patching-interfaces/src/zope/component/__init__.py 2009-12-17 13:30:46 UTC (rev 106700)
+++ zope.component/branches/tlotze-patching-interfaces/src/zope/component/__init__.py 2009-12-17 14:10:40 UTC (rev 106701)
@@ -60,3 +60,6 @@
moduleProvides(IComponentArchitecture, IComponentRegistrationConvenience)
__all__ = tuple(IComponentArchitecture)
+
+from zope.component._api import patch_Interface
+patch_Interface()
Modified: zope.component/branches/tlotze-patching-interfaces/src/zope/component/_api.py
===================================================================
--- zope.component/branches/tlotze-patching-interfaces/src/zope/component/_api.py 2009-12-17 13:30:46 UTC (rev 106700)
+++ zope.component/branches/tlotze-patching-interfaces/src/zope/component/_api.py 2009-12-17 14:10:40 UTC (rev 106701)
@@ -236,3 +236,37 @@
if iface.isOrExtends(interface):
yield name, factory
break
+
+
+# Patch zope.interface.Interface
+
+_marker = object()
+
+def adapt(iface, name=u'', default=_marker, context=None, *objects):
+ if not objects:
+ raise TypeError('You need to adapt at least one object.')
+ if len(objects) == 1:
+ if default is _marker:
+ return getAdapter(objects[0], iface, name=name, context=context)
+ else:
+ return queryAdapter(objects[0], iface,
+ name=name, default=default, context=context)
+ else:
+ if default is _marker:
+ return getMultiAdapter(objects, iface, name=name, context=context)
+ else:
+ return queryMultiAdapter(
+ objects, iface, name=name, default=default, context=context)
+
+
+def utility(iface, name=u'', default=_marker, context=None):
+ if default is _marker:
+ return getUtility(iface, name=name, context=context)
+ else:
+ return queryUtility(
+ iface, name=name, default=default, context=context)
+
+
+def patch_Interface():
+ Interface.adapt = adapt
+ Interface.utility = utility
More information about the checkins
mailing list