Skip to content

Commit 49b6207

Browse files
committed
Add function for senses and forms
Update senses.py
1 parent a795340 commit 49b6207

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
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):
@@ -163,3 +164,27 @@ def write(self, **kwargs: Any) -> LexemeEntity:
163164
"""
164165
json_data = super()._write(data=self.get_json(), **kwargs)
165166
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

wikibaseintegrator/models/forms.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ 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

wikibaseintegrator/models/senses.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ def get_json(self) -> List[Dict]:
3737

3838
return json_data
3939

40+
def __iter__(self):
41+
return self.senses
42+
4043
def __len__(self):
4144
return len(self.senses)
4245

@@ -75,6 +78,9 @@ def remove(self) -> Sense:
7578
self.removed = True
7679
return self
7780

81+
def __eq__(self, other):
82+
return self.glosses == other.glosses and self.claims == other.glosses
83+
7884

7985
class Glosses(LanguageValues):
8086
pass

0 commit comments

Comments
 (0)