Changelogs » Flake8

Flake8

3.7.7

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix crahes in plugins causing ``flake8`` to hang while unpickling errors (See
also `GitLab!308`_, `GitLab505`_)


.. all links
.. _3.7.7 milestone:
https://gitlab.com/pycqa/flake8/milestones/30

.. issue links
.. _GitLab505:
https://gitlab.com/pycqa/flake8/issues/505

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

3.7.6

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix ``--per-file-ignores`` for multi-letter error codes (See also
`GitLab!303`_, `GitLab507`_)

- Improve flake8 speed when only 1 filename is passed (See also `GitLab!305`_)


.. all links
.. _3.7.6 milestone:
https://gitlab.com/pycqa/flake8/milestones/29

.. issue links
.. _GitLab507:
https://gitlab.com/pycqa/flake8/issues/507

.. merge request links
.. _GitLab!303:
https://gitlab.com/pycqa/flake8/merge_requests/303
.. _GitLab!305:
https://gitlab.com/pycqa/flake8/merge_requests/305

3.7.5

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix reporting of pyflakes "referenced before assignment" error (See also
`GitLab!301`_, `GitLab503`_)


.. all links
.. _3.7.5 milestone:
https://gitlab.com/pycqa/flake8/milestones/28

.. issue links
.. _GitLab503:
https://gitlab.com/pycqa/flake8/issues/503

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

3.7.4

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix performance regression with lots of ``per-file-ignores`` and errors
(See also `GitLab!299`_, `GitLab501`_)


.. all links
.. _3.7.4 milestone:
https://gitlab.com/pycqa/flake8/milestones/27

.. issue links
.. _GitLab501:
https://gitlab.com/pycqa/flake8/issues/501

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

3.7.3

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix imports of ``typing`` in python 3.5.0 / 3.5.1 (See also `GitLab!294`_,
`GitLab498`_)

- Fix ``flake8 --statistics`` (See also `GitLab!295`_, `GitLab499`_)

- Gracefully ignore ``flake8-per-file-ignores`` plugin if installed (See also
`GitLab!297`_, `GitLab495`_)

- Improve error message for malformed ``per-file-ignores`` (See also
`GitLab!298`_, `GitLab489`_)


.. all links
.. _3.7.3 milestone:
https://gitlab.com/pycqa/flake8/milestones/26

.. issue links
.. _GitLab489:
https://gitlab.com/pycqa/flake8/issues/489
.. _GitLab495:
https://gitlab.com/pycqa/flake8/issues/495
.. _GitLab498:
https://gitlab.com/pycqa/flake8/issues/498
.. _GitLab499:
https://gitlab.com/pycqa/flake8/issues/499

.. merge request links
.. _GitLab!294:
https://gitlab.com/pycqa/flake8/merge_requests/294
.. _GitLab!295:
https://gitlab.com/pycqa/flake8/merge_requests/295
.. _GitLab!297:
https://gitlab.com/pycqa/flake8/merge_requests/297
.. _GitLab!298:
https://gitlab.com/pycqa/flake8/merge_requests/298

3.7.2

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix broken ``flake8 --diff`` (regressed in 3.7.0) (See also `GitLab!292`_,
`GitLab490`_)

- Fix typo in plugin exception reporting (See also `GitLab!275`_,
`GitLab491`_)

- Fix ``AttributeError`` while attempting to use the legacy api (regressed in
3.7.0) (See also `GitLab!293`_, `GitLab497`_)

.. all links
.. _3.7.2 milestone:
https://gitlab.com/pycqa/flake8/milestones/25

.. issue links
.. _GitLab490:
https://gitlab.com/pycqa/flake8/issues/490
.. _GitLab491:
https://gitlab.com/pycqa/flake8/issues/491
.. _GitLab497:
https://gitlab.com/pycqa/flake8/issues/497

.. merge request links
.. _GitLab!292:
https://gitlab.com/pycqa/flake8/merge_requests/292
.. _GitLab!275:
https://gitlab.com/pycqa/flake8/merge_requests/275
.. _GitLab!293:
https://gitlab.com/pycqa/flake8/merge_requests/293

3.7.1

