from .. import util
from ..sql.base import _generative, Generative
from .. import exc as sa_exc, inspect
-from .base import _is_aliased_class, _class_to_mapper, _is_mapped_class
+from .base import _is_aliased_class, _class_to_mapper, _is_mapped_class, \
+ InspectionAttr
from . import util as orm_util
from .path_registry import PathRegistry, TokenRegistry, \
_WILDCARD_TOKEN, _DEFAULT_TOKEN
if c_token is p_token:
continue
- elif c_token.is_mapper and p_token.is_mapper and \
+ elif isinstance(c_token, InspectionAttr) and \
+ c_token.is_mapper and p_token.is_mapper and \
c_token.isa(p_token):
continue
else:
from sqlalchemy.orm import attributes, mapper, relationship, backref, \
configure_mappers, create_session, synonym, Session, class_mapper, \
aliased, column_property, joinedload_all, joinedload, Query,\
- util as orm_util, Load, defer, defaultload
+ util as orm_util, Load, defer, defaultload, lazyload
from sqlalchemy.orm.query import QueryContext
from sqlalchemy.orm import strategy_options
import sqlalchemy as sa
None
)
+ def test_bound_cache_key_wildcard_one(self):
+ # do not change this test, it is testing
+ # a specific condition in Load._chop_path().
+ User, Address = self.classes('User', 'Address')
+
+ query_path = self._make_path_registry([User, "addresses"])
+
+ opt = Load(User).lazyload("*")
+ eq_(
+ opt._generate_cache_key(query_path),
+ None
+ )
+
+ def test_unbound_cache_key_wildcard_one(self):
+ User, Address = self.classes('User', 'Address')
+
+ query_path = self._make_path_registry([User, "addresses"])
+
+ opt = lazyload("*")
+ eq_(
+ opt._generate_cache_key(query_path),
+ (('relationship:_sa_default', ('lazy', 'select')),)
+ )
+
+ def test_bound_cache_key_wildcard_two(self):
+ User, Address, Order, Item, SubItem, Keyword = self.classes(
+ 'User', 'Address', 'Order', 'Item', 'SubItem', "Keyword")
+
+ query_path = self._make_path_registry([User])
+
+ opt = Load(User).lazyload("orders").lazyload("*")
+ eq_(
+ opt._generate_cache_key(query_path),
+ (('orders', Order, ('lazy', 'select')),
+ ('orders', Order, 'relationship:*', ('lazy', 'select')))
+ )
+
+ def test_unbound_cache_key_wildcard_two(self):
+ User, Address, Order, Item, SubItem, Keyword = self.classes(
+ 'User', 'Address', 'Order', 'Item', 'SubItem', "Keyword")
+
+ query_path = self._make_path_registry([User])
+
+ opt = lazyload("orders").lazyload("*")
+ eq_(
+ opt._generate_cache_key(query_path),
+ (('orders', Order, ('lazy', 'select')),
+ ('orders', Order, 'relationship:*', ('lazy', 'select')))
+ )
+
def test_unbound_cache_key_of_type_subclass_relationship(self):
User, Address, Order, Item, SubItem, Keyword = self.classes(
'User', 'Address', 'Order', 'Item', 'SubItem', "Keyword")