Skip to content

Commit adce631

Browse files
committed
adopt review feedback
1 parent 2ff7533 commit adce631

3 files changed

Lines changed: 19 additions & 15 deletions

File tree

pyiceberg/types.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
from __future__ import annotations
3434

3535
import re
36-
from enum import IntEnum
3736
from functools import cached_property
3837
from typing import (
3938
Any,
@@ -54,7 +53,7 @@
5453
from pydantic_core.core_schema import ValidatorFunctionWrapHandler
5554

5655
from pyiceberg.exceptions import ValidationError
57-
from pyiceberg.typedef import IcebergBaseModel, IcebergRootModel, L
56+
from pyiceberg.typedef import IcebergBaseModel, IcebergRootModel, L, TableVersion
5857
from pyiceberg.utils.parsing import ParseNumberFromBrackets
5958
from pyiceberg.utils.singleton import Singleton
6059

@@ -63,12 +62,6 @@
6362
FIXED_PARSER = ParseNumberFromBrackets(FIXED)
6463

6564

66-
class TableVersion(IntEnum):
67-
ONE = 1
68-
TWO = 2
69-
THREE = 3
70-
71-
7265
def transform_dict_value_to_str(dict: Dict[str, Any]) -> Dict[str, str]:
7366
"""Transform all values in the dictionary to string. Raise an error if any value is None."""
7467
for key, value in dict.items():
@@ -190,7 +183,7 @@ def is_struct(self) -> bool:
190183

191184
def minimum_format_version(self) -> TableVersion:
192185
"""Minimum Iceberg format version after which this type is supported."""
193-
return TableVersion.ONE
186+
return 1
194187

195188

196189
class PrimitiveType(Singleton, IcebergRootModel[str], IcebergType):
@@ -734,7 +727,7 @@ class TimestampNanoType(PrimitiveType):
734727
root: Literal["timestamp_ns"] = Field(default="timestamp_ns")
735728

736729
def minimum_format_version(self) -> TableVersion:
737-
return TableVersion.THREE
730+
return 3
738731

739732

740733
class TimestamptzNanoType(PrimitiveType):
@@ -753,7 +746,7 @@ class TimestamptzNanoType(PrimitiveType):
753746
root: Literal["timestamptz_ns"] = Field(default="timestamptz_ns")
754747

755748
def minimum_format_version(self) -> TableVersion:
756-
return TableVersion.THREE
749+
return 3
757750

758751

759752
class StringType(PrimitiveType):
@@ -820,4 +813,4 @@ class UnknownType(PrimitiveType):
820813
root: Literal["unknown"] = Field(default="unknown")
821814

822815
def minimum_format_version(self) -> TableVersion:
823-
return TableVersion.THREE
816+
return 3

tests/integration/test_reads.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,7 @@ def test_read_unknown_type(catalog: Catalog) -> None:
10081008
tbl = catalog.create_table(
10091009
identifier,
10101010
schema=arrow_table.schema,
1011+
properties={"format-version": "3"},
10111012
)
10121013

10131014
tbl.append(arrow_table)

tests/table/test_metadata.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,12 @@
4848
LongType,
4949
MapType,
5050
NestedField,
51+
PrimitiveType,
5152
StringType,
5253
StructType,
5354
TimestampNanoType,
5455
TimestamptzNanoType,
56+
UnknownType,
5557
)
5658

5759

@@ -843,9 +845,17 @@ def test_new_table_metadata_with_v3_schema() -> None:
843845
assert actual.sort_orders == [expected_sort_order]
844846

845847

846-
def test_new_table_metadata_format_v2_with_v3_schema_fails() -> None:
848+
@pytest.mark.parametrize(
849+
"field_type",
850+
[
851+
TimestampNanoType(),
852+
TimestamptzNanoType(),
853+
UnknownType(),
854+
],
855+
)
856+
def test_new_table_metadata_format_v2_with_v3_schema_fails(field_type: PrimitiveType) -> None:
847857
schema = Schema(
848-
NestedField(field_id=34, name="qux", field_type=TimestampNanoType(), required=False),
858+
NestedField(field_id=34, name="qux", field_type=field_type, required=False),
849859
schema_id=10,
850860
)
851861

@@ -858,7 +868,7 @@ def test_new_table_metadata_format_v2_with_v3_schema_fails() -> None:
858868
order_id=34,
859869
)
860870

861-
with pytest.raises(ValueError, match="timestamp_ns is only supported in 3 or higher. Current format version is: 2"):
871+
with pytest.raises(ValueError, match=f"{field_type} is only supported in 3 or higher. Current format version is: 2"):
862872
new_table_metadata(
863873
schema=schema,
864874
partition_spec=partition_spec,

0 commit comments

Comments
 (0)