Skip to content

Commit 33e2f3c

Browse files
committed
Fixed series collecting: last element in value element is not existing instead of null.
1 parent 69de8f7 commit 33e2f3c

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

c8y_api/model/measurements.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -285,21 +285,21 @@ def parse_timestamp(t):
285285
# iterate over all values, select value group at specific
286286
# index v[i] and extract specific value [value]. The value
287287
# group may be undefined (None), hence filter for value v[i]
288-
return [v[i][value] for v in self['values'].values() if v[i]]
288+
return [v[i][value] for v in self['values'].values() if (len(v) > i and v[i])]
289289
else:
290290
# like above, but include timestamps
291-
return [(parse_timestamp(k), v[i][value]) for k, v in self['values'].items() if v[i]]
291+
return [(parse_timestamp(k), v[i][value]) for k, v in self['values'].items() if (len(v) > i and v[i])]
292292

293293
# all values
294294
else:
295295
if not timestamps:
296296
# iterate over all values, select value group at specific
297297
# index v[i] and extract both values (min, max). The value
298298
# group may be undefined (None), hence filter for value v[i]
299-
return [(v[i]['min'], v[i]['max']) for v in self['values'].values() if v[i]]
299+
return [(v[i]['min'], v[i]['max']) for v in self['values'].values() if (len(v) > i and v[i])]
300300
else:
301301
# like above, but include timestamps
302-
return [(parse_timestamp(k), v[i]['min'], v[i]['max']) for k, v in self['values'].items() if v[i]]
302+
return [(parse_timestamp(k), v[i]['min'], v[i]['max']) for k, v in self['values'].items() if (len(v) > i and v[i])]
303303

304304
# multiple series
305305
if isinstance(series, Sequence):
@@ -314,13 +314,13 @@ def parse_timestamp(t):
314314
# in a None value in the tuple as well.
315315
return [
316316
# collect values of all indexes (None of not defined)
317-
tuple(v[i][value] if v[i] else None for i in ii)
317+
tuple(v[i][value] if (len(v) > i and v[i]) else None for i in ii)
318318
for v in self['values'].values()
319319
]
320320
else:
321321
# like above, but prepend with timestamps
322322
return [
323-
(parse_timestamp(k), *(v[i][value] if v[i] else None for i in ii))
323+
(parse_timestamp(k), *(v[i][value] if (len(v) > i and v[i]) else None for i in ii))
324324
for k, v in self['values'].items()
325325
]
326326

@@ -333,13 +333,13 @@ def parse_timestamp(t):
333333
# in a None value in the tuple as well.
334334
return [
335335
# collect values of all indexes (None of not defined)
336-
tuple((v[i]['min'], v[i]['max']) if v[i] else None for i in ii)
336+
tuple((v[i]['min'], v[i]['max']) if (len(v) > i and v[i]) else None for i in ii)
337337
for v in self['values'].values()
338338
]
339339
else:
340340
# like above, but prepend with timestamps
341341
return [
342-
(parse_timestamp(k), *((v[i]['min'], v[i]['max']) if v[i] else None for i in ii))
342+
(parse_timestamp(k), *((v[i]['min'], v[i]['max']) if (len(v) > i and v[i]) else None for i in ii))
343343
for k, v in self['values'].items()
344344
]
345345

tests/model/series.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@
3434
{
3535
"min": 10.0,
3636
"max": 39.0
37-
},
38-
{}
37+
}
3938
],
4039
"2023-04-04T17:00:00.000Z": [
4140
{},

0 commit comments

Comments
 (0)