diff options
author | Erik De Bonte <erikd@microsoft.com> | 2022-06-28 09:58:35 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-28 09:58:35 (GMT) |
commit | 81ac9ac4921c57c8f31464fed575ea0cfe84df70 (patch) | |
tree | f3376000d8b22b08f202c12c4b6ff9ef49a6131b /Doc/library/typing.rst | |
parent | efdc9d68de84410b468c2dc87b371b4c3d0663ac (diff) | |
download | cpython-81ac9ac4921c57c8f31464fed575ea0cfe84df70.zip cpython-81ac9ac4921c57c8f31464fed575ea0cfe84df70.tar.gz cpython-81ac9ac4921c57c8f31464fed575ea0cfe84df70.tar.bz2 |
Add docs for decorated object and field specifier params (GH-94354)
Diffstat (limited to 'Doc/library/typing.rst')
-rw-r--r-- | Doc/library/typing.rst | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index c7c5536..ddcdc70 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -84,6 +84,8 @@ annotations. These include: *Introducing* :data:`Self` * :pep:`675`: Arbitrary Literal String Type *Introducing* :data:`LiteralString` +* :pep:`681`: Data Class Transforms + *Introducing* the :func:`@dataclass_transform<dataclass_transform>` decorator .. _type-aliases: @@ -2528,7 +2530,17 @@ Functions and decorators For example, type checkers will assume these classes have ``__init__`` methods that accept ``id`` and ``name``. - The arguments to this decorator can be used to customize this behavior: + The decorated class, metaclass, or function may accept the following bool + arguments which type checkers will assume have the same effect as they + would have on the + :func:`@dataclasses.dataclass<dataclasses.dataclass>` decorator: ``init``, + ``eq``, ``order``, ``unsafe_hash``, ``frozen``, ``match_args``, + ``kw_only``, and ``slots``. It must be possible for the value of these + arguments (``True`` or ``False``) to be statically evaluated. + + The arguments to the ``dataclass_transform`` decorator can be used to + customize the default behaviors of the decorated class, metaclass, or + function: * ``eq_default`` indicates whether the ``eq`` parameter is assumed to be ``True`` or ``False`` if it is omitted by the caller. @@ -2541,6 +2553,28 @@ Functions and decorators * Arbitrary other keyword arguments are accepted in order to allow for possible future extensions. + Type checkers recognize the following optional arguments on field + specifiers: + + * ``init`` indicates whether the field should be included in the + synthesized ``__init__`` method. If unspecified, ``init`` defaults to + ``True``. + * ``default`` provides the default value for the field. + * ``default_factory`` provides a runtime callback that returns the + default value for the field. If neither ``default`` nor + ``default_factory`` are specified, the field is assumed to have no + default value and must be provided a value when the class is + instantiated. + * ``factory`` is an alias for ``default_factory``. + * ``kw_only`` indicates whether the field should be marked as + keyword-only. If ``True``, the field will be keyword-only. If + ``False``, it will not be keyword-only. If unspecified, the value of + the ``kw_only`` parameter on the object decorated with + ``dataclass_transform`` will be used, or if that is unspecified, the + value of ``kw_only_default`` on ``dataclass_transform`` will be used. + * ``alias`` provides an alternative name for the field. This alternative + name is used in the synthesized ``__init__`` method. + At runtime, this decorator records its arguments in the ``__dataclass_transform__`` attribute on the decorated object. It has no other runtime effect. |