[Checkins] SVN: martian/trunk/ Add a validateClass validate
function for directives.
Martijn Faassen
faassen at infrae.com
Tue Jun 3 13:42:07 EDT 2008
Log message for revision 87131:
Add a validateClass validate function for directives.
Changed:
U martian/trunk/CHANGES.txt
U martian/trunk/src/martian/__init__.py
U martian/trunk/src/martian/directive.py
U martian/trunk/src/martian/directive.txt
-=-
Modified: martian/trunk/CHANGES.txt
===================================================================
--- martian/trunk/CHANGES.txt 2008-06-03 13:00:49 UTC (rev 87130)
+++ martian/trunk/CHANGES.txt 2008-06-03 17:42:05 UTC (rev 87131)
@@ -4,8 +4,11 @@
0.9.8 (unreleased)
==================
-* ...
+Feature changes
+---------------
+* Add a ``validateClass`` validate function for directives.
+
0.9.7 (2008-05-29)
==================
Modified: martian/trunk/src/martian/__init__.py
===================================================================
--- martian/trunk/src/martian/__init__.py 2008-06-03 13:00:49 UTC (rev 87130)
+++ martian/trunk/src/martian/__init__.py 2008-06-03 17:42:05 UTC (rev 87131)
@@ -8,5 +8,5 @@
from martian.directive import ONCE, MULTIPLE, DICT
from martian.directive import CLASS, CLASS_OR_MODULE, MODULE
from martian.directive import (
- validateText, validateInterface, validateInterfaceOrClass)
+ validateText, validateInterface, validateClass, validateInterfaceOrClass)
from martian.directive import baseclass
Modified: martian/trunk/src/martian/directive.py
===================================================================
--- martian/trunk/src/martian/directive.py 2008-06-03 13:00:49 UTC (rev 87130)
+++ martian/trunk/src/martian/directive.py 2008-06-03 17:42:05 UTC (rev 87131)
@@ -225,6 +225,10 @@
raise GrokImportError("The '%s' directive can only be called with "
"a class or an interface." % directive.name)
+def validateClass(directive, value):
+ if not util.isclass(value):
+ raise GrokImportError("The '%s' directive can only be called with "
+ "a class." % directive.name)
def validateInterface(directive, value):
if not (IInterface.providedBy(value)):
Modified: martian/trunk/src/martian/directive.txt
===================================================================
--- martian/trunk/src/martian/directive.txt 2008-06-03 13:00:49 UTC (rev 87130)
+++ martian/trunk/src/martian/directive.txt 2008-06-03 17:42:05 UTC (rev 87131)
@@ -541,6 +541,31 @@
...
GrokImportError: The 'iface' directive can only be called with an interface.
+The ``validateClass`` validator only accepts a class::
+
+ >>> from martian import validateClass
+ >>> class klass(Directive):
+ ... scope = CLASS
+ ... store = ONCE
+ ... validate = validateClass
+
+ >>> class Foo(object):
+ ... klass(Bar)
+
+But it won't work with an interface or other things::
+
+ >>> class Foo(object):
+ ... klass(IBar)
+ Traceback (most recent call last):
+ ...
+ GrokImportError: The 'klass' directive can only be called with a class.
+
+ >>> class Foo(object):
+ ... klass(Bar())
+ Traceback (most recent call last):
+ ...
+ GrokImportError: The 'klass' directive can only be called with a class.
+
Declaring base classes
----------------------
More information about the Checkins
mailing list