-------------------

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

Bugs Fixed
~~~~~~~~~~

- Fix capitalized filenames in ``per-file-ignores`` setting (See also
`GitLab!290`_, `GitLab488`_)

.. all links
.. _3.7.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/24

.. issue links
.. _GitLab488:
https://gitlab.com/pycqa/flake8/issues/488

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

3.7.0

-------------------

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

New Dependency Information
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Add dependency on ``entrypoints`` >= 0.3, < 0.4 (See also `GitLab!264`_,
`GitLab!288`_)

- Pyflakes has been updated to >= 2.1.0, < 2.2.0 (See also `GitLab!283`_,
`GitLab!285`_)

- pycodestyle has been updated to >= 2.5.0, < 2.6.0 (See also `GitLab!287`_)

Features
~~~~~~~~

- Add support for ``per-file-ignores`` (See also `GitLab!259`_, `GitLab156`_,
`GitLab!281`_, `GitLab471`_)

- Enable use of ``float`` and ``complex`` option types (See also `GitLab!261`_,
`GitLab452`_)

- Improve startup performance by switching from ``pkg_resources`` to
``entrypoints`` (See also `GitLab!264`_)

- Add metadata for use through the `pre-commit`_ git hooks framework (See also
`GitLab!268`_, `GitLab!284`_)

- Allow physical line checks to return more than one result (See also
`GitLab!269`_)

- Allow `` noqa:X123`` comments without space between the colon and codes
list (See also `GitLab!273`_, `GitLab470`_)

- Remove broken and unused ``flake8.listen`` plugin type (See also
`GitLab!274`_, `GitLab480`_)

.. all links
.. _3.7.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/23
.. _pre-commit:
https://pre-commit.com/

.. issue links
.. _GitLab156:
https://gitlab.com/pycqa/flake8/issues/156
.. _GitLab452:
https://gitlab.com/pycqa/flake8/issues/452
.. _GitLab470:
https://gitlab.com/pycqa/flake8/issues/470
.. _GitLab471:
https://gitlab.com/pycqa/flake8/issues/471
.. _GitLab480:
https://gitlab.com/pycqa/flake8/issues/480

.. merge request links
.. _GitLab!259:
https://gitlab.com/pycqa/flake8/merge_requests/259
.. _GitLab!261:
https://gitlab.com/pycqa/flake8/merge_requests/261
.. _GitLab!264:
https://gitlab.com/pycqa/flake8/merge_requests/264
.. _GitLab!268:
https://gitlab.com/pycqa/flake8/merge_requests/268
.. _GitLab!269:
https://gitlab.com/pycqa/flake8/merge_requests/269
.. _GitLab!273:
https://gitlab.com/pycqa/flake8/merge_requests/273
.. _GitLab!274:
https://gitlab.com/pycqa/flake8/merge_requests/274
.. _GitLab!281:
https://gitlab.com/pycqa/flake8/merge_requests/281
.. _GitLab!283:
https://gitlab.com/pycqa/flake8/merge_requests/283
.. _GitLab!284:
https://gitlab.com/pycqa/flake8/merge_requests/284
.. _GitLab!285:
https://gitlab.com/pycqa/flake8/merge_requests/285
.. _GitLab!287:
https://gitlab.com/pycqa/flake8/merge_requests/287
.. _GitLab!288:
https://gitlab.com/pycqa/flake8/merge_requests/288

3.6.0

-------------------

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

New Dependency Information
~~~~~~~~~~~~~~~~~~~~~~~~~~

- pycodestyle has been updated to >= 2.4.0, < 2.5.0 (See also `GitLab381`_,
`GitLab415`_, `GitLab!212`_, `GitLab!230`_, `GitLab!231`_)

- Pyflakes has been updated to >= 2.0.0, < 2.1.0 (See also `GitLab422`_,
`GitLab!239`_)

- flake8 requires python 2.x >= 2.7 or python 3.x >= 3.4 (See also
`GitLab!225`_)

Features
~~~~~~~~

- Add ``paths`` to allow local plugins to exist outside of ``sys.path`` (See
also `GitLab379`_, `GitLab!211`_)

