Coverage for backend/django/Economics/costing/cost_curves/unit_options.py: 100%
17 statements
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2026-06-23 21:51 +0000
1from Economics.shared.unit_options import (
2 UnitOption,
3 dedupe_unit_options,
4 infer_physical_unit_type,
5 unit_options_for_unit_type,
6 with_current_unit,
7)
9COMMON_DRIVER_UNITS = (
10 "dimensionless",
11 "m",
12 "m^2",
13 "m^3",
14 "m^3/h",
15 "kg/s",
16 "kW",
17 "bar",
18 "count",
19)
22def cost_curve_input_unit_options(input_unit: str) -> list[UnitOption]:
23 current = (input_unit or "").strip()
24 inferred_type = infer_physical_unit_type(current)
25 return with_current_unit(unit_options_for_unit_type(inferred_type) if inferred_type else [], current)
28def cost_curve_common_driver_unit_options() -> list[UnitOption]:
29 options = []
30 for unit in COMMON_DRIVER_UNITS:
31 inferred_type = infer_physical_unit_type(unit)
32 compatible_options = unit_options_for_unit_type(inferred_type) if inferred_type else []
33 options.append(
34 next(
35 (option for option in compatible_options if option["value"] == unit),
36 {"value": unit, "label": unit},
37 )
38 )
39 return dedupe_unit_options(options)
42def cost_curve_output_unit_options(output_unit: str, *, currency: str = "NZD") -> list[UnitOption]:
43 current = (output_unit or "").strip()
44 options = (
45 {"value": currency, "label": currency},
46 {"value": f"M{currency}", "label": f"M{currency}"},
47 )
48 return with_current_unit(options, current)