Go to file
Daniël van Noord 2500086376
Add typing with PyAnnotate to ./tests (#4950)
* Add mypy_extensions to requirement for ``NoReturn``

Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
2021-09-04 18:52:55 +02:00
.github Specifies that the pip freeze command should be run and its output pa… (#4928) 2021-08-30 08:02:06 +02:00
doc Refactor various typing related issues (#4940) 2021-09-03 13:47:23 +02:00
elisp fix emacs pylint error when running with tramp (#4333) 2021-04-11 21:31:32 +02:00
examples Remove the python3 porting mode from the codebase 2021-09-01 08:27:04 +02:00
pylint Add typing with PyAnnotate to ./tests (#4950) 2021-09-04 18:52:55 +02:00
script Add `Consider-using-f-string` checker (#4796) 2021-08-30 07:57:05 +02:00
tests Add typing with PyAnnotate to ./tests (#4950) 2021-09-04 18:52:55 +02:00
.copyrite_aliases Upgrade the copyrite alias with Mark Bryne 2021-06-29 21:13:47 +02:00
.coveragerc Add exclude_lines coverage (#4566) 2021-06-12 19:53:03 +02:00
.flake8 More explicit comment in flake8 configuration 2021-04-09 20:15:43 +02:00
.gitignore Remove outdated debian files 2021-04-04 22:46:59 +02:00
.pre-commit-config.yaml [pre-commit.ci] pre-commit autoupdate (#4934) 2021-08-30 22:24:29 +02:00
.pre-commit-hooks.yaml Add prettier to the pre-commit configuration 2021-04-07 22:02:01 +02:00
.readthedocs.yaml Fail on warning for read the doc 2021-08-31 09:03:19 +02:00
ChangeLog Fix false positive `superfluous-parens` for tuples 2021-09-01 10:00:30 +02:00
CONTRIBUTORS.txt Upgrade ignored-parents help description (#4926) 2021-08-28 20:12:38 +02:00
Dockerfile
LICENSE Rename copying to license and upgrade the setup.cfg (#4338) 2021-04-11 15:29:34 +02:00
MANIFEST.in Remove appveyor.yml replaced by Github actions 2021-06-16 07:30:59 +02:00
pylintrc Add consider-using-assignment-expr to CodeStyleChecker (#4876) 2021-08-30 08:33:54 +02:00
README.rst Update links to use main 2021-06-30 23:31:30 +02:00
requirements_test_min.txt Add typing with PyAnnotate to ./tests (#4950) 2021-09-04 18:52:55 +02:00
requirements_test_pre_commit.txt Bump black from 21.7b0 to 21.8b0 (#4930) 2021-08-30 15:17:08 +02:00
requirements_test.txt Update pre-commit requirement from ~=2.13 to ~=2.14 2021-08-09 15:44:38 +02:00
setup.cfg Refactor various typing related issues (#4940) 2021-09-03 13:47:23 +02:00
setup.py Migration from setuptools_scm to tbump 2021-06-17 13:24:47 +02:00
tbump.toml Move back to a dev version following 2.10.2 release 2021-08-21 19:28:13 +02:00
tox.ini Update pre-commit requirement from ~=2.12 to ~=2.13 (#4495) 2021-05-24 12:58:13 +02:00

README for Pylint - https://pylint.pycqa.org/
=============================================

.. image:: https://github.com/PyCQA/pylint/actions/workflows/ci.yaml/badge.svg?branch=main
    :target: https://github.com/PyCQA/pylint/actions

.. image:: https://coveralls.io/repos/github/PyCQA/pylint/badge.svg?branch=main
    :target: https://coveralls.io/github/PyCQA/pylint?branch=main


.. image:: https://img.shields.io/pypi/v/pylint.svg
    :alt: Pypi Package version
    :target: https://pypi.python.org/pypi/pylint

.. image:: https://readthedocs.org/projects/pylint/badge/?version=latest
    :target: https://pylint.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/ambv/black

.. image:: https://results.pre-commit.ci/badge/github/PyCQA/pylint/main.svg
   :target: https://results.pre-commit.ci/latest/github/PyCQA/pylint/main
   :alt: pre-commit.ci status

.. |tideliftlogo| image:: https://raw.githubusercontent.com/PyCQA/pylint/main/doc/media/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White.png
   :width: 75
   :height: 60
   :alt: Tidelift

.. list-table::
   :widths: 10 100

   * - |tideliftlogo|
     - Professional support for pylint is available as part of the `Tidelift
       Subscription`_.  Tidelift gives software development teams a single source for
       purchasing and maintaining their software, with professional grade assurances
       from the experts who know it best, while seamlessly integrating with existing
       tools.

.. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-pylint?utm_source=pypi-pylint&utm_medium=referral&utm_campaign=readme


======
Pylint
======

**It's not just a linter that annoys you!**

Pylint is a Python static code analysis tool which looks for programming errors,
helps enforcing a coding standard, sniffs for code smells and offers simple refactoring
suggestions.

It's highly configurable, having special pragmas to control its errors and warnings
from within your code, as well as from an extensive configuration file.
It is also possible to write your own plugins for adding your own checks or for
extending pylint in one way or another.

It's a free software distributed under the GNU General Public Licence unless
otherwise specified.

Development is hosted on GitHub: https://github.com/PyCQA/pylint/

You can use the code-quality@python.org mailing list to discuss about
Pylint. Subscribe at https://mail.python.org/mailman/listinfo/code-quality/
or read the archives at https://mail.python.org/pipermail/code-quality/

Pull requests are amazing and most welcome.

Install
-------

Pylint can be simply installed by running::

    pip install pylint

If you are using Python 3.6+, upgrade to get full support for your version::

    pip install pylint --upgrade

If you want to install from a source distribution, extract the tarball and run
the following command ::

    python setup.py install


Do make sure to do the same for astroid, which is used internally by pylint.

For debian and rpm packages, use your usual tools according to your Linux distribution.

More information about installation and available distribution format
can be found here_.

Documentation
-------------

The documentation lives at https://pylint.pycqa.org/.

Pylint is shipped with following additional commands:

* pyreverse: an UML diagram generator
* symilar: an independent similarities checker
* epylint: Emacs and Flymake compatible Pylint


Testing
-------

We use tox_ and pytest-benchmark_ for running the test suite. You should be able to install it with::

    pip install tox pytest pytest-benchmark


To run the test suite for a particular Python version, you can do::

    tox -e py37


To run individual tests with ``tox``, you can do::

    tox -e py37 -- -k name_of_the_test


We use pytest_ for testing ``pylint``, which you can use without using ``tox`` for a faster development cycle.

If you want to run tests on a specific portion of the code with pytest_, (pytest-cov_) and your local python version::

    # ( pip install pytest-cov )
    # Everything:
    python3 -m pytest tests/
    # Everything in tests/message with coverage for the relevant code:
    python3 -m pytest tests/message/ --cov=pylint.message
    coverage html
    # Only the functional test "missing_kwoa_py3":
    python3 -m pytest "tests/test_functional.py::test_functional[missing_kwoa_py3]"


Do not forget to clone astroid_ and install the last version::


    git clone https://github.com/PyCQA/astroid.git

    # From source
    python3 astroid/setup.py build sdist
    pip3 install astroid/dist/astroid*.tar.gz

    # Using an editable installation
    cd astroid
    python3 -m pip install -e .


For more detailed information, check the documentation.

.. _here: https://pylint.pycqa.org/en/latest/user_guide/installation.html
.. _tox: https://tox.readthedocs.io/en/latest/
.. _pytest: https://docs.pytest.org/en/latest/
.. _pytest-benchmark: https://pytest-benchmark.readthedocs.io/en/latest/index.html
.. _pytest-cov: https://pypi.org/project/pytest-cov/
.. _astroid: https://github.com/PyCQA/astroid

License
-------

pylint is, with a few exceptions listed below, `GPLv2 <https://github.com/PyCQA/pylint/blob/main/LICENSE>`_.

The icon files are licensed under the `CC BY-SA 4.0 <https://creativecommons.org/licenses/by-sa/4.0/>`_ license:

- `doc/logo.png <https://raw.githubusercontent.com/PyCQA/pylint/main/doc/logo.png>`_
- `doc/logo.svg <https://raw.githubusercontent.com/PyCQA/pylint/main/doc/logo.svg>`_