Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
aggregate functions
"""
# min of 1-4
self.assertEqual(whisper.aggregate('min', [1, 2, 3, 4]), 1)
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
with AssertRaisesException(
whisper.InvalidAggregationMethod(
'Unrecognized aggregation method derp')):
whisper.aggregate('derp', [12, 2, 3123, 1])
def test_aggregate(self):
"""
aggregate functions
"""
# min of 1-4
self.assertEqual(whisper.aggregate('min', [1, 2, 3, 4]), 1)
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
def test_aggregate(self):
"""
aggregate functions
"""
# min of 1-4
self.assertEqual(whisper.aggregate('min', [1, 2, 3, 4]), 1)
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
def test_aggregate(self):
"""
aggregate functions
"""
# min of 1-4
self.assertEqual(whisper.aggregate('min', [1, 2, 3, 4]), 1)
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
with AssertRaisesException(
whisper.InvalidAggregationMethod(
'Unrecognized aggregation method derp')):
whisper.aggregate('derp', [12, 2, 3123, 1])
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
with AssertRaisesException(
whisper.InvalidAggregationMethod(
'Unrecognized aggregation method derp')):
whisper.aggregate('derp', [12, 2, 3123, 1])
# min of 1-4
self.assertEqual(whisper.aggregate('min', [1, 2, 3, 4]), 1)
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
with AssertRaisesException(
whisper.InvalidAggregationMethod(
'Unrecognized aggregation method derp')):
whisper.aggregate('derp', [12, 2, 3123, 1])
# max of 1-4
self.assertEqual(whisper.aggregate('max', [1, 2, 3, 4]), 4)
# last element in the known values
self.assertEqual(whisper.aggregate('last', [3, 2, 5, 4]), 4)
# sum ALL THE VALUES!
self.assertEqual(whisper.aggregate('sum', [10, 2, 3, 4]), 19)
# average of the list elements
self.assertEqual(whisper.aggregate('average', [1, 2, 3, 4]), 2.5)
avg_zero = [1, 2, 3, 4, None, None, None, None]
non_null = [i for i in avg_zero if i is not None]
self.assertEqual(whisper.aggregate('avg_zero', non_null, avg_zero), 1.25)
# avg_zero without neighborValues
with self.assertRaises(whisper.InvalidAggregationMethod):
whisper.aggregate('avg_zero', non_null)
# absmax with negative max
self.assertEqual(whisper.aggregate('absmax', [-3, -2, 1, 2]), -3)
# absmax with positive max
self.assertEqual(whisper.aggregate('absmax', [-2, -1, 2, 3]), 3)
# absmin with positive min
self.assertEqual(whisper.aggregate('absmin', [-3, -2, 1, 2]), 1)
# absmin with negative min
self.assertEqual(whisper.aggregate('absmin', [-2, -1, 2, 3]), -1)
with AssertRaisesException(
whisper.InvalidAggregationMethod(
'Unrecognized aggregation method derp')):
whisper.aggregate('derp', [12, 2, 3123, 1])
print("(%s,%s,%s)" % (fromTime, untilTime, step))
timepoints_to_update = range(fromTime, untilTime, step)
print("timepoints_to_update: %s" % timepoints_to_update)
newdatapoints = []
for tinterval in zip(timepoints_to_update[:-1], timepoints_to_update[1:]):
# TODO: Setting lo= parameter for 'lefti' based on righti from previous
# iteration. Obviously, this can only be done if
# timepoints_to_update is always updated. Is it?
lefti = bisect.bisect_left(oldtimestamps, tinterval[0])
righti = bisect.bisect_left(oldtimestamps, tinterval[1], lo=lefti)
newvalues = oldvalues[lefti:righti]
if newvalues:
non_none = filter(lambda x: x is not None, newvalues)
if 1.0 * len(non_none) / len(newvalues) >= xff:
newdatapoints.append([tinterval[0],
whisper.aggregate(aggregationMethod,
non_none, newvalues)])
whisper.update_many(newfile, newdatapoints)
else:
print('Migrating data without aggregation...')
for archive in old_archives:
timeinfo, values = archive['data']
datapoints = zip(range(*timeinfo), values)
datapoints = filter(lambda p: p[1] is not None, datapoints)
whisper.update_many(newfile, datapoints)
if options.newfile is not None:
sys.exit(0)
backup = path + '.bak'
print('Renaming old database to: %s' % backup)
os.rename(path, backup)