|
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): |
@@ -147,3 +148,27 @@ def write(self, **kwargs: Any) -> LexemeEntity: |
147 | 148 | """ |
148 | 149 | json_data = super()._write(data=self.get_json(), **kwargs) |
149 | 150 | return self.from_json(json_data=json_data) |
| 151 | + |
| 152 | + def write_form(self, form: Form) -> str: |
| 153 | + if not self.id: |
| 154 | + raise Exception('You must set a Lexeme id before writing a Form.') |
| 155 | + return lexeme_add_form(lexeme_id=self.id, data=form.get_json())['form']['id'] |
| 156 | + |
| 157 | + def write_forms(self) -> List[str]: |
| 158 | + ids: List = [] |
| 159 | + for form in self.forms: |
| 160 | + ids.append(self.write_form(form)) |
| 161 | + |
| 162 | + return ids |
| 163 | + |
| 164 | + def write_sense(self, sense: Sense) -> str: |
| 165 | + if not self.id: |
| 166 | + raise Exception('You must set a Lexeme id before writing a Sense.') |
| 167 | + return lexeme_add_sense(lexeme_id=self.id, data=sense.get_json())['sense']['id'] |
| 168 | + |
| 169 | + def write_senses(self) -> List[str]: |
| 170 | + ids: List = [] |
| 171 | + for sense in self.senses: |
| 172 | + ids.append(self.write_sense(sense)) |
| 173 | + |
| 174 | + return ids |
0 commit comments