Metadata-Version: 2.0
Name: multilint
Version: 1.0.2
Summary: Run multiple python linters easily
Home-page: https://github.com/adamchainz/multilint
Author: Adam Johnson
Author-email: me@adamj.eu
License: ISC license
Keywords: l,i,n,t,,, ,f,l,a,k,e,8,,, ,p,e,p,8,,, ,p,y,c,o,d,e,s,t,y,l,e,,, ,c,o,d,e,s,t,y,l,e,,, ,m,c,c,a,b,e,,, ,s,e,t,u,p,.,p,y
Platform: UNKNOWN
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5

=========
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

Run multiple python linters easily.

Installation and Usage
----------------------

Install with **pip**:

.. code-block:: sh

    pip install multilint

Run with:

.. code-block:: sh

    multilint

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 is these linters are installed, and if so, run them:

* Run ``flake8``, for code quality
* Run ``isort`` in 'diff' mode, for import sorting
* Run ``modernize`` in 'diff' mode, for python 2/3 compatibility
* Run ``python setup.py check``, to ensure that your ``setup.py`` is well
  configured. This will require ``docutils``, and maybe ``Pygments`` if your
  ``long_description`` uses any code highlighting.

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

    [multilint]
    paths = my_package
            tests
            setup.py

Usage with ``tox``
------------------

I normally run my tests with ``tox``. An example ``tox.ini`` to use
``multilint`` to do all your linting would be:

.. code-block:: ini

    [tox]
    envlist =
        py{27,35},
        py{27,35}-codestyle

    [testenv]
    deps = -rrequirements.txt
    commands = py.test

    [testenv:py27-codestyle]
    commands = multilint

    [testenv:py35-codestyle]
    commands = multilint

Just put ``multilint``, ``flake8``, etc. in your ``requirements.txt`` and
they'll automatically run.


=======
History
=======

Pending
-------

* New notes here

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.


