audit-labs/audit-tools
A collection of scripts, queries, and other goodies you can use in an audit.
clone: git clone https://gitbay.org/audit-labs/audit-tools.git
v1.0.0: sampling/sampling_tool/manifest.py · raw
1"""Manifest generation."""
2
3from __future__ import annotations
4
5import json
6from pathlib import Path
7
8from . import __version__
9
10
11def build_manifest(
12 *,
13 run_timestamp_utc: str,
14 input_file: Path,
15 input_sha256: str,
16 input_sheet: str | None,
17 options,
18 effective_id_column: str | None,
19 id_column_omitted: bool,
20 sample_size_actual: int,
21 random_seed: int | None,
22 source_row_count: int,
23 validated_population_count: int,
24 excluded_row_count: int,
25 duplicate_id_count: int,
26 blank_id_count: int,
27 output_files: list[str],
28) -> dict[str, object]:
29 return {
30 "tool": "audit_sample",
31 "version": __version__,
32 "run_timestamp_utc": run_timestamp_utc,
33 "input_file": str(input_file),
34 "input_sha256": input_sha256,
35 "input_sheet": input_sheet,
36 "method": options.method,
37 "id_column": options.id_column,
38 "effective_id_column": effective_id_column,
39 "id_column_omitted": id_column_omitted,
40 "stratify_column": options.stratify_column,
41 "sample_size_requested": options.sample_size,
42 "sample_size_actual": sample_size_actual,
43 "random_seed": random_seed,
44 "filters": options.filters,
45 "dedupe_id": options.dedupe_id,
46 "exclude_blank_id": options.exclude_blank_id,
47 "allow_shortfall": options.allow_shortfall,
48 "source_row_count": source_row_count,
49 "validated_population_count": validated_population_count,
50 "excluded_row_count": excluded_row_count,
51 "duplicate_id_count": duplicate_id_count,
52 "blank_id_count": blank_id_count,
53 "output_files": output_files,
54 }
55
56
57def write_manifest(manifest: dict[str, object], path: Path) -> None:
58 path.write_text(json.dumps(manifest, indent=2, sort_keys=True) + "\n")