Source code for wikibaseintegrator.models.language_value

from __future__ import annotations

from typing import Self

from wikibaseintegrator.models.basemodel import BaseModel


[docs] class LanguageValue(BaseModel): def __init__(self, language: str, value: str | None = None) -> None: self.language = language self.value = value self.removed = False @property def language(self) -> str: return self.__language @language.setter def language(self, value: str | None) -> None: if value is None: raise ValueError("language can't be None") if value == '': raise ValueError("language can't be empty") if not isinstance(value, str): raise ValueError("language must be a str") self.__language = value @property def value(self) -> str | None: """ The value of the LanguageValue instance. :return: A string with the value of the LanguageValue instance. """ return self.__value @value.setter def value(self, value: str | None) -> None: self.__value = value @property def removed(self) -> bool: return self.__removed @removed.setter def removed(self, value: bool) -> None: self.__removed = value
[docs] def remove(self) -> Self: self.removed = True return self
[docs] def from_json(self, json_data: dict[str, str]) -> Self: self.language = json_data['language'] self.value = json_data['value'] return self
[docs] def get_json(self) -> dict[str, str | None]: json_data = { 'language': self.language, 'value': self.value } if self.removed: json_data['remove'] = '' return json_data
def __contains__(self, item: object) -> bool: return isinstance(item, str) and item in (self.value or '') def __eq__(self, other: object) -> bool: if isinstance(other, LanguageValue): return self.value == other.value and self.language == other.language return self.value == other def __len__(self) -> int: return len(self.value or '') def __str__(self) -> str: return self.value or ''