This is an automated email from the ASF dual-hosted git repository.

sungwy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-python.git


The following commit(s) were added to refs/heads/main by this push:
     new de976fe1 Move snapshot history expire table properties to constants 
(#1217)
de976fe1 is described below

commit de976fe1719882c1fc13f02950e82b4d894276aa
Author: Andre Luis Anastacio <[email protected]>
AuthorDate: Wed Oct 23 10:16:00 2024 -0300

    Move snapshot history expire table properties to constants (#1217)
---
 pyiceberg/cli/console.py    | 42 +++++++++++++++++++++++++++++++++++++-----
 pyiceberg/table/__init__.py |  6 ++++++
 2 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/pyiceberg/cli/console.py b/pyiceberg/cli/console.py
index d1833df0..82c27a25 100644
--- a/pyiceberg/cli/console.py
+++ b/pyiceberg/cli/console.py
@@ -32,10 +32,34 @@ from pyiceberg import __version__
 from pyiceberg.catalog import Catalog, load_catalog
 from pyiceberg.cli.output import ConsoleOutput, JsonOutput, Output
 from pyiceberg.exceptions import NoSuchNamespaceError, 
NoSuchPropertyException, NoSuchTableError
+from pyiceberg.table import TableProperties
 from pyiceberg.table.refs import SnapshotRef
+from pyiceberg.utils.deprecated import deprecated
+from pyiceberg.utils.properties import property_as_int
 
-DEFAULT_MIN_SNAPSHOTS_TO_KEEP = 1
-DEFAULT_MAX_SNAPSHOT_AGE_MS = 432000000
+
+class DeprecatedConstants:
+    @property
+    @deprecated(
+        deprecated_in="0.8.0",
+        removed_in="0.9.0",
+        help_message="DEFAULT_MAX_SNAPSHOT_AGE_MS is deprecated. Use 
TableProperties.MAX_SNAPSHOT_AGE_MS_DEFAULT instead.",
+    )
+    def DEFAULT_MAX_SNAPSHOT_AGE_MS(self) -> int:
+        return 432000000
+
+    @property
+    @deprecated(
+        deprecated_in="0.8.0",
+        removed_in="0.9.0",
+        help_message="DEFAULT_MIN_SNAPSHOTS_TO_KEEP is deprecated. Use 
TableProperties.MIN_SNAPSHOTS_TO_KEEP_DEFAULT instead.",
+    )
+    def DEFAULT_MIN_SNAPSHOTS_TO_KEEP(self) -> int:
+        return 1
+
+
+DEFAULT_MIN_SNAPSHOTS_TO_KEEP = 
DeprecatedConstants().DEFAULT_MIN_SNAPSHOTS_TO_KEEP
+DEFAULT_MAX_SNAPSHOT_AGE_MS = DeprecatedConstants().DEFAULT_MAX_SNAPSHOT_AGE_MS
 
 
 def catch_exception() -> Callable:  # type: ignore
@@ -435,13 +459,21 @@ def list_refs(ctx: Context, identifier: str, type: str, 
verbose: bool) -> None:
 def _retention_properties(ref: SnapshotRef, table_properties: Dict[str, str]) 
-> Dict[str, str]:
     retention_properties = {}
     if ref.snapshot_ref_type == "branch":
-        default_min_snapshots_to_keep = table_properties.get(
-            "history.expire.min-snapshots-to-keep", 
DEFAULT_MIN_SNAPSHOTS_TO_KEEP
+        default_min_snapshots_to_keep = property_as_int(
+            table_properties,
+            TableProperties.MIN_SNAPSHOTS_TO_KEEP,
+            TableProperties.MIN_SNAPSHOTS_TO_KEEP_DEFAULT,
         )
+
+        default_max_snapshot_age_ms = property_as_int(
+            table_properties,
+            TableProperties.MAX_SNAPSHOT_AGE_MS,
+            TableProperties.MAX_SNAPSHOT_AGE_MS_DEFAULT,
+        )
+
         retention_properties["min_snapshots_to_keep"] = (
             str(ref.min_snapshots_to_keep) if ref.min_snapshots_to_keep else 
str(default_min_snapshots_to_keep)
         )
-        default_max_snapshot_age_ms = 
table_properties.get("history.expire.max-snapshot-age-ms", 
DEFAULT_MAX_SNAPSHOT_AGE_MS)
         retention_properties["max_snapshot_age_ms"] = (
             str(ref.max_snapshot_age_ms) if ref.max_snapshot_age_ms else 
str(default_max_snapshot_age_ms)
         )
diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py
index 66b22a7a..f94d9c8a 100644
--- a/pyiceberg/table/__init__.py
+++ b/pyiceberg/table/__init__.py
@@ -206,6 +206,12 @@ class TableProperties:
     METADATA_PREVIOUS_VERSIONS_MAX = "write.metadata.previous-versions-max"
     METADATA_PREVIOUS_VERSIONS_MAX_DEFAULT = 100
 
+    MAX_SNAPSHOT_AGE_MS = "history.expire.max-snapshot-age-ms"
+    MAX_SNAPSHOT_AGE_MS_DEFAULT = 5 * 24 * 60 * 60 * 1000  # 5 days
+
+    MIN_SNAPSHOTS_TO_KEEP = "history.expire.min-snapshots-to-keep"
+    MIN_SNAPSHOTS_TO_KEEP_DEFAULT = 1
+
 
 class Transaction:
     _table: Table

Reply via email to