mirror of https://github.com/python/cpython.git
gh-99957: Add `frozen_default` parameter on `dataclass_transform` (#99958)
This commit is contained in:
parent
bed15f87ea
commit
5c19050546
|
@ -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
|
||||
|
|
|
@ -7719,6 +7719,7 @@ class CustomerModel:
|
|||
"eq_default": True,
|
||||
"order_default": False,
|
||||
"kw_only_default": True,
|
||||
"frozen_default": False,
|
||||
"field_specifiers": (),
|
||||
"kwargs": {},
|
||||
}
|
||||
|
@ -7749,6 +7750,7 @@ class CustomerModel(Decorated, frozen=True):
|
|||
"eq_default": True,
|
||||
"order_default": True,
|
||||
"kw_only_default": False,
|
||||
"frozen_default": False,
|
||||
"field_specifiers": (),
|
||||
"kwargs": {"make_everything_awesome": True},
|
||||
}
|
||||
|
@ -7765,7 +7767,7 @@ def __new__(
|
|||
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 CustomerModel(ModelBase, init=False):
|
|||
"eq_default": True,
|
||||
"order_default": True,
|
||||
"kw_only_default": False,
|
||||
"frozen_default": True,
|
||||
"field_specifiers": (Field,),
|
||||
"kwargs": {},
|
||||
}
|
||||
|
|
|
@ -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 @@ class CustomerModel(ModelBase):
|
|||
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 decorator(cls_or_fn):
|
|||
"eq_default": eq_default,
|
||||
"order_default": order_default,
|
||||
"kw_only_default": kw_only_default,
|
||||
"frozen_default": frozen_default,
|
||||
"field_specifiers": field_specifiers,
|
||||
"kwargs": kwargs,
|
||||
}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`.
|
Loading…
Reference in New Issue