diff options
author | Erik De Bonte <erikd@microsoft.com> | 2022-12-06 03:35:43 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-06 03:35:43 (GMT) |
commit | 5c19050546e3e37a8889a0baa2954e1444e803d3 (patch) | |
tree | dd755d4d9f2b6b70c0e1ef0ffa0fd1811996da63 | |
parent | bed15f87eadc726122185cf41efcdda289f4a7b1 (diff) | |
download | cpython-5c19050546e3e37a8889a0baa2954e1444e803d3.zip cpython-5c19050546e3e37a8889a0baa2954e1444e803d3.tar.gz cpython-5c19050546e3e37a8889a0baa2954e1444e803d3.tar.bz2 |
gh-99957: Add `frozen_default` parameter on `dataclass_transform` (#99958)
-rw-r--r-- | Doc/library/typing.rst | 4 | ||||
-rw-r--r-- | Lib/test/test_typing.py | 5 | ||||
-rw-r--r-- | Lib/typing.py | 4 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-12-03-05-58-48.gh-issue-99957.jLYYgN.rst | 1 |
4 files changed, 13 insertions, 1 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 94c9cb1..356f919 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -2575,6 +2575,10 @@ Functions and decorators assumed to be True or False if it is omitted by the caller. * ``kw_only_default`` indicates whether the ``kw_only`` parameter is assumed to be True or False if it is omitted by the caller. + * ``frozen_default`` indicates whether the ``frozen`` parameter is + assumed to be True or False if it is omitted by the caller. + + .. versionadded:: 3.12 * ``field_specifiers`` specifies a static list of supported classes or functions that describe fields, similar to ``dataclasses.field()``. * Arbitrary other keyword arguments are accepted in order to allow for diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index da602b0..1cae1b0 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -7719,6 +7719,7 @@ class DataclassTransformTests(BaseTestCase): "eq_default": True, "order_default": False, "kw_only_default": True, + "frozen_default": False, "field_specifiers": (), "kwargs": {}, } @@ -7749,6 +7750,7 @@ class DataclassTransformTests(BaseTestCase): "eq_default": True, "order_default": True, "kw_only_default": False, + "frozen_default": False, "field_specifiers": (), "kwargs": {"make_everything_awesome": True}, } @@ -7765,7 +7767,7 @@ class DataclassTransformTests(BaseTestCase): return super().__new__(cls, name, bases, namespace) Decorated = dataclass_transform( - order_default=True, field_specifiers=(Field,) + order_default=True, frozen_default=True, field_specifiers=(Field,) )(ModelMeta) class ModelBase(metaclass=Decorated): ... @@ -7780,6 +7782,7 @@ class DataclassTransformTests(BaseTestCase): "eq_default": True, "order_default": True, "kw_only_default": False, + "frozen_default": True, "field_specifiers": (Field,), "kwargs": {}, } diff --git a/Lib/typing.py b/Lib/typing.py index 38e227e3c..d9d6fbc 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -3363,6 +3363,7 @@ def dataclass_transform( eq_default: bool = True, order_default: bool = False, kw_only_default: bool = False, + frozen_default: bool = False, field_specifiers: tuple[type[Any] | Callable[..., Any], ...] = (), **kwargs: Any, ) -> Callable[[T], T]: @@ -3416,6 +3417,8 @@ def dataclass_transform( assumed to be True or False if it is omitted by the caller. - ``kw_only_default`` indicates whether the ``kw_only`` parameter is assumed to be True or False if it is omitted by the caller. + - ``frozen_default`` indicates whether the ``frozen`` parameter is + assumed to be True or False if it is omitted by the caller. - ``field_specifiers`` specifies a static list of supported classes or functions that describe fields, similar to ``dataclasses.field()``. - Arbitrary other keyword arguments are accepted in order to allow for @@ -3432,6 +3435,7 @@ def dataclass_transform( "eq_default": eq_default, "order_default": order_default, "kw_only_default": kw_only_default, + "frozen_default": frozen_default, "field_specifiers": field_specifiers, "kwargs": kwargs, } diff --git a/Misc/NEWS.d/next/Library/2022-12-03-05-58-48.gh-issue-99957.jLYYgN.rst b/Misc/NEWS.d/next/Library/2022-12-03-05-58-48.gh-issue-99957.jLYYgN.rst new file mode 100644 index 0000000..4fd7b6b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-12-03-05-58-48.gh-issue-99957.jLYYgN.rst @@ -0,0 +1 @@ +Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`. |