-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Remove the Anys from mypy/config_parser.py #19637
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
This comment has been minimized.
This comment has been minimized.
this actually is starting to collide with the other places Any is used, which is getting annoying, but you have to commit incremental progress at some time...
for more information, see https://pre-commit.ci
also, trivial copyediting
This comment has been minimized.
This comment has been minimized.
this actually did not matter for the code, I guess. The only reason to change it was because mypy was complaining because mypy doesn't allow redefinition that way (at least with these settings). But instead of beating mypy into doing what I want, I just made the types follow the error message here.
for more information, see https://pre-commit.ci
This attempts to get at mypy/config_parser.py:620: error: Incompatible types in assignment (expression has type tuple[int, int], variable has type Optional[bool]) [assignment] however, I think this leaves v undefined in the else path, which is bad
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Oh, that's funny. Now the only failing tests are the tests we put in to check the values the other way... Makes sense, I suppose. (Although... it only fails some of the time?!) |
mypy/config_parser.py
Outdated
return filename.lower().endswith(".toml") | ||
|
||
|
||
def destructure_overrides(toml_data: dict[str, Any]) -> dict[str, Any]: | ||
def destructure_overrides(toml_data: _TomlDictDict) -> _ParserHelper: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def destructure_overrides(toml_data: _TomlDictDict) -> _ParserHelper: | |
def destructure_overrides(toml_data: _TomlDictDict) -> _TomlDictDict: |
for more information, see https://pre-commit.ci
According to mypy_primer, this change doesn't affect type check results on a corpus of open source code. ✅ |
This pull request removes the Anys (and the ignore) from mypy/config_parser.py, fixing #19566. This is a refactor, but it also ensures that the class of bugs (unfriendly error messages) triggered by runtime type errors do not occur here further. Sort of. Somewhat. Actually there are still a number of implicit Anys in the code that sneak in through the stubs from typeshed, sad to say.
Even adding this block at the top doesn't stop them:
#mypy: disallow-any-expr, disallow_any_unimported, disallow_any_decorated, disallow_any_explicit, disallow_any_generics, disallow_subclassing_any
But, anyway, it prevents... some future bugs.