Merge branch 'bug/180' into 'master'

Handle repeated --quiet options again

*Description of changes*

Handle `-q`/`--quiet` again.

*Related to:*  #180

See merge request !89
This commit is contained in:
Ian Cordasco 2016-07-26 00:41:08 +00:00
commit b9658eaaae
4 changed files with 36 additions and 2 deletions

View file

@ -107,6 +107,8 @@ setuptools.setup(
'flake8.report': [ 'flake8.report': [
'default = flake8.formatting.default:Default', 'default = flake8.formatting.default:Default',
'pylint = flake8.formatting.default:Pylint', 'pylint = flake8.formatting.default:Pylint',
'quiet-filename = flake8.formatting.default:FilenameOnly',
'quiet-nothing = flake8.formatting.default:Nothing',
], ],
}, },
classifiers=[ classifiers=[

View file

@ -164,7 +164,8 @@ class BaseFormatter(object):
The source code that has been formatted and associated with the The source code that has been formatted and associated with the
line of output. line of output.
""" """
self._write(line) if line:
self._write(line)
if source: if source:
self._write(source) self._write(source)

View file

@ -54,3 +54,27 @@ class Pylint(SimpleFormatter):
"""Pylint formatter for Flake8.""" """Pylint formatter for Flake8."""
error_format = '%(path)s:%(row)d: [%(code)s] %(text)s' error_format = '%(path)s:%(row)d: [%(code)s] %(text)s'
class FilenameOnly(SimpleFormatter):
"""Only print filenames, e.g., flake8 -q."""
error_format = '%(path)s'
def after_init(self):
"""Initialize our set of filenames."""
self.filenames_already_printed = set()
def format(self, error):
"""Ensure we only print each error once."""
if error.filename not in self.filenames_already_printed:
self.filenames_already_printed.add(error.filename)
return super(FilenameOnly, self).format(error)
class Nothing(base.BaseFormatter):
"""Print absolutely nothing."""
def format(self, error):
"""Do nothing."""
pass

View file

@ -181,10 +181,17 @@ class Application(object):
# type: () -> NoneType # type: () -> NoneType
"""Initialize a formatter based on the parsed options.""" """Initialize a formatter based on the parsed options."""
if self.formatter is None: if self.formatter is None:
format_plugin = self.options.format
if 1 <= self.options.quiet < 2:
format_plugin = 'quiet-filename'
elif 2 <= self.options.quiet:
format_plugin = 'quiet-nothing'
if formatter_class is None: if formatter_class is None:
formatter_class = self.formatting_plugins.get( formatter_class = self.formatting_plugins.get(
self.options.format, self.formatting_plugins['default'] format_plugin, self.formatting_plugins['default']
).execute ).execute
self.formatter = formatter_class(self.options) self.formatter = formatter_class(self.options)
def make_notifier(self): def make_notifier(self):