Fix the valid types check for `Any in sphinx.config`

This commit is contained in:
Adam Turner 2024-04-17 02:24:56 +01:00
parent 1e98161d1f
commit 7bf847d2b9
3 changed files with 13 additions and 2 deletions

View File

@ -4,6 +4,9 @@ Release 7.3.3 (in development)
Bugs fixed
----------
* #12290: Fix a false-positive warning when setting a configuration value
with ``Any`` as the valid type to a type other than the value's default.
Patch by Adam Turner.
Release 7.3.2 (released Apr 17, 2024)
=====================================

View File

@ -658,7 +658,7 @@ def check_confval_types(app: Sphinx | None, config: Config) -> None:
if default is None and not valid_types:
continue # neither inferable nor explicitly annotated types
if valid_types is Any: # any type of value is accepted
if valid_types == frozenset({Any}): # any type of value is accepted
continue
if isinstance(valid_types, ENUM):

View File

@ -5,7 +5,7 @@ import pickle
import time
from collections import Counter
from pathlib import Path
from typing import TYPE_CHECKING
from typing import TYPE_CHECKING, Any
from unittest import mock
import pytest
@ -552,6 +552,14 @@ def test_check_enum_for_list_failed(logger):
assert logger.warning.called
@mock.patch("sphinx.config.logger")
def test_check_any(logger):
config = Config({'value': None})
config.add('value', 'default', '', Any)
check_confval_types(None, config)
logger.warning.assert_not_called() # not warned
nitpick_warnings = [
"WARNING: py:const reference target not found: prefix.anything.postfix",
"WARNING: py:class reference target not found: prefix.anything",