rdblue commented on code in PR #41: URL: https://github.com/apache/iceberg-python/pull/41#discussion_r1429241025
########## pyiceberg/table/__init__.py: ########## @@ -209,6 +221,48 @@ def set_properties(self, **updates: str) -> Transaction: """ return self._append_updates(SetPropertiesUpdate(updates=updates)) + def add_snapshot(self, snapshot: Snapshot) -> Transaction: + """Add a new snapshot to the table. + + Returns: + A new UpdateSchema. + """ + self._append_updates(AddSnapshotUpdate(snapshot=snapshot)) + + return self + + def set_ref_snapshot( + self, + snapshot_id: int, + ref_name: str = "main", + type: str = "branch", + max_age_ref_ms: Optional[int] = None, + max_snapshot_age_ms: Optional[int] = None, + min_snapshots_to_keep: Optional[int] = None, + ) -> Transaction: + """Update a ref to a snapshot. + + Returns: + A new UpdateSchema. + """ + self._append_updates( + SetSnapshotRefUpdate( + snapshot_id=snapshot_id, + ref_name=ref_name, + type=type, + max_age_ref_ms=max_age_ref_ms, + max_snapshot_age_ms=max_snapshot_age_ms, + min_snapshots_to_keep=min_snapshots_to_keep, + ) + ) + + self._append_requirements( + AssertRefSnapshotId( + snapshot_id=current_snapshot.snapshot_id if (current_snapshot := self._table.current_snapshot()) else None Review Comment: Should the parent snapshot ID be passed in? I'm concerned about this being called directly and always using the current snapshot. And even if we do keep this, it should be the current state of the branch that is being updated instead of the current snapshot. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org