Support creating tags
Feature Request / Improvement
Historical tags in iceberg docs - https://iceberg.apache.org/docs/1.5.0/branching/#historical-tags
Not sure if it was intentional behavior, but pyiceberg v0.6.0 allowed tagging by using public set_ref_snapshot method:
with table.transaction() as transaction:
transaction.set_ref_snapshot(
snapshot_id=snapshot_id,
parent_snapshot_id=snapshot_id,
ref_name=revision,
type="tag",
)
The new dev version (the current main branch) has deprecated the set_ref_snapshot method, so I can't find a way to create a tag using public methods on the transaction object.
For the reference, I was able to make a tag only by using some private properties of the transaction object:
from pyiceberg.table import SetSnapshotRefUpdate, update_table_metadata
with table.transaction() as txn:
update = SetSnapshotRefUpdate(
ref_name=tag,
type="tag",
snapshot_id=snapshot_id,
max_ref_age_ms=None,
max_snapshot_age_ms=None,
min_snapshots_to_keep=None,
)
txn._updates = [update]
txn.table_metadata = update_table_metadata(txn.table_metadata, [update])
This seems to work fine as a temporary workaround for development purposes, but it would be great to have a public method for creating tags.
@enkidulan Thanks for reaching out here. Are you interested in creating the API for this? :)
@Fokko I saw this issue has been inactive for over a month, so I created a PR that might close the issue. Please review when possible :)