Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions monai/utils/deprecate_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ def deprecated_arg_default(
# smaller than `since`, do nothing
return lambda obj: obj
if since is None and replaced is None:
# raise a DeprecatedError directly
# no versions given: the default has already changed, so always warn that it changed
is_replaced = True
is_deprecated = True
else:
Expand All @@ -291,7 +291,9 @@ def _decorator(func):
msg_prefix = f" Current default value of argument `{name}={old_default}`"

if is_replaced:
msg_infix = f"was changed in version {replaced} from `{name}={old_default}` to `{name}={new_default}`."
msg_prefix = f" Default value of argument `{name}`"
in_version = f" in version {replaced}" if replaced is not None else ""
msg_infix = f"was changed{in_version} from `{name}={old_default}` to `{name}={new_default}`."
elif is_deprecated:
msg_infix = f"has been deprecated since version {since}."
if replaced is not None:
Expand Down
31 changes: 31 additions & 0 deletions tests/utils/test_deprecated.py
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,37 @@ def foo(a, b="a"):

self.assertWarns(FutureWarning, lambda: foo("a"))

def test_deprecated_arg_default_replaced_message(self):
"""
Test the message for a changed default, with and without a known version.
"""

@deprecated_arg_default("b", old_default="a", new_default="b", version_val=self.test_version)
def foo(a, b="b"):
return a, b

with self.assertWarns(FutureWarning) as aw:
foo("a")
msg = str(aw.warning)
self.assertIn("Default value of argument `b` was changed from `b=a` to `b=b`.", msg)
self.assertNotIn("version None", msg)
self.assertNotIn("Current default value", msg)

@deprecated_arg_default(
"b",
old_default="a",
new_default="b",
since=self.prev_version,
replaced=self.prev_version,
version_val=self.test_version,
)
def bar(a, b="b"):
return a, b

with self.assertWarns(FutureWarning) as aw:
bar("a")
self.assertIn(f"was changed in version {self.prev_version} from `b=a` to `b=b`.", str(aw.warning))

def test_deprecated_arg_default_warning_with_none_as_placeholder(self):
"""
Test deprecated arg default, where the default is used.
Expand Down