Skip to content

Commit a004529

Browse files
committed
Call iterative methods from non-iterative
1 parent 6a47ded commit a004529

File tree

1 file changed

+5
-71
lines changed

1 file changed

+5
-71
lines changed

dawg_python/dawgs.py

+5-71
Original file line numberDiff line numberDiff line change
@@ -138,21 +138,7 @@ def __init__(self) -> None:
138138
self.guide = None
139139

140140
def keys(self, prefix: str = "") -> list[str]:
141-
b_prefix = prefix.encode("utf8")
142-
res = []
143-
144-
index = self.dct.follow_bytes(b_prefix, self.dct.ROOT)
145-
if index is None:
146-
return res
147-
148-
completer = wrapper.Completer(self.dct, self.guide)
149-
completer.start(index, b_prefix)
150-
151-
while completer.next():
152-
key = completer.key.decode("utf8")
153-
res.append(key)
154-
155-
return res
141+
return list(self.iterkeys(prefix))
156142

157143
def iterkeys(self, prefix: str = "") -> Generator[str, None, None]:
158144
b_prefix = prefix.encode("utf8")
@@ -248,25 +234,7 @@ def b_get_value(self, b_key: bytes) -> list[bytes]:
248234
return self._value_for_index(index)
249235

250236
def keys(self, prefix: str | bytes = "") -> list[str]:
251-
if not isinstance(prefix, bytes):
252-
prefix = prefix.encode("utf8")
253-
res = []
254-
255-
index = self.dct.ROOT
256-
257-
if prefix:
258-
index = self.dct.follow_bytes(prefix, index)
259-
if not index:
260-
return res
261-
262-
completer = wrapper.Completer(self.dct, self.guide)
263-
completer.start(index, prefix)
264-
265-
while completer.next():
266-
payload_idx = completer.key.index(self._payload_separator)
267-
u_key = completer.key[:payload_idx].decode("utf8")
268-
res.append(u_key)
269-
return res
237+
return list(self.iterkeys(prefix))
270238

271239
def iterkeys(self, prefix: str | bytes = "") -> Generator[bytes, None, None]:
272240
if not isinstance(prefix, bytes):
@@ -288,24 +256,7 @@ def iterkeys(self, prefix: str | bytes = "") -> Generator[bytes, None, None]:
288256
yield u_key
289257

290258
def items(self, prefix: str | bytes = "") -> list[tuple[str, bytes]]:
291-
if not isinstance(prefix, bytes):
292-
prefix = prefix.encode("utf8")
293-
res = []
294-
295-
index = self.dct.ROOT
296-
if prefix:
297-
index = self.dct.follow_bytes(prefix, index)
298-
if not index:
299-
return res
300-
301-
completer = wrapper.Completer(self.dct, self.guide)
302-
completer.start(index, prefix)
303-
304-
while completer.next():
305-
key, value = completer.key.split(self._payload_separator)
306-
res.append((key.decode("utf8"), a2b_base64(value)))
307-
308-
return res
259+
return list(self.iteritems(prefix))
309260

310261
def iteritems(self, prefix: str | bytes = "") -> Generator[tuple[str, bytes], None, None]:
311262
if not isinstance(prefix, bytes):
@@ -441,8 +392,7 @@ def _value_for_index(self, index: int) -> list[tuple[Any, ...]]:
441392
return [self._struct.unpack(val) for val in value]
442393

443394
def items(self, prefix: str | bytes = "") -> list[tuple[str, tuple[Any, ...]]]:
444-
res = super().items(prefix)
445-
return [(key, self._struct.unpack(val)) for (key, val) in res]
395+
return list(self.iteritems(prefix))
446396

447397
def iteritems(self, prefix: str | bytes = "") -> Generator[tuple[str, tuple[Any, ...]], None, None]:
448398
res = super().iteritems(prefix)
@@ -486,23 +436,7 @@ class IntCompletionDAWG(CompletionDAWG, IntDAWG):
486436
"""
487437

488438
def items(self, prefix: str | bytes = "") -> list[tuple[str, int]]:
489-
if not isinstance(prefix, bytes):
490-
prefix = prefix.encode("utf8")
491-
res = []
492-
index = self.dct.ROOT
493-
494-
if prefix:
495-
index = self.dct.follow_bytes(prefix, index)
496-
if not index:
497-
return res
498-
499-
completer = wrapper.Completer(self.dct, self.guide)
500-
completer.start(index, prefix)
501-
502-
while completer.next():
503-
res.append((completer.key.decode("utf8"), completer.value()))
504-
505-
return res
439+
return list(self.iteritems(prefix))
506440

507441
def iteritems(self, prefix: str | bytes = "") -> Generator[tuple[str, int], None, None]:
508442
if not isinstance(prefix, bytes):

0 commit comments

Comments
 (0)