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:
Shantanu 2023-05-01 23:05:25 -07:00 committed by GitHub
parent f0ad456731
commit 82ba6ce303
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View file

@ -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