diff --git a/example-plugin/src/flake8_example_plugin/__init__.py b/example-plugin/src/flake8_example_plugin/__init__.py index 47851da..8de9c4d 100644 --- a/example-plugin/src/flake8_example_plugin/__init__.py +++ b/example-plugin/src/flake8_example_plugin/__init__.py @@ -1,4 +1,5 @@ """Module for an example Flake8 plugin.""" + from __future__ import annotations from .off_by_default import ExampleTwo diff --git a/example-plugin/src/flake8_example_plugin/off_by_default.py b/example-plugin/src/flake8_example_plugin/off_by_default.py index d140ca1..56e781f 100644 --- a/example-plugin/src/flake8_example_plugin/off_by_default.py +++ b/example-plugin/src/flake8_example_plugin/off_by_default.py @@ -1,4 +1,5 @@ """Our first example plugin.""" + from __future__ import annotations diff --git a/example-plugin/src/flake8_example_plugin/on_by_default.py b/example-plugin/src/flake8_example_plugin/on_by_default.py index d2da126..8f5c818 100644 --- a/example-plugin/src/flake8_example_plugin/on_by_default.py +++ b/example-plugin/src/flake8_example_plugin/on_by_default.py @@ -1,4 +1,5 @@ """Our first example plugin.""" + from __future__ import annotations diff --git a/setup.cfg b/setup.cfg index a6b5a5e..dc967d3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -16,7 +16,6 @@ classifiers = Environment :: Console Framework :: Flake8 Intended Audience :: Developers - License :: OSI Approved :: MIT License Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3 :: Only diff --git a/setup.py b/setup.py index 253a22e..548a6d8 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ """Packaging logic for Flake8.""" + from __future__ import annotations import os diff --git a/src/flake8/__init__.py b/src/flake8/__init__.py index db29166..9517d70 100644 --- a/src/flake8/__init__.py +++ b/src/flake8/__init__.py @@ -9,6 +9,7 @@ This module .. autofunction:: flake8.configure_logging """ + from __future__ import annotations import logging diff --git a/src/flake8/__main__.py b/src/flake8/__main__.py index 8f7e7c9..d318d66 100644 --- a/src/flake8/__main__.py +++ b/src/flake8/__main__.py @@ -1,4 +1,5 @@ """Module allowing for ``python -m flake8 ...``.""" + from __future__ import annotations from flake8.main.cli import main diff --git a/src/flake8/api/__init__.py b/src/flake8/api/__init__.py index c5f9711..7993de6 100644 --- a/src/flake8/api/__init__.py +++ b/src/flake8/api/__init__.py @@ -3,4 +3,5 @@ This is the only submodule in Flake8 with a guaranteed stable API. All other submodules are considered internal only and are subject to change. """ + from __future__ import annotations diff --git a/src/flake8/api/legacy.py b/src/flake8/api/legacy.py index 446df29..b94a771 100644 --- a/src/flake8/api/legacy.py +++ b/src/flake8/api/legacy.py @@ -3,6 +3,7 @@ Previously, users would import :func:`get_style_guide` from ``flake8.engine``. In 3.0 we no longer have an "engine" module but we maintain the API from it. """ + from __future__ import annotations import argparse diff --git a/src/flake8/checker.py b/src/flake8/checker.py index c52955d..b4ee412 100644 --- a/src/flake8/checker.py +++ b/src/flake8/checker.py @@ -1,4 +1,5 @@ """Checker Manager and Checker classes.""" + from __future__ import annotations import argparse diff --git a/src/flake8/defaults.py b/src/flake8/defaults.py index 57abda1..d895c54 100644 --- a/src/flake8/defaults.py +++ b/src/flake8/defaults.py @@ -1,4 +1,5 @@ """Constants that define defaults.""" + from __future__ import annotations import re diff --git a/src/flake8/discover_files.py b/src/flake8/discover_files.py index da28ba5..aecb85a 100644 --- a/src/flake8/discover_files.py +++ b/src/flake8/discover_files.py @@ -1,4 +1,5 @@ """Functions related to discovering paths.""" + from __future__ import annotations import logging diff --git a/src/flake8/exceptions.py b/src/flake8/exceptions.py index 18646e7..533923e 100644 --- a/src/flake8/exceptions.py +++ b/src/flake8/exceptions.py @@ -1,4 +1,5 @@ """Exception classes for all of Flake8.""" + from __future__ import annotations diff --git a/src/flake8/formatting/__init__.py b/src/flake8/formatting/__init__.py index 732d0b6..f6bae56 100644 --- a/src/flake8/formatting/__init__.py +++ b/src/flake8/formatting/__init__.py @@ -1,2 +1,3 @@ """Submodule containing the default formatters for Flake8.""" + from __future__ import annotations diff --git a/src/flake8/formatting/_windows_color.py b/src/flake8/formatting/_windows_color.py index a06fdb9..6ee96ba 100644 --- a/src/flake8/formatting/_windows_color.py +++ b/src/flake8/formatting/_windows_color.py @@ -2,6 +2,7 @@ See: https://github.com/pre-commit/pre-commit/blob/cb40e96/pre_commit/color.py """ + from __future__ import annotations import sys diff --git a/src/flake8/formatting/base.py b/src/flake8/formatting/base.py index d986d65..257f4b7 100644 --- a/src/flake8/formatting/base.py +++ b/src/flake8/formatting/base.py @@ -1,4 +1,5 @@ """The base class and interface for all formatting plugins.""" + from __future__ import annotations import argparse diff --git a/src/flake8/formatting/default.py b/src/flake8/formatting/default.py index b5d08ff..4386476 100644 --- a/src/flake8/formatting/default.py +++ b/src/flake8/formatting/default.py @@ -1,4 +1,5 @@ """Default formatting class for Flake8.""" + from __future__ import annotations from flake8.formatting import base diff --git a/src/flake8/main/__init__.py b/src/flake8/main/__init__.py index 85bcff4..55528b0 100644 --- a/src/flake8/main/__init__.py +++ b/src/flake8/main/__init__.py @@ -1,2 +1,3 @@ """Module containing the logic for the Flake8 entry-points.""" + from __future__ import annotations diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py index 4704cbd..ea6b961 100644 --- a/src/flake8/main/application.py +++ b/src/flake8/main/application.py @@ -1,4 +1,5 @@ """Module containing the application logic for Flake8.""" + from __future__ import annotations import argparse diff --git a/src/flake8/main/cli.py b/src/flake8/main/cli.py index 1a52f36..d10c7b3 100644 --- a/src/flake8/main/cli.py +++ b/src/flake8/main/cli.py @@ -1,4 +1,5 @@ """Command-line implementation of flake8.""" + from __future__ import annotations import sys diff --git a/src/flake8/main/debug.py b/src/flake8/main/debug.py index c3a8b0b..389523d 100644 --- a/src/flake8/main/debug.py +++ b/src/flake8/main/debug.py @@ -1,4 +1,5 @@ """Module containing the logic for our debugging logic.""" + from __future__ import annotations import platform diff --git a/src/flake8/main/options.py b/src/flake8/main/options.py index 9d57321..80c02a3 100644 --- a/src/flake8/main/options.py +++ b/src/flake8/main/options.py @@ -1,4 +1,5 @@ """Contains the logic for all of the default options for Flake8.""" + from __future__ import annotations import argparse diff --git a/src/flake8/options/__init__.py b/src/flake8/options/__init__.py index 3578223..b98a2e7 100644 --- a/src/flake8/options/__init__.py +++ b/src/flake8/options/__init__.py @@ -10,4 +10,5 @@ to aggregate configuration into one object used by plugins and Flake8. """ + from __future__ import annotations diff --git a/src/flake8/options/aggregator.py b/src/flake8/options/aggregator.py index 999161a..299b667 100644 --- a/src/flake8/options/aggregator.py +++ b/src/flake8/options/aggregator.py @@ -3,6 +3,7 @@ This holds the logic that uses the collected and merged config files and applies the user-specified command-line configuration on top of it. """ + from __future__ import annotations import argparse diff --git a/src/flake8/options/config.py b/src/flake8/options/config.py index b51949c..73d33fb 100644 --- a/src/flake8/options/config.py +++ b/src/flake8/options/config.py @@ -1,4 +1,5 @@ """Config handling logic for Flake8.""" + from __future__ import annotations import configparser diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index cb195fe..cc6d5f3 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -1,4 +1,5 @@ """Option handling and Option management logic.""" + from __future__ import annotations import argparse diff --git a/src/flake8/options/parse_args.py b/src/flake8/options/parse_args.py index ff5e08f..bdb1930 100644 --- a/src/flake8/options/parse_args.py +++ b/src/flake8/options/parse_args.py @@ -1,4 +1,5 @@ """Procedure for parsing args, config, loading plugins.""" + from __future__ import annotations import argparse diff --git a/src/flake8/plugins/__init__.py b/src/flake8/plugins/__init__.py index b540313..da6b43d 100644 --- a/src/flake8/plugins/__init__.py +++ b/src/flake8/plugins/__init__.py @@ -1,2 +1,3 @@ """Submodule of built-in plugins and plugin managers.""" + from __future__ import annotations diff --git a/src/flake8/plugins/finder.py b/src/flake8/plugins/finder.py index 88b66a0..7257b54 100644 --- a/src/flake8/plugins/finder.py +++ b/src/flake8/plugins/finder.py @@ -1,4 +1,5 @@ """Functions related to finding and loading plugins.""" + from __future__ import annotations import configparser diff --git a/src/flake8/plugins/pycodestyle.py b/src/flake8/plugins/pycodestyle.py index cd760dc..fb04f47 100644 --- a/src/flake8/plugins/pycodestyle.py +++ b/src/flake8/plugins/pycodestyle.py @@ -1,4 +1,5 @@ """Generated using ./bin/gen-pycodestyle-plugin.""" + # fmt: off from __future__ import annotations diff --git a/src/flake8/plugins/pyflakes.py b/src/flake8/plugins/pyflakes.py index 66d8c1c..b105d56 100644 --- a/src/flake8/plugins/pyflakes.py +++ b/src/flake8/plugins/pyflakes.py @@ -1,4 +1,5 @@ """Plugin built-in to Flake8 to treat pyflakes as a plugin.""" + from __future__ import annotations import argparse diff --git a/src/flake8/plugins/reporter.py b/src/flake8/plugins/reporter.py index a5749c0..75db99f 100644 --- a/src/flake8/plugins/reporter.py +++ b/src/flake8/plugins/reporter.py @@ -1,4 +1,5 @@ """Functions for constructing the requested report plugin.""" + from __future__ import annotations import argparse diff --git a/src/flake8/processor.py b/src/flake8/processor.py index ccb4c57..9048ebe 100644 --- a/src/flake8/processor.py +++ b/src/flake8/processor.py @@ -1,4 +1,5 @@ """Module containing our file processor that tokenizes a file for checks.""" + from __future__ import annotations import argparse @@ -380,9 +381,9 @@ class FileProcessor: return # If the first byte of the file is a UTF-8 BOM, strip it - if self.lines[0][:1] == "\uFEFF": + if self.lines[0][:1] == "\ufeff": self.lines[0] = self.lines[0][1:] - elif self.lines[0][:3] == "\xEF\xBB\xBF": + elif self.lines[0][:3] == "\xef\xbb\xbf": self.lines[0] = self.lines[0][3:] diff --git a/src/flake8/statistics.py b/src/flake8/statistics.py index 5a22254..469d831 100644 --- a/src/flake8/statistics.py +++ b/src/flake8/statistics.py @@ -1,4 +1,5 @@ """Statistic collection logic for Flake8.""" + from __future__ import annotations from collections.abc import Generator diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index f72e6d8..49f4daa 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -1,4 +1,5 @@ """Implementation of the StyleGuide used by Flake8.""" + from __future__ import annotations import argparse diff --git a/src/flake8/utils.py b/src/flake8/utils.py index 67db33f..ca97d31 100644 --- a/src/flake8/utils.py +++ b/src/flake8/utils.py @@ -1,4 +1,5 @@ """Utility methods for flake8.""" + from __future__ import annotations import fnmatch as _fnmatch diff --git a/src/flake8/violation.py b/src/flake8/violation.py index ae1631a..d9fbef9 100644 --- a/src/flake8/violation.py +++ b/src/flake8/violation.py @@ -1,4 +1,5 @@ """Contains the Violation error class used internally.""" + from __future__ import annotations import functools diff --git a/tests/__init__.py b/tests/__init__.py index ee1f2a0..fc6434e 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,2 +1,3 @@ """This is here because mypy doesn't understand PEP 420.""" + from __future__ import annotations diff --git a/tests/conftest.py b/tests/conftest.py index ac413fb..40b6c6a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ """Test configuration for py.test.""" + from __future__ import annotations import sys diff --git a/tests/integration/subdir/aplugin.py b/tests/integration/subdir/aplugin.py index 97b06a9..11450a9 100644 --- a/tests/integration/subdir/aplugin.py +++ b/tests/integration/subdir/aplugin.py @@ -1,4 +1,5 @@ """Module that is off sys.path by default, for testing local-plugin-paths.""" + from __future__ import annotations diff --git a/tests/integration/test_aggregator.py b/tests/integration/test_aggregator.py index 006ac5f..a8f5f18 100644 --- a/tests/integration/test_aggregator.py +++ b/tests/integration/test_aggregator.py @@ -1,4 +1,5 @@ """Test aggregation of config files and command-line options.""" + from __future__ import annotations import os diff --git a/tests/integration/test_api_legacy.py b/tests/integration/test_api_legacy.py index b386bd5..d30fb4a 100644 --- a/tests/integration/test_api_legacy.py +++ b/tests/integration/test_api_legacy.py @@ -1,4 +1,5 @@ """Integration tests for the legacy api.""" + from __future__ import annotations from flake8.api import legacy diff --git a/tests/integration/test_checker.py b/tests/integration/test_checker.py index a585f5a..2da53a8 100644 --- a/tests/integration/test_checker.py +++ b/tests/integration/test_checker.py @@ -1,4 +1,5 @@ """Integration tests for the checker submodule.""" + from __future__ import annotations import importlib.metadata diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index 68b93cb..6fa1741 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -1,4 +1,5 @@ """Integration tests for the main entrypoint of flake8.""" + from __future__ import annotations import json diff --git a/tests/integration/test_plugins.py b/tests/integration/test_plugins.py index 471cab8..a9b6834 100644 --- a/tests/integration/test_plugins.py +++ b/tests/integration/test_plugins.py @@ -1,4 +1,5 @@ """Integration tests for plugin loading.""" + from __future__ import annotations import sys diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py index 0f8386a..a1e58ad 100644 --- a/tests/unit/conftest.py +++ b/tests/unit/conftest.py @@ -1,4 +1,5 @@ """Shared fixtures between unit tests.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_application.py b/tests/unit/test_application.py index 04147ec..f0a3796 100644 --- a/tests/unit/test_application.py +++ b/tests/unit/test_application.py @@ -1,4 +1,5 @@ """Tests for the Application class.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_base_formatter.py b/tests/unit/test_base_formatter.py index 5b57335..b7d259e 100644 --- a/tests/unit/test_base_formatter.py +++ b/tests/unit/test_base_formatter.py @@ -1,4 +1,5 @@ """Tests for the BaseFormatter object.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_checker_manager.py b/tests/unit/test_checker_manager.py index eecba3b..8c44f43 100644 --- a/tests/unit/test_checker_manager.py +++ b/tests/unit/test_checker_manager.py @@ -1,4 +1,5 @@ """Tests for the Manager object for FileCheckers.""" + from __future__ import annotations import errno diff --git a/tests/unit/test_decision_engine.py b/tests/unit/test_decision_engine.py index d543d5e..95ec1ea 100644 --- a/tests/unit/test_decision_engine.py +++ b/tests/unit/test_decision_engine.py @@ -1,4 +1,5 @@ """Tests for the flake8.style_guide.DecisionEngine class.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_exceptions.py b/tests/unit/test_exceptions.py index 99b298b..6998c04 100644 --- a/tests/unit/test_exceptions.py +++ b/tests/unit/test_exceptions.py @@ -1,4 +1,5 @@ """Tests for the flake8.exceptions module.""" + from __future__ import annotations import pickle diff --git a/tests/unit/test_file_checker.py b/tests/unit/test_file_checker.py index 627a936..3098382 100644 --- a/tests/unit/test_file_checker.py +++ b/tests/unit/test_file_checker.py @@ -1,4 +1,5 @@ """Unit tests for the FileChecker class.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_file_processor.py b/tests/unit/test_file_processor.py index a90c628..30516a5 100644 --- a/tests/unit/test_file_processor.py +++ b/tests/unit/test_file_processor.py @@ -1,4 +1,5 @@ """Tests for the FileProcessor class.""" + from __future__ import annotations import ast @@ -52,8 +53,8 @@ def test_read_lines_unknown_encoding(tmpdir, default_options): @pytest.mark.parametrize( "first_line", [ - '\xEF\xBB\xBF"""Module docstring."""\n', - '\uFEFF"""Module docstring."""\n', + '\xef\xbb\xbf"""Module docstring."""\n', + '\ufeff"""Module docstring."""\n', ], ) def test_strip_utf_bom(first_line, default_options): @@ -67,8 +68,8 @@ def test_strip_utf_bom(first_line, default_options): @pytest.mark.parametrize( "lines, expected", [ - (['\xEF\xBB\xBF"""Module docstring."""\n'], False), - (['\uFEFF"""Module docstring."""\n'], False), + (['\xef\xbb\xbf"""Module docstring."""\n'], False), + (['\ufeff"""Module docstring."""\n'], False), (["#!/usr/bin/python", "# flake8 is great", "a = 1"], False), (["#!/usr/bin/python", "# flake8: noqa", "a = 1"], True), (["#!/usr/bin/python", "# flake8:noqa", "a = 1"], True), diff --git a/tests/unit/test_filenameonly_formatter.py b/tests/unit/test_filenameonly_formatter.py index 77f75b9..2ccf23f 100644 --- a/tests/unit/test_filenameonly_formatter.py +++ b/tests/unit/test_filenameonly_formatter.py @@ -1,4 +1,5 @@ """Tests for the FilenameOnly formatter object.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_legacy_api.py b/tests/unit/test_legacy_api.py index c6af630..aa40810 100644 --- a/tests/unit/test_legacy_api.py +++ b/tests/unit/test_legacy_api.py @@ -1,4 +1,5 @@ """Tests for Flake8's legacy API.""" + from __future__ import annotations from unittest import mock diff --git a/tests/unit/test_nothing_formatter.py b/tests/unit/test_nothing_formatter.py index 76929fd..b6c6e23 100644 --- a/tests/unit/test_nothing_formatter.py +++ b/tests/unit/test_nothing_formatter.py @@ -1,4 +1,5 @@ """Tests for the Nothing formatter obbject.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_option.py b/tests/unit/test_option.py index 4b3070d..8e008b7 100644 --- a/tests/unit/test_option.py +++ b/tests/unit/test_option.py @@ -1,4 +1,5 @@ """Unit tests for flake8.options.manager.Option.""" + from __future__ import annotations import functools diff --git a/tests/unit/test_option_manager.py b/tests/unit/test_option_manager.py index 92266f3..87a76ff 100644 --- a/tests/unit/test_option_manager.py +++ b/tests/unit/test_option_manager.py @@ -1,4 +1,5 @@ """Unit tests for flake.options.manager.OptionManager.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_pyflakes_codes.py b/tests/unit/test_pyflakes_codes.py index 444008a..f9bca9b 100644 --- a/tests/unit/test_pyflakes_codes.py +++ b/tests/unit/test_pyflakes_codes.py @@ -1,4 +1,5 @@ """Tests of pyflakes monkey patches.""" + from __future__ import annotations import ast diff --git a/tests/unit/test_statistics.py b/tests/unit/test_statistics.py index 261f360..9f60666 100644 --- a/tests/unit/test_statistics.py +++ b/tests/unit/test_statistics.py @@ -1,4 +1,5 @@ """Tests for the statistics module in Flake8.""" + from __future__ import annotations import pytest diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index 94fcb26..c8eae3d 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -1,4 +1,5 @@ """Tests for the flake8.style_guide.StyleGuide class.""" + from __future__ import annotations import argparse diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 82eef63..773b7c9 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -1,4 +1,5 @@ """Tests for flake8's utils module.""" + from __future__ import annotations import io diff --git a/tests/unit/test_violation.py b/tests/unit/test_violation.py index 1b4852b..d7f0b4b 100644 --- a/tests/unit/test_violation.py +++ b/tests/unit/test_violation.py @@ -1,4 +1,5 @@ """Tests for the flake8.violation.Violation class.""" + from __future__ import annotations from unittest import mock