diff options
| author | J08nY | 2018-11-20 00:36:46 +0100 |
|---|---|---|
| committer | J08nY | 2019-03-14 18:03:54 +0100 |
| commit | e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7 (patch) | |
| tree | bf1c80e015cdfd47d864665946f44a072f7b38db /pyecsca/trace.py | |
| download | pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.gz pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.zst pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.zip | |
Diffstat (limited to 'pyecsca/trace.py')
| -rw-r--r-- | pyecsca/trace.py | 45 |
1 files changed, 45 insertions, 0 deletions
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) |
