Repository: buildbot/buildbot

Issue:
Update flake8 to 3.3.0

There's a new version of [flake8](https://pypi.python.org/pypi/flake8) available.
You are currently using **2.6.2**. I have updated it to **3.3.0**



These links might come in handy:  <a href="https://pypi.python.org/pypi/flake8">PyPI</a> | <a href="https://pyup.io/changelogs/flake8/">Changelog</a> | <a href="https://gitlab.com/pycqa/flake8">Repo</a> 



### Changelog
> 
>### 3.3.0

>-------------------

>You can view the `3.3.0 milestone`_ on GitLab for more details.

>- Add support for Python 3.6 (via dependencies). **Note** Flake8 does not
>  guarantee that all plugins will support Python 3.6.

>- Added unique error codes for all missing PyFlakes messages. (14 new
>  codes, see &quot;Error / Violation Codes&quot;)

>- Dramatically improve the performance of Flake8. (See also `GitLab!156`_)

>- Display the local file path instead of the temporary file path when
>  using the git hook. (See also `GitLab244`_)

>- Add methods to Report class that will be called when Flake8 starts and
>  finishes processing a file. (See also `GitLab251`_)

>- Fix problem where hooks should only check \*.py files. (See also
>  `GitLab268`_)

>- Fix handling of SyntaxErrors that do not include physical line information.
>  (See also `GitLab279`_)

>- Update upper bound on PyFlakes to allow for PyFlakes 1.5.0.  (See also
>  `GitLab290`_)

>- Update setuptools integration to less eagerly deduplicate packages.
>  (See also `GitLab295`_)

>- Force ``flake8 --version`` to be repeatable between invocations. (See also
>  `GitLab297`_)

>.. all links
>.. _3.3.0 milestone:
>    https://gitlab.com/pycqa/flake8/milestones/16

>.. issue links
>.. _GitLab244:
>    https://gitlab.com/pycqa/flake8/issues/244
>.. _GitLab251:
>    https://gitlab.com/pycqa/flake8/issues/251
>.. _GitLab268:
>    https://gitlab.com/pycqa/flake8/issues/268
>.. _GitLab279:
>    https://gitlab.com/pycqa/flake8/issues/279
>.. _GitLab290:
>    https://gitlab.com/pycqa/flake8/issues/290
>.. _GitLab295:
>    https://gitlab.com/pycqa/flake8/issues/295
>.. _GitLab297:
>    https://gitlab.com/pycqa/flake8/issues/297

>.. merge request links
>.. _GitLab!156:
>    https://gitlab.com/pycqa/flake8/merge_requests/156




>### 3.2.1

>-------------------

>You can view the `3.2.1 milestone`_ on GitLab for more details.

>- Fix subtle bug when deciding whether to report an on-by-default&#39;s violation
>  (See also `GitLab257`_)

>- Fix another bug around SyntaxErrors not being reported at the right column
>  and row (See also `GitLab259`_ and `GitLab237`_ for a related, previously
>  fixed bug)

>- Fix regression from 2.x where we run checks against explicitly provided
>  files, even if they don&#39;t match the filename patterns. (See also
>  `GitLab266`_)

>.. links
>.. _3.2.1 milestone:
>    https://gitlab.com/pycqa/flake8/milestones/15
>.. _GitLab237:
>    https://gitlab.com/pycqa/flake8/issues/237
>.. _GitLab257:
>    https://gitlab.com/pycqa/flake8/issues/257
>.. _GitLab259:
>    https://gitlab.com/pycqa/flake8/issues/259
>.. _GitLab266:
>    https://gitlab.com/pycqa/flake8/issues/266




>### 3.2.0

>-------------------

>You can view the `3.2.0 milestone`_ on GitLab for more details.

>- Allow for pycodestyle 2.2.0 which fixes a bug in E305 (See also
>  `GitLab256`_)

>.. links
>.. _3.2.0 milestone:
>    https://gitlab.com/pycqa/flake8/milestones/14
>.. _GitLab256:
>    https://gitlab.com/pycqa/flake8/issues/256




>### 3.1.1

>-------------------

