Skip to content

Commit 0285e8e

Browse files
authored
Fixed default value for traceback_show_locals. (#1655)
1 parent 79c984a commit 0285e8e

2 files changed

Lines changed: 23 additions & 10 deletions

File tree

cmd2/cmd2.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,20 +1240,20 @@ def always_prefix_settables(self) -> bool:
12401240
return self._always_prefix_settables
12411241

12421242
@always_prefix_settables.setter
1243-
def always_prefix_settables(self, new_value: bool) -> None:
1243+
def always_prefix_settables(self, value: bool) -> None:
12441244
"""Set whether CommandSet settable values should always be prefixed.
12451245
1246-
:param new_value: True if CommandSet settable values should always be prefixed. False if not.
1246+
:param value: True if CommandSet settable values should always be prefixed. False if not.
12471247
:raises ValueError: If a registered CommandSet does not have a defined prefix
12481248
"""
1249-
if not self._always_prefix_settables and new_value:
1249+
if not self._always_prefix_settables and value:
12501250
for cmd_set in self._installed_command_sets:
12511251
if not cmd_set.settable_prefix:
12521252
raise ValueError(
12531253
f"Cannot force settable prefixes. CommandSet {cmd_set.__class__.__name__} does "
12541254
f"not have a settable prefix defined."
12551255
)
1256-
self._always_prefix_settables = new_value
1256+
self._always_prefix_settables = value
12571257

12581258
@property
12591259
def settables(self) -> Mapping[str, Settable]:
@@ -1357,14 +1357,20 @@ def allow_style(self) -> ru.AllowStyle:
13571357
return ru.ALLOW_STYLE
13581358

13591359
@allow_style.setter
1360-
def allow_style(self, new_val: ru.AllowStyle) -> None:
1360+
def allow_style(self, value: ru.AllowStyle) -> None:
13611361
"""Setter property needed to support do_set when it updates allow_style."""
1362-
ru.ALLOW_STYLE = new_val
1362+
ru.ALLOW_STYLE = value
13631363

13641364
@property
13651365
def traceback_show_locals(self) -> bool:
13661366
"""Property needed to support do_set when it reads traceback_show_locals."""
1367-
return cast(bool, self.traceback_kwargs.get("show_locals", False))
1367+
if "show_locals" in self.traceback_kwargs:
1368+
return cast(bool, self.traceback_kwargs["show_locals"])
1369+
1370+
# If setting is not present, then return its default value.
1371+
traceback_sig = inspect.signature(Traceback.__init__)
1372+
show_locals = traceback_sig.parameters["show_locals"].default
1373+
return cast(bool, show_locals)
13681374

13691375
@traceback_show_locals.setter
13701376
def traceback_show_locals(self, value: bool) -> None:

tests/test_cmd2.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,22 @@ def test_set_allow_style(base_app, new_val, is_valid, expected) -> None:
241241

242242

243243
def test_set_traceback_show_locals(base_app: cmd2.Cmd) -> None:
244-
# Use the set command to alter traceback_show_locals
244+
"""Test the set command for reading and setting traceback_show_locals."""
245+
import inspect
246+
247+
from rich.traceback import Traceback
248+
249+
# Get Traceback's default value for "show_locals"
250+
traceback_sig = inspect.signature(Traceback.__init__)
251+
default_val = traceback_sig.parameters["show_locals"].default
245252

246253
# Clear any existing value
247254
base_app.traceback_kwargs.pop("show_locals", None)
248255
assert "show_locals" not in base_app.traceback_kwargs
249256

250-
# Test that we receive a default value of False if not present
257+
# Test that we receive the default value if not present
251258
orig_val = base_app.traceback_show_locals
252-
assert orig_val is False
259+
assert orig_val is default_val
253260
assert "show_locals" not in base_app.traceback_kwargs
254261

255262
# Test setting it

0 commit comments

Comments
 (0)