@@ -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 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