requests.help static typing improvements#7506
Open
jorenham wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Static type-checkers aren't very good at dealing with
try/exceptblocks. Mypy, for example, reported 5 type errors inhelp.pybecause of this.By moving these optional imports into an
if TYPE_CHECKINGblock, static type-checkers will know how to deal with them. Even if these imports aren't found (because they're not installed), they'll be treated asAny, which won't lead to any typing issues (according to the gradual guarantee).This also fixed another mypy error (related to mypy's greedy dict value type inference) by adding an inline annotation.
The final score is -6 mypy errors (0 left in
help.py), and +1.02% type coverage (according topyrefly report) for a grand total of 99.30% type coverage (roughly speaking that's the number of things that are typed / the number of things that can be typed).