From: Jason Kirtland Date: Fri, 15 Aug 2008 22:59:13 +0000 (+0000) Subject: - Don't choke when instrumenting a class with an old-style mixin. [ticket:1078] X-Git-Tag: rel_0_5rc1~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4556f4b3dfcb9d8e443042f6d61204e01c7086df;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Don't choke when instrumenting a class with an old-style mixin. [ticket:1078] --- diff --git a/lib/sqlalchemy/orm/attributes.py b/lib/sqlalchemy/orm/attributes.py index 9ebe9f79f2..7a001f18d1 100644 --- a/lib/sqlalchemy/orm/attributes.py +++ b/lib/sqlalchemy/orm/attributes.py @@ -16,6 +16,7 @@ An example of full customization is in /examples/custom_attributes. import operator from operator import attrgetter, itemgetter +import types import weakref from sqlalchemy import util @@ -1083,6 +1084,8 @@ class ClassManager(dict): self.install_descriptor(key, inst) self[key] = inst for cls in self.class_.__subclasses__(): + if isinstance(cls, types.ClassType): + continue manager = manager_of_class(cls) if manager is None: manager = create_manager_for_cls(cls) @@ -1101,6 +1104,8 @@ class ClassManager(dict): if key in self.mutable_attributes: self.mutable_attributes.remove(key) for cls in self.class_.__subclasses__(): + if isinstance(cls, types.ClassType): + continue manager = manager_of_class(cls) if manager is None: manager = create_manager_for_cls(cls)