]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Ensure cache keys are hashable in the test
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 14 Dec 2019 20:36:38 +0000 (15:36 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 14 Dec 2019 20:36:38 +0000 (15:36 -0500)
Change-Id: I962ff15194e2416844086f03dddadb49f48a6c8d

lib/sqlalchemy/sql/elements.py
test/sql/test_compare.py

index da75683305c0f6c64e0882e8016cafceaeaebf32..464c2a4d6f909ec1045453b23906b97162ab85f8 100644 (file)
@@ -3263,7 +3263,15 @@ class BinaryExpression(ColumnElement):
             ("right", self.right._gen_cache_key(anon_map, bindparams)),
             ("operator", self.operator),
             ("negate", self.negate),
-            ("modifiers", self.modifiers),
+            (
+                "modifiers",
+                tuple(
+                    (key, self.modifiers[key])
+                    for key in sorted(self.modifiers)
+                )
+                if self.modifiers
+                else None,
+            ),
         )
 
     def __init__(
index 5d21960b70376008a03c5227fd51df343440f633..520133272f1612280dba1136af5e3f9c88685d44 100644 (file)
@@ -450,6 +450,7 @@ class CacheKeyFixture(object):
                 a_key = case_a[a]._generate_cache_key()
                 b_key = case_b[b]._generate_cache_key()
                 eq_(a_key.key, b_key.key)
+                eq_(hash(a_key), hash(b_key))
 
                 for a_param, b_param in zip(
                     a_key.bindparams, b_key.bindparams