diff options
| author | Tomáš Jusko | 2023-02-04 22:31:56 +0100 |
|---|---|---|
| committer | Tomáš Jusko | 2023-02-04 22:31:56 +0100 |
| commit | 38dcdecf05c1b8364116e6eb9df8df5948e43964 (patch) | |
| tree | 06ecfb868626a8dcf4b22da3b3b7145d3db22b11 | |
| parent | 4a0bc4f6e7343919b0c380c77477710272695b12 (diff) | |
| download | pyecsca-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.py | 18 | ||||
| -rw-r--r-- | test/sca/perf_stacked_combine.py | 16 |
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}") |
