@emmatyping @whitequark @glyph @SnoopJ @ancoghlan @mcc More generally, though, that's a case where Callable fails to be covariant on its return type — if a program passes for a given return type, narrowing that return type should always pass as well.
All that is what tells me that mypy acts in practice more as a linter than as a type checker? Perhaps I'm misunderstanding, then?