[z3-checkins] r28498 - z3/z3reload/trunk
gintas at codespeak.net
gintas at codespeak.net
Thu Jun 8 10:07:39 CEST 2006
Author: gintas
Date: Thu Jun 8 10:07:39 2006
New Revision: 28498
Modified:
z3/z3reload/trunk/reload.py
Log:
Fixed a couple of bugs:
* in some cases __sanitize_bases would loop forever
* sometimes SimpleView classes seem to have different bases;
removed assertion that complained about those.
Modified: z3/z3reload/trunk/reload.py
==============================================================================
--- z3/z3reload/trunk/reload.py (original)
+++ z3/z3reload/trunk/reload.py Thu Jun 8 10:07:39 2006
@@ -19,10 +19,15 @@
"""
def __init__(self, *args, **kw):
- assert len(self.__class__.__bases__) == 3
- reloader2, real_view, simple2 = self.__class__.__bases__
+ bases = self.__class__.__bases__
+ assert len(bases) >= 2
+ reloader2, real_view = bases[:2]
assert reloader2 is Reloader
- assert simple2 in simple_view_classes
+
+ rest = bases[2:]
+# for c in rest:
+# if c not in simple_view_classes:
+# print >> sys.stderr, "Warning: %r has base %r" % (self.__class__, c)
clsname = real_view.__name__
modname = real_view.__module__
@@ -30,7 +35,7 @@
if hasattr(module, clsname):
reload(module)
new_view = getattr(module, clsname)
- self.__class__.__bases__ = (Reloader, new_view, simple2)
+ self.__class__.__bases__ = (Reloader, new_view) + rest
else:
# If the module does not have such an attribute, chances are that
# the class was dynamically constructed. In this case reloading is
@@ -53,7 +58,9 @@
bases = cls.__bases__
new_bases = []
for b in bases:
- if hasattr(module, b.__name__):
+ bc = getattr(module, b.__name__, None)
+ if bc is not None and bc.__module__ != modname:
+ # Make sure that the base class comes from a different module.
new_base = getattr(module, b.__name__)
self.__sanitize_bases(new_base)
new_bases.append(new_base)
More information about the z3-checkins
mailing list