Source code for labapi.entry.entries.unknown
"""Entry fallback types."""
from __future__ import annotations
from typing import TYPE_CHECKING
from typing_extensions import override
from .base import Entry
if TYPE_CHECKING:
from labapi.user import User
_UNKNOWN_ENTRY_REGISTRY_SENTINEL = "__labapi_internal_unknown_entry__"
_UNIMPLEMENTED_ENTRY_REGISTRY_SENTINEL = "__labapi_internal_unimplemented_entry__"
[docs]
class UnknownEntry(Entry[str], part_type=_UNKNOWN_ENTRY_REGISTRY_SENTINEL):
"""Fallback entry wrapper for unknown upstream part types."""
[docs]
def __init__(self, eid: str, data: str, user: User, *, part_type: str):
"""Initialize an unknown entry wrapper."""
super().__init__(eid, data, user)
self._source_part_type = part_type
@property
@override
def content_type(self) -> str:
"""Return the original upstream part type."""
return self._source_part_type
@property
@override
def content(self) -> str:
"""Return the raw entry payload."""
return self._data
@content.setter
@override
def content(self, value: str) -> None:
"""Reject updates for unsupported entry types."""
raise NotImplementedError(
f"Cannot update unsupported entry type '{self._source_part_type}'"
)
[docs]
class UnimplementedEntry(
UnknownEntry,
part_type=_UNIMPLEMENTED_ENTRY_REGISTRY_SENTINEL,
meta_part_types={
"sketch entry",
"equation entry",
"reference entry",
"assignment entry",
},
):
"""Fallback entry wrapper for known upstream part types not yet implemented."""
@UnknownEntry.content.setter # type: ignore[attr-defined]
@override
def content(self, value: str) -> None:
"""Reject updates for recognized-but-unimplemented entry types."""
raise NotImplementedError(
f"Cannot update unimplemented entry type '{self._source_part_type}'"
)