Skip to content

Commit

Permalink
change vector API
Browse files Browse the repository at this point in the history
  • Loading branch information
hendrikmuhs committed Jan 26, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent ce4f1cc commit 8143b21
Showing 7 changed files with 63 additions and 25 deletions.
11 changes: 10 additions & 1 deletion python/src/addons/JsonVector.pyx
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@


def Get(self, index ):
def __getitem__(self, index ):
assert isinstance(index, (int, long)), 'arg index wrong type'

cdef libcpp_utf8_string _r = self.inst.get().Get((<size_t>index))
py_result = json.loads(_r.decode('utf-8'))
return py_result

def Get(self, *args):
return call_deprecated_method("Get", "__getitem__", self.__getitem__, *args)

def Size(self, *args):
return call_deprecated_method("Size", "__len__", self.__len__, *args)

def Manifest(self, *args):
return call_deprecated_method("Manifest", "manifest", self.manifest, *args)
11 changes: 10 additions & 1 deletion python/src/addons/JsonVectorGenerator.pyx
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@


def PushBack(self, in_0 ):
def append(self, in_0 ):
dumps = json.dumps(in_0).encode('utf-8')
self.inst.get().PushBack((<libcpp_utf8_string>dumps))

def PushBack(self, *args):
return call_deprecated_method("PushBack", "append", self.append, *args)

def SetManifest(self, *args):
return call_deprecated_method("SetManifest", "set_manifest", self.set_manifest, *args)

def WriteToFile(self, *args):
return call_deprecated_method("WriteToFile", "write_to_file", self.write_to_file, *args)
10 changes: 10 additions & 0 deletions python/src/addons/StringVector.pyx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@


def Get(self, *args):
return call_deprecated_method("Get", "__getitem__", self.__getitem__, *args)

def Size(self, *args):
return call_deprecated_method("Size", "__len__", self.__len__, *args)

def Manifest(self, *args):
return call_deprecated_method("Manifest", "manifest", self.manifest, *args)
10 changes: 10 additions & 0 deletions python/src/addons/StringVectorGenerator.pyx
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@


def PushBack(self, *args):
return call_deprecated_method("PushBack", "append", self.append, *args)

def SetManifest(self, *args):
return call_deprecated_method("SetManifest", "set_manifest", self.set_manifest, *args)

def WriteToFile(self, *args):
return call_deprecated_method("WriteToFile", "write_to_file", self.write_to_file, *args)
10 changes: 5 additions & 5 deletions python/src/pxds/vector.pxd
Original file line number Diff line number Diff line change
@@ -4,12 +4,12 @@ cdef extern from "keyvi/vector/vector_types.h" namespace "keyvi::vector":
cdef cppclass JsonVector:
JsonVector(libcpp_utf8_output_string filename) except +
libcpp_utf8_output_string Get(size_t index) # wrap-ignore
size_t Size()
libcpp_utf8_output_string Manifest()
size_t Size() # wrap-as:__len__
libcpp_utf8_output_string Manifest() # wrap-as:manifest

cdef extern from "keyvi/vector/vector_types.h" namespace "keyvi::vector":
cdef cppclass StringVector:
StringVector(libcpp_utf8_output_string filename) except +
libcpp_utf8_output_string Get(size_t index)
size_t Size()
libcpp_utf8_output_string Manifest()
libcpp_utf8_output_string Get(size_t index) # wrap-as:__getitem__
size_t Size() # wrap-as:__len__
libcpp_utf8_output_string Manifest() # wrap-as:manifest
10 changes: 5 additions & 5 deletions python/src/pxds/vector_generator.pxd
Original file line number Diff line number Diff line change
@@ -6,13 +6,13 @@ cdef extern from "keyvi/vector/vector_types.h" namespace "keyvi::vector":
JsonVectorGenerator() except +
JsonVectorGenerator(libcpp_map[libcpp_utf8_string, libcpp_utf8_string] value_store_params) except +
void PushBack(libcpp_utf8_string) # wrap-ignore
void SetManifest(libcpp_utf8_string)
void WriteToFile(libcpp_utf8_string) except +
void SetManifest(libcpp_utf8_string) # wrap-as:set_manifest
void WriteToFile(libcpp_utf8_string) except + # wrap-as:write_to_file

cdef extern from "keyvi/vector/vector_types.h" namespace "keyvi::vector":
cdef cppclass StringVectorGenerator:
StringVectorGenerator() except +
StringVectorGenerator(libcpp_map[libcpp_utf8_string, libcpp_utf8_string] value_store_params) except +
void PushBack(libcpp_utf8_string)
void SetManifest(libcpp_utf8_string)
void WriteToFile(libcpp_utf8_string) except +
void PushBack(libcpp_utf8_string) # wrap-as:append
void SetManifest(libcpp_utf8_string) # wrap-as:set_manifest
void WriteToFile(libcpp_utf8_string) except + # wrap-as:write_to_file
26 changes: 13 additions & 13 deletions python/tests/vector/basic_test.py
Original file line number Diff line number Diff line change
@@ -13,16 +13,16 @@ def test_basic_json_test():
size = 10000

for i in range(size):
generator.PushBack([i, i + 1])
generator.append([i, i + 1])

generator.WriteToFile('vector_json_basic_test.kv')
generator.write_to_file('vector_json_basic_test.kv')

vector = keyvi.vector.JsonVector('vector_json_basic_test.kv')

assert size == vector.Size()
assert size == len(vector)

for i in range(size):
assert [i, i + 1] == vector.Get(i)
assert [i, i + 1] == vector[i]

os.remove('vector_json_basic_test.kv')

@@ -33,33 +33,33 @@ def test_basic_string_test():
size = 10000

for i in range(size):
generator.PushBack(str(i))
generator.append(str(i))

generator.WriteToFile('vector_string_basic_test.kv')
generator.write_to_file('vector_string_basic_test.kv')

vector = keyvi.vector.StringVector('vector_string_basic_test.kv')

assert size == vector.Size()
assert size == len(vector)

for i in range(size):
assert str(i) == vector.Get(i)
assert str(i) == vector[i]

os.remove('vector_string_basic_test.kv')


def test_basic_manifest():
generator = keyvi.vector.StringVectorGenerator()
generator.SetManifest('manifest')
generator.WriteToFile('vector_manifest.kv')
generator.set_manifest('manifest')
generator.write_to_file('vector_manifest.kv')

vector = keyvi.vector.StringVector('vector_manifest.kv')
assert 'manifest' == vector.Manifest()
assert 'manifest' == vector.manifest()

os.remove('vector_manifest.kv')


def test_basic_write_to_invalid_file():
generator = keyvi.vector.StringVectorGenerator()
generator.SetManifest('manifest')
generator.set_manifest('manifest')
with raises(ValueError):
generator.WriteToFile(os.path.join("invalid", "sub", "directory", "file.kv"))
generator.write_to_file(os.path.join("invalid", "sub", "directory", "file.kv"))

0 comments on commit 8143b21

Please sign in to comment.