From: Mike Bayer Date: Sat, 7 Jan 2012 17:57:22 +0000 (-0500) Subject: - [bug] Fixed bug whereby event.listen(SomeClass) X-Git-Tag: rel_0_7_5~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=350a468ae91100faac947746caf3d749460a90ec;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - [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] --- 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