From 280b828b7b56be9bab157f70be17263b4ddd018c Mon Sep 17 00:00:00 2001 From: Martin Lange <martin.lange@ufz.de> Date: Mon, 28 Nov 2022 23:50:55 +0100 Subject: [PATCH] outputs check for shared memory of subsequent pushes --- src/finam/sdk/output.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/finam/sdk/output.py b/src/finam/sdk/output.py index 8bb67507..ef5b3182 100644 --- a/src/finam/sdk/output.py +++ b/src/finam/sdk/output.py @@ -4,9 +4,12 @@ Implementations of IOutput import logging from datetime import datetime +import numpy as np + from ..data import tools from ..data.tools import Info from ..errors import ( + FinamDataError, FinamMetaDataError, FinamNoDataError, FinamStaticDataError, @@ -144,7 +147,17 @@ class Output(IOutput, Loggable): time = None with ErrorLogger(self.logger): - self.data.append((time, tools.to_xarray(data, self.name, self.info, time))) + xdata = tools.to_xarray(data, self.name, self.info, time) + if len(self.data) > 0: + d = self.data[-1][1] + if np.may_share_memory( + tools.get_magnitude(d), tools.get_magnitude(xdata) + ): + raise FinamDataError( + "Received data that shares memory with previously received data." + ) + + self.data.append((time, xdata)) self._time = time -- GitLab