[Checkins] SVN: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/ Using new-style directives for provides and direct.

Jan-Wijbrand Kolman janwijbrand at gmail.com
Fri May 2 11:25:14 EDT 2008


Log message for revision 86101:
  Using new-style directives for provides and direct.

Changed:
  U   grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py
  U   grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py

-=-
Modified: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py	2008-05-02 15:24:53 UTC (rev 86100)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/directive.py	2008-05-02 15:25:14 UTC (rev 86101)
@@ -13,6 +13,7 @@
 ##############################################################################
 """Grok directives.
 """
+import grokcore.component
 
 from zope.interface.interfaces import IInterface
 
@@ -29,6 +30,8 @@
                                ClassOrModuleDirectiveContext)
 from martian import util
 
+from martian import ndir
+
 class GlobalUtilityDirective(MultipleTimesDirective):
     def check_arguments(self, factory, provides=None, name=u'',
                         direct=False):
@@ -44,11 +47,11 @@
     def __init__(self, factory, provides=None, name=u'', direct=None):
         self.factory = factory
         if direct is None:
-            direct = util.class_annotation(factory, 'grok.direct', False)
+            direct = grokcore.component.direct.get(factory)
         self.direct = direct
 
         if provides is None:
-            provides = util.class_annotation(factory, 'grok.provides', None)
+            provides = grokcore.component.provides.get(factory)
         self.provides = provides
 
         if name is u'':
@@ -81,10 +84,16 @@
 name = SingleTextDirective('grok.name', ClassDirectiveContext())
 context = InterfaceOrClassDirective('grok.context',
                                     ClassOrModuleDirectiveContext())
-provides = InterfaceDirective('grok.provides', ClassDirectiveContext())
 baseclass = MarkerDirective('grok.baseclass', ClassDirectiveContext())
 global_utility = GlobalUtilityDirective('grok.global_utility',
                                         ModuleDirectiveContext())
 title = SingleTextDirective('grok.title', ClassDirectiveContext())
 order = OrderDirective('grok.order', ClassDirectiveContext())
-direct = MarkerDirective('grok.direct', ClassDirectiveContext())
+
+direct = ndir.Directive(
+    'grok', 'direct', ndir.CLASS, ndir.ONCE, default=False,
+    arg=ndir.NO_ARG)
+
+provides = ndir.Directive(
+    'grok', 'provides', ndir.CLASS, ndir.ONCE, default=None,
+    validate=ndir.validateInterface)

Modified: grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py
===================================================================
--- grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py	2008-05-02 15:24:53 UTC (rev 86100)
+++ grokcore.component/branches/jw-philipp-using-ndir-directives/src/grokcore/component/meta.py	2008-05-02 15:25:14 UTC (rev 86101)
@@ -25,6 +25,7 @@
 from grokcore.component.util import determine_module_component
 from grokcore.component.util import determine_class_component
 from grokcore.component.util import check_provides_one
+from grokcore.component import directive
 
 def get_context(module_info, factory):
     return determine_class_component(module_info, factory,
@@ -42,7 +43,8 @@
                                                     default)
 
 def get_provides(factory):
-    provides = util.class_annotation(factory, 'grok.provides', None)
+    provides = directive.provides.get(factory)
+
     if provides is None:
         util.check_implements_one(factory)
         provides = list(interface.implementedBy(factory))[0]
@@ -67,7 +69,7 @@
         adapter_context = get_context(module_info, factory)
         provides = get_provides(factory)
         name = get_name(factory)
-        
+
         config.action(
             discriminator=('adapter', adapter_context, provides, name),
             callable=component.provideAdapter,
@@ -82,7 +84,7 @@
     def grok(self, name, factory, module_info, config, **kw):
         provides = get_provides(factory)
         name = get_name(factory)
-        
+
         check_adapts(factory)
         for_ = component.adaptedBy(factory)
 
@@ -102,8 +104,8 @@
     priority = 1100
 
     def grok(self, name, factory, module_info, config, **kw):
-        provides = util.class_annotation(factory, 'grok.provides', None)
-        direct = util.class_annotation(factory, 'grok.direct', False)
+        provides = directive.provides.get(factory)
+        direct = directive.direct.get(factory)
         name = get_name(factory)
 
         if direct:



More information about the Checkins mailing list