summaryrefslogtreecommitdiffstats
path: root/Lib/typing.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/typing.py')
-rw-r--r--Lib/typing.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/typing.py b/Lib/typing.py
index dac9c6c..0cf9755 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -130,6 +130,7 @@ __all__ = [
'overload',
'ParamSpecArgs',
'ParamSpecKwargs',
+ 'reveal_type',
'runtime_checkable',
'Text',
'TYPE_CHECKING',
@@ -2675,3 +2676,23 @@ class re(metaclass=_DeprecatedType):
re.__name__ = __name__ + '.re'
sys.modules[re.__name__] = re
+
+
+def reveal_type(obj: T, /) -> T:
+ """Reveal the inferred type of a variable.
+
+ When a static type checker encounters a call to ``reveal_type()``,
+ it will emit the inferred type of the argument::
+
+ x: int = 1
+ reveal_type(x)
+
+ Running a static type checker (e.g., ``mypy``) on this example
+ will produce output similar to 'Revealed type is "builtins.int"'.
+
+ At runtime, the function prints the runtime type of the
+ argument and returns it unchanged.
+
+ """
+ print(f"Runtime type is {type(obj).__name__!r}", file=sys.stderr)
+ return obj