From fc14b3e78979ae9daaf9744a97f98ab032c542a5 Mon Sep 17 00:00:00 2001 From: Mauricio Villegas <5780272+mauvilsa@users.noreply.github.com> Date: Tue, 10 Sep 2024 07:48:06 +0200 Subject: [PATCH] For consistency add_subclass_arguments now sets default None instead of SUPPRESS (lightning#20103). --- CHANGELOG.rst | 10 ++++++++++ jsonargparse/_signatures.py | 4 ++-- jsonargparse_tests/test_core.py | 4 +--- jsonargparse_tests/test_subclasses.py | 6 +++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index b9ab9ff3..3cb38afa 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -12,6 +12,16 @@ The semantic versioning only considers the public API as described in paths are considered internals and can change in minor and patch releases. +v4.33.0 (2024-09-??) +-------------------- + +Changed +^^^^^^^ +- For consistency ``add_subclass_arguments`` now sets default ``None`` instead + of ``SUPPRESS`` (`lightning#20103 + `__). + + v4.32.2 (2024-09-??) -------------------- diff --git a/jsonargparse/_signatures.py b/jsonargparse/_signatures.py index 639adc62..807a8d4c 100644 --- a/jsonargparse/_signatures.py +++ b/jsonargparse/_signatures.py @@ -3,7 +3,7 @@ import dataclasses import inspect import re -from argparse import SUPPRESS, ArgumentParser +from argparse import ArgumentParser from contextlib import suppress from typing import Any, Callable, List, Optional, Set, Tuple, Type, Union @@ -549,7 +549,7 @@ def add_subclass_arguments( } ) if "default" not in kwargs: - kwargs["default"] = SUPPRESS + kwargs["default"] = None self._add_signature_parameter( group, None, param, added_args, skip, sub_configs=True, instantiate=instantiate, **kwargs ) diff --git a/jsonargparse_tests/test_core.py b/jsonargparse_tests/test_core.py index eb1b6766..d43655d8 100644 --- a/jsonargparse_tests/test_core.py +++ b/jsonargparse_tests/test_core.py @@ -760,9 +760,7 @@ def test_default_config_files(parser, subtests, tmp_cwd): with subtests.test("get_default"): assert parser.get_default("op1") == "from default config file" parser.add_subclass_arguments(Calendar, "cal") - with pytest.raises(KeyError) as ctx: - parser.get_default("cal") - ctx.match("does not specify a default") + assert parser.get_default("cal") is None with subtests.test("set invalid"): with pytest.raises(ValueError) as ctx: diff --git a/jsonargparse_tests/test_subclasses.py b/jsonargparse_tests/test_subclasses.py index 2297bff1..00bc4cc3 100644 --- a/jsonargparse_tests/test_subclasses.py +++ b/jsonargparse_tests/test_subclasses.py @@ -1338,9 +1338,9 @@ def test_add_subclass_required_group(parser): def test_add_subclass_not_required_group(parser): parser.add_subclass_arguments(Calendar, "cal", required=False) cfg = parser.parse_args([]) - assert cfg == Namespace() + assert cfg == Namespace(cal=None) init = parser.instantiate_classes(cfg) - assert init == Namespace() + assert init == Namespace(cal=None) class ListUnionA: @@ -1723,7 +1723,7 @@ def test_subclass_error_indentation_invalid_init_arg(parser): Given value: abc """ ).strip() - expected = textwrap.indent(expected, " ") + expected = textwrap.indent(expected, " ") assert expected in err