mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Improve assert_type phrasing (#104081)
I'd like to make the fact that this does nothing at runtime really obvious, since I suspect this is unintuitive for users who are unfamiliar with static type checking. I thought of this because of https://discuss.python.org/t/add-arg-check-type-to-types/26384 wherein I'm skeptical that the user really did want `assert_type`.
This commit is contained in:
parent
f0ad456731
commit
82ba6ce303
2 changed files with 8 additions and 6 deletions
|
@ -2484,15 +2484,16 @@ Functions and decorators
|
|||
|
||||
Ask a static type checker to confirm that *val* has an inferred type of *typ*.
|
||||
|
||||
When the type checker encounters a call to ``assert_type()``, it
|
||||
At runtime this does nothing: it returns the first argument unchanged with no
|
||||
checks or side effects, no matter the actual type of the argument.
|
||||
|
||||
When a static type checker encounters a call to ``assert_type()``, it
|
||||
emits an error if the value is not of the specified type::
|
||||
|
||||
def greet(name: str) -> None:
|
||||
assert_type(name, str) # OK, inferred type of `name` is `str`
|
||||
assert_type(name, int) # type checker error
|
||||
|
||||
At runtime this returns the first argument unchanged with no side effects.
|
||||
|
||||
This function is useful for ensuring the type checker's understanding of a
|
||||
script is in line with the developer's intentions::
|
||||
|
||||
|
|
|
@ -2319,15 +2319,16 @@ def cast(typ, val):
|
|||
def assert_type(val, typ, /):
|
||||
"""Ask a static type checker to confirm that the value is of the given type.
|
||||
|
||||
When the type checker encounters a call to assert_type(), it
|
||||
At runtime this does nothing: it returns the first argument unchanged with no
|
||||
checks or side effects, no matter the actual type of the argument.
|
||||
|
||||
When a static type checker encounters a call to assert_type(), it
|
||||
emits an error if the value is not of the specified type::
|
||||
|
||||
def greet(name: str) -> None:
|
||||
assert_type(name, str) # ok
|
||||
assert_type(name, int) # type checker error
|
||||
|
||||
At runtime this returns the first argument unchanged and otherwise
|
||||
does nothing.
|
||||
"""
|
||||
return val
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue