From 176c9b329741ce1f0d9cae27b7ec10a0a5d5b433 Mon Sep 17 00:00:00 2001 From: edithatogo <15080672+edithatogo@users.noreply.github.com> Date: Sat, 1 Aug 2026 05:08:45 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20redundant=20parameter=20?= =?UTF-8?q?parsing=20in=20projection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- harness/policyengine_trace/projection.py | 27 ++++++++++++++---------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/harness/policyengine_trace/projection.py b/harness/policyengine_trace/projection.py index 216b5ca5..4a5e71de 100644 --- a/harness/policyengine_trace/projection.py +++ b/harness/policyengine_trace/projection.py @@ -120,22 +120,27 @@ def _project_step( parsed = parse_trace_key(key) node = flat_trace[key] result_id = _variable_id(namespace, parsed.name, category="decision") - parameter_versions = [ - { - "id": _variable_id(namespace, parse_trace_key(parameter_key).name, category="parameter"), - "effectiveFrom": _effective_from(parse_trace_key(parameter_key).period), - } - for parameter_key in sorted(node.get("parameters", {})) - ] + + parameters = node.get("parameters", {}) + parameter_versions = [] + for parameter_key in sorted(parameters): + parsed_param = parse_trace_key(parameter_key) + parameter_versions.append({ + "id": _variable_id(namespace, parsed_param.name, category="parameter"), + "effectiveFrom": _effective_from(parsed_param.period), + }) + + dependencies = node.get("dependencies", []) + inputs_used = [] + for dependency in dependencies: + parsed_dep = parse_trace_key(dependency) + inputs_used.append(_variable_id(namespace, parsed_dep.name, category="decision")) return { "stepId": _step_id(parsed), "kind": "decision", "refs": {"decision": result_id}, - "inputsUsed": [ - _variable_id(namespace, parse_trace_key(dependency).name, category="decision") - for dependency in node.get("dependencies", []) - ], + "inputsUsed": inputs_used, "parameterVersions": parameter_versions, "result": _value_object( node.get("value"),