Source code for wikibaseintegrator.models.senses
from __future__ import annotations
from collections.abc import Iterator
from typing import Self
from wikibaseintegrator.models.basemodel import BaseModel
from wikibaseintegrator.models.glosses import Glosses # pylint: disable=unused-import # Re-exported: Sense and Glosses used to be defined in this module
from wikibaseintegrator.models.sense import Sense
from wikibaseintegrator.wbi_enums import ActionIfExists
[docs]
class Senses(BaseModel):
def __init__(self) -> None:
self.senses: list[Sense] = []
[docs]
def get(self, id: str) -> Sense | None:
for sense in self.senses:
if sense.id == id:
return sense
return None
# TODO: implement action_if_exists
# action_if_exists is accepted for symmetry with Claims.add() but not implemented yet
# pylint: disable-next=unused-argument
[docs]
def add(self, sense: Sense, action_if_exists: ActionIfExists = ActionIfExists.APPEND_OR_REPLACE) -> Self:
self.senses.append(sense)
return self
[docs]
def from_json(self, json_data: list[dict]) -> Self:
for sense in json_data:
self.add(sense=Sense().from_json(sense))
return self
[docs]
def get_json(self) -> list[dict]:
json_data: list[dict] = []
for sense in self.senses:
json_data.append(sense.get_json())
return json_data
def __iter__(self) -> Iterator[Sense]:
return iter(self.senses)
def __len__(self) -> int:
return len(self.senses)