diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 078703be..5cc75f51 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,17 +1,18 @@ repos: +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: "v0.2.2" + hooks: + - id: ruff + args: ["--fix"] + - id: ruff-format - repo: https://github.com/PyCQA/autoflake - rev: v2.2.1 + rev: v2.3.0 hooks: - id: autoflake name: autoflake args: ["--in-place", "--remove-unused-variables", "--remove-all-unused-imports"] language: python files: \.py$ -- repo: https://github.com/asottile/reorder-python-imports - rev: v3.12.0 - hooks: - - id: reorder-python-imports - args: ['--application-directories=.:src', --py38-plus] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v2.1.0 hooks: @@ -24,20 +25,15 @@ repos: hooks: - id: rst-backticks - repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 + rev: v3.15.1 hooks: - id: pyupgrade args: [--py38-plus] -- repo: https://github.com/psf/black - rev: 23.12.1 - hooks: - - id: black - args: [--safe, --quiet] - repo: https://github.com/asottile/blacken-docs rev: 1.16.0 hooks: - id: blacken-docs - additional_dependencies: [black==22.10.0] + additional_dependencies: [black==24.2.0] - repo: local hooks: - id: rst diff --git a/docs/conf.py b/docs/conf.py index aaa6c966..e5151c5a 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,6 +1,7 @@ from importlib import metadata from typing import TYPE_CHECKING + if TYPE_CHECKING: import sphinx.application @@ -104,9 +105,10 @@ def configure_logging(app: "sphinx.application.Sphinx") -> None: """Configure Sphinx's WarningHandler to handle (expected) missing include.""" - import sphinx.util.logging import logging + import sphinx.util.logging + class WarnLogFilter(logging.Filter): def filter(self, record: logging.LogRecord) -> bool: """Ignore warnings about missing include with "only" directive. diff --git a/docs/examples/eggsample-spam/setup.py b/docs/examples/eggsample-spam/setup.py index f81a8eb4..557aa5c1 100644 --- a/docs/examples/eggsample-spam/setup.py +++ b/docs/examples/eggsample-spam/setup.py @@ -1,5 +1,6 @@ from setuptools import setup + setup( name="eggsample-spam", install_requires="eggsample", diff --git a/docs/examples/eggsample/eggsample/__init__.py b/docs/examples/eggsample/eggsample/__init__.py index 4dc4b36d..b2d9d830 100644 --- a/docs/examples/eggsample/eggsample/__init__.py +++ b/docs/examples/eggsample/eggsample/__init__.py @@ -1,4 +1,5 @@ import pluggy + hookimpl = pluggy.HookimplMarker("eggsample") """Marker to be imported and used in plugins (and for own implementations)""" diff --git a/docs/examples/eggsample/eggsample/hookspecs.py b/docs/examples/eggsample/eggsample/hookspecs.py index 48866b24..4bab4228 100644 --- a/docs/examples/eggsample/eggsample/hookspecs.py +++ b/docs/examples/eggsample/eggsample/hookspecs.py @@ -1,5 +1,6 @@ import pluggy + hookspec = pluggy.HookspecMarker("eggsample") diff --git a/docs/examples/eggsample/eggsample/host.py b/docs/examples/eggsample/eggsample/host.py index 7d629c02..d1827879 100644 --- a/docs/examples/eggsample/eggsample/host.py +++ b/docs/examples/eggsample/eggsample/host.py @@ -6,6 +6,7 @@ import pluggy + condiments_tray = {"pickled walnuts": 13, "steak sauce": 4, "mushy peas": 2} diff --git a/docs/examples/eggsample/setup.py b/docs/examples/eggsample/setup.py index 53d2033b..89e88cec 100644 --- a/docs/examples/eggsample/setup.py +++ b/docs/examples/eggsample/setup.py @@ -1,6 +1,7 @@ from setuptools import find_packages from setuptools import setup + setup( name="eggsample", install_requires="pluggy>=0.3,<1.0", diff --git a/docs/examples/toy-example.py b/docs/examples/toy-example.py index 6d2086f9..c7d361bc 100644 --- a/docs/examples/toy-example.py +++ b/docs/examples/toy-example.py @@ -1,5 +1,6 @@ import pluggy + hookspec = pluggy.HookspecMarker("myproject") hookimpl = pluggy.HookimplMarker("myproject") diff --git a/pyproject.toml b/pyproject.toml index 02f476c9..e286825c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,6 +6,20 @@ requires = [ ] build-backend = "setuptools.build_meta" + +[tool.ruff.lint] +select = [ + "I", # isort +] + +[tool.ruff.lint.isort] +force-single-line = true +combine-as-imports = true +force-sort-within-sections = true +order-by-type = false +known-local-folder = ["pluggy"] +lines-after-imports = 2 + [tool.setuptools_scm] write_to = "src/pluggy/_version.py" diff --git a/scripts/release.py b/scripts/release.py index 912d9822..879d35df 100644 --- a/scripts/release.py +++ b/scripts/release.py @@ -1,9 +1,10 @@ """ Release script. """ + import argparse -import sys from subprocess import check_call +import sys from colorama import Fore from colorama import init diff --git a/scripts/towncrier-draft-to-file.py b/scripts/towncrier-draft-to-file.py index 573c0519..a47caa8f 100644 --- a/scripts/towncrier-draft-to-file.py +++ b/scripts/towncrier-draft-to-file.py @@ -1,5 +1,5 @@ -import sys from subprocess import call +import sys def main(): diff --git a/src/pluggy/__init__.py b/src/pluggy/__init__.py index 2adf9454..36ce1680 100644 --- a/src/pluggy/__init__.py +++ b/src/pluggy/__init__.py @@ -22,18 +22,16 @@ "PluggyTeardownRaisedWarning", ] -from ._manager import PluginManager, PluginValidationError -from ._result import HookCallError, Result -from ._hooks import ( - HookspecMarker, - HookimplMarker, - HookCaller, - HookRelay, - HookspecOpts, - HookimplOpts, - HookImpl, -) -from ._warnings import ( - PluggyWarning, - PluggyTeardownRaisedWarning, -) +from ._hooks import HookCaller +from ._hooks import HookImpl +from ._hooks import HookimplMarker +from ._hooks import HookimplOpts +from ._hooks import HookRelay +from ._hooks import HookspecMarker +from ._hooks import HookspecOpts +from ._manager import PluginManager +from ._manager import PluginValidationError +from ._result import HookCallError +from ._result import Result +from ._warnings import PluggyTeardownRaisedWarning +from ._warnings import PluggyWarning diff --git a/src/pluggy/_callers.py b/src/pluggy/_callers.py index 787f56ba..d01f925c 100644 --- a/src/pluggy/_callers.py +++ b/src/pluggy/_callers.py @@ -1,9 +1,9 @@ """ Call loop machinery """ + from __future__ import annotations -import warnings from typing import cast from typing import Generator from typing import Mapping @@ -11,6 +11,7 @@ from typing import Sequence from typing import Tuple from typing import Union +import warnings from ._hooks import HookImpl from ._result import HookCallError diff --git a/src/pluggy/_hooks.py b/src/pluggy/_hooks.py index 7c8420f4..da9eed1f 100644 --- a/src/pluggy/_hooks.py +++ b/src/pluggy/_hooks.py @@ -1,11 +1,11 @@ """ Internal hook annotation, representation and calling machinery. """ + from __future__ import annotations import inspect import sys -import warnings from types import ModuleType from typing import AbstractSet from typing import Any @@ -23,6 +23,7 @@ from typing import TypedDict from typing import TypeVar from typing import Union +import warnings from ._result import Result diff --git a/src/pluggy/_manager.py b/src/pluggy/_manager.py index ce1e107a..d1095a4e 100644 --- a/src/pluggy/_manager.py +++ b/src/pluggy/_manager.py @@ -2,7 +2,6 @@ import inspect import types -import warnings from typing import Any from typing import Callable from typing import cast @@ -11,6 +10,7 @@ from typing import Mapping from typing import Sequence from typing import TYPE_CHECKING +import warnings from . import _tracing from ._callers import _multicall @@ -26,6 +26,7 @@ from ._hooks import normalize_hookimpl_opts from ._result import Result + if TYPE_CHECKING: # importtlib.metadata import is slow, defer it. import importlib.metadata diff --git a/src/pluggy/_result.py b/src/pluggy/_result.py index aa21fa13..f9a081c4 100644 --- a/src/pluggy/_result.py +++ b/src/pluggy/_result.py @@ -1,6 +1,7 @@ """ Hook wrapper "result" utilities. """ + from __future__ import annotations from types import TracebackType diff --git a/src/pluggy/_tracing.py b/src/pluggy/_tracing.py index de1e13a7..cd238ad7 100644 --- a/src/pluggy/_tracing.py +++ b/src/pluggy/_tracing.py @@ -1,6 +1,7 @@ """ Tracing utils """ + from __future__ import annotations from typing import Any diff --git a/testing/benchmark.py b/testing/benchmark.py index 906d8fe5..d13e50aa 100644 --- a/testing/benchmark.py +++ b/testing/benchmark.py @@ -1,6 +1,7 @@ """ Benchmarking and performance tests. """ + import pytest from pluggy import HookimplMarker diff --git a/testing/test_details.py b/testing/test_details.py index ef3baa30..71c77471 100644 --- a/testing/test_details.py +++ b/testing/test_details.py @@ -4,6 +4,7 @@ from pluggy import HookspecMarker from pluggy import PluginManager + hookspec = HookspecMarker("example") hookimpl = HookimplMarker("example") diff --git a/testing/test_hookcaller.py b/testing/test_hookcaller.py index 9eb6f979..bfb5c915 100644 --- a/testing/test_hookcaller.py +++ b/testing/test_hookcaller.py @@ -13,6 +13,7 @@ from pluggy._hooks import HookCaller from pluggy._hooks import HookImpl + hookspec = HookspecMarker("example") hookimpl = HookimplMarker("example") diff --git a/testing/test_pluginmanager.py b/testing/test_pluginmanager.py index d3bcac4e..a214b428 100644 --- a/testing/test_pluginmanager.py +++ b/testing/test_pluginmanager.py @@ -1,6 +1,7 @@ """ ``PluginManager`` unit and public API testing. """ + import importlib.metadata from typing import Any from typing import List