]> granicus.if.org Git - python/commitdiff
bpo-29974: Improve typing.TYPE_CHECKING example (GH-982)
authorBerker Peksag <berker.peksag@gmail.com>
Wed, 26 Apr 2017 14:25:37 +0000 (17:25 +0300)
committerGitHub <noreply@github.com>
Wed, 26 Apr 2017 14:25:37 +0000 (17:25 +0300)
* Fix PEP 8 (SomeType instead of some_type)
* Add a function parameter annotation
* Explain, using wording from PEP 484 and PEP 526,
  why one annotation is in quotes and another is not.

Suggested by Ivan Levkevskyi.

(cherry picked from commit 87c07fe9d908d0a2143fcc8369255c6ff3241503)

Doc/library/typing.rst

index 2cfc37f695ef2d438ed62a56025d31646e1a2014..1780739ad1dd438fa7eefa6b7cf37057037df77e 100644 (file)
@@ -1041,5 +1041,10 @@ The module defines the following classes, functions and decorators:
       if TYPE_CHECKING:
           import expensive_mod
 
-      def fun():
-          local_var: expensive_mod.some_type = other_fun()
+      def fun(arg: 'expensive_mod.SomeType') -> None:
+          local_var: expensive_mod.AnotherType = other_fun()
+
+   Note that the first type annotation must be enclosed in quotes, making it a
+   "forward reference", to hide the ``expensive_mod`` reference from the
+   interpreter runtime.  Type annotations for local variables are not
+   evaluated, so the second annotation does not need to be enclosed in quotes.