Merge branch 'remove_setuptools_command' into 'master'

remove flake8 setuptools command

See merge request pycqa/flake8!470
This commit is contained in:
Anthony Sottile 2021-03-30 03:17:26 +00:00
commit 089950e2aa
5 changed files with 0 additions and 167 deletions

View file

@ -47,21 +47,6 @@ both cases, however, you end up in :func:`flake8.main.cli.main`. This is the
primary way that users will end up starting Flake8. This function creates an primary way that users will end up starting Flake8. This function creates an
instance of |Application|. instance of |Application|.
via Setuptools
--------------
If you're invoking |Flake8| from your ``setup.py`` then you actually end up in
:meth:`flake8.main.setuptools_command.Flake8.run`. This then collects the
files that are included in the package information and creates an instance of
|Application|.
via Git or Mercurial
--------------------
In both cases, they call their respective ``hook`` functions which create
instances of |Application|.
Application Logic Application Logic
================= =================

View file

@ -8,8 +8,6 @@
- invoked via Python - invoked via Python
- called by Git or Mercurial on or around committing
This guide will cover all of these and the nuances for using |Flake8|. This guide will cover all of these and the nuances for using |Flake8|.
.. note:: .. note::

View file

@ -56,8 +56,6 @@ python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
where = src where = src
[options.entry_points] [options.entry_points]
distutils.commands=
flake8 = flake8.main.setuptools_command:Flake8
console_scripts = console_scripts =
flake8 = flake8.main.cli:main flake8 = flake8.main.cli:main
flake8.extension = flake8.extension =

View file

@ -1,115 +0,0 @@
"""The logic for Flake8's integration with setuptools."""
from distutils import log
import os
from typing import List, Tuple
import setuptools
from flake8.main import application as app
UNSET = object()
class Flake8(setuptools.Command):
"""Run Flake8 via setuptools/distutils for registered modules."""
description = "Run Flake8 on modules registered in setup.py"
# NOTE(sigmavirus24): If we populated this with a list of tuples, users
# could do something like ``python setup.py flake8 --ignore=E123,E234``
# but we would have to redefine it and we can't define it dynamically.
# Since I refuse to copy-and-paste the options here or maintain two lists
# of options, and since this will break when users use plugins that
# provide command-line options, we are leaving this empty. If users want
# to configure this command, they can do so through config files.
user_options = [] # type: List[str]
def initialize_options(self):
"""Override this method to initialize our application."""
self.flake8 = app.Application()
self.flake8.initialize([])
options = self.flake8.option_manager.options
for option in options:
if option.parse_from_config:
setattr(self, option.config_name, UNSET)
def finalize_options(self):
"""Override this to parse the parameters."""
options = self.flake8.option_manager.options
for option in options:
if option.parse_from_config:
name = option.config_name
value = getattr(self, name, UNSET)
if value is UNSET:
continue
setattr(
self.flake8.options,
name,
option.normalize_from_setuptools(value),
)
def package_files(self):
"""Collect the files/dirs included in the registered modules."""
seen_package_directories = () # type: Tuple[str, ...]
directories = self.distribution.package_dir or {}
empty_directory_exists = "" in directories
packages = self.distribution.packages or []
for package in packages:
package_directory = package
if package in directories:
package_directory = directories[package]
elif empty_directory_exists:
package_directory = os.path.join(
directories[""], package_directory
)
# NOTE(sigmavirus24): Do not collect submodules, e.g.,
# if we have:
# - flake8/
# - flake8/plugins/
# Flake8 only needs ``flake8/`` to be provided. It will
# recurse on its own.
if package_directory.startswith(seen_package_directories):
continue
seen_package_directories += (package_directory + ".",)
yield package_directory
def module_files(self):
"""Collect the files listed as py_modules."""
modules = self.distribution.py_modules or []
filename_from = "{0}.py".format
for module in modules:
yield filename_from(module)
def distribution_files(self):
"""Collect package and module files."""
for package in self.package_files():
yield package
for module in self.module_files():
yield module
yield "setup.py"
def run(self):
"""Run the Flake8 application."""
self.flake8.run_checks(list(self.distribution_files()))
self.flake8.formatter.start()
self.flake8.report_errors()
self.flake8.report_statistics()
self.flake8.report_benchmarks()
self.flake8.formatter.stop()
try:
self.flake8.exit()
except SystemExit as e:
# Cause system exit only if exit code is not zero (terminates
# other possibly remaining/pending setuptools commands).
if e.code:
raise
finally:
self.announce(
"WARNING: flake8 setuptools integration is deprecated and "
"scheduled for removal in 4.x. For more information, see "
"https://gitlab.com/pycqa/flake8/issues/544",
log.WARN,
)

View file

@ -1,33 +0,0 @@
"""Module containing tests for the setuptools command integration."""
import pytest
from setuptools import dist
from flake8.main import setuptools_command
@pytest.fixture
def distribution():
"""Create a setuptools Distribution object."""
return dist.Distribution({
'name': 'foo',
'packages': [
'foo',
'foo.bar',
'foo_biz',
],
})
@pytest.fixture
def command(distribution):
"""Create an instance of Flake8's setuptools command."""
return setuptools_command.Flake8(distribution)
def test_package_files_removes_submodules(command):
"""Verify that we collect all package files."""
package_files = list(command.package_files())
assert sorted(package_files) == [
'foo',
'foo_biz',
]