>You can view the `3.1.1 milestone`_ on GitLab for more details.

>- Do not attempt to install/distribute a ``man`` file with the Python package;
>  leave this for others to do. (See also `GitLab254`_)

>- Fix packaging bug where wheel version constraints specified in setup.cfg did
>  not match the constraints in setup.py. (See also `GitLab255`_)

>.. links
>.. _3.1.1 milestone:
>    https://gitlab.com/pycqa/flake8/milestones/13
>.. _GitLab254:
>    https://gitlab.com/pycqa/flake8/issues/254
>.. _GitLab255:
>    https://gitlab.com/pycqa/flake8/issues/255




>### 3.1.0

>-------------------

>You can view the `3.1.0 milestone`_ on GitLab for more details.

>- Add ``--bug-report`` flag to make issue reporters&#39; lives easier.

>- Collect configuration files from the current directory when using our Git
>  hook. (See also `GitLab210`_, `GitLab218`_, `GitLab223`_)

>- Avoid unhandled exceptions when dealing with SyntaxErrors. (See also
>  `GitLab214`_, `GitLab238`_)

>- Exit early if the value for ``--diff`` is empty. (See also `GitLab226`_)

>- Handle empty ``--stdin-display-name`` values. (See also `GitLab235`_)

>- Properly report the column number of Syntax Errors. We were assuming that
>  all reports of column numbers were 0-indexed, however, SyntaxErrors report
>  the column number as 1-indexed. This caused us to report a column number
>  that was 1 past the actual position. Further, when combined with
>  SyntaxErrors that occur at a newline, this caused the position to be
>  visually off by two. (See also `GitLab237`_)

>- Fix the behaviour of ``--enable-extensions``. Previously, items specified
>  here were still ignored due to the fact that the off-by-default extension
>  codes were being left in the ``ignore`` list. (See also `GitLab239`_)

>- Fix problems around ``--select`` and ``--ignore`` behaviour that prevented
>  codes that were neither explicitly selected nor explicitly ignored from
>  being reported. (See also `GitLab242`_)

>- Truly be quiet when the user specifies ``-q`` one or more times. Previously,
>  we were showing the if the user specified ``-q`` and ``--show-source``. We
>  have fixed this bug. (See also `GitLab245`_)

>- Add new File Processor attribute, ``previous_unindented_logical_line`` to
>  accommodate pycodestyle 2.1.0. (See also `GitLab246`_)

>- When something goes wrong, exit non-zero. (See also `GitLab248`_,
>  `GitLab209`_)

>- Add ``--tee`` as an option to allow use of ``--output-file`` and printing to
>  standard out.

>- Allow the git plugin to actually be lazy when collecting files.

>- Allow for pycodestyle 2.1 series and pyflakes 1.3 series.

>.. links
>.. _3.1.0 milestone:
>    https://gitlab.com/pycqa/flake8/milestones/12
>.. _GitLab209:
>    https://gitlab.com/pycqa/flake8/issues/209
>.. _GitLab210:
>    https://gitlab.com/pycqa/flake8/issues/210
>.. _GitLab214:
>    https://gitlab.com/pycqa/flake8/issues/214
>.. _GitLab218:
>    https://gitlab.com/pycqa/flake8/issues/218
>.. _GitLab223:
>    https://gitlab.com/pycqa/flake8/issues/223
>.. _GitLab226:
>    https://gitlab.com/pycqa/flake8/issues/226
>.. _GitLab235:
>    https://gitlab.com/pycqa/flake8/issues/235
>.. _GitLab237:
>    https://gitlab.com/pycqa/flake8/issues/237
>.. _GitLab238:
>    https://gitlab.com/pycqa/flake8/issues/238
>.. _GitLab239:
>    https://gitlab.com/pycqa/flake8/issues/239
>.. _GitLab242:
>    https://gitlab.com/pycqa/flake8/issues/242
>.. _GitLab245:
>    https://gitlab.com/pycqa/flake8/issues/245
>.. _GitLab246:
>    https://gitlab.com/pycqa/flake8/issues/246
>.. _GitLab248:
>    https://gitlab.com/pycqa/flake8/issues/248




