Skip to content

Commit 565c8e6

Browse files
committed
Module cleanup, renaming sensekey -> sense key
1 parent 65b9e36 commit 565c8e6

File tree

4 files changed

+47
-45
lines changed

4 files changed

+47
-45
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
* `wn.compat` namespace (see [#55])
88
* `wn.compat.sensekey` module ([#55]) with methods:
9-
- `sensekey_getter()`
9+
- `sense_key_getter()`
1010
- `sense_getter()`
1111
- `unescape_oewn_sense_key()`
1212
- `escape_oewn_sense_key()`

tests/compat_sensekey_test.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
def test_unescape_oewn_sense_key():
8-
unescape = sensekey.unescape_oewn_sense_key
8+
unescape = sensekey._unescape_oewn_sense_key
99
assert unescape("") == ""
1010
assert unescape("abc") == "abc"
1111
assert unescape(".") == "." # only becomes : in second part of key
@@ -34,7 +34,7 @@ def test_unescape_oewn_sense_key():
3434

3535

3636
def test_escape_oewn_sense_key():
37-
escape = sensekey.escape_oewn_sense_key
37+
escape = sensekey._escape_oewn_sense_key
3838
assert escape("") == ""
3939
assert escape("abc") == "abc"
4040
assert escape(".") == "." # only becomes : in second part of key
@@ -56,25 +56,25 @@ def test_escape_oewn_sense_key():
5656

5757

5858
@pytest.mark.usefixtures("uninitialized_datadir")
59-
def test_sensekey_getter(datadir):
60-
wn.add(datadir / "sensekey-variations.xml")
59+
def test_sense_key_getter(datadir):
60+
wn.add(datadir / "sense-key-variations.xml")
6161

62-
get_omw_sensekey = sensekey.sensekey_getter("omw-en:1.4")
63-
get_oewn_sensekey = sensekey.sensekey_getter("oewn:2024")
62+
get_omw_sense_key = sensekey.sense_key_getter("omw-en:1.4")
63+
get_oewn_sense_key = sensekey.sense_key_getter("oewn:2024")
6464

6565
omw_sense = wn.sense("omw-en--apos-s_Gravenhage-08950407-n", lexicon="omw-en:1.4")
6666
oewn_sense = wn.sense("oewn--ap-s_gravenhage__1.15.00..", lexicon="oewn:2024")
6767

68-
assert get_omw_sensekey(omw_sense) == "'s_gravenhage%1:15:00::"
69-
assert get_omw_sensekey(oewn_sense) is None
68+
assert get_omw_sense_key(omw_sense) == "'s_gravenhage%1:15:00::"
69+
assert get_omw_sense_key(oewn_sense) is None
7070

71-
assert get_oewn_sensekey(omw_sense) is None
72-
assert get_oewn_sensekey(oewn_sense) == "'s_gravenhage%1:15:00::"
71+
assert get_oewn_sense_key(omw_sense) is None
72+
assert get_oewn_sense_key(oewn_sense) == "'s_gravenhage%1:15:00::"
7373

7474

7575
@pytest.mark.usefixtures("uninitialized_datadir")
7676
def test_sense_getter(datadir):
77-
wn.add(datadir / "sensekey-variations.xml")
77+
wn.add(datadir / "sense-key-variations.xml")
7878

7979
get_omw_sense = sensekey.sense_getter("omw-en:1.4")
8080
get_oewn_sense = sensekey.sense_getter("oewn:2024")

wn/compat/sensekey.py

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""Functions Related to Sense Keys"""
2+
13
from typing import Callable, Optional
24

35
import wn
@@ -41,30 +43,7 @@
4143
]
4244

4345

44-
def sensekey_getter(lexicon: str) -> SensekeyGetter:
45-
if lexicon in METADATA_LEXICONS:
46-
47-
def getter(sense: wn.Sense) -> Optional[str]:
48-
return sense.metadata().get('identifier')
49-
50-
elif lexicon in SENSE_ID_LEXICONS:
51-
lexid, _ = split_lexicon_specifier(lexicon)
52-
prefix_len = len(lexid) + 1
53-
54-
def getter(sense: wn.Sense) -> Optional[str]:
55-
sensekey = sense.id[prefix_len:]
56-
# check if sense id is likely an escaped sensekey
57-
if '__' in sensekey:
58-
return unescape_oewn_sense_key(sense.id[prefix_len:])
59-
return None
60-
61-
else:
62-
raise wn.Error(f'no sensekey getter is defined for {lexicon}')
63-
64-
return getter
65-
66-
67-
def unescape_oewn_sense_key(sense_key: str) -> str:
46+
def _unescape_oewn_sense_key(sense_key: str) -> str:
6847
lemma, _, rest = sense_key.partition('__')
6948
for esc, char in OEWN_LEMMA_UNESCAPE_SEQUENCES:
7049
lemma = lemma.replace(esc, char)
@@ -75,7 +54,7 @@ def unescape_oewn_sense_key(sense_key: str) -> str:
7554
return lemma
7655

7756

78-
def escape_oewn_sense_key(sense_key: str) -> str:
57+
def _escape_oewn_sense_key(sense_key: str) -> str:
7958
lemma, _, rest = sense_key.partition('%')
8059
for esc, char in OEWN_LEMMA_UNESCAPE_SEQUENCES:
8160
lemma = lemma.replace(char, esc)
@@ -86,24 +65,47 @@ def escape_oewn_sense_key(sense_key: str) -> str:
8665
return lemma
8766

8867

68+
def sense_key_getter(lexicon: str) -> SensekeyGetter:
69+
if lexicon in METADATA_LEXICONS:
70+
71+
def getter(sense: wn.Sense) -> Optional[str]:
72+
return sense.metadata().get('identifier')
73+
74+
elif lexicon in SENSE_ID_LEXICONS:
75+
lexid, _ = split_lexicon_specifier(lexicon)
76+
prefix_len = len(lexid) + 1
77+
78+
def getter(sense: wn.Sense) -> Optional[str]:
79+
sense_key = sense.id[prefix_len:]
80+
# check if sense id is likely an escaped sense key
81+
if '__' in sense_key:
82+
return _unescape_oewn_sense_key(sense.id[prefix_len:])
83+
return None
84+
85+
else:
86+
raise wn.Error(f'no sense key getter is defined for {lexicon}')
87+
88+
return getter
89+
90+
8991
def sense_getter(lexicon: str, wordnet: Optional[wn.Wordnet] = None) -> SenseGetter:
9092
if wordnet is None:
9193
wordnet = wn.Wordnet(lexicon)
9294

9395
if lexicon in METADATA_LEXICONS:
94-
get_sensekey = sensekey_getter(lexicon)
95-
sensekey_map = {get_sensekey(s): s for s in wordnet.senses()}
96-
if None in sensekey_map:
97-
sensekey_map.pop(None) # senses without sense keys
96+
get_sense_key = sense_key_getter(lexicon)
97+
sense_key_map = {get_sense_key(s): s for s in wordnet.senses()}
98+
if None in sense_key_map:
99+
sense_key_map.pop(None) # senses without sense keys
98100

99-
def getter(sensekey: str) -> Optional[wn.Sense]:
100-
return sensekey_map.get(sensekey)
101+
def getter(sense_key: str) -> Optional[wn.Sense]:
102+
return sense_key_map.get(sense_key)
101103

102104
elif lexicon in SENSE_ID_LEXICONS:
103105
lexid, _ = split_lexicon_specifier(lexicon)
104106

105-
def getter(sensekey: str) -> Optional[wn.Sense]:
106-
sense_id = f'{lexid}-{escape_oewn_sense_key(sensekey)}'
107+
def getter(sense_key: str) -> Optional[wn.Sense]:
108+
sense_id = f'{lexid}-{_escape_oewn_sense_key(sense_key)}'
107109
try:
108110
return wordnet.sense(sense_id)
109111
except wn.Error:

0 commit comments

Comments
 (0)