summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2022-11-27 18:11:34 +0100
committerMike Bayer <mike_mp@zzzcomputing.com>2022-11-29 17:49:27 -0500
commit9c9fd31bcea3beaed6d14fde639e65f6b43bea09 (patch)
tree2eef4b31c1f89f364c9bf15fdf153a4aad0f98c6 /lib/sqlalchemy/testing
parent78833af4e650d37e6257cfbb541e4db56e2a285f (diff)
downloadsqlalchemy-9c9fd31bcea3beaed6d14fde639e65f6b43bea09.tar.gz
Improve support for enum in mapped classes
Add a new system by which TypeEngine objects have some say in how the declarative type registry interprets them. The Enum datatype is the primary target for this but it is hoped the system may be useful for other types as well. Fixes: #8859 Change-Id: I15ac3daee770408b5795746f47c1bbd931b7d26d
Diffstat (limited to 'lib/sqlalchemy/testing')
-rw-r--r--lib/sqlalchemy/testing/config.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/sqlalchemy/testing/config.py b/lib/sqlalchemy/testing/config.py
index 749d04248..a75c36776 100644
--- a/lib/sqlalchemy/testing/config.py
+++ b/lib/sqlalchemy/testing/config.py
@@ -180,9 +180,15 @@ def variation(argname, cases):
"""
+ cases_plus_limitations = [
+ entry
+ if (isinstance(entry, tuple) and len(entry) == 2)
+ else (entry, None)
+ for entry in cases
+ ]
case_names = [
argname if c is True else "not_" + argname if c is False else c
- for c in cases
+ for c, l in cases_plus_limitations
]
typ = type(
@@ -195,8 +201,12 @@ def variation(argname, cases):
return combinations(
*[
- (casename, typ(casename, argname, case_names))
- for casename in case_names
+ (casename, typ(casename, argname, case_names), limitation)
+ if limitation is not None
+ else (casename, typ(casename, argname, case_names))
+ for casename, (case, limitation) in zip(
+ case_names, cases_plus_limitations
+ )
],
id_="ia",
argnames=argname,