@@ -41,7 +41,13 @@ upstream improvements. the symbol table phase handles nearly all near-term featu
4141
4242## planned features
4343
44- - [ ] language server (fork ty)
44+ - [ ] fork ruff/ty
45+ - essential features:
46+ - ` lsp ` subcommand (with full suite of features from ruff and ty)
47+ - ` format ` (from ruff)
48+ - ` check ` (from ruff)
49+ - ` check ` (from ty) - not sure about the name, maybe ` lint ` and ` check ` or maybe ` typecheck ` ?
50+ - one option would be to produce two binaries: buff and by
4551- [ ] source maps
4652- [ ] build wheels (` by build ` ?)
4753 - ensure that built wheel depends on the correct deps for polyfill (` tomli ` /` typing_extensions ` etc)
@@ -60,7 +66,7 @@ upstream improvements. the symbol table phase handles nearly all near-term featu
6066- [x] PEP 695 generics polyfill: ` class A[T] ` , ` def f[T]() ` , ` type X = ... ` → 3.10-compatible equivalents including TypeVar name renaming
6167- [x] ` typing ` import redirect: names unavailable in stdlib until later versions are redirected to ` typing_extensions `
6268- [x] expression compat rewrites: ` datetime.UTC ` , ` sys.exception() ` , ` math.exp2() ` → 3.10-compatible equivalents
63- - [ ] callable syntax: ` (int) -> int ` -> ` Callable[[int], int] ` / ` [T](int, t: T) -> T ` → a ` Protocol ` definition
69+ - [x ] callable syntax: ` (int) -> int ` -> ` Callable[[int], int] ` / ` [T](int, t: T) -> T ` → a ` Protocol ` definition
6470 ` (int, /, a: str, *args: int, **kwargs: str) -> None `
6571- [x] unpack syntax in type annotations: ` def f(*args: *tuple[int, ...]) ` -> ` def f(*args: Unpack[tuple[int, ...]]) ` #easy
6672- [x] intersection types: ` A & B ` -> ` ty_extensions.Intersection[A, B] ` #easy
@@ -84,6 +90,22 @@ upstream improvements. the symbol table phase handles nearly all near-term featu
8490 print(y)
8591 ))
8692 ```
93+ OR
94+ ``` bython
95+ x(: print(it))
96+ # trailing
97+ x: print(it)
98+ if x: print(it) # error, ambigious, need parens
99+ a = (): print(1)
100+ foo(:
101+ a = 1
102+ a + 1,
103+ :
104+ b = 2
105+ b + 1
106+ )
107+ ```
108+ - [ ] annotations on ` lambda ` : ` lambda (a: int, b: str) -> bool: a + b ` -> ` lambda a, b: a + b ` #easy
87109- [ ] extension functions: (needs design) ` def Foo.bar(): `
88110- [ ] property syntax: (needs design)
89111 ```
@@ -154,6 +176,16 @@ upstream improvements. the symbol table phase handles nearly all near-term featu
154176 - maybe also call expressions
155177- [ ] make ternary expressions bearable: ` if bool() 1 else 2 `
156178- [ ] ` match ` /` try ` as an expression #easy
179+ - [ ] reified type parameters #harder
180+ ``` python
181+ def f[T](x: object ) -> bool :
182+ return isinstance (x, T)
183+ ```
184+ - [ ] generic function calls
185+ ``` python
186+ def f[T](t1: T, t2: T) -> T: ...
187+ f[object ](1 , " a" )
188+ ```
157189
158190### anonymous named tuple:
159191```
0 commit comments