-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
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
Implicit re-exports should not be disabled for installed PEP 561 packages #8754
Comments
This seems to be caused by As a workaround, you can run mypy with |
Note that #9237 should improve the error message here |
This is required until python/mypy#8754 is fixed.
* test: add mypy and required types to dev dependencies * test: add mypy pre-commit hook * fix: address mypy violations * test: patch random.choice imported in BuildRange * fix: add py.typed per pep-561 * test: enable mypy --strict * fix: apply mypy strict fixes * feat: update fuzzfetch to 1.3.3 for improved type hints * fix: disable mypy implicit-reexport checking This is required until python/mypy#8754 is fixed. * fix: additional mypy fixes * test: minor pre-commit config changes * fix: catch StopIteration on build_iterator * test: merge duplicate local repo definitions
How come @JukkaL? I think implicit re-export should be an opt-in, not always-on feature. I could imagine py.typed file containing some flag to enable/disable this. |
This contradicts what (I thought) we had agreed to in the typing-sig discussion on this topic. If a package claims to be py.typed, then it needs to follow typing rules and be explicit about what symbols are exported from each submodule. Pyright assumes that py.typed packages never use implicit re-exports. Here is the guidance we have been providing to package authors, and pyright's implementation is consistent with this guidance. I would encourage mypy to default to the same behavior to provide consistency for package authors. |
It looks like MyPy and Pyright currently require imports like these to be re-exported in order to be used. Doing this raises a lint error for me due to Pyright: ```python import aw_client aw_client.ActivityWatchClient() # "ActivityWatchClient" is not exported from module "aw_client" ``` Ref: https://github.com/microsoft/pyright/blob/main/docs/typed-libraries.md#library-interface Ref: microsoft/pyright#3409 Ref: python/mypy#8754 (comment)
It looks like MyPy and Pyright currently require imports like these to be re-exported in order to be used. Doing this raises a lint error for me due to Pyright: ```python import aw_client aw_client.ActivityWatchClient() # "ActivityWatchClient" is not exported from module "aw_client" ``` Ref: https://github.com/microsoft/pyright/blob/main/docs/typed-libraries.md#library-interface Ref: microsoft/pyright#3409 Ref: python/mypy#8754 (comment)
With:
the following code:
produces the following output:
Note that each error message suggests an alternative that the other error message insists does not exist.
Tenacity only just added the bare minimum of type hints (jd/tenacity#221), so I don't know if there's some conflict there, but even if that's the case, this seems like a bug in mypy.
Possibly related mypy issues: #8220, #8210, #7125, #7029, #6551, #4930
The text was updated successfully, but these errors were encountered: