22import os
33import sys
44from pathlib import Path
5+ from typing import Set , Tuple
56
67import astroid
78import pylint
1718 _is_same_module ,
1819)
1920from . import BasePytestChecker
21+ from .types import FixtureDict , replacement_add_message
2022
2123# TODO: support pytest python_files configuration
22- FILE_NAME_PATTERNS = ("test_*.py" , "*_test.py" )
24+ FILE_NAME_PATTERNS : Tuple [ str , ...] = ("test_*.py" , "*_test.py" )
2325ARGUMENT_ARE_KEYWORD_ONLY = (
2426 "https://docs.pytest.org/en/stable/deprecations.html#pytest-fixture-arguments-are-keyword-only"
2527)
2628
2729
2830class FixtureCollector :
29- fixtures = {}
30- errors = set ()
31+ # Same as ``_pytest.fixtures.FixtureManager._arg2fixturedefs``.
32+ fixtures : FixtureDict = {}
33+ errors : Set [pytest .CollectReport ] = set ()
3134
3235 def pytest_sessionfinish (self , session ):
3336 # pylint: disable=protected-access
@@ -73,10 +76,13 @@ class FixtureChecker(BasePytestChecker):
7376 ),
7477 }
7578
76- _pytest_fixtures = {}
77- _invoked_with_func_args = set ()
78- _invoked_with_usefixtures = set ()
79- _original_add_message = callable
79+ # Store all fixtures discovered by pytest session
80+ _pytest_fixtures : FixtureDict = {}
81+ # Stores all used function arguments
82+ _invoked_with_func_args : Set [str ] = set ()
83+ # Stores all invoked fixtures through @pytest.mark.usefixture(...)
84+ _invoked_with_usefixtures : Set [str ] = set ()
85+ _original_add_message = replacement_add_message
8086
8187 def open (self ):
8288 # patch VariablesChecker.add_message
@@ -87,7 +93,7 @@ def close(self):
8793 """restore & reset class attr for testing"""
8894 # restore add_message
8995 VariablesChecker .add_message = FixtureChecker ._original_add_message
90- FixtureChecker ._original_add_message = callable
96+ FixtureChecker ._original_add_message = replacement_add_message
9197
9298 # reset fixture info storage
9399 FixtureChecker ._pytest_fixtures = {}
@@ -100,14 +106,9 @@ def visit_module(self, node):
100106 - invoke pytest session to collect available fixtures
101107 - create containers for the module to store args and fixtures
102108 """
103- # storing all fixtures discovered by pytest session
104- FixtureChecker ._pytest_fixtures = {} # Dict[List[_pytest.fixtures.FixtureDef]]
105-
106- # storing all used function arguments
107- FixtureChecker ._invoked_with_func_args = set () # Set[str]
108-
109- # storing all invoked fixtures through @pytest.mark.usefixture(...)
110- FixtureChecker ._invoked_with_usefixtures = set () # Set[str]
109+ FixtureChecker ._pytest_fixtures = {}
110+ FixtureChecker ._invoked_with_func_args = set ()
111+ FixtureChecker ._invoked_with_usefixtures = set ()
111112
112113 is_test_module = False
113114 for pattern in FILE_NAME_PATTERNS :
0 commit comments