- Copy ``setup.cfg`` files to the temporary git hook execution directory (See
also `GitLab!215`_)

- Only skip a file if `` flake8: noqa`` is on a line by itself (See also
`GitLab453`_, `GitLab!219`_)

- Provide a better user experience for broken plugins (See also `GitLab!221`_)

- Report ``E902`` when a file passed on the command line does not exist (See
also `GitLab405`_, `GitLab!227`_)

- Add ``--extend-ignore`` for extending the default ``ignore`` instead of
overriding it (See also `GitLab365`_, `GitLab!233`_)

Bugs Fixed
~~~~~~~~~~

- Respect a formatter's newline setting when printing (See also `GitLab!222`_)

- Fix leaking of processes in the legacy api (See also `GitLab410`_,
`GitLab!228`_)

- Fix a ``SyntaxWarning`` for an invalid escape sequence (See also
`GitLab!244`_)

- Fix ``DeprecationWarning`` due to import of ``abc`` classes from the
``collections`` module (See also `GitLab!249`_)

- Defer ``setuptools`` import to improve flake8 startup time (See also
`GitLab!250`_)

- Fix inconsistent line endings in ``FileProcessor.lines`` when running under
python 3.x (See also `GitLab457`_, `GitLab!255`_)


.. all links
.. _3.6.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/21

.. issue links
.. _GitLab365:
https://gitlab.com/pycqa/flake8/issues/365
.. _GitLab379:
https://gitlab.com/pycqa/flake8/issues/379
.. _GitLab381:
https://gitlab.com/pycqa/flake8/issues/381
.. _GitLab405:
https://gitlab.com/pycqa/flake8/issues/405
.. _GitLab410:
https://gitlab.com/pycqa/flake8/issues/410
.. _GitLab415:
https://gitlab.com/pycqa/flake8/issues/415
.. _GitLab422:
https://gitlab.com/pycqa/flake8/issues/422
.. _GitLab453:
https://gitlab.com/pycqa/flake8/issues/453
.. _GitLab457:
https://gitlab.com/pycqa/flake8/issues/457

.. merge request links
.. _GitLab!211:
https://gitlab.com/pycqa/flake8/merge_requests/211
.. _GitLab!212:
https://gitlab.com/pycqa/flake8/merge_requests/212
.. _GitLab!215:
https://gitlab.com/pycqa/flake8/merge_requests/215
.. _GitLab!219:
https://gitlab.com/pycqa/flake8/merge_requests/219
.. _GitLab!221:
https://gitlab.com/pycqa/flake8/merge_requests/221
.. _GitLab!222:
https://gitlab.com/pycqa/flake8/merge_requests/222
.. _GitLab!225:
https://gitlab.com/pycqa/flake8/merge_requests/225
.. _GitLab!227:
https://gitlab.com/pycqa/flake8/merge_requests/227
.. _GitLab!228:
https://gitlab.com/pycqa/flake8/merge_requests/228
.. _GitLab!230:
https://gitlab.com/pycqa/flake8/merge_requests/230
.. _GitLab!231:
https://gitlab.com/pycqa/flake8/merge_requests/231
.. _GitLab!233:
https://gitlab.com/pycqa/flake8/merge_requests/233
.. _GitLab!239:
https://gitlab.com/pycqa/flake8/merge_requests/239
.. _GitLab!244:
https://gitlab.com/pycqa/flake8/merge_requests/244
.. _GitLab!249:
https://gitlab.com/pycqa/flake8/merge_requests/249
.. _GitLab!250:
https://gitlab.com/pycqa/flake8/merge_requests/250
.. _GitLab!255:
https://gitlab.com/pycqa/flake8/merge_requests/255

3.5.0

-------------------

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

New Dependency Information
~~~~~~~~~~~~~~~~~~~~~~~~~~

- Allow for PyFlakes 1.6.0 (See also `GitLab359`_)

- Start using new PyCodestyle checks for bare excepts and ambiguous identifier
(See also `GitLab361`_)

Features
~~~~~~~~

- Print out information about configuring VCS hooks (See also `GitLab335`_)

- Allow users to develop plugins "local" to a repository without using
setuptools. See our documentation on local plugins for more information.
(See also `GitLab357`_)

