Source code for marivo.analysis.refs
"""Typed refs for analysis public operators."""
from __future__ import annotations
from pydantic import BaseModel, ConfigDict, field_validator
__all__ = ["ArtifactRef", "CalendarRef"]
class _RefBase(BaseModel):
model_config = ConfigDict(extra="forbid", frozen=True)
id: str
def __init__(self, id: str | None = None, **data: object) -> None:
if id is not None:
if "id" in data:
raise TypeError("ref id supplied both positionally and by keyword")
data["id"] = id
super().__init__(**data)
@field_validator("id")
@classmethod
def validate_non_empty(cls, value: str) -> str:
normalized = value.strip()
if not normalized:
raise ValueError("ref id must be non-empty")
return normalized
def __str__(self) -> str:
return self.id
[docs]
class CalendarRef(_RefBase):
"""Calendar provider ref."""
[docs]
class ArtifactRef(_RefBase):
"""Session-local analysis artifact ref."""