Skip to content

Commit 4c3b90f

Browse files
committed
Add global exclusion option to pre-commit hook.
1 parent 729e563 commit 4c3b90f

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

numpydoc/hooks/validate_docstrings.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ def _ignore_issue(self, node: ast.AST, check: str) -> bool:
176176
if check not in self.config["checks"]:
177177
return True
178178

179+
if self.config["exclude"] and re.search(
180+
self.config["exclude"], ".".join(self.stack)
181+
):
182+
return True
183+
179184
if self.config["overrides"]:
180185
try:
181186
if check == "GL08":
@@ -262,7 +267,7 @@ def parse_config(dir_path: os.PathLike = None) -> dict:
262267
dict
263268
Config options for the numpydoc validation hook.
264269
"""
265-
options = {"checks": {"all"}, "overrides": {}}
270+
options = {"checks": {"all"}, "exclude": set(), "overrides": {}}
266271
dir_path = Path(dir_path).expanduser().resolve()
267272

268273
toml_path = dir_path / "pyproject.toml"
@@ -273,6 +278,7 @@ def parse_config(dir_path: os.PathLike = None) -> dict:
273278
pyproject_toml = tomllib.load(toml_file)
274279
config = pyproject_toml.get("tool", {}).get("numpydoc_validation", {})
275280
options["checks"] = set(config.get("checks", options["checks"]))
281+
options["exclude"] = set(config.get("exclude", options["exclude"]))
276282
for check in ["SS05", "GL08"]:
277283
regex = config.get(f"override_{check}")
278284
if regex:
@@ -284,11 +290,22 @@ def parse_config(dir_path: os.PathLike = None) -> dict:
284290
try:
285291
try:
286292
options["checks"] = set(
287-
config.get(numpydoc_validation_config_section, "checks").split(",")
293+
config.get(numpydoc_validation_config_section, "checks")
294+
.rstrip(",")
295+
.split(",")
288296
or options["checks"]
289297
)
290298
except configparser.NoOptionError:
291299
pass
300+
try:
301+
options["exclude"] = set(
302+
config.get(numpydoc_validation_config_section, "exclude")
303+
.rstrip(",")
304+
.split(",")
305+
or options["exclude"]
306+
)
307+
except configparser.NoOptionError:
308+
pass
292309
try:
293310
options["overrides"]["SS05"] = re.compile(
294311
config.get(numpydoc_validation_config_section, "override_SS05")
@@ -305,6 +322,11 @@ def parse_config(dir_path: os.PathLike = None) -> dict:
305322
pass
306323

307324
options["checks"] = get_validation_checks(options["checks"])
325+
options["exclude"] = (
326+
re.compile(r"|".join(exp for exp in options["exclude"]))
327+
if options["exclude"]
328+
else None
329+
)
308330
return options
309331

310332

0 commit comments

Comments
 (0)