diff --git a/src/finam/sdk/output.py b/src/finam/sdk/output.py index 8bb67507376e3f61bd6dba864d7c72627dea24c0..ef5b31826bdb149ec5f458bf79d7d9634c75efb0 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