Skip to content

Commit 25cf88e

Browse files
Show audit info in runs.tabulate() (#128)
1 parent 0b5ecc2 commit 25cf88e

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

ixmp4/core/run.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,16 @@ def list(self, default_only: bool = True, **kwargs) -> list[Run]:
8989
for r in self.backend.runs.list(default_only=default_only, **kwargs)
9090
]
9191

92-
def tabulate(self, default_only: bool = True, **kwargs) -> pd.DataFrame:
92+
def tabulate(
93+
self, default_only: bool = True, audit_info: bool = False, **kwargs
94+
) -> pd.DataFrame:
9395
runs = self.backend.runs.tabulate(default_only=default_only, **kwargs)
9496
runs["model"] = runs["model__id"].map(self.backend.models.map())
9597
runs["scenario"] = runs["scenario__id"].map(self.backend.scenarios.map())
96-
return runs[["id", "model", "scenario", "version", "is_default"]]
98+
columns = ["model", "scenario", "version", "is_default"]
99+
if audit_info:
100+
columns += ["updated_at", "updated_by", "created_at", "created_by", "id"]
101+
return runs[columns]
97102

98103

99104
class RunMetaFacade(BaseFacade, UserDict):

tests/core/test_run.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ def _expected_runs_table(*row_default):
1313
rows = []
1414
for i, default in enumerate(row_default, start=1):
1515
if default is not None:
16-
rows.append([i, "Model", "Scenario", i] + [default])
16+
rows.append(["Model", "Scenario", i] + [default])
1717

18-
return pd.DataFrame(
19-
rows, columns=["id", "model", "scenario", "version", "is_default"]
20-
)
18+
return pd.DataFrame(rows, columns=["model", "scenario", "version", "is_default"])
2119

2220

2321
class TestCoreRun:
@@ -68,6 +66,12 @@ def test_run_versions(self, platform: ixmp4.Platform):
6866
pd.DataFrame(_expected_runs_table(True, False)),
6967
)
7068

69+
# using audit_info=True shows additional columns
70+
audit_info = platform.runs.tabulate(default_only=False, audit_info=True)
71+
for column in ["updated_at", "updated_by", "created_at", "created_by", "id"]:
72+
assert column in audit_info.columns
73+
pdt.assert_series_equal(audit_info.id, pd.Series([run1.id, run2.id], name="id"))
74+
7175
# default version can be retrieved directly
7276
run = platform.runs.get("Model", "Scenario")
7377
assert run1.id == run.id

0 commit comments

Comments
 (0)