Mark abort
as having type NoReturn
#2020
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In #1995, typing was added to large parts of this project. This will be really useful to me.
One of the problems I have with the latest release is
abort
. PyCharm doesn't know thatabort
aborts. So it will complain about possibly uninitialised variables if I write code like this:This is because
abort
is declared to return typeNone
:def abort(status: t.Union[int, "Response"], *args, **kwargs) -> None:
. This is not the case - I thinkabort
always raises an exception.Instead, what we want to do is change the return type to
t.NoReturn
. This expresses the correct meaning, which is that theabort
function never returns. In turn, this will help PyCharm and other analysers understand code that usesabort
better.Checklist:
(a docs change, so I've skipped some steps)
- [ ] Add tests that demonstrate the correct behavior of the change. Tests should fail without the change.CHANGES.rst
summarizing the change and linking to the issue. - this PR builds on redo type annotations #1995, which doesn't have an entry. Should I add an entry to cover both, or leave it alone?- [ ] Add.. versionchanged::
entries in any relevant code docs.pre-commit
hooks and fix any issues.pytest
andtox
, no tests failed.