From d2887d03a28b09e9be7db17d7603b6b0a4715df3 Mon Sep 17 00:00:00 2001 From: Federico Caselli Date: Wed, 3 Aug 2022 23:50:19 +0200 Subject: Support kw_only and match_args in dataclass mapping Fixes: #8346 Change-Id: I964629e3bd25221bf6df6ab31c59b3ce1983cd9a --- lib/sqlalchemy/orm/interfaces.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/orm/interfaces.py') diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py index a9ae4436f..0f66566b0 100644 --- a/lib/sqlalchemy/orm/interfaces.py +++ b/lib/sqlalchemy/orm/interfaces.py @@ -187,6 +187,7 @@ class _AttributeOptions(NamedTuple): dataclasses_repr: Union[_NoArg, bool] dataclasses_default: Union[_NoArg, Any] dataclasses_default_factory: Union[_NoArg, Callable[[], Any]] + dataclasses_kw_only: Union[_NoArg, bool] def _as_dataclass_field(self) -> Any: """Return a ``dataclasses.Field`` object given these arguments.""" @@ -200,6 +201,8 @@ class _AttributeOptions(NamedTuple): kw["init"] = self.dataclasses_init if self.dataclasses_repr is not _NoArg.NO_ARG: kw["repr"] = self.dataclasses_repr + if self.dataclasses_kw_only is not _NoArg.NO_ARG: + kw["kw_only"] = self.dataclasses_kw_only return dataclasses.field(**kw) @@ -226,7 +229,7 @@ class _AttributeOptions(NamedTuple): _DEFAULT_ATTRIBUTE_OPTIONS = _AttributeOptions( - _NoArg.NO_ARG, _NoArg.NO_ARG, _NoArg.NO_ARG, _NoArg.NO_ARG + _NoArg.NO_ARG, _NoArg.NO_ARG, _NoArg.NO_ARG, _NoArg.NO_ARG, _NoArg.NO_ARG ) -- cgit v1.2.1