flake8/setup.py
Ian Cordasco 222292c4b2
Handle repeated --quiet options again
Fundamentally on Flake8 2.x using -q altered the format of the errors
(and the behaviour a little) so it makes the most sense to implement
this logic with formatters rather than messy logic spread throughout
the project.

The FilenameOnly formatter will keep track of filenames already reported
and only print the name once while Nothing will print nothing.

Closes #180
2016-07-25 19:38:19 -05:00

130 lines
4.4 KiB
Python

# -*- coding: utf-8 -*-
"""Packaging logic for Flake8."""
import functools
import io
import os
import sys
import setuptools
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
import flake8 # noqa
tests_require = ['mock', 'pytest']
requires = [
"pyflakes >= 0.8.1, != 1.2.0, != 1.2.1, != 1.2.2, < 1.3.0",
"pycodestyle >= 2.0.0, < 2.1.0",
"mccabe >= 0.5.0, < 0.6.0",
]
if sys.version_info < (3, 4):
requires.append("enum34")
if sys.version_info < (3, 2):
requires.append("configparser")
def get_long_description():
"""Generate a long description from the README file."""
descr = []
for fname in ('README.rst',):
with io.open(fname, encoding='utf-8') as f:
descr.append(f.read())
return '\n\n'.join(descr)
PEP8 = 'pycodestyle'
_FORMAT = '{0}.{1} = {0}:{1}'
PEP8_PLUGIN = functools.partial(_FORMAT.format, PEP8)
setuptools.setup(
name="flake8",
license="MIT",
version=flake8.__version__,
description="the modular source code checker: pep8, pyflakes and co",
long_description=get_long_description(),
author="Tarek Ziade",
author_email="tarek@ziade.org",
maintainer="Ian Cordasco",
maintainer_email="graffatcolmingov@gmail.com",
url="https://gitlab.com/pycqa/flake8",
package_dir={"": "src"},
packages=[
"flake8",
"flake8.api",
"flake8.formatting",
"flake8.main",
"flake8.options",
"flake8.plugins",
],
install_requires=requires,
entry_points={
'distutils.commands': [
'flake8 = flake8.main.setuptools_command:Flake8'
],
'console_scripts': [
'flake8 = flake8.main.cli:main'
],
'flake8.extension': [
'F = flake8.plugins.pyflakes:FlakesChecker',
# PEP-0008 checks provied by PyCQA/pycodestyle
PEP8_PLUGIN('tabs_or_spaces'),
PEP8_PLUGIN('tabs_obsolete'),
PEP8_PLUGIN('trailing_whitespace'),
PEP8_PLUGIN('trailing_blank_lines'),
PEP8_PLUGIN('maximum_line_length'),
PEP8_PLUGIN('blank_lines'),
PEP8_PLUGIN('extraneous_whitespace'),
PEP8_PLUGIN('whitespace_around_keywords'),
PEP8_PLUGIN('missing_whitespace_after_import_keyword'),
PEP8_PLUGIN('missing_whitespace'),
PEP8_PLUGIN('indentation'),
PEP8_PLUGIN('continued_indentation'),
PEP8_PLUGIN('whitespace_before_parameters'),
PEP8_PLUGIN('whitespace_around_operator'),
PEP8_PLUGIN('missing_whitespace_around_operator'),
PEP8_PLUGIN('whitespace_around_comma'),
PEP8_PLUGIN('whitespace_around_named_parameter_equals'),
PEP8_PLUGIN('whitespace_before_comment'),
PEP8_PLUGIN('imports_on_separate_lines'),
PEP8_PLUGIN('module_imports_on_top_of_file'),
PEP8_PLUGIN('compound_statements'),
PEP8_PLUGIN('explicit_line_join'),
PEP8_PLUGIN('break_around_binary_operator'),
PEP8_PLUGIN('comparison_to_singleton'),
PEP8_PLUGIN('comparison_negative'),
PEP8_PLUGIN('comparison_type'),
# NOTE(sigmavirus24): Add this back once PyCodestyle 2.1.0 is out
# PEP8_PLUGIN('ambiguous_identifier'),
PEP8_PLUGIN('python_3000_has_key'),
PEP8_PLUGIN('python_3000_raise_comma'),
PEP8_PLUGIN('python_3000_not_equal'),
PEP8_PLUGIN('python_3000_backticks'),
],
'flake8.report': [
'default = flake8.formatting.default:Default',
'pylint = flake8.formatting.default:Pylint',
'quiet-filename = flake8.formatting.default:FilenameOnly',
'quiet-nothing = flake8.formatting.default:Nothing',
],
},
classifiers=[
"Environment :: Console",
"Framework :: Flake8",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Quality Assurance",
],
tests_require=tests_require,
setup_requires=['pytest-runner'],
)