mirror of
https://github.com/python/cpython.git
synced 2025-07-14 14:55:17 +00:00
gh-113255: Clarify docs for typing.reveal_type
(#113286)
Co-authored-by: AlexWaygood <alex.waygood@gmail.com>
This commit is contained in:
parent
de8a4e52a5
commit
11ee912327
2 changed files with 15 additions and 16 deletions
|
@ -2604,10 +2604,10 @@ Functions and decorators
|
||||||
|
|
||||||
.. function:: reveal_type(obj, /)
|
.. function:: reveal_type(obj, /)
|
||||||
|
|
||||||
Reveal the inferred static type of an expression.
|
Ask a static type checker to reveal the inferred type of an expression.
|
||||||
|
|
||||||
When a static type checker encounters a call to this function,
|
When a static type checker encounters a call to this function,
|
||||||
it emits a diagnostic with the type of the argument. For example::
|
it emits a diagnostic with the inferred type of the argument. For example::
|
||||||
|
|
||||||
x: int = 1
|
x: int = 1
|
||||||
reveal_type(x) # Revealed type is "builtins.int"
|
reveal_type(x) # Revealed type is "builtins.int"
|
||||||
|
@ -2615,22 +2615,21 @@ Functions and decorators
|
||||||
This can be useful when you want to debug how your type checker
|
This can be useful when you want to debug how your type checker
|
||||||
handles a particular piece of code.
|
handles a particular piece of code.
|
||||||
|
|
||||||
The function returns its argument unchanged, which allows using
|
At runtime, this function prints the runtime type of its argument to
|
||||||
it within an expression::
|
:data:`sys.stderr` and returns the argument unchanged (allowing the call to
|
||||||
|
be used within an expression)::
|
||||||
x = reveal_type(1) # Revealed type is "builtins.int"
|
|
||||||
|
|
||||||
Most type checkers support ``reveal_type()`` anywhere, even if the
|
|
||||||
name is not imported from ``typing``. Importing the name from
|
|
||||||
``typing`` allows your code to run without runtime errors and
|
|
||||||
communicates intent more clearly.
|
|
||||||
|
|
||||||
At runtime, this function prints the runtime type of its argument to stderr
|
|
||||||
and returns it unchanged::
|
|
||||||
|
|
||||||
x = reveal_type(1) # prints "Runtime type is int"
|
x = reveal_type(1) # prints "Runtime type is int"
|
||||||
print(x) # prints "1"
|
print(x) # prints "1"
|
||||||
|
|
||||||
|
Note that the runtime type may be different from (more or less specific
|
||||||
|
than) the type statically inferred by a type checker.
|
||||||
|
|
||||||
|
Most type checkers support ``reveal_type()`` anywhere, even if the
|
||||||
|
name is not imported from ``typing``. Importing the name from
|
||||||
|
``typing``, however, allows your code to run without runtime errors and
|
||||||
|
communicates intent more clearly.
|
||||||
|
|
||||||
.. versionadded:: 3.11
|
.. versionadded:: 3.11
|
||||||
|
|
||||||
.. decorator:: dataclass_transform(*, eq_default=True, order_default=False, \
|
.. decorator:: dataclass_transform(*, eq_default=True, order_default=False, \
|
||||||
|
|
|
@ -3301,7 +3301,7 @@ class TextIO(IO[str]):
|
||||||
|
|
||||||
|
|
||||||
def reveal_type[T](obj: T, /) -> T:
|
def reveal_type[T](obj: T, /) -> T:
|
||||||
"""Reveal the inferred type of a variable.
|
"""Ask a static type checker to reveal the inferred type of an expression.
|
||||||
|
|
||||||
When a static type checker encounters a call to ``reveal_type()``,
|
When a static type checker encounters a call to ``reveal_type()``,
|
||||||
it will emit the inferred type of the argument::
|
it will emit the inferred type of the argument::
|
||||||
|
@ -3313,7 +3313,7 @@ def reveal_type[T](obj: T, /) -> T:
|
||||||
will produce output similar to 'Revealed type is "builtins.int"'.
|
will produce output similar to 'Revealed type is "builtins.int"'.
|
||||||
|
|
||||||
At runtime, the function prints the runtime type of the
|
At runtime, the function prints the runtime type of the
|
||||||
argument and returns it unchanged.
|
argument and returns the argument unchanged.
|
||||||
"""
|
"""
|
||||||
print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr)
|
print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr)
|
||||||
return obj
|
return obj
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue