[Checkins] SVN: martian/branches/jw-philipp-using-ndir-directives/ Move check_provides_one to martian.

Philipp von Weitershausen philikon at philikon.de
Sun May 4 06:51:20 EDT 2008


Log message for revision 86332:
  Move check_provides_one to martian.

Changed:
  U   martian/branches/jw-philipp-using-ndir-directives/CHANGES.txt
  U   martian/branches/jw-philipp-using-ndir-directives/src/martian/util.py

-=-
Modified: martian/branches/jw-philipp-using-ndir-directives/CHANGES.txt
===================================================================
--- martian/branches/jw-philipp-using-ndir-directives/CHANGES.txt	2008-05-04 10:50:39 UTC (rev 86331)
+++ martian/branches/jw-philipp-using-ndir-directives/CHANGES.txt	2008-05-04 10:51:20 UTC (rev 86332)
@@ -4,6 +4,12 @@
 0.9.4 (unreleased)
 ==================
 
+Features changes
+----------------
+
+* Added a ``martian.util.check_provides_one`` helper, in analogy to
+  ``check_implements_one``.
+
 Bug fixes
 ---------
 

Modified: martian/branches/jw-philipp-using-ndir-directives/src/martian/util.py
===================================================================
--- martian/branches/jw-philipp-using-ndir-directives/src/martian/util.py	2008-05-04 10:50:39 UTC (rev 86331)
+++ martian/branches/jw-philipp-using-ndir-directives/src/martian/util.py	2008-05-04 10:51:20 UTC (rev 86332)
@@ -93,6 +93,16 @@
                         "(use grok.provides to specify which one to use)."
                         % class_, class_)
 
+def check_provides_one(obj):
+    provides = list(interface.providedBy(obj))
+    if len(provides) < 1:
+        raise GrokError("%r must provide at least one interface "
+                        "(use zope.interface.classProvides to specify)."
+                        % obj, obj)
+    if len(provides) > 1:
+        raise GrokError("%r provides more than one interface "
+                        "(use grok.provides to specify which one to use)."
+                        % obj, obj)
 
 def scan_for_classes(module, classes):
     """Given a module, scan for classes.



More information about the Checkins mailing list