Merge branch 'feature/251' into 'master'

Enable users who want to track all files processed

This adds two new methods to the BaseFormatter class:

- beginning
- finished

These will indicate when Flake8 begins and finishes processing a file.

Closes #251

See merge request !152
This commit is contained in:
Ian Cordasco 2016-12-21 01:12:31 +00:00
commit 85c495b012
5 changed files with 35 additions and 2 deletions

View file

@ -3,6 +3,9 @@
You can view the `3.3.0 milestone`_ on GitLab for more details.
- Add methods to Report class that will be called when Flake8 starts and
finishes processing a file. (`GitLab#251`_)
- Dramatically improve the performance of Flake8 (`GitLab!156`_)
- Fix problem where hooks should only check \*.py files. (See also
@ -14,6 +17,8 @@ You can view the `3.3.0 milestone`_ on GitLab for more details.
.. links
.. _3.3.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/16
.. _GitLab#251:
https://gitlab.com/pycqa/flake8/issues/251
.. _GitLab#268:
https://gitlab.com/pycqa/flake8/issues/268
.. _GitLab!156:

View file

@ -260,8 +260,9 @@ class Manager(object):
results_reported = results_found = 0
for checker in self.checkers:
results = sorted(checker.results, key=lambda tup: (tup[1], tup[2]))
results_reported += self._handle_results(checker.display_name,
results)
filename = checker.display_name
with self.style_guide.processing_file(filename):
results_reported += self._handle_results(filename, results)
results_found += len(results)
return (results_found, results_reported)

View file

@ -44,6 +44,24 @@ class BaseFormatter(object):
"""Initialize the formatter further."""
pass
def beginning(self, filename):
"""Notify the formatter that we're starting to process a file.
:param str filename:
The name of the file that Flake8 is beginning to report results
from.
"""
pass
def finished(self, filename):
"""Notify the formatter that we've finished processing a file.
:param str filename:
The name of the file that Flake8 has finished reporting results
from.
"""
pass
def start(self):
"""Prepare the formatter to receive input.

View file

@ -1,5 +1,6 @@
"""Implementation of the StyleGuide used by Flake8."""
import collections
import contextlib
import enum
import linecache
import logging
@ -120,6 +121,13 @@ class StyleGuide(object):
return Selected.Implicitly
@contextlib.contextmanager
def processing_file(self, filename):
"""Record the fact that we're processing the file's results."""
self.formatter.beginning(filename)
yield self
self.formatter.finished(filename)
def _decision_for(self, code):
# type: (Error) -> Decision
select = find_first_match(code, self._all_selected)

View file

@ -134,6 +134,7 @@ def test_report_order(results, expected_order):
file_checker.display_name = 'placeholder'
style_guide = mock.Mock(spec=['options'])
style_guide.processing_file = mock.MagicMock()
# Create a placeholder manager without arguments or plugins
# Just add one custom file checker which just provides the results