Skip to content

Commit eb493ec

Browse files
committed
Add function for senses and forms
1 parent 5bc61b8 commit eb493ec

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

wikibaseintegrator/entities/lexeme.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
from __future__ import annotations
22

33
import re
4-
from typing import Any, Dict, Optional, Union
4+
from typing import Any, Dict, List, Optional, Union
55

66
from wikibaseintegrator.entities.baseentity import BaseEntity
7-
from wikibaseintegrator.models.forms import Forms
7+
from wikibaseintegrator.models.forms import Form, Forms
88
from wikibaseintegrator.models.lemmas import Lemmas
9-
from wikibaseintegrator.models.senses import Senses
9+
from wikibaseintegrator.models.senses import Sense, Senses
1010
from wikibaseintegrator.wbi_config import config
11+
from wikibaseintegrator.wbi_helpers import lexeme_add_form, lexeme_add_sense
1112

1213

1314
class LexemeEntity(BaseEntity):
@@ -147,3 +148,27 @@ def write(self, **kwargs: Any) -> LexemeEntity:
147148
"""
148149
json_data = super()._write(data=self.get_json(), **kwargs)
149150
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

wikibaseintegrator/models/forms.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ def get_json(self) -> List[Dict]:
4040

4141
return json_data
4242

43+
def __iter__(self):
44+
return self.forms
45+
4346
def __len__(self):
4447
return len(self.forms)
4548

46-
4749
class Form(BaseModel):
4850
def __init__(self, form_id: Optional[str] = None, representations: Optional[Representations] = None, grammatical_features: Optional[Union[str, int, List[str]]] = None, claims: Optional[Claims] = None):
4951
self.id = form_id

0 commit comments

Comments
 (0)