Skip to content

Commit 1d359d8

Browse files
committed
Add check for invalid error codes in configuration.
plus test.
1 parent df6c15c commit 1d359d8

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

numpydoc/numpydoc.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,9 +300,17 @@ def update_config(app, config=None):
300300

301301
# Processing to determine whether numpydoc_validation_checks is treated
302302
# as a blocklist or allowlist
303+
valid_error_codes = set(ERROR_MSGS.keys())
303304
if "all" in config.numpydoc_validation_checks:
304305
block = deepcopy(config.numpydoc_validation_checks)
305-
config.numpydoc_validation_checks = set(ERROR_MSGS.keys()) - block
306+
config.numpydoc_validation_checks = valid_error_codes - block
307+
# Ensure that the validation check set contains only valid error codes
308+
invalid_error_codes = config.numpydoc_validation_checks - valid_error_codes
309+
if invalid_error_codes:
310+
raise ValueError(
311+
f"Unrecognized validation code(s) in numpydoc_validation_checks "
312+
f"config value: {invalid_error_codes}"
313+
)
306314

307315

308316
# ------------------------------------------------------------------------------

numpydoc/tests/test_numpydoc.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
import pytest
33
from io import StringIO
44
from copy import deepcopy
5-
from numpydoc.numpydoc import mangle_docstrings, _clean_text_signature
5+
from numpydoc.numpydoc import (
6+
mangle_docstrings, _clean_text_signature, update_config
7+
)
68
from numpydoc.xref import DEFAULT_LINKS
79
from sphinx.ext.autodoc import ALL
810
from sphinx.util import logging
@@ -151,6 +153,14 @@ def test_mangle_docstring_validation_warnings(
151153
assert w not in warnings
152154

153155

156+
def test_update_config_invalid_validation_set():
157+
app = MockApp()
158+
# Results in {'a', 'l'} instead of {"all"}
159+
app.config.numpydoc_validation_checks = set("all")
160+
with pytest.raises(ValueError, match="Unrecognized validation code"):
161+
update_config(app)
162+
163+
154164
if __name__ == "__main__":
155165
import pytest
156166
pytest.main()

0 commit comments

Comments
 (0)