> On Nov 7, 2017, at 9:39 AM, Brett Cannon <[email protected]> wrote: > > On Tue, 7 Nov 2017 at 03:34 Paul Moore <[email protected] > <mailto:[email protected]>> wrote: > > Because type annotations are a development-time feature, they should > *not* require a dependency in the final deployment (apart from Python > itself). However, because they are a language syntax feature they are > of necessity written in the application source. And type specification > of anything more complex than basic types (for example, List[int]) > requires classes defined in the typing module. Therefore, typing must > be in the stdlib so that use of type annotations by the developer > doesn't impose a runtime dependency on the end user. > > That's not necessarily true if Lukasz's PEP lands and annotations become > strings. The dependency would only need to be installed if someone chose to > introspect the annotations and then "instantiate" them into actual objects. > And that only comes up if someone does it from outside by a 3rd-party, who > would then need to install the type annotation dependencies themselves.
PEP 563 is the first step there but it's not enough. For this idea to work,
`typing.TYPE_CHECKING` would need to be moved to the Python runtime, so that
you can do
if TYPE_CHECKING:
from typing import *
More importantly, you would put type aliases, type variables and new-types in
this `if` block, too.
But even if all this is true, there's still two remaining features that require
runtime availability:
1. `cast()`; and
2. creating generic classes by subclassing `Generic[T]` or any of its
subclasses. And soon enough, Protocols.
I hope I'm not forgetting any other cases. For `cast()` I have an idea how to
move it to a variable annotation. For generic classes, there's no magic, you
need `typing` at runtime. Fortunately, that latter case is (I hope?) relatively
unlikely.
All the above is summarized here:
https://github.com/python/typing/issues/496
<https://github.com/python/typing/issues/496>
- Ł
signature.asc
Description: Message signed with OpenPGP
_______________________________________________ Python-Dev mailing list [email protected] https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
