From e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7 Mon Sep 17 00:00:00 2001 From: J08nY Date: Tue, 20 Nov 2018 00:36:46 +0100 Subject: Init. --- pyecsca/trace.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 pyecsca/trace.py (limited to 'pyecsca/trace.py') diff --git a/pyecsca/trace.py b/pyecsca/trace.py new file mode 100644 index 0000000..56e39d3 --- /dev/null +++ b/pyecsca/trace.py @@ -0,0 +1,45 @@ +import weakref +from numpy import ndarray +from typing import Optional + + +class Trace(object): + + def __init__(self, title: Optional[str], data: Optional[bytes], + samples: ndarray, trace_set=None): + self.title = title + self.data = data + self.samples = samples + self.trace_set = trace_set + + @property + def trace_set(self): + if self._trace_set is None: + return None + return self._trace_set() + + @trace_set.setter + def trace_set(self, trace_set): + if trace_set is None: + self._trace_set = None + else: + self._trace_set = weakref.ref(trace_set) + + def __repr__(self): + return "Trace(title={!r}, data={!r}, samples={!r}, trace_set={!r})".format( + self.title, self.data, self.samples, self.trace_set) + + +class CombinedTrace(Trace): + + def __init__(self, title: Optional[str], data: Optional[bytes], + samples: ndarray, trace_set=None, parents=None): + super().__init__(title, data, samples, trace_set=trace_set) + self.parents = None + if parents is not None: + self.parents = weakref.WeakSet(parents) + + def __repr__(self): + return "CombinedTrace(title={!r}, data={!r}, samples={!r}, trace_set={!r}, parents={})".format( + self.title, self.data, self.samples, self.trace_set, + self.parents) -- cgit v1.2.3-70-g09d2