Bugs Fixed
~~~~~~~~~~

- Catch and helpfully report ``UnicodeDecodeError``\ s when parsing
configuration files. (See also `GitLab358`_)


.. all links
.. _3.5.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/20

.. issue links
.. _GitLab335:
https://gitlab.com/pycqa/flake8/issues/335
.. _GitLab357:
https://gitlab.com/pycqa/flake8/issues/357
.. _GitLab358:
https://gitlab.com/pycqa/flake8/issues/358
.. _GitLab359:
https://gitlab.com/pycqa/flake8/issues/359
.. _GitLab361:
https://gitlab.com/pycqa/flake8/issues/361

.. merge request links

3.4.1

-------------------

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

- Fix minor regression when users specify only a ``--select`` list with items
in the enabled/extended select list.  (See also `GitLab354`_)

.. all links
.. _3.4.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/19

.. issue links
.. _GitLab354:
https://gitlab.com/pycqa/flake8/issues/354

.. merge request links

3.4.0

-------------------

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

- Refine logic around ``--select`` and ``--ignore`` when combined with the
default values for each. (See also `GitLab318`_)

- Handle spaces as an alternate separate for error codes, e.g.,
``--ignore 'E123 E234'``. (See also `GitLab329`_)

- Filter out empty select and ignore codes, e.g., ``--ignore E123,,E234``.
(See also `GitLab330`_)

- Specify dependencies appropriately in ``setup.py`` (See also `Gitlab341_`)

- Fix bug in parsing ``--quiet`` and ``--verbose`` from config files.
(See also `GitLab!193`_)

- Remove unused import of ``os`` in the git hook template (See also
`GitLab!194`_)

.. all links
.. _3.4.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/18

.. issue links
.. _GitLab318:
https://gitlab.com/pycqa/flake8/issues/318
.. _GitLab329:
https://gitlab.com/pycqa/flake8/issues/329
.. _GitLab330:
https://gitlab.com/pycqa/flake8/issues/330
.. _GitLab341:
https://gitlab.com/pycqa/flake8/issues/341

.. merge request links
.. _GitLab!193:
https://gitlab.com/pycqa/flake8/merge_requests/193
.. _GitLab!194:
https://gitlab.com/pycqa/flake8/merge_requests/194

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 "Error / Violation Codes")

- 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'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'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' 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'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'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.

2.6.2

------------------

- **Bug** Fix packaging error during release process.

2.6.1

------------------

- **Bug** Update the config files to search for to include ``setup.cfg`` and
``tox.ini``. This was broken in 2.5.5 when we stopped passing
``config_file`` to our Style Guide

2.6.0

------------------

- **Requirements Change** Switch to pycodestyle as all future pep8 releases
will use that package name

- **Improvement** Allow for Windows users on *select* versions of Python to
use ``--jobs`` and multiprocessing

- **Improvement** Update bounds on McCabe

- **Improvement** Update bounds on PyFlakes and blacklist known broken
versions

- **Improvement** Handle new PyFlakes warning with a new error code: F405

2.5.5

------------------

- **Bug** Fix setuptools integration when parsing config files

- **Bug** Don't pass the user's config path as the config_file when creating a
StyleGuide

2.5.4

------------------

- **Bug** Missed an attribute rename during the v2.5.3 release.

2.5.3

------------------

- **Bug** Actually parse ``output_file`` and ``enable_extensions`` from config
files

2.5.2

------------------

- **Bug** Parse ``output_file`` and ``enable_extensions`` from config files

- **Improvement** Raise upper bound on mccabe plugin to allow for version
0.4.0

2.5.1

------------------

- **Bug** Properly look for ``.flake8`` in current working directory
(`GitLab103`_)

- **Bug** Monkey-patch ``pep8.stdin_get_value`` to cache the actual value in
stdin. This helps plugins relying on the function when run with
multiprocessing. (`GitLab105`_, `GitLab107`_)

.. _GitLab103: https://gitlab.com/pycqa/flake8/issues/103
.. _GitLab105: https://gitlab.com/pycqa/flake8/issues/105
.. _GitLab107: https://gitlab.com/pycqa/flake8/issues/107

