| 
1 | 1 | from __future__ import annotations  | 
2 | 2 | 
 
  | 
3 | 3 | import re  | 
4 |  | -from typing import Any, Dict, Optional, Union  | 
 | 4 | +from typing import Any, Dict, List, Optional, Union  | 
5 | 5 | 
 
  | 
6 | 6 | from wikibaseintegrator.entities.baseentity import BaseEntity  | 
7 |  | -from wikibaseintegrator.models.forms import Forms  | 
 | 7 | +from wikibaseintegrator.models.forms import Form, Forms  | 
8 | 8 | from wikibaseintegrator.models.lemmas import Lemmas  | 
9 |  | -from wikibaseintegrator.models.senses import Senses  | 
 | 9 | +from wikibaseintegrator.models.senses import Sense, Senses  | 
10 | 10 | from wikibaseintegrator.wbi_config import config  | 
 | 11 | +from wikibaseintegrator.wbi_helpers import lexeme_add_form, lexeme_add_sense  | 
11 | 12 | 
 
  | 
12 | 13 | 
 
  | 
13 | 14 | class LexemeEntity(BaseEntity):  | 
@@ -163,3 +164,27 @@ def write(self, **kwargs: Any) -> LexemeEntity:  | 
163 | 164 |         """  | 
164 | 165 |         json_data = super()._write(data=self.get_json(), **kwargs)  | 
165 | 166 |         return self.from_json(json_data=json_data)  | 
 | 167 | + | 
 | 168 | +    def write_form(self, form: Form) -> str:  | 
 | 169 | +        if not self.id:  | 
 | 170 | +            raise Exception('You must set a Lexeme id before writing a Form.')  | 
 | 171 | +        return lexeme_add_form(lexeme_id=self.id, data=form.get_json())['form']['id']  | 
 | 172 | + | 
 | 173 | +    def write_forms(self) -> List[str]:  | 
 | 174 | +        ids: List = []  | 
 | 175 | +        for form in self.forms:  | 
 | 176 | +            ids.append(self.write_form(form))  | 
 | 177 | + | 
 | 178 | +        return ids  | 
 | 179 | + | 
 | 180 | +    def write_sense(self, sense: Sense) -> str:  | 
 | 181 | +        if not self.id:  | 
 | 182 | +            raise Exception('You must set a Lexeme id before writing a Sense.')  | 
 | 183 | +        return lexeme_add_sense(lexeme_id=self.id, data=sense.get_json())['sense']['id']  | 
 | 184 | + | 
 | 185 | +    def write_senses(self) -> List[str]:  | 
 | 186 | +        ids: List = []  | 
 | 187 | +        for sense in self.senses:  | 
 | 188 | +            ids.append(self.write_sense(sense))  | 
 | 189 | + | 
 | 190 | +        return ids  | 
0 commit comments