Can I get PyCharm to suppress a particular warning on a single line?
Asked Answered
T

3

81

PyCharm provides some helpful warnings on code style, conventions and logical gotchas. It also provides a notification if I try to commit code with warnings (or errors).

Sometimes I consciously ignore these warnings for particular lines of code (for various reasons, typically to account for implementation details of third-party libraries). I want to suppress the warning, but just for that line (if the warning crops up on a different line where I'm not being deliberate, I want to know about it!)

How can I do that in PyCharm? (Following a universal Python convention strongly preferable.)

Torpid answered 4/10, 2016 at 8:45 Comment(4)
It's nice that there's a way to do it in PyCharm, but since not all of my teammates use PyCharm, I was really hoping for an equivalent to Java's @SuppressWarnings annotation, to indicate 'yeah, this line of code looks bad, but it's okay, I promise'. https://mcmap.net/q/53473/-how-to-disable-python-warnings ← This answer looked hopeful, but I still couldn't get the 'Too broad exception clause' warnings to go away when I'm logging the exceptions.Edna
@Michael Scheper: AFAIK, it is not PyCharm specific suppression but rather pylint suppression. As long as all of you use pylint you should get what you expect.Trumpetweed
@sophros: I know this is a bit off-topic (because the question is specifically about PyCharm), but can you elaborate on your reply? Is there a way to tell pylint to ignore particular warnings for particular lines of code, within the code?Edna
@MichaelScheper: after a thorough check I must admit - I was wrong above - there have to be used separate commands for PyCharm and pylint explicitly. This is all depicted in the answer to the question about both.Trumpetweed
T
63

To suppress PyCharm code inspections for a particular line of code you can use the following construct:

# noinspection INSPECTION_NAME
your_line_of_code_to_suppress

where the name of the inspection (INSPECTION_NAME above) you can take from the list of inspection names (they are pretty descriptive).

To suppress pylint command line messages explicitly you have to use different comments/commands, as described here (pylint error names).

Trumpetweed answered 29/1, 2019 at 14:52 Comment(6)
If I suppress a pylint error then Pycharm will not warn me about that error ever again? Is that what it's for?Durkee
Yes. Suppressed pylint warning is not going to reappear unless you remove the suppression.Trumpetweed
Actually, there is no need to use a dedicated list of available inspections for that matter. For every inspection warning there is a special quick fix right in the editor that inserts such a comment with the proper inspection ID automatically. It can be found as: "Show Context Actions" (Alt+Enter on Windows/Linux) -> some standard action to fix the problem -> submenu -> "Suppress for ..." For instance, Alt+Enter -> Remove statement -> Right arrow -> Suppress for statement will insert a suppressing comment for an unused local variable, etc.Willyt
Thanks to @pylover for the amazing list of PyCharm names (and thanks to post owner for linking to them).Joseph
Is there a way to disable inspection on a specific line of a multi-line statement (for instance, aside this call to lambda function myfunc( some_params, lambda: ..., # noinspection PyTypeChecker more_params) to remove typecheck in parameter where expected type is function and a lambda is passed, while keeping the typecheck on other parameters). It does not seem supported. Anyone knows a way?Ankylosaur
@Matt-Mac-Muffin: I don't think it is possible. But warrants a separate question in my view.Trumpetweed
E
39

Essentially, for the file in which you want to suppress the warning, run it through code inspection, post which PyCharm will give you warnings in that particular file. You can then review the warnings and tell PyCharm to suppress warning for a particular statement.

Code Inspection can be accessed from Code-->Inspect Code menu from where you can select the file that you want to inspect.

Below is an image that shows how to do it for an image, after running code via CodeInspection Code Inspection Output

Link for more details around suppressing warnings: https://www.jetbrains.com/help/pycharm/2016.1/suppressing-inspections.html#1

Earlap answered 4/10, 2016 at 8:47 Comment(0)
H
21

To just suppress the warning in the editor, there's also a lazy suppression option which is to use the comment noqa on the same line, such as:

from application import routes  # noqa

Here's a before and after image using this comment:

Before

Before using the comment

After

After using the comment


Source:

Hippocrates answered 27/3, 2022 at 10:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.