2.5.0

------------------

- **Improvement** Raise cap on PyFlakes for Python 3.5 support

- **Improvement** Avoid deprecation warnings when loading extensions
(`GitLab59`_, `GitLab90`_)

- **Improvement** Separate logic to enable "off-by-default" extensions
(`GitLab67`_)

- **Bug** Properly parse options to setuptools Flake8 command (`GitLab!41`_)

- **Bug** Fix exceptions when output on stdout is truncated before Flake8
finishes writing the output (`GitLab69`_)

- **Bug** Fix error on OS X where Flake8 can no longer acquire or create new
semaphores (`GitLab74`_)

.. _GitLab!41: https://gitlab.com/pycqa/flake8/merge_requests/41
.. _GitLab59: https://gitlab.com/pycqa/flake8/issues/59
.. _GitLab67: https://gitlab.com/pycqa/flake8/issues/67
.. _GitLab69: https://gitlab.com/pycqa/flake8/issues/69
.. _GitLab74: https://gitlab.com/pycqa/flake8/issues/74
.. _GitLab90: https://gitlab.com/pycqa/flake8/issues/90

2.4.1

------------------

- **Bug** Do not raise a ``SystemError`` unless there were errors in the
setuptools command. (`GitLab39`_, `GitLab!23`_)

- **Bug** Do not verify dependencies of extensions loaded via entry-points.

- **Improvement** Blacklist versions of pep8 we know are broken

.. _GitLab39: https://gitlab.com/pycqa/flake8/issues/39
.. _GitLab!23: https://gitlab.com/pycqa/flake8/merge_requests/23

2.4.0

------------------

- **Bug** Print filenames when using multiprocessing and ``-q`` option.
(`GitLab31`_)

- **Bug** Put upper cap on dependencies. The caps for 2.4.0 are:

- ``pep8 < 1.6`` (Related to `GitLab35`_)

- ``mccabe < 0.4``

- ``pyflakes < 0.9``

See also `GitLab32`_

- **Bug** Files excluded in a config file were not being excluded when flake8
was run from a git hook. (`GitHub2`_)

- **Improvement** Print warnings for users who are providing mutually
exclusive options to flake8. (`GitLab8`_, `GitLab!18`_)

- **Feature** Allow git hook configuration to live in ``.git/config``.
See the updated `VCS hooks docs`_ for more details. (`GitLab!20`_)

.. _GitHub2: https://github.com/pycqa/flake8/pull/2
.. _GitLab8: https://gitlab.com/pycqa/flake8/issues/8
.. _GitLab31: https://gitlab.com/pycqa/flake8/issues/31
.. _GitLab32: https://gitlab.com/pycqa/flake8/issues/32
.. _GitLab35: https://gitlab.com/pycqa/flake8/issues/35
.. _GitLab!18: https://gitlab.com/pycqa/flake8/merge_requests/18
.. _GitLab!20: https://gitlab.com/pycqa/flake8/merge_requests/20
.. _VCS hooks docs: https://flake8.readthedocs.io/en/latest/user/using-hooks.html

2.3.0

------------------

- **Feature**: Add ``--output-file`` option to specify a file to write to
instead of ``stdout``.

- **Bug** Fix interleaving of output while using multiprocessing
(`GitLab17`_)

.. _GitLab17: https://gitlab.com/pycqa/flake8/issues/17

2.2.5

------------------

- Flush standard out when using multiprocessing

- Make the check for " flake8: noqa" more strict

2.2.4

------------------

- Fix bugs triggered by turning multiprocessing on by default (again)

Multiprocessing is forcibly disabled in the following cases:

- Passing something in via stdin

- Analyzing a diff

- Using windows

- Fix --install-hook when there are no config files present for pep8 or
flake8.

- Fix how the setuptools command parses excludes in config files

- Fix how the git hook determines which files to analyze (Thanks Chris
Buccella!)

2.2.3

------------------

- Actually turn multiprocessing on by default

2.2.2

------------------

- Re-enable multiprocessing by default while fixing the issue Windows users
were seeing.

2.2.1

------------------

- Turn off multiple jobs by default. To enable automatic use of all CPUs, use
``--jobs=auto``. Fixes 155 and 154.

2.2.0

------------------

- New option ``doctests`` to run Pyflakes checks on doctests too
- New option ``jobs`` to launch multiple jobs in parallel
- Turn on using multiple jobs by default using the CPU count
- Add support for ``python -m flake8`` on Python 2.7 and Python 3
- Fix Git and Mercurial hooks: issues 88, 133, 148 and 149
- Fix crashes with Python 3.4 by upgrading dependencies
- Fix traceback when running tests with Python 2.6
- Fix the setuptools command ``python setup.py flake8`` to read
the project configuration

2.1.0

------------------

- Add FLAKE8_LAZY and FLAKE8_IGNORE environment variable support to git and
mercurial hooks
- Force git and mercurial hooks to repsect configuration in setup.cfg
- Only check staged files if that is specified
- Fix hook file permissions
- Fix the git hook on python 3
- Ignore non-python files when running the git hook
- Ignore .tox directories by default
- Flake8 now reports the column number for PyFlakes messages

2.0.0

------------------

- Pyflakes errors are prefixed by an ``F`` instead of an ``E``
- McCabe complexity warnings are prefixed by a ``C`` instead of a ``W``
- Flake8 supports extensions through entry points
- Due to the above support, we **require** setuptools
- We publish the `documentation <https://flake8.readthedocs.io/>`_
- Fixes 13: pep8, pyflakes and mccabe become external dependencies
- Split run.py into main.py, engine.py and hooks.py for better logic
- Expose our parser for our users
- New feature: Install git and hg hooks automagically
- By relying on pyflakes (0.6.1), we also fixed 45 and 35

1.7.0

------------------

- Fixes part of 35: Exception for no WITHITEM being an attribute of Checker
for Python 3.3
- Support stdin
- Incorporate phd's builtins pull request
- Fix the git hook
- Update pep8.py to the latest version

1.6.2

------------------

- fixed the NameError: global name 'message' is not defined (46)

1.6.1

------------------

- fixed the mercurial hook, a change from a previous patch was not properly
applied
- fixed an assumption about warnings/error messages that caused an exception
to be thrown when McCabe is used

1.6

----------------

- changed the signatures of the ``check_file`` function in flake8/run.py,
``skip_warning`` in flake8/util.py and the ``check``, ``checkPath``
functions in flake8/pyflakes.py.
- fix ``--exclude`` and ``--ignore`` command flags (14, 19)
- fix the git hook that wasn't catching files not already added to the index
(29)
- pre-emptively includes the addition to pep8 to ignore certain lines.
Add `` nopep8`` to the end of a line to ignore it. (37)
- ``check_file`` can now be used without any special prior setup (21)
- unpacking exceptions will no longer cause an exception (20)
- fixed crash on non-existent file (38)

1.5

----------------

- fixed the stdin
- make sure mccabe catches the syntax errors as warnings
- pep8 upgrade
- added max_line_length default value
- added Flake8Command and entry points if setuptools is around
- using the setuptools console wrapper when available

1.4

----------------

- git_hook: Only check staged changes for compliance
- use pep8 1.2

1.3.1

------------------

- fixed support for Python 2.5

1.3

----------------

- fixed false W402 warning on exception blocks.

1.2

----------------

- added a git hook
- now Python 3 compatible
- mccabe and pyflakes have warning codes like pep8 now

1.1

----------------

- fixed the value returned by --version
- allow the flake8: header to be more generic
- fixed the "hg hook raises 'physical lines'" bug
- allow three argument form of raise
- now uses setuptools if available, for 'develop' command

1.0

----------------

- Deactivates by default the complexity checker
- Introduces the complexity option in the HG hook and the command line.

0.9

----------------

- update pep8 version to 0.6.1
- mccabe check: gracefully handle compile failure

0.8

----------------

- fixed hg hook
- discard unexisting files on hook check

0.7

----------------

- Fix pep8 initialization when run through Hg
- Make pep8 short options work when run through the command line
- Skip duplicates when controlling files via Hg

0.6

----------------

- Fix the McCabe metric on some loops