From: Mike Bayer Date: Tue, 16 Mar 2021 22:32:30 +0000 (-0400) Subject: Fix typo in Session.identity_key X-Git-Tag: rel_1_4_1~7^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=057a3dad02cc1f40f9e35bc070e0844b01d76417;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix typo in Session.identity_key Fixed regression in :meth:`_orm.Session.identity_key`, including that the method and related methods were not covered by any unit test as well as that the method contained a typo preventing it from functioning correctly. Fixes: #6067 Change-Id: I1a84f9ed095c4226d57eef1c46996601dc2f1eaa --- diff --git a/doc/build/changelog/unreleased_14/6067.rst b/doc/build/changelog/unreleased_14/6067.rst new file mode 100644 index 0000000000..97128ec182 --- /dev/null +++ b/doc/build/changelog/unreleased_14/6067.rst @@ -0,0 +1,8 @@ +.. change:: + :tags: bug, orm, regression + :tickets: 6067 + + Fixed regression in :meth:`_orm.Session.identity_key`, including that the + method and related methods were not covered by any unit test as well as + that the method contained a typo preventing it from functioning correctly. + diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index 004951e5b5..7e39b08204 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -81,7 +81,7 @@ class _SessionClassMethods(object): This is an alias of :func:`.util.identity_key`. """ - return util.perload.orm_util.identity_key(*args, **kwargs) + return util.preloaded.orm_util.identity_key(*args, **kwargs) @classmethod def object_session(cls, instance): diff --git a/test/orm/test_session.py b/test/orm/test_session.py index 23826128c1..280bb99b8b 100644 --- a/test/orm/test_session.py +++ b/test/orm/test_session.py @@ -244,12 +244,13 @@ class SessionUtilTest(_fixtures.FixtureTest): assert u1 not in s1 assert u2 not in s2 - def test_object_session_raises(self): + @testing.combinations((object_session,), (Session.object_session,)) + def test_object_session_raises(self, objsession): User = self.classes.User - assert_raises(orm_exc.UnmappedInstanceError, object_session, object()) + assert_raises(orm_exc.UnmappedInstanceError, objsession, object()) - assert_raises(orm_exc.UnmappedInstanceError, object_session, User()) + assert_raises(orm_exc.UnmappedInstanceError, objsession, User()) def test_make_transient(self): users, User = self.tables.users, self.classes.User diff --git a/test/orm/test_utils.py b/test/orm/test_utils.py index a2182e3eaa..8b298c6fba 100644 --- a/test/orm/test_utils.py +++ b/test/orm/test_utils.py @@ -4,11 +4,13 @@ from sqlalchemy import Integer from sqlalchemy import MetaData from sqlalchemy import select from sqlalchemy import Table +from sqlalchemy import testing from sqlalchemy import util from sqlalchemy.ext.hybrid import hybrid_method from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.orm import aliased from sqlalchemy.orm import mapper +from sqlalchemy.orm import Session from sqlalchemy.orm import synonym from sqlalchemy.orm import util as orm_util from sqlalchemy.orm import with_polymorphic @@ -444,27 +446,36 @@ class AliasedClassTest(fixtures.TestBase, AssertsCompiledSQL): class IdentityKeyTest(_fixtures.FixtureTest): run_inserts = None - def test_identity_key_1(self): + def _cases(): + return testing.combinations( + (orm_util,), + (Session,), + ) + + @_cases() + def test_identity_key_1(self, ormutil): User, users = self.classes.User, self.tables.users mapper(User, users) - key = orm_util.identity_key(User, [1]) + key = ormutil.identity_key(User, [1]) eq_(key, (User, (1,), None)) - key = orm_util.identity_key(User, ident=[1]) + key = ormutil.identity_key(User, ident=[1]) eq_(key, (User, (1,), None)) - def test_identity_key_scalar(self): + @_cases() + def test_identity_key_scalar(self, ormutil): User, users = self.classes.User, self.tables.users mapper(User, users) - key = orm_util.identity_key(User, 1) + key = ormutil.identity_key(User, 1) eq_(key, (User, (1,), None)) - key = orm_util.identity_key(User, ident=1) + key = ormutil.identity_key(User, ident=1) eq_(key, (User, (1,), None)) - def test_identity_key_2(self): + @_cases() + def test_identity_key_2(self, ormutil): users, User = self.tables.users, self.classes.User mapper(User, users) @@ -472,16 +483,17 @@ class IdentityKeyTest(_fixtures.FixtureTest): u = User(name="u1") s.add(u) s.flush() - key = orm_util.identity_key(instance=u) + key = ormutil.identity_key(instance=u) eq_(key, (User, (u.id,), None)) - def test_identity_key_3(self): + @_cases() + def test_identity_key_3(self, ormutil): User, users = self.classes.User, self.tables.users mapper(User, users) row = {users.c.id: 1, users.c.name: "Frank"} - key = orm_util.identity_key(User, row=row) + key = ormutil.identity_key(User, row=row) eq_(key, (User, (1,), None)) def test_identity_key_token(self):