|
75 | 75 | from pyiceberg.typedef import ( |
76 | 76 | EMPTY_DICT, |
77 | 77 | IcebergBaseModel, |
| 78 | + IcebergRootModel, |
78 | 79 | Identifier, |
79 | 80 | KeyDefaultDict, |
80 | 81 | Properties, |
@@ -403,8 +404,25 @@ class AssertDefaultSortOrderId(TableRequirement): |
403 | 404 | default_sort_order_id: int = Field(..., alias="default-sort-order-id") |
404 | 405 |
|
405 | 406 |
|
| 407 | +class Namespace(IcebergRootModel[List[str]]): |
| 408 | + """Reference to one or more levels of a namespace.""" |
| 409 | + |
| 410 | + root: List[str] = Field( |
| 411 | + ..., |
| 412 | + description='Reference to one or more levels of a namespace', |
| 413 | + example=['accounting', 'tax'], |
| 414 | + ) |
| 415 | + |
| 416 | + |
| 417 | +class TableIdentifier(IcebergBaseModel): |
| 418 | + """Fully Qualified identifier to a table.""" |
| 419 | + |
| 420 | + namespace: Namespace |
| 421 | + name: str |
| 422 | + |
| 423 | + |
406 | 424 | class CommitTableRequest(IcebergBaseModel): |
407 | | - identifier: Identifier = Field() |
| 425 | + identifier: TableIdentifier = Field() |
408 | 426 | requirements: Tuple[SerializeAsAny[TableRequirement], ...] = Field(default_factory=tuple) |
409 | 427 | updates: Tuple[SerializeAsAny[TableUpdate], ...] = Field(default_factory=tuple) |
410 | 428 |
|
@@ -535,7 +553,11 @@ def update_schema(self, allow_incompatible_changes: bool = False, case_sensitive |
535 | 553 |
|
536 | 554 | def _do_commit(self, updates: Tuple[TableUpdate, ...], requirements: Tuple[TableRequirement, ...]) -> None: |
537 | 555 | response = self.catalog._commit_table( # pylint: disable=W0212 |
538 | | - CommitTableRequest(identifier=self.identifier[1:], updates=updates, requirements=requirements) |
| 556 | + CommitTableRequest( |
| 557 | + identifier=TableIdentifier(namespace=self.identifier[:-1], name=self.identifier[-1]), |
| 558 | + updates=updates, |
| 559 | + requirements=requirements, |
| 560 | + ) |
539 | 561 | ) # pylint: disable=W0212 |
540 | 562 | self.metadata = response.metadata |
541 | 563 | self.metadata_location = response.metadata_location |
|
0 commit comments