aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTomáš Jusko2023-02-04 22:31:56 +0100
committerTomáš Jusko2023-02-04 22:31:56 +0100
commit38dcdecf05c1b8364116e6eb9df8df5948e43964 (patch)
tree06ecfb868626a8dcf4b22da3b3b7145d3db22b11
parent4a0bc4f6e7343919b0c380c77477710272695b12 (diff)
downloadpyecsca-38dcdecf05c1b8364116e6eb9df8df5948e43964.tar.gz
pyecsca-38dcdecf05c1b8364116e6eb9df8df5948e43964.tar.zst
pyecsca-38dcdecf05c1b8364116e6eb9df8df5948e43964.zip
fix: Fixed typing for older Python compatibility
-rw-r--r--pyecsca/sca/stacked_traces/combine.py18
-rw-r--r--test/sca/perf_stacked_combine.py16
2 files changed, 18 insertions, 16 deletions
diff --git a/pyecsca/sca/stacked_traces/combine.py b/pyecsca/sca/stacked_traces/combine.py
index 8e3acde..bcc90f8 100644
--- a/pyecsca/sca/stacked_traces/combine.py
+++ b/pyecsca/sca/stacked_traces/combine.py
@@ -6,15 +6,15 @@ import numpy as np
from math import sqrt
from public import public
-from typing import Callable, Union
+from typing import Callable, Union, Tuple
from pyecsca.sca.trace.trace import CombinedTrace
from pyecsca.sca.stacked_traces import StackedTraces
-TPB = Union[int, tuple[int, ...]]
-CudaCTX = tuple[
- tuple[devicearray.DeviceNDArray, ...],
- Union[int, tuple[int, ...]]
+TPB = Union[int, Tuple[int, ...]]
+CudaCTX = Tuple[
+ Tuple[devicearray.DeviceNDArray, ...],
+ Union[int, Tuple[int, ...]]
]
@@ -68,7 +68,7 @@ class BaseTraceManager:
"""
raise NotImplementedError
- def average_and_variance(self) -> tuple[CombinedTrace, CombinedTrace]:
+ def average_and_variance(self) -> Tuple[CombinedTrace, CombinedTrace]:
"""
Compute the sample average and variance of the
:paramref:`~.average_and_variance.traces`, sample-wise.
@@ -132,7 +132,7 @@ class GPUTraceManager(BaseTraceManager):
return device_output, bpg
def _gpu_combine1D(self, func, output_count: int = 1) \
- -> Union[CombinedTrace, tuple[CombinedTrace, ...]]:
+ -> Union[CombinedTrace, Tuple[CombinedTrace, ...]]:
"""
Runs GPU Cuda StackedTrace 1D combine function
@@ -176,7 +176,7 @@ class GPUTraceManager(BaseTraceManager):
assert isinstance(result, CombinedTrace)
return result
- def average_and_variance(self) -> tuple[CombinedTrace, CombinedTrace]:
+ def average_and_variance(self) -> Tuple[CombinedTrace, CombinedTrace]:
averages, variances = self._gpu_combine1D(gpu_avg_var, 2)
assert isinstance(averages, CombinedTrace) and \
isinstance(variances, CombinedTrace)
@@ -382,7 +382,7 @@ class CPUTraceManager:
self.traces.meta
)
- def average_and_variance(self) -> tuple[CombinedTrace, CombinedTrace]:
+ def average_and_variance(self) -> Tuple[CombinedTrace, CombinedTrace]:
"""
Compute the average and sample variance of the :paramref:`~.average_and_variance.traces`, sample-wise.
diff --git a/test/sca/perf_stacked_combine.py b/test/sca/perf_stacked_combine.py
index 89d57d9..22abc26 100644
--- a/test/sca/perf_stacked_combine.py
+++ b/test/sca/perf_stacked_combine.py
@@ -1,7 +1,7 @@
from __future__ import annotations
import argparse
-from typing import Any, Callable
+from typing import Any, Callable, List, Tuple
import numpy as np
import numpy.random as npr
@@ -11,6 +11,8 @@ from pyecsca.sca import (CPUTraceManager, GPUTraceManager, StackedTraces,
Trace, TraceSet, add, average, average_and_variance,
conditional_average, standard_deviation, variance)
+TimeRecord = Tuple[str, int]
+
traceset_ops = {
"average": average,
"conditional_average": conditional_average,
@@ -122,7 +124,7 @@ def generate_dataset(rng: npr.Generator,
return samples
-def timed(time_storage: list[tuple[str, int]] | None = None,
+def timed(time_storage: List[TimeRecord] | None = None,
log: bool = True) \
-> Callable[[Callable[..., Any]], Callable[..., Any]]:
def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
@@ -156,7 +158,7 @@ def to_traceset(dataset: np.ndarray) -> TraceSet:
def stack(dataset: np.ndarray,
from_array: bool,
time: bool,
- time_storage: list[tuple[str, int]] | None = None,
+ time_storage: List[TimeRecord] | None = None,
log: bool = True) -> StackedTraces:
time_fun = timed(time_storage, log) if time else lambda x: x
data = (dataset
@@ -271,7 +273,7 @@ def _get_args(parser: argparse.ArgumentParser) -> argparse.Namespace:
return args
-def report(time_storage: list[tuple[str, int]],
+def report(time_storage: List[TimeRecord],
total_only: bool = False) -> None:
if total_only:
print(f"Total: {sum(duration for _, duration in time_storage):,} ns")
@@ -286,9 +288,9 @@ def report(time_storage: list[tuple[str, int]],
def repetition(args: argparse.Namespace,
- rng: npr.Generator) -> list[tuple[str, int]]:
+ rng: npr.Generator) -> List[TimeRecord]:
# Prepare time storage
- time_storage: list[tuple[str, int]] | None = []
+ time_storage: List[TimeRecord] | None = []
# Generate data
if args.verbose:
@@ -365,7 +367,7 @@ def main(args: argparse.Namespace) -> None:
"stacked" if args.stack else "not stacked")
print(f"Operations: {', '.join(args.operations)}")
- time_storage: list[list[tuple[str, int]]] = []
+ time_storage: List[List[TimeRecord]] = []
rng = np.random.default_rng(args.seed)
for i in range(args.repetitions):
print(f"Repetition {i + 1} of {args.repetitions}")