Changelogs » Flake8

PyUp Safety actively tracks 308,767 Python packages for vulnerabilities and notifies you when to upgrade.

Flake8

3.9.2

-------------------
  
  You can view the `3.9.2 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix error message for ``E111`` in ``pycodestyle`` (See also :pull:`1328`,
  :issue:`1327`).
  
  Deprecations
  ~~~~~~~~~~~~
  
  - ``indent_size_str`` is deprecated, use ``str(indent_size)`` instead (See
  also :pull:`1328`, :issue:`1327`).
  
  
  .. all links
  .. _3.9.2 milestone:
  https://github.com/PyCQA/flake8/milestone/40

3.9.1

-------------------
  
  You can view the `3.9.1 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix codes being ignored by plugins utilizing ``extend_default_ignore`` (See
  also :pull:`1317`)
  
  
  .. all links
  .. _3.9.1 milestone:
  https://github.com/PyCQA/flake8/milestone/38

3.9.0

-------------------
  
  You can view the `3.9.0 milestone`_ on GitHub for more details.
  
  New Dependency Information
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  - Pyflakes has been updated to >= 2.3.0, < 2.4.0 (See also :issue:`1006`)
  
  - pycodestyle has been updated to >= 2.7.0, < 2.8.0 (See also :issue:`1007`)
  
  Deprecations
  ~~~~~~~~~~~~
  
  - Drop support for python 3.4 (See also :issue:`1283`)
  
  Features
  ~~~~~~~~
  
  - Add ``--no-show-source`` option to disable ``--show-source`` (See also
  :issue:`995`)
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix handling of ``crlf`` line endings when linting stdin (See also
  :issue:`1002`)
  
  
  .. all links
  .. _3.9.0 milestone:
  https://github.com/pycqa/flake8/milestone/37

3.8.4

-------------------
  
  You can view the `3.8.4 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix multiprocessing errors on platforms without ``sem_open`` syscall.  (See
  also :issue:`1282`)
  
  - Fix skipping of physical checks on the last line of a file which does not
  end in a newline (See also :issue:`997`)
  
  .. all links
  .. _3.8.4 milestone:
  https://github.com/pycqa/flake8/milestone/36

3.8.3

-------------------
  
  You can view the `3.8.3 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Also catch ``SyntaxError`` when tokenizing (See also :issue:`992`,
  :issue:`747`)
  
  - Fix ``--jobs`` default display in ``flake8 --help`` (See also :issue:`1272`,
  :issue:`750`)
  
  .. all links
  .. _3.8.3 milestone:
  https://github.com/pycqa/flake8/milestone/35

3.8.2

-------------------
  
  You can view the `3.8.2 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Improve performance by eliminating unnecessary sort (See also :issue:`991`)
  
  - Improve messaging of ``--jobs`` argument by utilizing ``argparse`` (See also
  :issue:`1269`, :issue:`1110`)
  
  - Fix file configuration options to be relative to the config passed on the
  command line (See also :issue:`442`, :issue:`736`)
  
  - Fix incorrect handling of ``--extend-exclude`` by treating its values as
  files (See also :issue:`1271`, :issue:`738`)
  
  .. all links
  .. _3.8.2 milestone:
  https://github.com/pycqa/flake8/milestone/34

3.8.1

-------------------
  
  You can view the `3.8.1 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix ``--output-file`` (regression in 3.8.0) (See also :issue:`990`,
  :issue:`725`)
  
  
  .. all links
  .. _3.8.1 milestone:
  https://github.com/pycqa/flake8/milestone/33

3.8.0

-------------------
  
  You can view the `3.8.0 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix logical checks which report positions out of bounds (See also
  :issue:`987`, :issue:`723`)
  
  - Fix ``--exclude=.*`` accidentally matching ``.`` and ``..`` (See also
  :issue:`441`, :issue:`360`)
  
  Deprecations
  ~~~~~~~~~~~~
  
  - Add deprecation message for vcs hooks (See also :issue:`985`,
  :issue:`296`)

3.8.0a2

---------------------
  
  You can view the `3.8.0 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix ``type="str"`` optparse options (See also :issue:`984`)

3.8.0a1

---------------------
  
  You can view the `3.8.0 milestone`_ on GitHub for more details.
  
  New Dependency Information
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  - Remove dependency on ``entrypoints`` and add dependency on
  ``importlib-metadata`` (only for ``python<3.8``) (See also :issue:`1297`,
  :issue:`297`)
  
  - Pyflakes has been updated to >= 2.2.0, < 2.3.0 (See also :issue:`982`)
  
  - pycodestyle has been updated to >= 2.6.0a1, < 2.7.0 (See also :issue:`983`)
  
  Features
  ~~~~~~~~
  
  - Add ``--extend-exclude`` option to add to ``--exclude`` without overwriting
  (See also :issue:`1211`, :issue:`1091`)
  
  - Move argument parsing from ``optparse`` to ``argparse`` (See also
  :issue:`939`
  
  - Group plugin options in ``--help`` (See also :issue:`1219`, :issue:`294`)
  
  - Remove parsing of ``verbose`` from configuration files as it was not
  consistently applied (See also :issue:`1245`, :issue:`245`)
  
  - Remove parsing of ``output_file`` from configuration files as it was not
  consistently applied (See also :issue:`1246`)
  
  - Resolve configuration files relative to ``cwd`` instead of common prefix of
  passed filenames.  You may need to change ``flake8 subproject`` to
  ``cd subproject && flake8 .`` (See also :issue:`952`)
  
  - Officially support python3.8 (See also :issue:`963`)
  
  - ``--disable-noqa`` now also disables `` flake8: noqa`` (See also
  :issue:`1296`, :issue:`318`)
  
  - Ensure that a missing file produces a ``E902`` error (See also :issue:`1262`,
  :issue:`328`)
  
  - `` noqa`` comments now apply to all of the lines in an explicit ``\``
  continuation or in a line continued by a multi-line string (See also
  :issue:`1266`, :issue:`621`)
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix ``--exclude=./t.py`` to only match ``t.py`` at the top level (See also
  :issue:`1208`, :issue:`628`)
  
  - Fix ``--show-source`` when a file is indented with tabs (See also
  :issue:`1218`, :issue:`719`)
  
  - Fix crash when ``--max-line-length`` is given a non-integer (See also
  :issue:`939`, :issue:`704`)
  
  - Prevent flip-flopping of ``indent_char`` causing extra ``E101`` errors (See
  also :issue:`949`, `pycodestyle886`_)
  
  - Only enable multiprocessing when the method is ``fork`` fixing issues
  on macos with python3.8+ (See also :issue:`955`, :issue:`315`) (note: this
  fix also landed in 3.7.9)
  
  - ``noqa`` is now only handled by flake8 fixing specific-noqa.  Plugins
  requesting this parameter will always receive ``False`` (See also
  :issue:`1214`, :issue:`1104`)
  
  - Fix duplicate loading of plugins when invoked via ``python -m flake8`` (See
  also :issue:`1297`)
  
  - Fix early exit when ``--exit-zero`` and ``--diff`` are provided and the diff
  is empty (See also :issue:`970`)
  
  - Consistently split lines when ``\f`` is present when reading from stdin (See
  also :issue:`976`, :issue:`202`)
  
  Deprecations
  ~~~~~~~~~~~~
  
  - ``python setup.py flake8`` (setuptools integration) is now deprecated and
  will be removed in a future version (See also :issue:`935`, :issue:`1098`)
  
  - ``type='string'`` (optparse) types are deprecated, use
  ``type=callable`` (argparse) instead.  Support for ``type='string'`` will
  be removed in a future version (See also :issue:`939`)
  
  - ``%default`` in plugin option help text is deprecated, use ``%(default)s``
  instead.  Support for ``%default`` will be removed in a future version (See
  also :issue:`939`)
  
  - optparse-style ``action='callback'`` setting for options is deprecated, use
  argparse action classes instead.  This will be removed in a future version
  (See also :issue:`939`)
  
  
  .. all links
  .. _3.8.0 milestone:
  https://github.com/pycqa/flake8/milestone/31
  
  .. issue links
  .. _pycodestyle886:
  https://github.com/PyCQA/pycodestyle/issues/886

3.7.9

-------------------
  
  You can view the `3.7.9 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Disable multiprocessing when the multiprocessing method is ``spawn`` (such
  as on macos in python3.8) (See also :issue:`956`, :issue:`315`)
  
  
  .. all links
  .. _3.7.9 milestone:
  https://github.com/pycqa/flake8/milestone/32

3.7.8

-------------------
  
  You can view the `3.7.8 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix handling of ``Application.parse_preliminary_options_and_args`` when
  argv is an empty list (See also :issue:`1303`, :issue:`694`)
  
  - Fix crash when a file parses but fails to tokenize (See also :issue:`1210`,
  :issue:`1088`)
  
  - Log the full traceback on plugin exceptions (See also :issue:`926`)
  
  - Fix `` noqa: ...`` comments with multi-letter codes (See also :issue:`931`,
  :issue:`1101`)
  
  
  .. all links
  .. _3.7.8 milestone:
  https://github.com/pycqa/flake8/milestone/30

3.7.7

-------------------
  
  You can view the `3.7.7 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix crashes in plugins causing ``flake8`` to hang while unpickling errors
  (See also :issue:`1206`, :issue:`681`)
  
  
  .. all links
  .. _3.7.7 milestone:
  https://github.com/pycqa/flake8/milestone/29

3.7.6

-------------------
  
  You can view the `3.7.6 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix ``--per-file-ignores`` for multi-letter error codes (See also
  :issue:`1203`, :issue:`683`)
  
  - Improve flake8 speed when only 1 filename is passed (See also :issue:`1204`)
  
  
  .. all links
  .. _3.7.6 milestone:
  https://github.com/pycqa/flake8/milestone/28

3.7.5

-------------------
  
  You can view the `3.7.5 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix reporting of pyflakes "referenced before assignment" error (See also
  :issue:`923`, :issue:`679`)
  
  
  .. all links
  .. _3.7.5 milestone:
  https://github.com/pycqa/flake8/milestone/27

3.7.4

-------------------
  
  You can view the `3.7.4 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix performance regression with lots of ``per-file-ignores`` and errors
  (See also :issue:`922`, :issue:`677`)
  
  
  .. all links
  .. _3.7.4 milestone:
  https://github.com/pycqa/flake8/milestone/26

3.7.3

-------------------
  
  You can view the `3.7.3 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix imports of ``typing`` in python 3.5.0 / 3.5.1 (See also :issue:`1199`,
  :issue:`674`)
  
  - Fix ``flake8 --statistics`` (See also :issue:`920`, :issue:`675`)
  
  - Gracefully ignore ``flake8-per-file-ignores`` plugin if installed (See also
  :issue:`1201`, :issue:`671`)
  
  - Improve error message for malformed ``per-file-ignores`` (See also
  :issue:`921`, :issue:`288`)
  
  
  .. all links
  .. _3.7.3 milestone:
  https://github.com/pycqa/flake8/milestone/25

3.7.2

-------------------
  
  You can view the `3.7.2 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix broken ``flake8 --diff`` (regressed in 3.7.0) (See also :issue:`919`,
  :issue:`667`)
  
  - Fix typo in plugin exception reporting (See also :issue:`908`,
  :issue:`668`)
  
  - Fix ``AttributeError`` while attempting to use the legacy api (regressed in
  3.7.0) (See also :issue:`1198`, :issue:`673`)
  
  .. all links
  .. _3.7.2 milestone:
  https://github.com/pycqa/flake8/milestone/24

3.7.1

-------------------
  
  You can view the `3.7.1 milestone`_ on GitHub for more details.
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Fix capitalized filenames in ``per-file-ignores`` setting (See also
  :issue:`917`, :issue:`287`)
  
  .. all links
  .. _3.7.1 milestone:
  https://github.com/pycqa/flake8/milestone/23

3.7.0

-------------------
  
  You can view the `3.7.0 milestone`_ on GitHub for more details.
  
  New Dependency Information
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  - Add dependency on ``entrypoints`` >= 0.3, < 0.4 (See also :issue:`897`,
  :issue:`1197`)
  
  - Pyflakes has been updated to >= 2.1.0, < 2.2.0 (See also :issue:`912`,
  :issue:`913`)
  
  - pycodestyle has been updated to >= 2.5.0, < 2.6.0 (See also :issue:`915`)
  
  Features
  ~~~~~~~~
  
  - Add support for ``per-file-ignores`` (See also :issue:`892`, :issue:`511`,
  :issue:`911`, :issue:`277`)
  
  - Enable use of ``float`` and ``complex`` option types (See also :issue:`894`,
  :issue:`258`)
  
  - Improve startup performance by switching from ``pkg_resources`` to
  ``entrypoints`` (See also :issue:`897`)
  
  - Add metadata for use through the `pre-commit`_ git hooks framework (See also
  :issue:`901`, :issue:`1196`)
  
  - Allow physical line checks to return more than one result (See also
  :issue:`902`)
  
  - Allow `` noqa:X123`` comments without space between the colon and codes
  list (See also :issue:`906`, :issue:`276`)
  
  - Remove broken and unused ``flake8.listen`` plugin type (See also
  :issue:`907`, :issue:`663`)
  
  .. all links
  .. _3.7.0 milestone:
  https://github.com/pycqa/flake8/milestone/22
  .. _pre-commit:
  https://pre-commit.com/

3.6.0

-------------------
  
  You can view the `3.6.0 milestone`_ on GitHub for more details.
  
  New Dependency Information
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  - pycodestyle has been updated to >= 2.4.0, < 2.5.0 (See also :issue:`1068`,
  :issue:`652`, :issue:`869`, :issue:`881`, :issue:`1239`)
  
  - Pyflakes has been updated to >= 2.0.0, < 2.1.0 (See also :issue:`655`,
  :issue:`883`)
  
  - flake8 requires python 2.x >= 2.7 or python 3.x >= 3.4 (See also
  :issue:`876`)
  
  Features
  ~~~~~~~~
  
  - Add ``paths`` to allow local plugins to exist outside of ``sys.path`` (See
  also :issue:`1067`, :issue:`1237`)
  
  - Copy ``setup.cfg`` files to the temporary git hook execution directory (See
  also :issue:`1299`)
  
  - Only skip a file if `` flake8: noqa`` is on a line by itself (See also
  :issue:`259`, :issue:`873`)
  
  - Provide a better user experience for broken plugins (See also :issue:`1178`)
  
  - Report ``E902`` when a file passed on the command line does not exist (See
  also :issue:`645`, :issue:`878`)
  
  - Add ``--extend-ignore`` for extending the default ``ignore`` instead of
  overriding it (See also :issue:`1061`, :issue:`1180`)
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Respect a formatter's newline setting when printing (See also :issue:`1238`)
  
  - Fix leaking of processes in the legacy api (See also :issue:`650`,
  :issue:`879`)
  
  - Fix a ``SyntaxWarning`` for an invalid escape sequence (See also
  :issue:`1186`)
  
  - Fix ``DeprecationWarning`` due to import of ``abc`` classes from the
  ``collections`` module (See also :issue:`887`)
  
  - Defer ``setuptools`` import to improve flake8 startup time (See also
  :issue:`1190`)
  
  - Fix inconsistent line endings in ``FileProcessor.lines`` when running under
  python 3.x (See also :issue:`263`, :issue:`889`)
  
  
  .. all links
  .. _3.6.0 milestone:
  https://github.com/pycqa/flake8/milestone/20

3.5.0

-------------------
  
  You can view the `3.5.0 milestone`_ on GitHub for more details.
  
  New Dependency Information
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  - Allow for PyFlakes 1.6.0 (See also :issue:`1058`)
  
  - Start using new PyCodestyle checks for bare excepts and ambiguous identifier
  (See also :issue:`611`)
  
  Features
  ~~~~~~~~
  
  - Print out information about configuring VCS hooks (See also :issue:`586`)
  
  - Allow users to develop plugins "local" to a repository without using
  setuptools. See our documentation on local plugins for more information.
  (See also :issue:`608`)
  
  Bugs Fixed
  ~~~~~~~~~~
  
  - Catch and helpfully report ``UnicodeDecodeError``\ s when parsing
  configuration files. (See also :issue:`609`)
  
  
  .. all links
  .. _3.5.0 milestone:
  https://github.com/pycqa/flake8/milestone/19

3.4.1

-------------------
  
  You can view the `3.4.1 milestone`_ on GitHub for more details.
  
  - Fix minor regression when users specify only a ``--select`` list with items
  in the enabled/extended select list.  (See also :issue:`605`)
  
  .. all links
  .. _3.4.1 milestone:
  https://github.com/pycqa/flake8/milestone/18

3.4.0

-------------------
  
  You can view the `3.4.0 milestone`_ on GitHub for more details.
  
  - Refine logic around ``--select`` and ``--ignore`` when combined with the
  default values for each. (See also :issue:`572`)
  
  - Handle spaces as an alternate separate for error codes, e.g.,
  ``--ignore 'E123 E234'``. (See also :issue:`580`)
  
  - Filter out empty select and ignore codes, e.g., ``--ignore E123,,E234``.
  (See also :issue:`581`)
  
  - Specify dependencies appropriately in ``setup.py`` (See also :issue:`592`)
  
  - Fix bug in parsing ``--quiet`` and ``--verbose`` from config files.
  (See also :issue:`1169`)
  
  - Remove unused import of ``os`` in the git hook template (See also
  :issue:`1170`)
  
  .. all links
  .. _3.4.0 milestone:
  https://github.com/pycqa/flake8/milestone/17

3.3.0

-------------------
  
  You can view the `3.3.0 milestone`_ on GitHub 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 :issue:`829`)
  
  - Display the local file path instead of the temporary file path when
  using the git hook. (See also :issue:`176`)
  
  - Add methods to Report class that will be called when Flake8 starts and
  finishes processing a file. (See also :issue:`183`)
  
  - Fix problem where hooks should only check \*.py files. (See also
  :issue:`200`)
  
  - Fix handling of SyntaxErrors that do not include physical line information.
  (See also :issue:`542`)
  
  - Update upper bound on PyFlakes to allow for PyFlakes 1.5.0.  (See also
  :issue:`549`)
  
  - Update setuptools integration to less eagerly deduplicate packages.
  (See also :issue:`552`)
  
  - Force ``flake8 --version`` to be repeatable between invocations. (See also
  :issue:`554`)
  
  .. all links
  .. _3.3.0 milestone:
  https://github.com/pycqa/flake8/milestone/16

3.2.1

-------------------
  
  You can view the `3.2.1 milestone`_ on GitHub for more details.
  
  - Fix subtle bug when deciding whether to report an on-by-default's violation
  (See also :issue:`189`)
  
  - Fix another bug around SyntaxErrors not being reported at the right column
  and row (See also :issue:`191` and :issue:`169` 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
  :issue:`198`)
  
  .. links
  .. _3.2.1 milestone:
  https://github.com/pycqa/flake8/milestone/15

3.2.0

-------------------
  
  You can view the `3.2.0 milestone`_ on GitHub for more details.
  
  - Allow for pycodestyle 2.2.0 which fixes a bug in E305 (See also
  :issue:`188`)
  
  .. links
  .. _3.2.0 milestone:
  https://github.com/pycqa/flake8/milestone/14

3.1.1

-------------------
  
  You can view the `3.1.1 milestone`_ on GitHub for more details.
  
  - Do not attempt to install/distribute a ``man`` file with the Python package;
  leave this for others to do. (See also :issue:`186`)
  
  - Fix packaging bug where wheel version constraints specified in setup.cfg did
  not match the constraints in setup.py. (See also :issue:`187`)
  
  .. links
  .. _3.1.1 milestone:
  https://github.com/pycqa/flake8/milestone/13

3.1.0

-------------------
  
  You can view the `3.1.0 milestone`_ on GitHub 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 :issue:`142`, :issue:`150`, :issue:`155`)
  
  - Avoid unhandled exceptions when dealing with SyntaxErrors. (See also
  :issue:`146`, :issue:`170`)
  
  - Exit early if the value for ``--diff`` is empty. (See also :issue:`158`)
  
  - Handle empty ``--stdin-display-name`` values. (See also :issue:`167`)
  
  - 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 :issue:`169`)
  
  - 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 :issue:`171`)
  
  - Fix problems around ``--select`` and ``--ignore`` behaviour that prevented
  codes that were neither explicitly selected nor explicitly ignored from
  being reported. (See also :issue:`174`)
  
  - 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 :issue:`177`)
  
  - Add new File Processor attribute, ``previous_unindented_logical_line`` to
  accommodate pycodestyle 2.1.0. (See also :issue:`178`)
  
  - When something goes wrong, exit non-zero. (See also :issue:`180`,
  :issue:`141`)
  
  - 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://github.com/pycqa/flake8/milestone/12

3.0.4

-------------------
  
  - Side-step a Pickling Error when using Flake8 with multiprocessing on Unix
  systems. (See also :issue:`1014`)
  
  - Fix an Attribute Error raised when dealing with Invalid Syntax. (See also
  :issue:`539`)
  
  - Fix an unhandled Syntax Error when tokenizing files. (See also
  :issue:`540`)

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 :issue:`1014`)
  
  - Fix `` noqa`` comments followed by a ``:`` and explanation broken by
  3.0.0 (See also :issue:`1025`)
  
  - Always open our output file in append mode so we do not overwrite log
  messages. (See also :issue:`535`)
  
  - When normalizing path values read from configuration, keep in context the
  directory where the configuration was found so that relative paths work.
  (See also :issue:`1036`)
  
  - Fix issue where users were unable to ignore plugin errors that were on
  by default. (See also :issue:`1037`)
  
  - Fix our legacy API StyleGuide's ``init_report`` method to actually override
  the previous formatter. (See also :issue:`136`)
  
  
  .. links
  .. _this Python bug report:
  https://bugs.python.org/issue27649

3.0.2

-------------------
  
  - Fix local config file discovery.  (See also :issue:`528`)
  
  - 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 :issue:`530`)

3.0.1

-------------------
  
  - Fix regression in handling of `` noqa`` for multiline strings.
  (See also :issue:`1024`)
  
  - Fix regression in handling of ``--output-file`` when not also using
  ``--verbose``. (See also :issue:`1026`)
  
  - Fix regression in handling of ``--quiet``. (See also :issue:`1026`)
  
  - Fix regression in handling of ``--statistics``. (See also :issue:`1026`)

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
  (:issue:`458`)
  
  - **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. (:issue:`460`, :issue:`462`)

2.5.0

------------------
  
  - **Improvement** Raise cap on PyFlakes for Python 3.5 support
  
  - **Improvement** Avoid deprecation warnings when loading extensions
  (:issue:`102`, :issue:`445`)
  
  - **Improvement** Separate logic to enable "off-by-default" extensions
  (:issue:`110`)
  
  - **Bug** Properly parse options to setuptools Flake8 command (:issue:`408`)
  
  - **Bug** Fix exceptions when output on stdout is truncated before Flake8
  finishes writing the output (:issue:`112`)
  
  - **Bug** Fix error on OS X where Flake8 can no longer acquire or create new
  semaphores (:issue:`117`)

2.4.1

------------------
  
  - **Bug** Do not raise a ``SystemError`` unless there were errors in the
  setuptools command. (:issue:`82`, :issue:`390`)
  
  - **Bug** Do not verify dependencies of extensions loaded via entry-points.
  
  - **Improvement** Blacklist versions of pep8 we know are broken

2.4.0

------------------
  
  - **Bug** Print filenames when using multiprocessing and ``-q`` option.
  (:issue:`74`)
  
  - **Bug** Put upper cap on dependencies. The caps for 2.4.0 are:
  
  - ``pep8 < 1.6`` (Related to :issue:`78`)
  
  - ``mccabe < 0.4``
  
  - ``pyflakes < 0.9``
  
  See also :issue:`75`
  
  - **Bug** Files excluded in a config file were not being excluded when flake8
  was run from a git hook. (:issue:`2`)
  
  - **Improvement** Print warnings for users who are providing mutually
  exclusive options to flake8. (:issue:`51`, :issue:`386`)
  
  - **Feature** Allow git hook configuration to live in ``.git/config``.
  See the updated `VCS hooks docs`_ for more details. (:issue:`387`)
  
  .. _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
  (:issue:`60`)

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