Am 17.06.21 um 10:51 schrieb Sebastian Rittau:
Am 16.06.21 um 20:05 schrieb Guido van Rossum:

If we were to allow this, it'd be harder to give a simple rule for when the argument names can be omitted or not -- for example would we allow this?

f: (int, name: str) -> bool

or this?

f: (count: int, str) -> bool

or even this?

f: (a: int, b, c: str) -> bool

If we allow the shorthand, I believe we should allow either the shorthand or the full syntax, but not to mix both. My current stance is +1 for the full syntax, +0 for also allowing the shorthand, and -1 for special casing underscores. I'm not totally sold on the shorthand, due to the inconsistency and possible confusion with normal Python syntax and the two ways to do things. On the other hand writing `def foo(cb: (int) -> Any) -> None:` is more practical than writing `def foo(cb: (x: int, /) -> Any) -> None: ...`. But I'm not sure the conciseness is worth it.

P.S.: Maybe we should start with only the full syntax and see how that goes. If it turns out that it is too cumbersome in practice, we can always allow the shorthand later.

 - Sebastian