From c0b5900ad79537146489ce920e012ff8928aa8e6 Mon Sep 17 00:00:00 2001 From: dcfidalgo Date: Mon, 7 Mar 2022 10:57:55 +0100 Subject: [PATCH] feat: make text and tokens immutable --- src/rubrix/client/models.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/rubrix/client/models.py b/src/rubrix/client/models.py index 370fc7df5a..030bf7d51b 100644 --- a/src/rubrix/client/models.py +++ b/src/rubrix/client/models.py @@ -231,7 +231,7 @@ class TokenClassificationRecord(_Validators): """ text: str = Field(min_length=1) - tokens: List[str] = Field(min_items=1) + tokens: Tuple[str, ...] = Field(min_items=1) prediction: Optional[ List[Union[Tuple[str, int, int], Tuple[str, int, int, float]]] @@ -248,6 +248,12 @@ class TokenClassificationRecord(_Validators): metrics: Optional[Dict[str, Any]] = None search_keywords: Optional[List[str]] = None + def __setattr__(self, name: str, value: Any): + """Make text and tokens immutable""" + if name in ["text", "tokens"]: + raise AttributeError(f"You cannot assign a new value to `{name}`") + super().__setattr__(name, value) + @validator("prediction") def add_default_score( cls,