From 1fca9d41a5c875d60aa5c01e748cf77fb7e6c76d Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 29 May 2020 15:53:15 -0400 Subject: [PATCH] WIP: make the timestamps part of the payload optional --- event_model/__init__.py | 16 ++++++++++------ event_model/schemas/event.json | 1 - event_model/schemas/event_page.json | 1 - 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/event_model/__init__.py b/event_model/__init__.py index 0a2bc25ae..01f1d5656 100644 --- a/event_model/__init__.py +++ b/event_model/__init__.py @@ -1506,7 +1506,7 @@ def compose_stop(*, start, event_counter, poison_pill, return doc -def compose_event_page(*, descriptor, event_counter, data, timestamps, seq_num, +def compose_event_page(*, descriptor, event_counter, data, timestamps=None, seq_num, filled=None, uid=None, time=None, validate=True): N = len(seq_num) if uid is None: @@ -1518,13 +1518,15 @@ def compose_event_page(*, descriptor, event_counter, data, timestamps, seq_num, doc = {'uid': uid, 'time': time, 'data': data, - 'timestamps': timestamps, 'seq_num': seq_num, 'filled': filled, 'descriptor': descriptor['uid']} + if timestamps is not None: + doc['timestamps'] = timestamps if validate: schema_validators[DocumentNames.event_page].validate(doc) - if not (descriptor['data_keys'].keys() == data.keys() == timestamps.keys()): + if not (descriptor['data_keys'].keys() == data.keys() and + (timestamps is None or data.keys() == timestamps.keys())): raise EventModelValidationError( "These sets of keys must match:\n" "event['data'].keys(): {}\n" @@ -1539,7 +1541,7 @@ def compose_event_page(*, descriptor, event_counter, data, timestamps, seq_num, return doc -def compose_event(*, descriptor, event_counter, data, timestamps, seq_num=None, +def compose_event(*, descriptor, event_counter, data, timestamps=None, seq_num=None, filled=None, uid=None, time=None, validate=True): if seq_num is None: seq_num = event_counter[descriptor['name']] @@ -1552,13 +1554,15 @@ def compose_event(*, descriptor, event_counter, data, timestamps, seq_num=None, doc = {'uid': uid, 'time': time, 'data': data, - 'timestamps': timestamps, 'seq_num': seq_num, 'filled': filled, 'descriptor': descriptor['uid']} + if timestamps is not None: + doc['timestamps'] = timestamps if validate: schema_validators[DocumentNames.event].validate(doc) - if not (descriptor['data_keys'].keys() == data.keys() == timestamps.keys()): + if not (descriptor['data_keys'].keys() == data.keys() and + (timestamps is None or data.keys() == timestamps.keys())): raise EventModelValidationError( "These sets of keys must match:\n" "event['data'].keys(): {}\n" diff --git a/event_model/schemas/event.json b/event_model/schemas/event.json index e72e4015d..56d587bfb 100644 --- a/event_model/schemas/event.json +++ b/event_model/schemas/event.json @@ -33,7 +33,6 @@ "required": [ "uid", "data", - "timestamps", "time", "descriptor", "seq_num" diff --git a/event_model/schemas/event_page.json b/event_model/schemas/event_page.json index 1cf3dfd38..40e584fd8 100644 --- a/event_model/schemas/event_page.json +++ b/event_model/schemas/event_page.json @@ -66,7 +66,6 @@ "descriptor", "uid", "data", - "timestamps", "time", "seq_num" ],