From 9b360874380b5568982a54725c00bf065bb1e9f1 Mon Sep 17 00:00:00 2001 From: Simone Scarduzio Date: Wed, 15 Oct 2025 18:16:43 +0200 Subject: [PATCH] not mandatory to have the command metadata field set --- src/deltaglider/core/models.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/deltaglider/core/models.py b/src/deltaglider/core/models.py index 09887da..ebce1f7 100644 --- a/src/deltaglider/core/models.py +++ b/src/deltaglider/core/models.py @@ -2,11 +2,13 @@ from dataclasses import dataclass from datetime import datetime +import logging # Metadata key prefix for DeltaGlider # AWS S3 automatically adds 'x-amz-meta-' prefix, so our keys become 'x-amz-meta-dg-*' METADATA_PREFIX = "dg-" +logger = logging.getLogger(__name__) @dataclass(frozen=True) class DeltaSpace: @@ -96,6 +98,12 @@ class DeltaMeta: @classmethod def from_dict(cls, data: dict[str, str]) -> "DeltaMeta": """Create from S3 metadata dict with DeltaGlider namespace prefix.""" + delta_cmd_key = f"{METADATA_PREFIX}delta-cmd" + delta_cmd_value = data.get(delta_cmd_key) + if delta_cmd_value is None: + object_name = data.get(f"{METADATA_PREFIX}original-name", "") + logger.warning("Delta metadata missing %s for %s; using empty command", delta_cmd_key, object_name) + delta_cmd_value = "" return cls( tool=data[f"{METADATA_PREFIX}tool"], original_name=data[f"{METADATA_PREFIX}original-name"], @@ -105,7 +113,7 @@ class DeltaMeta: ref_key=data[f"{METADATA_PREFIX}ref-key"], ref_sha256=data[f"{METADATA_PREFIX}ref-sha256"], delta_size=int(data[f"{METADATA_PREFIX}delta-size"]), - delta_cmd=data[f"{METADATA_PREFIX}delta-cmd"], + delta_cmd=delta_cmd_value, note=data.get(f"{METADATA_PREFIX}note"), )