]> granicus.if.org Git - python/commitdiff
bpo-31564: Update typing documentation (GH-3696) (GH-3715)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 24 Sep 2017 02:46:24 +0000 (19:46 -0700)
committerMariatta <Mariatta@users.noreply.github.com>
Sun, 24 Sep 2017 02:46:24 +0000 (19:46 -0700)
Mention that ``NewType`` can derive from another ``NewType``.
(cherry picked from commit 039b25d8fd21f8d5d9e3cb536402d952cf068dc1)

Doc/library/typing.rst

index 1e48fecdbf78a474fb1f3b93766f9011c69707f6..bd04f731a1238bdb6553bfc54782d0f5db99b5cc 100644 (file)
@@ -111,8 +111,7 @@ More precisely, the expression ``some_value is Derived(some_value)`` is always
 true at runtime.
 
 This also means that it is not possible to create a subtype of ``Derived``
-since it is an identity function at runtime, not an actual type. Similarly, it
-is not possible to create another :func:`NewType` based on a ``Derived`` type::
+since it is an identity function at runtime, not an actual type::
 
    from typing import NewType
 
@@ -121,9 +120,16 @@ is not possible to create another :func:`NewType` based on a ``Derived`` type::
    # Fails at runtime and does not typecheck
    class AdminUserId(UserId): pass
 
-   # Also does not typecheck
+However, it is possible to create a :func:`NewType` based on a 'derived' ``NewType``::
+
+   from typing import NewType
+
+   UserId = NewType('UserId', int)
+
    ProUserId = NewType('ProUserId', UserId)
 
+and typechecking for ``ProUserId`` will work as expected.
+
 See :pep:`484` for more details.
 
 .. note::