From 1f92ff8f010b7d1095b0f0dc42357c67709ff576 Mon Sep 17 00:00:00 2001 From: Diogo Correia Date: Wed, 25 Jun 2025 17:37:33 +0100 Subject: [PATCH 1/3] Fix getfixturedefs typecheck --- pytest_factoryboy/compat.py | 7 ++++--- pytest_factoryboy/plugin.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pytest_factoryboy/compat.py b/pytest_factoryboy/compat.py index 5512f7e..e25f6b1 100644 --- a/pytest_factoryboy/compat.py +++ b/pytest_factoryboy/compat.py @@ -2,6 +2,7 @@ from collections.abc import Sequence from importlib.metadata import version +from typing import Any from _pytest.fixtures import FixtureDef, FixtureManager from _pytest.nodes import Node @@ -18,10 +19,10 @@ if pytest_version.release >= (8, 1): - def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef] | None: + def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef[Any]] | None: return fixturemanager.getfixturedefs(fixturename, node) else: - def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef] | None: - return fixturemanager.getfixturedefs(fixturename, node.nodeid) + def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef[Any]] | None: + return fixturemanager.getfixturedefs(fixturename, node.nodeid) # type: ignore[arg-type] diff --git a/pytest_factoryboy/plugin.py b/pytest_factoryboy/plugin.py index ac2a7c6..84b1525 100644 --- a/pytest_factoryboy/plugin.py +++ b/pytest_factoryboy/plugin.py @@ -51,7 +51,7 @@ def get_deps(self, request: SubRequest, fixture: str, deps: set[str] | None = No if fixture == "request": return deps - fixturedefs = getfixturedefs(request._fixturemanager, fixture, request._pyfuncitem.parent) + fixturedefs = getfixturedefs(request._fixturemanager, fixture, request._pyfuncitem) for fixturedef in fixturedefs or []: for argname in fixturedef.argnames: if argname not in deps: From ba2e901ca04f0930e563f753a28f4151c0c8364f Mon Sep 17 00:00:00 2001 From: Diogo Correia Date: Thu, 26 Jun 2025 12:06:10 +0100 Subject: [PATCH 2/3] Remove unused type ignore for pytest.hookimpl decorator It fixes the unused type ignore mypy error. Pluggy now provides proper type annotations (pytest-dev/pluggy#340) and a py.typed file (pytest-dev/pluggy#428). --- pytest_factoryboy/plugin.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pytest_factoryboy/plugin.py b/pytest_factoryboy/plugin.py index 84b1525..4a53dbc 100644 --- a/pytest_factoryboy/plugin.py +++ b/pytest_factoryboy/plugin.py @@ -114,9 +114,7 @@ def factoryboy_request() -> Request: return Request() -# type ignored because pluggy v1.0.0 has no type annotations: -# https://github.com/pytest-dev/pluggy/issues/191 -@pytest.hookimpl(tryfirst=True) # type: ignore[misc] +@pytest.hookimpl(tryfirst=True) def pytest_runtest_call(item: Item) -> None: """Before the test item is called.""" # TODO: We should instead do an `if isinstance(item, Function)`. From a7ba20cead700d2a7cfb2deff9fd7d94ba25ada9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 26 Jun 2025 11:17:03 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pytest_factoryboy/compat.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pytest_factoryboy/compat.py b/pytest_factoryboy/compat.py index e25f6b1..2e1135a 100644 --- a/pytest_factoryboy/compat.py +++ b/pytest_factoryboy/compat.py @@ -19,10 +19,14 @@ if pytest_version.release >= (8, 1): - def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef[Any]] | None: + def getfixturedefs( + fixturemanager: FixtureManager, fixturename: str, node: Node + ) -> Sequence[FixtureDef[Any]] | None: return fixturemanager.getfixturedefs(fixturename, node) else: - def getfixturedefs(fixturemanager: FixtureManager, fixturename: str, node: Node) -> Sequence[FixtureDef[Any]] | None: + def getfixturedefs( + fixturemanager: FixtureManager, fixturename: str, node: Node + ) -> Sequence[FixtureDef[Any]] | None: return fixturemanager.getfixturedefs(fixturename, node.nodeid) # type: ignore[arg-type]