blob: 26f793988ba920d64e1f7df331d4a0d833ba6437 [file] [log] [blame]
.. _faq:
==========================
Frequently Asked Questions
==========================
How do I install Pylint?
------------------------
.. include:: short_text_installation.rst
How do I contribute to Pylint?
------------------------------
.. include:: short_text_contribute.rst
Does Pylint follow a versioning scheme?
----------------------------------------
See :ref:`upgrading pylint in the installation guide <upgrading_pylint>`.
How do I find the name corresponding to a specific command line option?
-----------------------------------------------------------------------
See :ref:`the configuration documentation <all-configurations-options>`.
What is the format of the configuration file?
---------------------------------------------
The configuration file can be an ``ini`` or ``toml`` file. See the :ref:`exhaustive list of possible options <all-options>`.
How to disable a particular message?
------------------------------------
Read :ref:`message-control` for details and examples.
Pylint gave my code a negative rating out of ten. That can't be right!
----------------------------------------------------------------------
Prior to Pylint 2.13.0, the score formula used by default had no lower
bound. The new default score formula is ::
max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10))
If your project contains a configuration file created by an earlier version of
Pylint, you can set ``evaluation`` to the above expression to get the new
behavior. Likewise, since negative values are still technically supported,
``evaluation`` can be set to a version of the above expression that does not
enforce a floor of zero.
How do I avoid getting unused argument warnings for API I do not control?
-------------------------------------------------------------------------
Prefix (ui) the callback's name by `cb_` (callback), as in cb_onclick(...). By
doing so arguments usage won't be checked. Another solution is to
use one of the names defined in the "dummy-variables" configuration
variable for unused argument ("_" and "dummy" by default).
Why are there a bunch of messages disabled by default?
------------------------------------------------------
Either because they are prone to false positives or that they are opinionated enough
to not be included as default messages.
You can see the plugin you need to explicitly :ref:`load in the technical reference
<user_guide/checkers/extensions:optional checkers>`.
Which messages should I disable to avoid duplicates if I use other popular linters ?
------------------------------------------------------------------------------------
pycodestyle_: bad-indentation, bare-except, line-too-long, missing-final-newline, multiple-statements, singleton-comparison, trailing-newlines, trailing-whitespace, unnecessary-negation, unnecessary-semicolon, wrong-import-position
pyflakes_: undefined-variable, unused-import, unused-variable
mccabe_: too-many-branches
pydocstyle_: missing-module-docstring, missing-class-docstring, missing-function-docstring
pep8-naming_: invalid-name, bad-classmethod-argument, bad-mcs-classmethod-argument, no-self-argument
isort_ and flake8-import-order_: wrong-import-order
.. _`pycodestyle`: https://github.com/PyCQA/pycodestyle
.. _`pyflakes`: https://github.com/PyCQA/pyflakes
.. _`mccabe`: https://github.com/PyCQA/mccabe
.. _`pydocstyle`: https://github.com/PyCQA/pydocstyle
.. _`pep8-naming`: https://github.com/PyCQA/pep8-naming
.. _`isort`: https://github.com/pycqa/isort
.. _`flake8-import-order`: https://github.com/PyCQA/flake8-import-order
How do I avoid "access to undefined member" messages in my mixin classes?
-------------------------------------------------------------------------
You should add the ``no-member`` message to your ``ignored-checks-for-mixins`` option
and name your mixin class with a name which ends with "Mixin" or "mixin" (default)
or change the default value by changing the ``mixin-class-rgx`` option.
Where is the persistent data stored to compare between successive runs?
-----------------------------------------------------------------------
Analysis data are stored as a pickle file in a directory which is
localized using the following rules:
* value of the PYLINTHOME environment variable if set
* "pylint" subdirectory of the user's XDG_CACHE_HOME if the environment variable is set, otherwise
- Linux: "~/.cache/pylint"
- macOS: "~/Library/Caches/pylint"
- Windows: "C:\Users\<username>\AppData\Local\pylint"
* ".pylint.d" directory in the current directory