-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtodo.txt
37 lines (28 loc) · 1.42 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Implementation todo:
- Get types from type definitions and use these to limit search space
- Result printing for classes
- Multiple successful class instances
- Once we have a set of benchmarkss, make sure performance is acceptable / improve search strategies
- Smarter search: search based on exception types (ie put in mock object, look for "class Dummy has no Meow method")
- Maybe instrument branches to ensure we're hitting all branches
Also handle:
- Side-effects (ie network)
- Infinite loops
- Runaway memory useage
- Var arg & keyword arg signatures
- Recursive data structures: run on `learn` function
Data todo:
- look at techniques in "Measuring Polymorphism in Python Programs" (they analyze 36 python libs)
- grab "top" 10? 3? python repos (maybe ranked by pypi downloads?)
- compute of all python functions in those repos, how many have full mypy annotations?
(ideally some would and some wouldn't)
- reduced down to the ones that do, what percentage can we recover the annotation?
- of the ones that don't, what percentage can we type?
Fancy todo:
- exception based guidance
- transform dynamic checks into guesses about refinement types
- ML to guess types based on text, large python corpeses
- "magic bytes comparison" --> grab all hardcoded values in the ast
- branching coverage maybe?
Don't trust type annotations, maybe have a flag for trust vs not trust type annotation
display what it was, but hten also test it