gh-104050: Argument clinic: enable mypy's --warn-return-any setting#107405
gh-104050: Argument clinic: enable mypy's --warn-return-any setting#107405AlexWaygood merged 4 commits intopython:mainfrom
--warn-return-any setting#107405Conversation
|
Good sleuthing! |
| *, | ||
| filename: str = '-' | ||
| ) -> FunctionType: | ||
| ) -> Any: |
There was a problem hiding this comment.
Should we add a comment as to why Any is the correct annotation here?
There was a problem hiding this comment.
You weren't going to make finally closing that issue easy, were you? ;)
Let me know if a5103be is too verbose...!
There was a problem hiding this comment.
Hmm, actually, now that I look at it again, the comment feels like it duplicates the docstring a little bit... not sure if it's worth it? I'll defer to you on whether it's helpful or not!
There was a problem hiding this comment.
Sorry, you're right. The docstring should be enough!
There was a problem hiding this comment.
Okay -- removed the comment again and tweaked the docstring slightly! How's it look now?
Mypy's
--warn-return-anycheck flags when a function is declared to return a specific type, but mypy can't verify whether it's actually returning that type or not -- it can only infer a vague, unsafeAnytype as the returned type. This can often lead to bugs slipping beneath the radar.In the case of argument clinic, the check only flags a single function. But, turns out that it's a true positive! The function is incorrectly annotated at the moment -- the annotation says that it returns a
FunctionType, but that's not true. The function creates aFunctionTypeinstancefn, and then returns whatever callingfnreturns returns. Therefore, the proper return annotation for this function is-> Any, not-> FunctionType.Closes #104050!