Skip to content

Commit

Permalink
Merge pull request #137 from jubatus/fix-recommender-clear-row
Browse files Browse the repository at this point in the history
add clear_row method to recommender service
  • Loading branch information
rimms committed Jan 19, 2019
2 parents c7642fe + 31d6fe9 commit b1642bf
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
12 changes: 12 additions & 0 deletions jubakit/recommender.py
Expand Up @@ -55,6 +55,17 @@ def _client_class(cls):
def _embedded_class(cls):
return jubatus.embedded.Recommender

def clear_row(self, dataset):
"""
Removes the given rows from the recommendation table.
"""
cli = self._client()
for (idx, (row_id, d)) in dataset:
if row_id is None:
raise RuntimeError('dataset must have `id`.')
result = cli.clear_row(row_id)
yield (idx, row_id, result)

def update_row(self, dataset):
"""
Update data points to the recommender model using the given dataset.
Expand Down Expand Up @@ -169,6 +180,7 @@ def decode_row(self, dataset):
result = cli.decode_row(row_id)
yield (idx, row_id, result)


class Config(GenericConfig):
"""
Configuration to run Recommender service.
Expand Down
20 changes: 20 additions & 0 deletions jubakit/test/test_recommender.py
Expand Up @@ -51,6 +51,26 @@ def test_simple(self):
def test_embedded(self):
recommender = Recommender.run(Config(), embedded=True)

def test_clear_row(self):
recommender = Recommender.run(Config())
loader = StubLoader()

# dataset must have id when execute `clear_row`.
schema = Schema({'v': Schema.NUMBER})
dataset = Dataset(loader, schema)
def func():
for _ in recommender.clear_row(dataset): pass
self.assertRaises(RuntimeError, lambda: func())

schema = Schema({'v': Schema.ID})
dataset = Dataset(loader, schema)

# expect to get False when table is empty.
for (idx, row_id, result) in recommender.clear_row(dataset):
self.assertEqual(result, True)

recommender.stop()

def test_update_row(self):
recommender = Recommender.run(Config())
loader = StubLoader()
Expand Down

0 comments on commit b1642bf

Please sign in to comment.