>### 3.0.4

>-------------------

>- Side-step a Pickling Error when using Flake8 with multiprocessing on Unix
>  systems. (See also `GitLab164`_)

>- Fix an Attribute Error raised when dealing with Invalid Syntax. (See also
>  `GitLab203`_)

>- Fix an unhandled Syntax Error when tokenizing files. (See also
>  `GitLab205`_)


>.. links
>.. _GitLab164:
>    https://gitlab.com/pycqa/flake8/issues/164
>.. _GitLab203:
>    https://gitlab.com/pycqa/flake8/issues/203
>.. _GitLab205:
>    https://gitlab.com/pycqa/flake8/issues/205




>### 3.0.3

>-------------------

>- Disable ``--jobs`` for any version of Python on Windows.
>  (See also `this Python bug report`_)

>- Raise exception when entry_point in plugin not callable.
>  This raises an informative error when a plugin fails to load because its
>  entry_point is not callable, which can happen with a plugin which is buggy or
>  not updated for the current version of flake8. This is nicer than raising a
>  `PicklingError` about failing to pickle a module (See also `GitLab164`_)

>- Fix `` noqa`` comments followed by a ``:`` and explanation broken by
>  3.0.0 (See also `GitLab178`_)

>- Always open our output file in append mode so we do not overwrite log
>  messages. (See also `GitLab193`_)

>- When normalizing path values read from configuration, keep in context the
>  directory where the configuration was found so that relative paths work.
>  (See also `GitLab194`_)

>- Fix issue where users were unable to ignore plugin errors that were on
>  by default. (See also `GitLab195`_)

>- Fix our legacy API StyleGuide&#39;s ``init_report`` method to actually override
>  the previous formatter. (See also `GitLab200`_)


>.. links
>.. _GitLab164:
>    https://gitlab.com/pycqa/flake8/issues/164
>.. _GitLab178:
>    https://gitlab.com/pycqa/flake8/issues/178
>.. _GitLab193:
>    https://gitlab.com/pycqa/flake8/issues/193
>.. _GitLab194:
>    https://gitlab.com/pycqa/flake8/issues/193
>.. _GitLab195:
>    https://gitlab.com/pycqa/flake8/issues/195
>.. _GitLab200:
>    https://gitlab.com/pycqa/flake8/issues/200
>.. _this Python bug report:
>    https://bugs.python.org/issue27649




>### 3.0.2

>-------------------

>- Fix local config file discovery.  (See also `GitLab181`_)

>- Fix indexing of column numbers. We accidentally were starting column indices
>  at 0 instead of 1.

>- Fix regression in handling of errors like E402 that rely on a combination of
>  attributes. (See also `GitLab186`_)


>.. links
>.. _GitLab181:
>    https://gitlab.com/pycqa/flake8/issues/181
>.. _GitLab186:
>    https://gitlab.com/pycqa/flake8/issues/186




>### 3.0.1

>-------------------

>- Fix regression in handling of `` noqa`` for multiline strings.
>  (See also `GitLab177`_)

>- Fix regression in handling of ``--output-file`` when not also using
>  ``--verbose``. (See also `GitLab180`_)

>- Fix regression in handling of ``--quiet``. (See also `GitLab180`_)

>- Fix regression in handling of ``--statistics``. (See also `GitLab180`_)


>.. links
>.. _GitLab177:
>    https://gitlab.com/pycqa/flake8/issues/177
>.. _GitLab180:
>    https://gitlab.com/pycqa/flake8/issues/180




>### 3.0.0

>-------------------

