Skip to content

Commit aecfbc3

Browse files
authored
Bugfix: Make sure None is skipped when printing nested configurations (#25)
1 parent 03cb722 commit aecfbc3

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

examples/validate/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class ConstantConfig(ExactBaseModel):
3333

3434
class ServerConfig(ExactBaseModel):
3535
url: HttpUrl
36+
port: int | None = None
3637
secret: SecretStr
3738

3839

@@ -54,4 +55,4 @@ def get_configuration() -> ConfigModel:
5455

5556

5657
if __name__ == "__main__":
57-
print_configuration(get_configuration())
58+
print_configuration(get_configuration(), skip_none=True)

src/configaroo/configuration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ def _print_dict_as_tree(
287287
_print(" " * current_indent + f"- {key}")
288288
_print_dict_as_tree(
289289
value,
290+
skip_none=skip_none,
290291
indent=indent,
291292
current_indent=current_indent + indent,
292293
_print=_print,

tests/test_print.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,13 @@ def test_printing_of_nested_sections(
9696
assert lines == ["- sea: 'Marianer'"]
9797

9898

99-
def test_printing_of_rich_markup() -> None:
99+
def test_printing_of_rich_markup(capsys: pytest.CaptureFixture[str]) -> None:
100100
"""Test that a config value containing malformed Rich markup can be printed."""
101101
config = Configuration({"markup": "[/]"})
102102
print_configuration(config)
103+
stdout = capsys.readouterr().out
104+
105+
assert stdout.strip() == "- markup: '[/]'"
103106

104107

105108
def test_print_keeping_none(
@@ -118,9 +121,12 @@ def test_print_skipping_none(
118121
capsys: pytest.CaptureFixture[str], config: Configuration
119122
) -> None:
120123
"""Test that None-values are skipped in printout if asked for."""
121-
print_configuration(config | {"none": None}, skip_none=True)
124+
config.update({"none": None})
125+
config.nested.deep.update({"sea": "Mjoesa", "depth": None})
126+
print_configuration(config, skip_none=True)
122127
stdout = capsys.readouterr().out
123128
lines = stdout.splitlines()
124129

125130
assert "- none: None" not in lines
131+
assert " - depth: None" not in lines
126132
assert "- number: 42" in lines

0 commit comments

Comments
 (0)