summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/instrumentation.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/orm/instrumentation.py')
-rw-r--r--lib/sqlalchemy/orm/instrumentation.py15
1 files changed, 5 insertions, 10 deletions
diff --git a/lib/sqlalchemy/orm/instrumentation.py b/lib/sqlalchemy/orm/instrumentation.py
index d2ff72180..c970bee22 100644
--- a/lib/sqlalchemy/orm/instrumentation.py
+++ b/lib/sqlalchemy/orm/instrumentation.py
@@ -129,7 +129,7 @@ class ClassManager(HasMemoized, dict):
if mapper:
self.mapper = mapper
if registry:
- self.registry = registry
+ registry._add_manager(self)
if declarative_scan:
self.declarative_scan = declarative_scan
if expired_attribute_loader:
@@ -278,11 +278,6 @@ class ClassManager(HasMemoized, dict):
setattr(self.class_, self.MANAGER_ATTR, self)
- def dispose(self):
- """Disassociate this manager from its class."""
-
- delattr(self.class_, self.MANAGER_ATTR)
-
@util.hybridmethod
def manager_getter(self):
return _default_manager_getter
@@ -359,6 +354,9 @@ class ClassManager(HasMemoized, dict):
if key in self.local_attrs:
self.uninstrument_attribute(key)
+ if self.MANAGER_ATTR in self.class_.__dict__:
+ delattr(self.class_, self.MANAGER_ATTR)
+
def install_descriptor(self, key, inst):
if key in (self.STATE_ATTR, self.MANAGER_ATTR):
raise KeyError(
@@ -496,7 +494,7 @@ class _SerializeManager(object):
"Python process!" % self.class_,
)
elif manager.is_mapped and not manager.mapper.configured:
- manager.mapper._configure_all()
+ manager.mapper._check_configure()
# setup _sa_instance_state ahead of time so that
# unpickle events can access the object normally.
@@ -538,10 +536,7 @@ class InstrumentationFactory(object):
def unregister(self, class_):
manager = manager_of_class(class_)
manager.unregister()
- manager.dispose()
self.dispatch.class_uninstrument(class_)
- if ClassManager.MANAGER_ATTR in class_.__dict__:
- delattr(class_, ClassManager.MANAGER_ATTR)
# this attribute is replaced by sqlalchemy.ext.instrumentation