-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
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
Cannot silence "unused 'type: ignore'" in version specific code #8823
Comments
As a workaround for this issue, you can use |
It does not help in my particular issue. The problem is that MyPy skips some parts of the code and complains about unused |
Agree that there is an issue, but I think it can be worked around using cast, since that lets you remove the type ignore altogether:
Looking at the issue on typeshed, you'd need to do something like |
sys.stdout.reconfigure(errors="replace") and I do not know how to silence an error in this case. |
Oh, and thank you for your suggestion. I tried similar workaround, but made an error in the code, so it did not work. Now I see my mistake and fixed it thank to you. |
I think we need a way to silence unused type ignore messages for individual type ignores short of disabling the warning. |
I'm running into a by-platform equivalent of this. If I try to import So, depending on which platform you run That might be a different ticket, but it seems similar enough that maybe mentioning it in this one will do…? |
Note the |
@wsanchez That is different. Are you using the right syntax for the platform check? Please ask on Gitter. |
@gvanrossum Oh, OK, I didn't realize that Mypy could be told to do platform-specific things. I'll read more. twisted/twisted#1416 (comment) describes the issue in a bit more detail. |
`ignore` in unused branches triggers python/mypy#8823 so use `setattr()` to avoid python/mypy#2427.
`ignore` in unused branches triggers python/mypy#8823 so use `setattr()` to avoid python/mypy#2427.
|
If you read this issue, you'll notice that there's a workaround posted. I also looked at your code, and you could just fix it using https://mypy.readthedocs.io/en/stable/common_issues.html#python-version-and-system-platform-checks (so it's not really the problem discussed in this issue either) |
I'm running into an issue writing stubs for if sys.version_info >= (3, 7):
class OrderedDict(Dict[_KT, _VT]): ...
else:
class OrderedDict(Dict[_KT, _VT]):
def keys(self) -> List[_KT]: ... # type: ignore[override] Without that ignore, type checking for 3.6 fails. With the ignore, type checking fails in 3.7+. |
* issue fix by limiting only bringing records till s8 * updated import by isort * ignore needing to add local package to requirements.txt * staticaly type the code * adding autopep8 * allow autopep8 goinside directory * formatting/comment error for setup.cfg file * add flake8-isort in requirements.txt * use isort recursive * mypy bug --no-warn-no-return github.com/python/mypy/issues/8823
I've been struggling with this issue with try/except imports. I thought I had tried everything already, but this worked! |
I know "me too!" comments aren't especially helpful, but here's an example where the suggested workaround (using import sys
from typing import cast, Callable
if sys.version_info >= (3, 8):
from importlib.metadata import version
else:
from importlib_metadata import version
cast(Callable[[str], str], version)
__version__ = version("my-lib")
|
Try |
Related: python/mypy#12664 Related: python/mypy#8823
…eal error code (#15164) Fixes #8823 The issue above makes `--warn-unused-ignores` problematic for cross-platform/cross-version code (btw it is one of the most upvoted bugs). Due to how the unused ignore errors are generated, it is hard to not generate them in unreachable code without having precise span information for blocks. So my fix will not work on Python 3.7, where end lines are not available, but taking into account that 3.7 reaches end of life in less than 2 month, it is not worth the effort. Also this PR makes `unused-ignore` work much more like a regular error code, so it can be used with `--enable-error-code`/`--disable-error-code` (including per-file) etc. More importantly this will also allow to use `--warn-unused-ignores` in code that uses e.g. `try/except` imports (instead of `if` version checks) with the help of `# type: ignore[import,unused-ignore]` (which btw will also help on Python 3.7). Note also currently line numbers for `Block`s are actually wrong (and hence few TODOs in `fastparse.py`). So in this PR I set them all correctly and update a lot of parse tests (I went through all test updates and verified they are reasonable). --------- Co-authored-by: Jukka Lehtosalo <jukka.lehtosalo@iki.fi>
Thanks to ilevkivskyi, in the next release of mypy |
… langchain (#460) The issue is that our type ignores are required on the old version of LangChain, but not required on the new version of LangChain. If we include the type ignore, the new version of LangChain complains about an usused type ignore. Found the solution [here](python/mypy#8823 (comment)).
I need to execute some code only on specific Python version (it is the use of
TextIOWrapper.reconfigure()
added in Python 3.7, but in following example I will use more abstract code).Since MyPy on Python 3.7 raises an error for it (actually because of the error in
typeshed
) I need to add# type: ignore
:But now I will get an error
unused 'type: ignore' comment
when run MyPy withwarn_unused_ignores = True
on Python 3.6.So I cannot use variant 1, because it is an error on 3.7, and cannot use variant 2, because it is an error on 3.6.
MyPy should not complain about unused 'type: ignore' comment in the code which it does not analyze.
MyPy version is 0.770.
The text was updated successfully, but these errors were encountered: