I wouldn't say that the type checker is guessing your intent. It's still verifying full type consistency of the function and its callers. I presume that you rely on type inference in other places within your code. Or do you provide annotations for every variable? You're correct that any time you rely on type inference (and this is true for variables as well), you may find there are differences between type checkers. I didn't realize that mypy never inferred return types for functions. If that's the case, then it would be a bigger investment to add this capability to mypy. My team maintains a Python code base with about a quarter million lines of code, and most of it uses the strictest type checking modes in pyright, which means that full type consistency is validated. We tend to annotate function return types only in cases where type inference is insufficient, probably about a quarter of the functions or methods in the code base. -- Eric Traut Contributor to Pyright & Pylance Microsoft Corp