Reputation: 31898
I have the following line in my header:
import config.logging_settings
This actually changes my Python logging settings, but Pylint thinks it is an unused import. I do not want to remove unused-import
warnings in general, so is it possible to just ignore this one specific line?
I wouldn't mind having a .pylintrc
for this project, so answers changing a configuration file will be accepted.
Otherwise, something like this will also be appreciated:
import config.logging_settings # pylint: disable-this-line-in-some-way
Upvotes: 341
Views: 332529
Reputation: 14881
Message control is documented in the pylint FAQ:
Is it possible to locally disable a particular message?
Yes, this feature has been added in Pylint 0.11. This may be done by adding "# pylint: disable=some-message,another-one" at the desired block level or at the end of the desired line of code.
You can use the message code or the symbolic names.
For example,
def test():
# Disable all the no-member violations in this function
# pylint: disable=no-member
...
# pylint: enable=no-member
apply to a specific line only:
global VAR # pylint: disable=global-statement
or for less verbosity, disable the ONLY following line (pylint 2.10+):
# pylint: disable-next=global-statement
global VAR
Pylint's manual also has further examples.
There is a wiki that documents all pylint messages and their codes.
Upvotes: 506
Reputation: 2586
In addition to the accepted answer:
You can re-enable the error checking adding pylint: enable:SPECIFIC_ERROR
For example, I have this in my code:
import time
import datetime
import os
import sys
# pylint: disable=import-error
import serial
# pylint: enable=import-error
This way you can ignore a single error on a single line without having to disable checking that error in the whole file
Upvotes: 15
Reputation: 2279
Checkout the files in https://github.com/PyCQA/pylint/tree/master/pylint/checkers. I haven't found a better way to obtain the error name from a message than either Ctrl + F-ing those files or using the GitHub search feature:
If the message is "No name ... in module ...", use the search:
No name %r in module %r repo:PyCQA/pylint/tree/master path:/pylint/checkers
Or, to get fewer results:
"No name %r in module %r" repo:PyCQA/pylint/tree/master path:/pylint/checkers
GitHub will show you:
"E0611": (
"No name %r in module %r",
"no-name-in-module",
"Used when a name cannot be found in a module.",
You can then do:
from collections import Sequence # pylint: disable=no-name-in-module
Upvotes: 5
Reputation: 31898
import config.logging_settings # pylint: disable=W0611
That was simple and is specific for that line.
You can and should use the more readable form:
import config.logging_settings # pylint: disable=unused-import
Upvotes: 123
Reputation: 26756
I believe you're looking for...
import config.logging_settings # @UnusedImport
Note the double space before the comment to avoid hitting other formatting warnings.
Also, depending on your IDE (if you're using one), there's probably an option to add the correct ignore rule (e.g., in Eclipse, pressing Ctrl + 1, while the cursor is over the warning, will auto-suggest @UnusedImport
).
Upvotes: 4