ColumnElement is accepted now, as the compiler auto-labels non-labeled
ColumnElements now. a selectable, like a select() statement, still
requires conversion to ColumnElement via as_scalar() or label().
+
+ - fixed backref bug where you could not del instance.attr if attr
+ was None
- several ORM attributes have been removed or made private:
mapper.get_attr_by_column(), mapper.set_attr_by_column(),
getattr(child.__class__, self.key).impl.append(child._state, instance, initiator)
def remove(self, instance, child, initiator):
- getattr(child.__class__, self.key).impl.remove(child._state, instance, initiator)
+ if child is not None:
+ getattr(child.__class__, self.key).impl.remove(child._state, instance, initiator)
class ClassState(object):
"""tracks state information at the class level."""
p4.blog = b
self.assert_(b.posts == [p1, p2, p4])
+ # assert no failure removing None
+ p5 = Post()
+ p5.blog = None
+ del p5.blog
class Port(object):pass
class Jack(object):pass