Skip to content

Commit 1bffe46

Browse files
committed
Expose complete SAV dictionary inspection
1 parent ebf07c8 commit 1bffe46

2 files changed

Lines changed: 11 additions & 0 deletions

File tree

src/openstatspec/spss/sav.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ def inspect_sav(source: str | Path) -> dict[str, Any]:
6060
_, meta = pyreadstat.read_sav(source_path, metadataonly=True, user_missing=True)
6161
return {
6262
"source_format": source_path.suffix[1:].upper(), "source_name": source_path.name,
63+
"source_sha256": _sha256(source_path), "source_encoding": getattr(meta, "file_encoding", None),
64+
"file_label": getattr(meta, "file_label", "") or "",
65+
"documents": list(getattr(meta, "notes", []) or []),
66+
"multiple_response_sets": dict(getattr(meta, "mr_sets", {}) or {}),
67+
"loss_report": _import_loss_report(meta),
6368
"variable_count": len(meta.column_names), "variables": _variables(meta, list(meta.column_names)),
6469
}
6570

tests/test_cli.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ def test_cli_import_inspect_validate_and_export_emit_json(tmp_path, capsys) -> N
1313

1414
assert openstatspec.cli.main(["import", str(source), "--database-url", database, "--dataset-id", "fixture"]) == 0
1515
imported = json.loads(capsys.readouterr().out)
16+
preview = openstatspec.cli.main(["inspect", str(source)])
17+
assert preview == 0
18+
inspected = json.loads(capsys.readouterr().out)
19+
assert inspected["source_format"] == "SAV"
20+
assert inspected["source_sha256"]
21+
assert inspected["loss_report"] == []
1622
assert imported["case_count"] == 1
1723

1824
assert openstatspec.cli.main(["validate", "--database-url", database, "--dataset-id", "fixture"]) == 0

0 commit comments

Comments
 (0)