Skip to content

Commit b6ba319

Browse files
committed
Implement update for remove-snapshot action
1 parent 2cd4e78 commit b6ba319

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

pyiceberg/table/update/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,16 @@ def _(update: SetSnapshotRefUpdate, base_metadata: TableMetadata, context: _Tabl
455455
return base_metadata.model_copy(update=metadata_updates)
456456

457457

458+
@_apply_table_update.register(RemoveSnapshotsUpdate)
459+
def _(update: RemoveSnapshotsUpdate, base_metadata: TableMetadata, context: _TableMetadataUpdateContext) -> TableMetadata:
460+
if not any(s.snapshot_id == update.snapshot_id for s in base_metadata.snapshots):
461+
raise ValueError(f"Snapshot with snapshot id {update.snapshot_id} does not exist")
462+
463+
snapshots = [s for s in base_metadata.snapshots if s.snapshot_id != update.snapshot_id]
464+
context.add_update(update)
465+
return base_metadata.model_copy(update={"snapshots": snapshots})
466+
467+
458468
@_apply_table_update.register(AddSortOrderUpdate)
459469
def _(update: AddSortOrderUpdate, base_metadata: TableMetadata, context: _TableMetadataUpdateContext) -> TableMetadata:
460470
context.add_update(update)

0 commit comments

Comments
 (0)