summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/decl_base.py
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2022-08-05 14:53:22 +0000
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>2022-08-05 14:53:22 +0000
commite332909b103661975bd17816b3a2713e30671ae0 (patch)
tree246e49b63bf8e66befb7c3e493bfc33592f906ec /lib/sqlalchemy/orm/decl_base.py
parent828a1a0d143976c0e36a4772d4bd908ff6484735 (diff)
parentd2887d03a28b09e9be7db17d7603b6b0a4715df3 (diff)
downloadsqlalchemy-e332909b103661975bd17816b3a2713e30671ae0.tar.gz
Merge "Support kw_only and match_args in dataclass mapping" into main
Diffstat (limited to 'lib/sqlalchemy/orm/decl_base.py')
-rw-r--r--lib/sqlalchemy/orm/decl_base.py28
1 files changed, 14 insertions, 14 deletions
diff --git a/lib/sqlalchemy/orm/decl_base.py b/lib/sqlalchemy/orm/decl_base.py
index 108027dd5..e8d6e4c1b 100644
--- a/lib/sqlalchemy/orm/decl_base.py
+++ b/lib/sqlalchemy/orm/decl_base.py
@@ -106,6 +106,8 @@ class _DataclassArguments(TypedDict):
eq: Union[_NoArg, bool]
order: Union[_NoArg, bool]
unsafe_hash: Union[_NoArg, bool]
+ match_args: Union[_NoArg, bool]
+ kw_only: Union[_NoArg, bool]
def _declared_mapping_info(
@@ -1030,22 +1032,20 @@ class _ClassScanMapperConfig(_MapperConfig):
@classmethod
def _assert_dc_arguments(cls, arguments: _DataclassArguments) -> None:
- disallowed_args = set(arguments).difference(
- {
- "init",
- "repr",
- "order",
- "eq",
- "unsafe_hash",
- }
- )
+ allowed = {
+ "init",
+ "repr",
+ "order",
+ "eq",
+ "unsafe_hash",
+ "kw_only",
+ "match_args",
+ }
+ disallowed_args = set(arguments).difference(allowed)
if disallowed_args:
+ msg = ", ".join(f"{arg!r}" for arg in sorted(disallowed_args))
raise exc.ArgumentError(
- f"Dataclass argument(s) "
- f"""{
- ', '.join(f'{arg!r}'
- for arg in sorted(disallowed_args))
- } are not accepted"""
+ f"Dataclass argument(s) {msg} are not accepted"
)
def _collect_annotation(