aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/sca/trace_set/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyecsca/sca/trace_set/base.py')
-rw-r--r--pyecsca/sca/trace_set/base.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/pyecsca/sca/trace_set/base.py b/pyecsca/sca/trace_set/base.py
new file mode 100644
index 0000000..2221933
--- /dev/null
+++ b/pyecsca/sca/trace_set/base.py
@@ -0,0 +1,32 @@
+from public import public
+from typing import List
+
+from ..trace import Trace
+
+
+@public
+class TraceSet(object):
+ _traces: List = []
+ _keys: List = []
+
+ def __init__(self, *traces: Trace, **kwargs):
+ self._traces = list(traces)
+ self.__dict__.update(kwargs)
+ self._keys = list(kwargs.keys())
+
+ def __len__(self):
+ """Return the number of traces."""
+ return len(self._traces)
+
+ def __getitem__(self, index) -> Trace:
+ """Get the trace at `index`."""
+ return self._traces[index]
+
+ def __iter__(self):
+ """Iterate over the traces."""
+ yield from self._traces
+
+ def __repr__(self):
+ args = ", ".join(["{}={!r}".format(key, getattr(self, key)) for key in
+ self._keys])
+ return "TraceSet({})".format(args)