Coverage for src/pytest_vulture/conf/vulture.py: 0.00%
54 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-11-22 10:23 +0100
« prev ^ index » next coverage.py v7.6.1, created at 2024-11-22 10:23 +0100
1"""The client pytest vulture configuration."""
3from configparser import ConfigParser
4from contextlib import suppress
5from typing import ClassVar, List
7from pytest_vulture.conf.base import Configuration
10class VultureConfiguration(Configuration):
11 """The vulture configuration (setup.py options)
12 Examples::
13 >>> from pathlib import Path
14 >>> config_file = Path("/tmp/test.ini")
15 >>> config_file.write_text("[vulture]\\nignore-decorators = @test")
16 35
17 >>> config = ConfigParser()
18 >>> config.read(Path(config_file))
19 ['/tmp/test.ini']
20 >>> package_config = VultureConfiguration(is_pyproject=False)
21 >>> package_config.read_ini(config)
22 >>> package_config.ignore_decorators
23 ['@test']
24 """
26 EXCLUDE_DEFAULT: ClassVar[List[str]] = [
27 "*/.tox/*",
28 "*/.git/*",
29 "*/.cache/*",
30 "*/.idea/*",
31 "*/.eggs/*",
32 ]
33 _exclude: List[str] = EXCLUDE_DEFAULT
34 CONFIG_NAME: str = "vulture"
35 CONFIG_PYPROJECT_NAME: str = "tool.vulture"
36 _ignore_names: List[str]
37 _ignore_decorators: List[str]
38 _ignore: List[str]
39 _ignore_types: List[str]
41 def __init__(self, *, is_pyproject: bool) -> None:
42 super().__init__(is_pyproject=is_pyproject)
43 self._ignore_names: List[str] = []
44 self._ignore_decorators: List[str] = []
45 self._ignore: List[str] = []
46 self._ignore_types: List[str] = []
48 @property
49 def ignore_types(self) -> List[str]:
50 return self._ignore_types
52 @property
53 def ignore(self) -> List[str]:
54 return self._ignore
56 @property
57 def ignore_decorators(self) -> List[str]:
58 return self._ignore_decorators
60 @property
61 def ignore_names(self) -> List[str]:
62 return self._ignore_names
64 @property
65 def exclude(self) -> List[str]:
66 return self._exclude
68 def read_tomli(self, data: dict) -> None:
69 parameters = self._get_parameters(data)
70 if not parameters: # pragma: no cover
71 return
73 self._exclude = self.EXCLUDE_DEFAULT + parameters.get("exclude", [])
74 self._ignore_names = parameters.get("ignore-names", [])
75 self._ignore_decorators = parameters.get("ignore-decorators", [])
76 self._ignore = parameters.get("ignore", [])
77 self._ignore_types = parameters.get("ignore-types", [])
79 def read_ini(self, config: ConfigParser) -> None:
80 """Read the ini file."""
81 with suppress(KeyError):
82 self._exclude = self.EXCLUDE_DEFAULT + self._to_list(config[self.CONFIG_NAME]["exclude"])
84 self.__read_ignore(config)
86 def __read_ignore(self, config: ConfigParser) -> None:
87 with suppress(KeyError):
88 self._ignore_names = self._to_list(config[self.CONFIG_NAME]["ignore-names"])
89 with suppress(KeyError):
90 self._ignore_decorators = self._to_list(config[self.CONFIG_NAME]["ignore-decorators"])
92 with suppress(KeyError):
93 self._ignore = self._to_list(config[self.CONFIG_NAME]["ignore"])
95 with suppress(KeyError):
96 self._ignore_types = self._to_list(config[self.CONFIG_NAME]["ignore-types"])