diff --git a/datavault/backend.py b/datavault/backend.py index 3fb1cb8a..c93a1186 100644 --- a/datavault/backend.py +++ b/datavault/backend.py @@ -40,8 +40,14 @@ def time_from_str(s): return datetime.datetime.strptime(s, TIME_FORMAT) def labrad_urlencode(data): - data_bytes, t = T.flatten(data) - all_bytes, _ = T.flatten((str(t), data_bytes), 'ss') + if hasattr(T, 'FlatData'): + # pylabrad 0.95+ + flat_data = T.flatten(data) + flat_cluster = T.flatten((str(flat_data.tag), flat_data.bytes), 'sy') + all_bytes = flat_cluster.bytes + else: + data_bytes, t = T.flatten(data) + all_bytes, _ = T.flatten((str(t), data_bytes), 'ss') data_url = DATA_URL_PREFIX + base64.urlsafe_b64encode(all_bytes) return data_url diff --git a/datavault/server.py b/datavault/server.py index e3dda336..5bbd3e3e 100644 --- a/datavault/server.py +++ b/datavault/server.py @@ -13,21 +13,20 @@ class DataVault(LabradServer): name = 'Data Vault' + # session signals + onNewDir = Signal(543617, 'signal: new dir', 's') + onNewDataset = Signal(543618, 'signal: new dataset', 's') + onTagsUpdated = Signal(543622, 'signal: tags updated', '*(s*s)*(s*s)') + + # dataset signals + onDataAvailable = Signal(543619, 'signal: data available', '') + onNewParameter = Signal(543620, 'signal: new parameter', '') + onCommentsAvailable = Signal(543621, 'signal: comments available', '') + def __init__(self, session_store): LabradServer.__init__(self) - self.session_store = session_store - # session signals - self.onNewDir = Signal(543617, 'signal: new dir', 's') - self.onNewDataset = Signal(543618, 'signal: new dataset', 's') - self.onTagsUpdated = Signal(543622, 'signal: tags updated', '*(s*s)*(s*s)') - - # dataset signals - self.onDataAvailable = Signal(543619, 'signal: data available', '') - self.onNewParameter = Signal(543620, 'signal: new parameter', '') - self.onCommentsAvailable = Signal(543621, 'signal: comments available', '') - def initServer(self): # create root session _root = self.session_store.get(['']) diff --git a/tests/test_datavault.py b/tests/test_datavault.py index 058c89d8..e4795385 100644 --- a/tests/test_datavault.py +++ b/tests/test_datavault.py @@ -239,10 +239,9 @@ def test_parameters(dv): name = 'param{}'.format(i) dv.add_parameter(name, a) b = dv.get_parameter(name) - sa, ta = T.flatten(a) - sb, tb = T.flatten(b) - assert ta == tb - assert sa == sb + flat_a = T.flatten(a) + flat_b = T.flatten(b) + assert flat_a == flat_b # Test asynchronous notification signals.