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
1 change: 1 addition & 0 deletions pyiceberg/catalog/rest/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1179,6 +1179,7 @@ def _response_to_view(self, identifier_tuple: tuple[str, ...], view_response: Vi
return View(
identifier=identifier_tuple,
metadata=view_response.metadata,
config=view_response.config,
)

def _refresh_token(self) -> None:
Expand Down
5 changes: 4 additions & 1 deletion pyiceberg/view/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from uuid import UUID

from pyiceberg.schema import Schema
from pyiceberg.typedef import Identifier
from pyiceberg.typedef import EMPTY_DICT, Identifier
from pyiceberg.view.metadata import SQLViewRepresentation, ViewHistoryEntry, ViewMetadata, ViewVersion


Expand All @@ -29,14 +29,17 @@ class View:

_identifier: Identifier
metadata: ViewMetadata
config: dict[str, str]

def __init__(
self,
identifier: Identifier,
metadata: ViewMetadata,
config: dict[str, str] = EMPTY_DICT,
) -> None:
self._identifier = identifier
self.metadata = metadata
self.config = config

def name(self) -> Identifier:
"""Return the identifier of this view."""
Expand Down
3 changes: 3 additions & 0 deletions tests/catalog/test_rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -1764,6 +1764,7 @@ def test_create_view_200(rest_mock: Mocker, table_schema_simple: Schema, example
metadata=ViewMetadata(**example_view_metadata_rest_json["metadata"]),
)
assert actual == expected
assert actual.config == example_view_metadata_rest_json["config"]


def test_create_view_409(
Expand Down Expand Up @@ -1810,6 +1811,7 @@ def test_load_view_200(rest_mock: Mocker, example_view_metadata_rest_json: dict[
actual = catalog.load_view(("fokko", "view"))
expected = View(identifier=("fokko", "view"), metadata=ViewMetadata(**example_view_metadata_rest_json["metadata"]))
assert actual == expected
assert actual.config == example_view_metadata_rest_json["config"]


def test_load_view_404(rest_mock: Mocker) -> None:
Expand Down Expand Up @@ -2769,6 +2771,7 @@ def test_register_view_200(rest_mock: Mocker, example_view_metadata_rest_json: d
metadata=ViewMetadata(**example_view_metadata_rest_json["metadata"]),
)
assert actual == expected
assert actual.config == example_view_metadata_rest_json["config"]


def test_register_view_409_view(rest_mock: Mocker) -> None:
Expand Down
13 changes: 13 additions & 0 deletions tests/test_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,19 @@ def test_view_properties(view: View) -> None:
assert view.properties == {"comment": "this is a test view"}


def test_view_config_defaults_to_empty(view: View) -> None:
assert view.config == {}


def test_view_config(view: View) -> None:
config = {"token": "view-token"}
configured_view = View(view.name(), view.metadata, config=config)

assert configured_view.config == config
assert configured_view.properties == view.properties
assert configured_view == view


def test_view_location(view: View) -> None:
assert view.location() == "s3://bucket/test/location/test_view"

Expand Down
Loading