the instance is part of the eager join, to prevent
conflicts with a subquery or column of the same name
on the parent object. [ticket:1019]
-
+
+ - Removed a class-member inspection step from attribute
+ instrumentation that could be problematic when integrating
+ with other frameworks.
+
- declarative extension
- Joined table inheritance mappers use a slightly relaxed
function to create the "inherit condition" to the parent
This should obviate the need of adding a myriad of ODBC
options in the future.
-
- firebird
- Handle the "SUBSTRING(:string FROM :start FOR :length)"
builtin.
return lazy_collection
def __get__(self, obj, class_):
+ if self.owning_class is None:
+ self.owning_class = class_ and class_ or type(obj)
if obj is None:
- self.owning_class = class_
- return
+ return None
elif self.scalar is None:
self.scalar = self._target_is_scalar()
if self.scalar:
return proxy
def __set__(self, obj, values):
+ if self.owning_class is None:
+ self.owning_class = type(obj)
if self.scalar is None:
self.scalar = self._target_is_scalar()
if self.scalar:
self._set(proxy, values)
def __delete__(self, obj):
+ if self.owning_class is None:
+ self.owning_class = type(obj)
delattr(obj, self.key)
def _initialize_scalar_accessors(self):
class_._class_state = ClassState()
def register_class(class_, extra_init=None, on_exception=None, deferred_scalar_loader=None):
- # do a sweep first, this also helps some attribute extensions
- # (like associationproxy) become aware of themselves at the
- # class level
- for key in dir(class_):
- getattr(class_, key, None)
-
_init_class_state(class_)
class_._class_state.deferred_scalar_loader=deferred_scalar_loader