1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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)
|