dict for "info" argument would raise an exception.
[ticket:1482]
- Unary expressions such as DISTINCT propagate their
type handling to result sets, allowing conversions like
unicode and such to take place. [ticket:1420]
+
+ - Fixed bug in Table and Column whereby passing empty
+ dict for "info" argument would raise an exception.
+ [ticket:1482]
- ext
- The collection proxies produced by associationproxy are now
m = self.metadata
return m and m.bind or None
- @property
+ @util.memoized_property
def info(self):
- try:
- return self._info
- except AttributeError:
- self._info = {}
- return self._info
-
+ return {}
def _get_table_key(name, schema):
if schema is None:
self.quote = kwargs.pop('quote', None)
self.quote_schema = kwargs.pop('quote_schema', None)
- if kwargs.get('info'):
- self._info = kwargs.pop('info')
+ if 'info' in kwargs:
+ self.info = kwargs.pop('info')
self._prefixes = kwargs.pop('prefixes', [])
setattr(self, key, kwargs.pop(key))
if 'info' in kwargs:
- self._info = kwargs.pop('info')
+ self.info = kwargs.pop('info')
self.__extra_kwargs(**kwargs)
self.__post_init(*args, **kwargs)
self.foreign_keys = util.OrderedSet()
util.set_creation_order(self)
- if kwargs.get('info'):
- self._info = kwargs.pop('info')
+ if 'info' in kwargs:
+ self.info = kwargs.pop('info')
+
if kwargs:
raise exc.ArgumentError(
"Unknown arguments passed to Column: " + repr(kwargs.keys()))
table2.create()
assert [str(x) for x in self.engine.mock if 'CREATE VIRTUAL TABLE' in str(x)]
+ def test_table_info(self):
+
+ t1 = Table('foo', self.metadata, info={'x':'y'})
+ t2 = Table('bar', self.metadata, info={})
+ t3 = Table('bat', self.metadata)
+ assert t1.info == {'x':'y'}
+ assert t2.info == {}
+ assert t3.info == {}
+ for t in (t1, t2, t3):
+ t.info['bar'] = 'zip'
+ assert t.info['bar'] == 'zip'
+
+class ColumnOptionsTest(TestBase):
+ def test_column_info(self):
+
+ c1 = Column('foo', info={'x':'y'})
+ c2 = Column('bar', info={})
+ c3 = Column('bat')
+ assert c1.info == {'x':'y'}
+ assert c2.info == {}
+ assert c3.info == {}
+
+ for c in (c1, c2, c3):
+ c.info['bar'] = 'zip'
+ assert c.info['bar'] == 'zip'
+