Skip to content

Commit 27518f1

Browse files
committed
format stagpy var output with rich
1 parent ea09412 commit 27518f1

File tree

3 files changed

+26
-24
lines changed

3 files changed

+26
-24
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ dependencies = [
3636
"pandas~=2.2",
3737
"h5py~=3.12",
3838
"matplotlib~=3.9",
39+
"rich>=13.9.4",
3940
]
4041

4142
[dependency-groups]

src/stagpy/commands.py

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
from shutil import get_terminal_size
1010
from textwrap import TextWrapper, indent
1111

12+
from rich.columns import Columns
13+
from rich.console import Console
14+
1215
from . import __version__, phyvars
1316
from ._helpers import baredoc, walk
1417
from .config import CONFIG_LOCAL, Config
@@ -102,11 +105,15 @@ def _pretty_print(
102105
def _layout(
103106
dict_vars: Mapping[str, Varf | Varr | Vart],
104107
dict_vars_extra: Mapping[str, Callable],
105-
) -> None:
108+
) -> Columns:
106109
"""Print nicely [(var, description)] from phyvars."""
107110
desc = [(v, m.description) for v, m in dict_vars.items()]
108111
desc.extend((v, baredoc(m)) for v, m in dict_vars_extra.items())
109-
_pretty_print(desc, min_col_width=26)
112+
return Columns(
113+
renderables=(f"{var}: [dim]{descr}[/dim]" for var, descr in desc),
114+
padding=(0, 2),
115+
column_first=True,
116+
)
110117

111118

112119
def var_cmd(conf: Config) -> None:
@@ -115,27 +122,28 @@ def var_cmd(conf: Config) -> None:
115122
See [stagpy.phyvars][] where the lists of variables organized by command
116123
are defined.
117124
"""
125+
console = Console()
118126
print_all = not any(getattr(conf.var, fld.name) for fld in fields(conf.var))
119127
if print_all or conf.var.field:
120-
print("field:")
121-
_layout(phyvars.FIELD, phyvars.FIELD_EXTRA)
122-
print()
128+
console.rule("fields", style="magenta")
129+
console.print(_layout(phyvars.FIELD, phyvars.FIELD_EXTRA))
130+
console.print()
123131
if print_all or conf.var.sfield:
124-
print("surface field:")
125-
_layout(phyvars.SFIELD, {})
126-
print()
132+
console.rule("surface fields", style="magenta")
133+
console.print(_layout(phyvars.SFIELD, {}))
134+
console.print()
127135
if print_all or conf.var.rprof:
128-
print("rprof:")
129-
_layout(phyvars.RPROF, phyvars.RPROF_EXTRA)
130-
print()
136+
console.rule("radial profiles", style="magenta")
137+
console.print(_layout(phyvars.RPROF, phyvars.RPROF_EXTRA))
138+
console.print()
131139
if print_all or conf.var.time:
132-
print("time:")
133-
_layout(phyvars.TIME, phyvars.TIME_EXTRA)
134-
print()
140+
console.rule("time series", style="magenta")
141+
console.print(_layout(phyvars.TIME, phyvars.TIME_EXTRA))
142+
console.print()
135143
if print_all or conf.var.refstate:
136-
print("refstate:")
137-
_layout(phyvars.REFSTATE, {})
138-
print()
144+
console.rule("refstate", style="magenta")
145+
console.print(_layout(phyvars.REFSTATE, {}))
146+
console.print()
139147

140148

141149
def version_cmd(conf: Config) -> None:

tests/test_commands.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ def test_info_cmd(capsys: CaptureFixture, example_dir: Path) -> None:
1818
assert expected.fullmatch(output.out)
1919

2020

21-
def test_var_cmd(capsys: CaptureFixture) -> None:
22-
commands.var_cmd(Config.default_())
23-
output = capsys.readouterr()
24-
expected = re.compile(r"field:\n.*\nrprof:\n.*\ntime:\n.*\n.*$", flags=re.DOTALL)
25-
assert expected.fullmatch(output.out)
26-
27-
2821
def test_version_cmd(capsys: CaptureFixture) -> None:
2922
commands.version_cmd(Config.default_())
3023
output = capsys.readouterr()

0 commit comments

Comments
 (0)