From 350a468ae91100faac947746caf3d749460a90ec Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 7 Jan 2012 12:57:22 -0500 Subject: [PATCH] - [bug] Fixed bug whereby event.listen(SomeClass) forced an entirely unnecessary compile of the mapper, making events very hard to set up at module import time (nobody noticed this ??) [ticket:2367] --- CHANGES | 6 ++++++ lib/sqlalchemy/orm/events.py | 2 +- test/orm/test_events.py | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 56aede3c88..178cac3b36 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,12 @@ CHANGES 0.7.5 ===== - orm + - [bug] Fixed bug whereby event.listen(SomeClass) + forced an entirely unnecessary compile of the + mapper, making events very hard to set up + at module import time (nobody noticed this ??) + [ticket:2367] + - [bug] Fixed bug whereby hybrid_property didn't work as a kw arg in any(), has(). diff --git a/lib/sqlalchemy/orm/events.py b/lib/sqlalchemy/orm/events.py index dd948bb1aa..d319a3bbb7 100644 --- a/lib/sqlalchemy/orm/events.py +++ b/lib/sqlalchemy/orm/events.py @@ -335,7 +335,7 @@ class MapperEvents(event.Events): if issubclass(target, orm.Mapper): return target else: - return orm.class_mapper(target) + return orm.class_mapper(target, compile=False) else: return target diff --git a/test/orm/test_events.py b/test/orm/test_events.py index 6e5a676f4e..e52b9299f5 100644 --- a/test/orm/test_events.py +++ b/test/orm/test_events.py @@ -100,6 +100,14 @@ class MapperEventsTest(_RemoveListeners, _fixtures.FixtureTest): event.listen(mapper, meth, evt(meth), **kw) return canary + def test_listen_doesnt_force_compile(self): + User, users = self.classes.User, self.tables.users + m = mapper(User, users, properties={ + 'addresses':relationship(lambda: ImNotAClass) + }) + event.listen(User, "before_insert", lambda *a, **kw:None) + assert not m.configured + def test_basic(self): User, users = self.classes.User, self.tables.users -- 2.47.2