[Checkins] SVN: grok/trunk/src/grok/ Multiple models lead to
ambiguity errors
Philipp von Weitershausen
philikon at philikon.de
Sat Oct 14 14:11:07 EDT 2006
Log message for revision 70620:
Multiple models lead to ambiguity errors
Changed:
U grok/trunk/src/grok/_grok.py
U grok/trunk/src/grok/adapter.txt
A grok/trunk/src/grok/tests/multiple.py
-=-
Modified: grok/trunk/src/grok/_grok.py
===================================================================
--- grok/trunk/src/grok/_grok.py 2006-10-14 18:00:02 UTC (rev 70619)
+++ grok/trunk/src/grok/_grok.py 2006-10-14 18:11:07 UTC (rev 70620)
@@ -33,6 +33,7 @@
return False
return issubclass(obj, class_)
+AMBIGUOUS_CONTEXT = object()
def grok(dotted_name):
# TODO for now we only grok modules
module = resolve(dotted_name)
@@ -46,12 +47,18 @@
continue
if check_subclass(obj, Model):
- context = obj
+ if context is None:
+ context = obj
+ else:
+ context = AMBIGUOUS_CONTEXT
elif check_subclass(obj, Adapter):
adapters.append(obj)
- if adapters and context is None:
- raise GrokError("Adapter without context")
+ if adapters:
+ if context is None:
+ raise GrokError("Adapter without context")
+ elif context is AMBIGUOUS_CONTEXT:
+ raise GrokError("Ambiguous contexts, please use grok.context.")
for factory in adapters:
component.provideAdapter(factory, adapts=(context,))
Modified: grok/trunk/src/grok/adapter.txt
===================================================================
--- grok/trunk/src/grok/adapter.txt 2006-10-14 18:00:02 UTC (rev 70619)
+++ grok/trunk/src/grok/adapter.txt 2006-10-14 18:11:07 UTC (rev 70620)
@@ -78,3 +78,14 @@
True
>>> isinstance(home, Home)
True
+
+Clean up:
+
+ >>> cleanUp()
+
+Multiple models lead to ambiguity:
+
+ >>> grok.grok('grok.tests.multiple')
+ Traceback (most recent call last):
+ ...
+ GrokError: Ambiguous contexts, please use grok.context.
Added: grok/trunk/src/grok/tests/multiple.py
===================================================================
--- grok/trunk/src/grok/tests/multiple.py 2006-10-14 18:00:02 UTC (rev 70619)
+++ grok/trunk/src/grok/tests/multiple.py 2006-10-14 18:11:07 UTC (rev 70620)
@@ -0,0 +1,14 @@
+import grok
+from zope import interface
+
+class Cave(grok.Model):
+ pass
+
+class Club(grok.Model):
+ pass
+
+class IHome(interface.Interface):
+ pass
+
+class Home(grok.Adapter):
+ grok.implements(IHome)
Property changes on: grok/trunk/src/grok/tests/multiple.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list