diff --git a/pytest_factoryboy/compat.py b/pytest_factoryboy/compat.py index 5512f7e..2e1135a 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,14 @@ 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..4a53dbc 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: @@ -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)`.