From 99fdd782007db86f20aeb302b2ceaf79ce1ae2ba Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Tue, 27 Apr 2021 23:55:08 +0800 Subject: bpo-43766: Fix TypeGuard docs (#25660) --- Doc/library/typing.rst | 11 +++-------- Doc/tools/susp-ignored.csv | 4 ++++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index cb9ba45..8b1ce34 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -974,10 +974,10 @@ These can be used as types in annotations using ``[]``, each having a unique syn def func1(val: List[object]): if is_str_list(val): - # Type of ``val`` is narrowed to List[str] + # Type of ``val`` is narrowed to ``List[str]``. print(" ".join(val)) else: - # Type of ``val`` remains as List[object] + # Type of ``val`` remains as ``List[object]``. print("Not a list of strings!") If ``is_str_list`` is a class or instance method, then the type in @@ -994,12 +994,7 @@ These can be used as types in annotations using ``[]``, each having a unique syn wider form. The main reason is to allow for things like narrowing ``List[object]`` to ``List[str]`` even though the latter is not a subtype of the former, since ``List`` is invariant. - The responsibility of - writing type-safe type guards is left to the user. Even if - the type guard function passes type checks, it may still fail at runtime. - The type guard function may perform erroneous checks and return wrong - booleans. Consequently, the type it promises in ``TypeGuard[TypeB]`` may - not hold. + The responsibility of writing type-safe type guards is left to the user. ``TypeGuard`` also works with type variables. For more information, see :pep:`647` (User-Defined Type Guards). diff --git a/Doc/tools/susp-ignored.csv b/Doc/tools/susp-ignored.csv index b9e1067..5a2d85d 100644 --- a/Doc/tools/susp-ignored.csv +++ b/Doc/tools/susp-ignored.csv @@ -370,3 +370,7 @@ library/importlib.metadata,,:main,"EntryPoint(name='wheel', value='wheel.cli:mai library/importlib.metadata,,`,loading the metadata for packages for the indicated ``context``. library/re,,`,"`" using/configure,84,:db2,=db1:db2:... +library/typing,1004,`,# Type of ``val`` is narrowed to ``str`` +library/typing,1004,`,"# Else, type of ``val`` is narrowed to ``float``." +library/typing,1004,`,# Type of ``val`` is narrowed to ``List[str]``. +library/typing,1004,`,# Type of ``val`` remains as ``List[object]``. -- cgit v0.12