Skip to content

Commit

Permalink
Add docs for decorated object and field specifier params (pythonGH-94354
Browse files Browse the repository at this point in the history
)
  • Loading branch information
debonte authored and gvanrossum committed Jun 30, 2022
1 parent 98082d0 commit 0282cf9
Showing 1 changed file with 35 additions and 1 deletion.
36 changes: 35 additions & 1 deletion Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand Down Expand Up @@ -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.
Expand All @@ -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.
Expand Down

0 comments on commit 0282cf9

Please sign in to comment.