Metadata-Version: 2.1
Name: multilint
Version: 4.1.0
Summary: Run multiple python linters easily
Home-page: https://github.com/adamchainz/multilint
Author: Adam Johnson
Author-email: me@adamj.eu
License: ISC license
Project-URL: Changelog, https://github.com/adamchainz/multilint/blob/master/HISTORY.rst
Description: =========
        multilint
        =========
        
        .. image:: https://img.shields.io/pypi/v/multilint.svg
                :target: https://pypi.python.org/pypi/multilint
        
        .. image:: https://img.shields.io/travis/adamchainz/multilint.svg
                :target: https://travis-ci.org/adamchainz/multilint
        
        .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
            :target: https://github.com/python/black
        
        Run multiple python linters easily.
        
        Installation and Usage
        ----------------------
        
        Install with **pip**:
        
        .. code-block:: sh
        
            pip install multilint
        
        Run with:
        
        .. code-block:: sh
        
            multilint
        
        Python 3.5-3.8  supported.
        
        How It Works
        ------------
        
        I like to keep my projects tidy with a standard set of linters. Running them
        all turned out to be easier with a wrapper script, which I ended up
        copy-pasting between them all. This project stops me needing to copy/paste,
        centralizing running all these neat tools.
        
        In order, it will check if these linters are installed, and if so, run them:
        
        * `Black <https://pypi.org/project/black/>`_, to autoformat code
        * `Flake8 <https://pypi.org/project/flake8/>`_, to check code quality
        * `Isort <https://pypi.org/project/isort/>`_, in 'diff' mode to show where imports aren't sorted
        * `Modernize <https://pypi.org/project/modernize/>`_, in 'diff' mode to show where python 2/3 compatibility with
          ``six`` is missing
        
        If any of them fail, ``multilint`` stops and dies with a non-zero exit code.
        Otherwise it succeeds!
        
        You need to configure the paths that will be linted (by default, only
        ``setup.py`` is linted). Put a section in your ``setup.cfg`` like:
        
        .. code-block:: ini
        
            [tool:multilint]
            paths = my_package
                    tests
                    setup.py
        
        You can also pass the paths as arguments to ``multilint``, which will override
        the ``settings``, like:
        
        .. code-block:: sh
        
            multilint path/my_file.py path/folder1
        
        **Note:** previously ``multilint`` supported running ``setup.py check`` if you
        passed a ``setup.py`` file. This was removed as the command is deprecated. You
        should instead use ``twine check`` as per the `python packaging documentation
        <https://packaging.python.org/guides/making-a-pypi-friendly-readme#validating-restructuredtext-markup>`__.
        
        Usage With ``tox``
        ------------------
        
        I normally run my tests with ``tox``. An example ``tox.ini`` to use
        ``multilint`` to run your tests on Python 3.5-3.8 and do your linting on Python
        3.8 would look like:
        
        .. code-block:: ini
        
            [tox]
            envlist =
                py{35,36,37,38},
                py38-codestyle
        
            [testenv]
            deps = -rrequirements.txt
            commands = pytest
        
            [testenv:py38-codestyle]
            commands = multilint
        
        Then just put ``multilint``, plus the linters you want it to run (e.g.
        ``flake8``) in your ``requirements.txt``.
        
        =======
        History
        =======
        
        4.1.0 (2019-11-15)
        ------------------
        
        .. Modify the below with new release notes
        
        * Support Python 3.8.
        * Converted setuptools metadata to configuration file. This meant removing the
          ``__version__`` attribute from the package. If you want to inspect the
          installed version, use
          ``importlib.metadata.version("multilint")``
          (`docs <https://docs.python.org/3.8/library/importlib.metadata.html#distribution-versions>`__ /
          `backport <https://pypi.org/project/importlib-metadata/>`__).
        
        4.0.0 (2019-08-11)
        ------------------
        
        * Drop ``setup.py check`` support since ``twine check`` is the new, more
          complete, recommended way of checking distributable file correctness, as per
          the warning:
        
          .. code-block:: sh
        
              warning: Check: This command has been deprecated. Use `twine check`
              instead: https://packaging.python.org/guides/making-a-pypi-friendly-readme#validating-restructuredtext-markup
        
        
          ``multilint`` can't run ``twine check`` since it needs running on your
          ``dist`` files instead of the ``setup.py`` file.
        
          You can integrate it on a typical ``tox`` setup with an extra command
          ``tox dist/*``. For more information see the `twine check
          documentation <https://twine.readthedocs.io/en/latest/#twine-check>`__ and
          the `packaging documentation
          <https://packaging.python.org/guides/making-a-pypi-friendly-readme#validating-restructuredtext-markup>`__.
        
        3.0.0 (2019-05-13)
        ------------------
        
        * Drop Python 2 and 3.4 support, only Python 3.5+ is supported now.
        * Add support for running `Black <https://pypi.org/project/black/>`__, the
          Python code auto-formatter.
        * Drop support for Flake8 < 3.0.0.
        
        2.4.0 (2018-09-30)
        ------------------
        
        * Support positional arguments for paths.
        
        2.3.0 (2018-04-28)
        ------------------
        
        * Fix for modernize 0.6.1+
        * Run modernize on the multilint codebase itself, so it now requires six
        
        2.2.1 (2018-03-08)
        ------------------
        
        * Fix crash when setup.cfg doesn't exist.
        
        2.2.0 (2017-09-19)
        ------------------
        
        * Add ``--skip`` argument which can be used to skip particular linters even
          though they're installed.
        
        2.1.0 (2017-06-02)
        ------------------
        
        * Use ``entry_points`` in ``setup.py`` instead of ``scripts``
        * Support ``python -m multilint``
        
        2.0.2 (2016-12-06)
        ------------------
        
        * Don't invoke ``python setup.py check`` if there is no ``setup.py``.
        
        2.0.1 (2016-10-20)
        ------------------
        
        * Remove default for `paths` in ``setup.cfg``.
        * Check that paths exist before running the linters.
        
        2.0.0 (2016-09-24)
        ------------------
        
        * Use the config header ``tool:multilint`` in ``setup.cfg``, rather than
          ``multilint``, to avoid clashing with any potential ``setup.py`` commands.
          Your ``setup.cfg`` will need updating.
        
        1.0.2 (2016-07-26)
        ------------------
        
        * Work with ``flake8`` 3.0+ which changed the way its ``main`` function worked.
        
        1.0.1 (2016-07-16)
        ------------------
        
        * Fix modernize running on Python 2.
        * Run ``isort`` in the same Python process rather than with ``subprocess``
        * Properly gate ``flake8`` and ``isort`` so that they run only if they are
          installed.
        
        1.0.0 (2016-06-19)
        ------------------
        
        * First release on PyPI.
        
Keywords: lint,flake8,pep8,pycodestyle,codestyle,mccabe,setup.py
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