>- Rewrite our documentation from scratch! (http://flake8.pycqa.org)

>- Drop explicit support for Pythons 2.6, 3.2, and 3.3.

>- Remove dependence on pep8/pycodestyle for file processing, plugin
>  dispatching, and more. We now control all of this while keeping backwards
>  compatibility.

>- ``--select`` and ``--ignore`` can now both be specified and try to find the
>  most specific rule from each. For example, if you do ``--select E --ignore
>  E123`` then we will report everything that starts with ``E`` except for
>  ``E123``. Previously, you would have had to do ``--ignore E123,F,W`` which
>  will also still work, but the former should be far more intuitive.

>- Add support for in-line `` noqa`` comments to specify **only** the error
>  codes to be ignored, e.g., `` noqa: E123,W503``

>- Add entry-point for formatters as well as a base class that new formatters
>  can inherit from. See the documentation for more details.

>- Add detailed verbose output using the standard library logging module.

>- Enhance our usage of optparse for plugin developers by adding new parameters
>  to the ``add_option`` that plugins use to register new options.

>- Update ``--install-hook`` to require the name of version control system hook
>  you wish to install a Flake8.

>- Stop checking sub-directories more than once via the setuptools command

>- When passing a file on standard-in, allow the caller to specify
>  ``--stdin-display-name`` so the output is properly formatted

>- The Git hook now uses ``sys.executable`` to format the shebang line.
>  This allows Flake8 to install a hook script from a virtualenv that points to
>  that virtualenv&#39;s Flake8 as opposed to a global one (without the virtualenv
>  being sourced).

>- Print results in a deterministic and consistent ordering when used with
>  multiprocessing

>- When using ``--count``, the output is no longer written to stderr.

>- AST plugins can either be functions or classes and all plugins can now
>  register options so long as there are callable attributes named as we
>  expect.

>- Stop forcibly re-adding ``.tox``, ``.eggs``, and ``*.eggs`` to
>  ``--exclude``. Flake8 2.x started always appending those three patterns
>  to any exclude list (including the default and any user supplied list).
>  Flake8 3 has stopped adding these in, so you may see errors when upgrading
>  due to these patterns no longer being forcibly excluded by default if you
>  have your own exclude patterns specified.

>  To fix this, add the appropriate patterns to your exclude patterns list.

>  .. note::

>      This item was added in November of 2016, as a result of a bug
>      report.








*Got merge conflicts? Close this PR and delete the branch. I'll create a new PR for you.*

Happy merging! 🤖



Discussion:

Resolving patch:
diff --git a/master/buildbot/process/buildstep.py b/master/buildbot/process/buildstep.py
--- a/master/buildbot/process/buildstep.py
+++ b/master/buildbot/process/buildstep.py
@@ -658,12 +658,25 @@ def start(self):
         raise NotImplementedError("your subclass must implement run()")
 
     def interrupt(self, reason):
+        # TODO: consider adding an INTERRUPTED or STOPPED status to use
+        # instead of FAILURE, might make the text a bit more clear.
+        # 'reason' can be a Failure, or text
         self.stopped = True
         if self._acquiringLock:
             lock, access, d = self._acquiringLock
             lock.stopWaitingUntilAvailable(self, access, d)
             d.callback(None)
 
+        if self._waitingForLocks:
+            self.addCompleteLog(
+                'cancelled while waiting for locks', str(reason))
+        else:
+            self.addCompleteLog('cancelled', str(reason))
+
+        if self.cmd:
+            d = self.cmd.interrupt(reason)
+            d.addErrback(log.err, 'while cancelling command')
+
     def releaseLocks(self):
         log.msg("releaseLocks(%s): %s" % (self, self.locks))
         for lock, access in self.locks:
@@ -927,21 +940,6 @@ def setupLogfiles(self, cmd, logfiles):
                 # and tell the RemoteCommand to feed it
                 cmd.useLog(newlog, True)
 
-    def interrupt(self, reason):
-        # TODO: consider adding an INTERRUPTED or STOPPED status to use
-        # instead of FAILURE, might make the text a bit more clear.
-        # 'reason' can be a Failure, or text
-        BuildStep.interrupt(self, reason)
-        if self._waitingForLocks:
-            self.addCompleteLog(
-                'cancelled while waiting for locks', str(reason))
-        else:
-            self.addCompleteLog('cancelled', str(reason))
-
-        if self.cmd:
-            d = self.cmd.interrupt(reason)
-            d.addErrback(log.err, 'while cancelling command')
-
     def checkDisconnect(self, f):
         # this is now handled by self.failed
         log.msg("WARNING: step %s uses deprecated checkDisconnect method")


Test patch: