From 37a44a2f712f05da9c497ce9b52d3861932fb9c2 Mon Sep 17 00:00:00 2001 From: georgeRobertson <50412379+georgeRobertson@users.noreply.github.com> Date: Fri, 19 Dec 2025 13:46:49 +0000 Subject: [PATCH] fix: fix issue where reporting_entity resulted in key fields being removed from error reports --- .../core_engine/backends/implementations/duckdb/rules.py | 1 + .../core_engine/backends/implementations/spark/rules.py | 1 + src/dve/core_engine/message.py | 2 ++ src/dve/reporting/utils.py | 8 +++++++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/dve/core_engine/backends/implementations/duckdb/rules.py b/src/dve/core_engine/backends/implementations/duckdb/rules.py index dbc308e..b14700d 100644 --- a/src/dve/core_engine/backends/implementations/duckdb/rules.py +++ b/src/dve/core_engine/backends/implementations/duckdb/rules.py @@ -517,6 +517,7 @@ def notify(self, entities: DuckDBEntities, *, config: Notification) -> Messages: messages.append( FeedbackMessage( entity=config.reporting.reporting_entity_override or config.entity_name, + original_entity=config.entity_name, record=record, # type: ignore error_location=config.reporting.legacy_location, error_message=template_object(config.reporting.message, record), # type: ignore diff --git a/src/dve/core_engine/backends/implementations/spark/rules.py b/src/dve/core_engine/backends/implementations/spark/rules.py index 93baae9..15afa09 100644 --- a/src/dve/core_engine/backends/implementations/spark/rules.py +++ b/src/dve/core_engine/backends/implementations/spark/rules.py @@ -412,6 +412,7 @@ def notify(self, entities: SparkEntities, *, config: Notification) -> Messages: # more complex extraction done in reporting module FeedbackMessage( entity=config.reporting.reporting_entity_override or config.entity_name, + original_entity=config.entity_name, record=record.asDict(recursive=True), error_location=config.reporting.legacy_location, error_message=template_object( diff --git a/src/dve/core_engine/message.py b/src/dve/core_engine/message.py index 7dd4f02..029a7cd 100644 --- a/src/dve/core_engine/message.py +++ b/src/dve/core_engine/message.py @@ -105,6 +105,8 @@ class FeedbackMessage: # pylint: disable=too-many-instance-attributes still be completed (i.e. filters and joins can still be applied). """ + original_entity: Optional[EntityName] = None + """The original entity before any modifications to the name (if applicable).""" is_informational: bool = False """Whether the message is simply for information or has affected the outputs.""" error_type: Optional[str] = None diff --git a/src/dve/reporting/utils.py b/src/dve/reporting/utils.py index 3dac919..8832b6a 100644 --- a/src/dve/reporting/utils.py +++ b/src/dve/reporting/utils.py @@ -26,7 +26,13 @@ def dump_feedback_errors( processed = [] for message in messages: - primary_keys: list[str] = key_fields.get(message.entity if message.entity else "", []) + if message.original_entity is not None: + primary_keys = key_fields.get(message.original_entity, []) + elif message.entity is not None: + primary_keys = key_fields.get(message.entity, []) + else: + primary_keys = [] + error = message.to_dict( key_field=primary_keys, value_separator=" -- ",