fixtures: add type annotations and docstring to `parsefactories`
This commit is contained in:
parent
a5f37199a9
commit
ac699e7b25
|
@ -46,6 +46,7 @@ from _pytest.compat import getimfunc
|
||||||
from _pytest.compat import getlocation
|
from _pytest.compat import getlocation
|
||||||
from _pytest.compat import is_generator
|
from _pytest.compat import is_generator
|
||||||
from _pytest.compat import NOTSET
|
from _pytest.compat import NOTSET
|
||||||
|
from _pytest.compat import NotSetType
|
||||||
from _pytest.compat import overload
|
from _pytest.compat import overload
|
||||||
from _pytest.compat import safe_getattr
|
from _pytest.compat import safe_getattr
|
||||||
from _pytest.config import _PluggyPlugin
|
from _pytest.config import _PluggyPlugin
|
||||||
|
@ -1583,13 +1584,52 @@ class FixtureManager:
|
||||||
# Separate parametrized setups.
|
# Separate parametrized setups.
|
||||||
items[:] = reorder_items(items)
|
items[:] = reorder_items(items)
|
||||||
|
|
||||||
|
@overload
|
||||||
def parsefactories(
|
def parsefactories(
|
||||||
self, node_or_obj, nodeid=NOTSET, unittest: bool = False
|
self,
|
||||||
|
node_or_obj: nodes.Node,
|
||||||
|
*,
|
||||||
|
unittest: bool = ...,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def parsefactories( # noqa: F811
|
||||||
|
self,
|
||||||
|
node_or_obj: object,
|
||||||
|
nodeid: Optional[str],
|
||||||
|
*,
|
||||||
|
unittest: bool = ...,
|
||||||
|
) -> None:
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def parsefactories( # noqa: F811
|
||||||
|
self,
|
||||||
|
node_or_obj: Union[nodes.Node, object],
|
||||||
|
nodeid: Union[str, NotSetType, None] = NOTSET,
|
||||||
|
*,
|
||||||
|
unittest: bool = False,
|
||||||
|
) -> None:
|
||||||
|
"""Collect fixtures from a collection node or object.
|
||||||
|
|
||||||
|
Found fixtures are parsed into `FixtureDef`s and saved.
|
||||||
|
|
||||||
|
If `node_or_object` is a collection node (with an underlying Python
|
||||||
|
object), the node's object is traversed and the node's nodeid is used to
|
||||||
|
determine the fixtures' visibilty. `nodeid` must not be specified in
|
||||||
|
this case.
|
||||||
|
|
||||||
|
If `node_or_object` is an object (e.g. a plugin), the object is
|
||||||
|
traversed and the given `nodeid` is used to determine the fixtures'
|
||||||
|
visibility. `nodeid` must be specified in this case; None and "" mean
|
||||||
|
total visibility.
|
||||||
|
"""
|
||||||
if nodeid is not NOTSET:
|
if nodeid is not NOTSET:
|
||||||
holderobj = node_or_obj
|
holderobj = node_or_obj
|
||||||
else:
|
else:
|
||||||
holderobj = node_or_obj.obj
|
assert isinstance(node_or_obj, nodes.Node)
|
||||||
|
holderobj = cast(object, node_or_obj.obj) # type: ignore[attr-defined]
|
||||||
|
assert isinstance(node_or_obj.nodeid, str)
|
||||||
nodeid = node_or_obj.nodeid
|
nodeid = node_or_obj.nodeid
|
||||||
if holderobj in self._holderobjseen:
|
if holderobj in self._holderobjseen:
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue