[Checkins] SVN: megrok.rdb/trunk/src/megrok/rdb/meta.py ugly hack to make instrumenting possible twice in tests. Must be a better way...

Martijn Faassen faassen at infrae.com
Thu Sep 4 14:17:44 EDT 2008


Log message for revision 90818:
  ugly hack to make instrumenting possible twice in tests. Must be a better way...
  
  

Changed:
  U   megrok.rdb/trunk/src/megrok/rdb/meta.py

-=-
Modified: megrok.rdb/trunk/src/megrok/rdb/meta.py
===================================================================
--- megrok.rdb/trunk/src/megrok/rdb/meta.py	2008-09-04 17:39:42 UTC (rev 90817)
+++ megrok.rdb/trunk/src/megrok/rdb/meta.py	2008-09-04 18:17:43 UTC (rev 90818)
@@ -1,6 +1,7 @@
 import martian
 from martian.error import GrokError
 from sqlalchemy.ext.declarative import instrument_declarative
+import sqlalchemy
 
 from megrok import rdb
 
@@ -26,7 +27,15 @@
         # to make sure it's unique per metadata. A bit of a hack..
         if not hasattr(metadata, '_decl_registry'):
             metadata._decl_registry = {}
-        instrument_declarative(class_, metadata._decl_registry, metadata)
+        try:
+            instrument_declarative(class_, metadata._decl_registry, metadata)
+        except sqlalchemy.exc.InvalidRequestError:
+            # XXX scary - catching too many errors
+            # allows re-grokking of classes that were already
+            # instrument. Better would be to un-instrument classes
+            # after tests, but how to uninstrument?
+            pass
+
         return True
     
 class ContainerGrokker(martian.ClassGrokker):



More information about the Checkins mailing list