Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions pyiceberg/utils/properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def property_as_int(
property_name: str,
default: int | None = None,
) -> int | None:
if value := properties.get(property_name):
if (value := properties.get(property_name)) is not None:
try:
return int(value)
except ValueError as e:
Expand All @@ -44,7 +44,7 @@ def property_as_float(
property_name: str,
default: float | None = None,
) -> float | None:
if value := properties.get(property_name):
if (value := properties.get(property_name)) is not None:
try:
return float(value)
except ValueError as e:
Expand All @@ -58,7 +58,7 @@ def property_as_bool(
property_name: str,
default: bool,
) -> bool:
if value := properties.get(property_name):
if (value := properties.get(property_name)) is not None:
try:
return strtobool(value)
except ValueError as e:
Expand All @@ -71,7 +71,7 @@ def get_first_property_value(
*property_names: str,
) -> Any | None:
for property_name in property_names:
if property_value := properties.get(property_name):
if (property_value := properties.get(property_name)) is not None:
return property_value
return None

Expand Down
40 changes: 40 additions & 0 deletions tests/utils/test_properties.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,36 @@ def test_property_as_bool_with_invalid_value() -> None:
assert "Could not parse table property some_bool_prop to a boolean: invalid" in str(exc.value)


def test_property_as_int_with_empty_string() -> None:
properties = {
"some_int_prop": "",
}

with pytest.raises(ValueError) as exc:
property_as_int(properties, "some_int_prop", default=1)
assert "Could not parse table property some_int_prop to an integer: " in str(exc.value)


def test_property_as_float_with_empty_string() -> None:
properties = {
"some_float_prop": "",
}

with pytest.raises(ValueError) as exc:
property_as_float(properties, "some_float_prop", default=1.0)
assert "Could not parse table property some_float_prop to a float: " in str(exc.value)


def test_property_as_bool_with_empty_string() -> None:
properties = {
"some_bool_prop": "",
}

with pytest.raises(ValueError) as exc:
property_as_bool(properties, "some_bool_prop", default=True)
assert "Could not parse table property some_bool_prop to a boolean: " in str(exc.value)


def test_get_first_property_value() -> None:
properties = {
"prop_1": "value_1",
Expand All @@ -96,3 +126,13 @@ def test_get_first_property_value() -> None:

assert get_first_property_value(properties, "prop_2", "prop_1") == "value_2"
assert get_first_property_value(properties, "missing", "prop_1") == "value_1"


def test_get_first_property_value_with_empty_string() -> None:
properties = {
"empty": "",
"prop_1": "value_1",
}

assert get_first_property_value(properties, "empty", "prop_1") == ""
assert get_first_property_value(properties, "missing", "empty") == ""