Source code for lakefs.models

"""
Module containing all of lakeFS data models
"""

from __future__ import annotations

from datetime import datetime
from typing import List, Optional, Literal

from lakefs.namedtuple import LenientNamedTuple

_COMMON_PREFIX = "common_prefix"
_OBJECT = "object"


[docs] class Commit(LenientNamedTuple): """ NamedTuple representing a lakeFS commit's properties """ id: str parents: List[str] committer: str message: str creation_date: int meta_range_id: str metadata: Optional[dict[str, str]] = None
[docs] class Change(LenientNamedTuple): """ NamedTuple representing a diff change between two refs in lakeFS """ type: Literal["added", "removed", "changed", "conflict", "prefix_changed"] path: str path_type: Literal["common_prefix", "object"] size_bytes: Optional[int] def __repr__(self): return f'Change(type="{self.type}", path="{self.path}", path_type="{self.path_type}")'
[docs] class ImportStatus(LenientNamedTuple): """ NamedTuple representing an ongoing import's status in lakeFS """ class _Error(LenientNamedTuple): message: str completed: bool update_time: datetime ingested_objects: Optional[int] metarange_id: Optional[str] commit: Optional[Commit] error: Optional[_Error] def __init__(self, **kwargs): commit = kwargs.get("commit") if commit is not None: kwargs["commit"] = Commit(**commit) error = kwargs.get("error") if error is not None: kwargs["error"] = ImportStatus._Error(**error) super().__init__(**kwargs)
[docs] class ServerStorageConfiguration(LenientNamedTuple): """ Represent a lakeFS server's storage configuration """ blockstore_type: str pre_sign_support: bool import_support: bool blockstore_namespace_example: str blockstore_namespace_validity_regex: str pre_sign_support_ui: bool import_validity_regex: str default_namespace_prefix: Optional[str] = None
[docs] class ObjectInfo(LenientNamedTuple): """ Represent a lakeFS object's stats """ path: str physical_address: str checksum: str mtime: int physical_address_expiry: Optional[int] = None size_bytes: Optional[int] = None metadata: Optional[dict[str, str]] = None content_type: Optional[str] = None def __repr__(self): return f'ObjectInfo(path="{self.path}")'
[docs] class CommonPrefix(LenientNamedTuple): """ Represents a common prefix in lakeFS """ path: str def __repr__(self): return f'CommonPrefix(path="{self.path}")'
[docs] class RepositoryProperties(LenientNamedTuple): """ Represent a lakeFS repository's properties """ id: str creation_date: int default_branch: str storage_namespace: str