Skip to content

Commit 84b7d05

Browse files
authored
Python: Minor changes to types classes, follow up to #3234 (#3350)
1 parent 4ea8663 commit 84b7d05

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

python/src/iceberg/types.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def is_primitive(self) -> bool:
3434

3535
class FixedType(Type):
3636
def __init__(self, length: int):
37-
super().__init__(f"fixed[{length}]", f"FixedType({length})", is_primitive=True)
37+
super().__init__(f"fixed[{length}]", f"FixedType(length={length})", is_primitive=True)
3838
self._length = length
3939

4040
@property
@@ -44,7 +44,8 @@ def length(self) -> int:
4444

4545
class DecimalType(Type):
4646
def __init__(self, precision: int, scale: int):
47-
super().__init__(f"decimal({precision}, {scale})", f"DecimalType({precision}, {scale})", is_primitive=True)
47+
super().__init__(f"decimal({precision}, {scale})",
48+
f"DecimalType(precision={precision}, scale={scale})", is_primitive=True)
4849
self._precision = precision
4950
self._scale = scale
5051

@@ -58,7 +59,7 @@ def scale(self) -> int:
5859

5960

6061
class NestedField(object):
61-
def __init__(self, is_optional: bool, field_id: int, name: str, field_type: Type, doc=None):
62+
def __init__(self, is_optional: bool, field_id: int, name: str, field_type: Type, doc: str = None):
6263
self._is_optional = is_optional
6364
self._id = field_id
6465
self._name = name
@@ -86,8 +87,8 @@ def type(self) -> Type:
8687
return self._type
8788

8889
def __repr__(self):
89-
return (f"NestedField({self._is_optional}, {self._id}, "
90-
f"{repr(self._name)}, {repr(self._type)}, {repr(self._doc)})")
90+
return (f"NestedField(is_optional={self._is_optional}, field_id={self._id}, "
91+
f"name={repr(self._name)}, field_type={repr(self._type)}, doc={repr(self._doc)})")
9192

9293
def __str__(self):
9394
return (f"{self._id}: {self._name}: {'optional' if self._is_optional else 'required'} {self._type}"
@@ -96,7 +97,7 @@ def __str__(self):
9697

9798
class StructType(Type):
9899
def __init__(self, fields: list):
99-
super().__init__(f"struct<{', '.join(map(str, fields))}>", f"StructType({repr(fields)})")
100+
super().__init__(f"struct<{', '.join(map(str, fields))}>", f"StructType(fields={repr(fields)})")
100101
self._fields = fields
101102

102103
@property
@@ -105,21 +106,21 @@ def fields(self) -> list:
105106

106107

107108
class ListType(Type):
108-
def __init__(self, element_field: NestedField):
109-
super().__init__(f"list<{element_field.type}>", f"ListType({repr(element_field)})")
110-
self._element_field = element_field
109+
def __init__(self, element: NestedField):
110+
super().__init__(f"list<{element.type}>", f"ListType(element={repr(element)})")
111+
self._element_field = element
111112

112113
@property
113114
def element(self) -> NestedField:
114115
return self._element_field
115116

116117

117118
class MapType(Type):
118-
def __init__(self, key_field: NestedField, value_field: NestedField):
119-
super().__init__(f"map<{key_field.type}, {value_field.type}>",
120-
f"MapType({repr(key_field)}, {repr(value_field)})")
121-
self._key_field = key_field
122-
self._value_field = value_field
119+
def __init__(self, key: NestedField, value: NestedField):
120+
super().__init__(f"map<{key.type}, {value.type}>",
121+
f"MapType(key={repr(key)}, value={repr(value)})")
122+
self._key_field = key
123+
self._value_field = value
123124

124125
@property
125126
def key(self) -> NestedField:

python/tests/test_types.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,19 @@ def test_repr_primitive_types(input_type):
2929

3030

3131
def test_fixed_type():
32-
type_var = FixedType(5)
32+
type_var = FixedType(length=5)
3333
assert type_var.length == 5
34+
assert str(type_var) == "fixed[5]"
35+
assert repr(type_var) == "FixedType(length=5)"
3436
assert str(type_var) == str(eval(repr(type_var)))
3537

3638

3739
def test_decimal_type():
38-
type_var = DecimalType(9, 2)
40+
type_var = DecimalType(precision=9, scale=2)
3941
assert type_var.precision == 9
4042
assert type_var.scale == 2
43+
assert str(type_var) == 'decimal(9, 2)'
44+
assert repr(type_var) == "DecimalType(precision=9, scale=2)"
4145
assert str(type_var) == str(eval(repr(type_var)))
4246

4347

0 commit comments

Comments
 (0)