when the label has been "grouped" and
loses itself. Affects [ticket:2188].
+- schema
+ - Fixed bug whereby adaptation of old append_ddl_listener()
+ function was passing unexpected **kw through
+ to the Table event. Table gets no kws, the MetaData
+ event in 0.6 would get "tables=somecollection",
+ this behavior is preserved. [ticket:2206]
+
- engine
- Use urllib.parse_qsl() in Python 2.6 and above,
no deprecation warning about cgi.parse_qsl()
"""
def adapt_listener(target, connection, **kw):
- listener(event_name, target, connection, **kw)
+ listener(event_name, target, connection)
event.listen(self, "" + event_name.replace('-', '_'), adapt_listener)
"""
def adapt_listener(target, connection, **kw):
- listener(event, target, connection, **kw)
+ tables = kw['tables']
+ listener(event, target, connection, tables=tables)
event.listen(self, "" + event_name.replace('-', '_'), adapt_listener)
assert 'xyzzy' in strings
assert 'fnord' in strings
+ def test_deprecated_append_ddl_listener_table(self):
+ metadata, users, engine = self.metadata, self.users, self.engine
+ canary = []
+ users.append_ddl_listener('before-create',
+ lambda e, t, b:canary.append('mxyzptlk')
+ )
+ users.append_ddl_listener('after-create',
+ lambda e, t, b:canary.append('klptzyxm')
+ )
+ users.append_ddl_listener('before-drop',
+ lambda e, t, b:canary.append('xyzzy')
+ )
+ users.append_ddl_listener('after-drop',
+ lambda e, t, b:canary.append('fnord')
+ )
+
+ metadata.create_all()
+ assert 'mxyzptlk' in canary
+ assert 'klptzyxm' in canary
+ assert 'xyzzy' not in canary
+ assert 'fnord' not in canary
+ del engine.mock[:]
+ canary[:] = []
+ metadata.drop_all()
+ assert 'mxyzptlk' not in canary
+ assert 'klptzyxm' not in canary
+ assert 'xyzzy' in canary
+ assert 'fnord' in canary
+
+ def test_deprecated_append_ddl_listener_metadata(self):
+ metadata, users, engine = self.metadata, self.users, self.engine
+ canary = []
+ metadata.append_ddl_listener('before-create',
+ lambda e, t, b, tables=None:canary.append('mxyzptlk')
+ )
+ metadata.append_ddl_listener('after-create',
+ lambda e, t, b, tables=None:canary.append('klptzyxm')
+ )
+ metadata.append_ddl_listener('before-drop',
+ lambda e, t, b, tables=None:canary.append('xyzzy')
+ )
+ metadata.append_ddl_listener('after-drop',
+ lambda e, t, b, tables=None:canary.append('fnord')
+ )
+
+ metadata.create_all()
+ assert 'mxyzptlk' in canary
+ assert 'klptzyxm' in canary
+ assert 'xyzzy' not in canary
+ assert 'fnord' not in canary
+ del engine.mock[:]
+ canary[:] = []
+ metadata.drop_all()
+ assert 'mxyzptlk' not in canary
+ assert 'klptzyxm' not in canary
+ assert 'xyzzy' in canary
+ assert 'fnord' in canary
def test_metadata(self):
metadata, engine = self.metadata, self.engine