Skip to content
Snippets Groups Projects
Commit 63a4a02b authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

smarter builder

parent 48cd0d63
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,10 @@ __all__ = [
]
class DiscreteKnowledgeBuilder(object):
def __init__(self, series):
def __init__(self, series=None):
if series is None:
series = DiscreteSeries([], '(0;0)')
if not isinstance(series, DiscreteSeries):
raise TypeError('discrete knowledge builder supports only discrete series')
......@@ -34,11 +37,24 @@ class DiscreteKnowledgeBuilder(object):
self.new_data[index] = value
def update_series(self):
""":return: a new DiscreteSeries instance"""
def as_series(self):
"""
Update
:return: a new DiscreteSeries instance
"""
new_data = []
cp_new_data = copy.copy(self.new_data)
# Update
for k, v in self.series.data:
if k in cp_new_data:
v = cp_new_data.pop(k)
new_data.append((k,v))
new_data = copy.copy(self.series.data)
for k,v in self.new_data.items():
new_data.add((k,v))
# Add those that remained
for k,v in cp_new_data.items():
new_data.append((k,v))
return DiscreteSeries(new_data, self.domain)
......@@ -16,9 +16,10 @@ class TestBuilder(unittest.TestCase):
kb.put(3, 4)
kb.put(-1, 5)
kb.put(0, 2)
kb.put(-1, 6)
s2 = kb.update_series()
s2 = kb.as_series()
self.assertTrue(s2.domain, '<-1;3>')
self.assertEqual(s2.data,[(-1,6), (0,1), (1,2), (3,4)])
self.assertEqual(s2.data,[(-1,6), (0,2), (1,2), (3,4)])
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment