Skip to content

Commit 577dd99

Browse files
JukkaLgvanrossum
authored andcommitted
Add mypy roadmap (#3460)
1 parent 443c479 commit 577dd99

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

ROADMAP.md

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Mypy Roadmap
2+
3+
The goal of the roadmap is to document areas the mypy core team is
4+
planning to work on in the future or is currently working on. PRs
5+
targeting these areas are very welcome, but please check first with a
6+
core team member that nobody else is working on the same thing.
7+
8+
**Note:** This doesn’t include everything that the core team will work
9+
on, and everything is subject to change. Near-term plans are likely
10+
more accurate.
11+
12+
## April-June 2017
13+
14+
- Add more comprehensive testing for `--incremental` and `--quick`
15+
modes to improve reliability. At least write more unit tests with
16+
focus on areas that have previously had bugs.
17+
([issue](https://github.com/python/mypy/issues/3455))
18+
19+
- Speed up `--quick` mode to better support million+ line codebases
20+
through some of these:
21+
22+
- Make it possible to use remote caching for incremental cache
23+
files. This would speed up a cold run with no local cache data.
24+
We need to update incremental cache to use hashes to determine
25+
whether files have changes to allow
26+
[sharing cache data](https://github.com/python/mypy/issues/3403).
27+
28+
- See if we can speed up deserialization of incremental cache
29+
files. Initial experiments aren’t very promising though so there
30+
might not be any easy wins left.
31+
([issue](https://github.com/python/mypy/issues/3456))
32+
33+
- Improve support for complex signatures such as `open(fn, 'rb')` and
34+
specific complex decorators such as `contextlib.contextmanager`
35+
through type checker plugins/hooks.
36+
([issue](https://github.com/python/mypy/issues/1240))
37+
38+
- Document basic properties of all type operations used within mypy,
39+
including compatibility, proper subtyping, joins and meets.
40+
([issue](https://github.com/python/mypy/issues/3454))
41+
42+
- Make TypedDict an officially supported mypy feature. This makes it
43+
possible to give precise types for dictionaries that represent JSON
44+
objects, such as `{"path": "/dir/fnam.ext", "size": 1234}`.
45+
([issue](https://github.com/python/mypy/issues/3453))
46+
47+
- Make error messages more useful and informative.
48+
([issue](https://github.com/python/mypy/labels/topic-usability))
49+
50+
- Resolve [#2008](https://github.com/python/mypy/issues/2008) (we are
51+
converging on approach 4).
52+
53+
## July-December 2017
54+
55+
- Invest some effort into systematically filling in missing
56+
annotations and stubs in typeshed, with focus on features heavily
57+
used at Dropbox. Better support for ORMs will be a separate
58+
project.
59+
60+
- Improve opt-in warnings about `Any` types to make it easier to keep
61+
code free from unwanted `Any` types. For example, warn about using
62+
`list` (instead of `List[x]`) and calling `open` if we can’t infer a
63+
precise return type, or using types imported from ignored modules
64+
(they are implicitly `Any`).
65+
66+
- Add support for protocols and structural subtyping (PEP 544).
67+
68+
- Switch completely to pytest and remove the custom testing framework.
69+
([issue](https://github.com/python/mypy/issues/1673))
70+
71+
- Make it possible to run mypy as a daemon to avoid reprocessing the
72+
entire program on each run. This will improve performance
73+
significantly. Even when using the incremental mode, processing a
74+
large number of files is not cheap.
75+
76+
- Refactor and simplify specific tricky parts of mypy internals, such
77+
as the [conditional type binder](https://github.com/python/mypy/issues/3457),
78+
[symbol tables](https://github.com/python/mypy/issues/3458) or
79+
the various [semantic analysis passes](https://github.com/python/mypy/issues/3459).
80+
81+
- Implement a general type system plugin architecture. It should be
82+
able to support some typical ORM features at least, such as
83+
metaclasses that add methods with automatically inferred signatures
84+
and complex descriptors such as those used by Django models.
85+
([issue](https://github.com/python/mypy/issues/1240))
86+
87+
- Add support for statically typed
88+
[protobufs](https://developers.google.com/protocol-buffers/).
89+
90+
- Provide much faster, reliable interactive feedback through
91+
fine-grained incremental type checking, built on top the daemon
92+
mode.
93+
94+
- Start work on editor plugins and support for selected IDE features.

0 commit comments

Comments
 (0)