From f37e8f18239380b6d5bd34a5e9344bdf1c376937 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Mon, 23 Sep 2024 17:07:38 -0500 Subject: [PATCH 1/4] examples: Update niscope_acquire_waveform to expect Sequence[str], not List[str] --- examples/niscope_acquire_waveform/measurement.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/niscope_acquire_waveform/measurement.py b/examples/niscope_acquire_waveform/measurement.py index 334730ed7..e6eaea75d 100644 --- a/examples/niscope_acquire_waveform/measurement.py +++ b/examples/niscope_acquire_waveform/measurement.py @@ -5,7 +5,7 @@ import sys import threading import time -from typing import List, Tuple +from typing import List, Sequence, Tuple import click import grpc @@ -64,7 +64,7 @@ @measurement_service.output("waveform2", nims.DataType.DoubleArray1D) @measurement_service.output("waveform3", nims.DataType.DoubleArray1D) def measure( - measurement_pins: List[str], + measurement_pins: Sequence[str], vertical_range: float, vertical_coupling: str, input_impedance: float, @@ -90,7 +90,7 @@ def measure( measurement_service.context.add_cancel_callback(cancellation_event.set) with measurement_service.context.reserve_session( - measurement_pins + [trigger_pin] + list(measurement_pins) + [trigger_pin] ) as reservation: with reservation.initialize_niscope_session() as session_info: # Use connections to map pin names to channel names. This sets the From c3ee08b87702deadd02da5e186566ad6c98bea3a Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Mon, 23 Sep 2024 17:08:22 -0500 Subject: [PATCH 2/4] examples: Update sample_measurement to use Sequence[T] instead of Iterable[T] --- examples/sample_measurement/measurement.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/sample_measurement/measurement.py b/examples/sample_measurement/measurement.py index bd0b98693..756ba9ae2 100644 --- a/examples/sample_measurement/measurement.py +++ b/examples/sample_measurement/measurement.py @@ -4,7 +4,7 @@ import pathlib import sys from enum import Enum -from typing import Iterable, Tuple +from typing import Sequence, Tuple import click import ni_measurement_plugin_sdk_service as nims @@ -62,14 +62,14 @@ class Color(Enum): @measurement_service.output("String Array out", nims.DataType.StringArray1D) def measure( float_input: float, - double_array_input: Iterable[float], + double_array_input: Sequence[float], bool_input: bool, string_input: str, enum_input: Color, protobuf_enum_input: color_pb2.ProtobufColor.ValueType, - string_array_in: Iterable[str], + string_array_in: Sequence[str], ) -> Tuple[ - float, Iterable[float], bool, str, Color, color_pb2.ProtobufColor.ValueType, Iterable[str] + float, Sequence[float], bool, str, Color, color_pb2.ProtobufColor.ValueType, Sequence[str] ]: """Perform a loopback measurement with various data types.""" logging.info("Executing measurement") From 0099d33c45998e98da2c7490ce72c50c3d77d429 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Tue, 24 Sep 2024 15:32:46 -0500 Subject: [PATCH 3/4] service/tests: Fix type hints --- .../measurements/nidaqmx_measurement/__init__.py | 4 ++-- .../measurements/nidcpower_measurement/__init__.py | 8 ++++---- .../measurements/nidigital_measurement/__init__.py | 10 +++++----- .../measurements/nidmm_measurement/__init__.py | 4 ++-- .../unknown_interface_measurement/__init__.py | 5 +++-- .../measurements/v1_only_measurement/__init__.py | 5 +++-- .../measurements/v2_only_measurement/__init__.py | 5 +++-- 7 files changed, 22 insertions(+), 19 deletions(-) diff --git a/packages/service/tests/utilities/measurements/nidaqmx_measurement/__init__.py b/packages/service/tests/utilities/measurements/nidaqmx_measurement/__init__.py index 572d207c2..e440c82ec 100644 --- a/packages/service/tests/utilities/measurements/nidaqmx_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/nidaqmx_measurement/__init__.py @@ -1,7 +1,7 @@ """NI-DAQmx measurement plug-in test service.""" import pathlib -from typing import List, Sequence, Tuple +from typing import Iterable, List, Sequence, Tuple import nidaqmx @@ -27,7 +27,7 @@ @measurement_service.output("connected_channels", nims.DataType.StringArray1D) @measurement_service.output("voltage_values", nims.DataType.DoubleArray1D) def measure( - pin_names: List[str], + pin_names: Iterable[str], multi_session: bool, ) -> Tuple[List[str], List[str], List[str], List[str], List[float]]: """NI-DAQmx measurement plug-in test service.""" diff --git a/packages/service/tests/utilities/measurements/nidcpower_measurement/__init__.py b/packages/service/tests/utilities/measurements/nidcpower_measurement/__init__.py index 121ca68f6..740925e8b 100644 --- a/packages/service/tests/utilities/measurements/nidcpower_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/nidcpower_measurement/__init__.py @@ -2,7 +2,7 @@ import pathlib from contextlib import ExitStack -from typing import Iterable, Sequence, Tuple +from typing import Iterable, List, Sequence, Tuple import hightime import nidcpower @@ -64,14 +64,14 @@ def measure( [session_info.resource_name], [session_info.channel_list], [connection.channel_name], - [list(voltage_measurements)[0]], - [list(current_measurements)[0]], + [voltage_measurements[0]], + [current_measurements[0]], ) def _source_measure_dc_voltage( connections: Sequence[nims.session_management.TypedConnection[nidcpower.Session]], -) -> Tuple[Iterable[float], Iterable[float]]: +) -> Tuple[List[float], List[float]]: for connection in connections: channel = connection.session.channels[connection.channel_name] channel.source_mode = nidcpower.SourceMode.SINGLE_POINT diff --git a/packages/service/tests/utilities/measurements/nidigital_measurement/__init__.py b/packages/service/tests/utilities/measurements/nidigital_measurement/__init__.py index 4d6663dad..9ac291ae8 100644 --- a/packages/service/tests/utilities/measurements/nidigital_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/nidigital_measurement/__init__.py @@ -2,7 +2,7 @@ import pathlib from itertools import groupby -from typing import Iterable, Sequence, Tuple, Union +from typing import Iterable, Sequence, Tuple, Union, List import nidigital @@ -35,7 +35,7 @@ def measure( pin_names: Iterable[str], multi_session: bool, ) -> Tuple[ - Iterable[str], Iterable[str], Iterable[str], Iterable[str], Iterable[str], Iterable[str] + Iterable[str], Iterable[str], Iterable[str], Iterable[str], Iterable[int], Iterable[int] ]: """NI-Digital measurement plug-in test service.""" if multi_session: @@ -56,8 +56,8 @@ def measure( ", ".join(conn.channel_name for conn in conns) for conns in connections_by_session ], - list(passing_sites), - list(failing_sites), + passing_sites, + failing_sites, ) else: with measurement_service.context.reserve_session(pin_names) as reservation: @@ -78,7 +78,7 @@ def measure( def _burst_spi_pattern( session_infos: Sequence[TypedSessionInformation[nidigital.Session]], -) -> Tuple: +) -> Tuple[List[int], List[int]]: specifications_file_path = "Specifications.specs" levels_file_path = "PinLevels.digilevels" timing_file_path = "Timing.digitiming" diff --git a/packages/service/tests/utilities/measurements/nidmm_measurement/__init__.py b/packages/service/tests/utilities/measurements/nidmm_measurement/__init__.py index 840479711..cf57508f0 100644 --- a/packages/service/tests/utilities/measurements/nidmm_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/nidmm_measurement/__init__.py @@ -2,7 +2,7 @@ import math import pathlib -from typing import List, Sequence, Tuple +from typing import Iterable, List, Sequence, Tuple import nidmm @@ -29,7 +29,7 @@ @measurement_service.output("signals_out_of_range", nims.DataType.BooleanArray1D) @measurement_service.output("absolute_resolutions", nims.DataType.DoubleArray1D) def measure( - pin_names: List[str], + pin_names: Iterable[str], multi_session: bool, ) -> Tuple[List[str], List[str], List[str], List[str], List[bool], List[float]]: """NI-DMM measurement plug-in test service.""" diff --git a/packages/service/tests/utilities/measurements/unknown_interface_measurement/__init__.py b/packages/service/tests/utilities/measurements/unknown_interface_measurement/__init__.py index b72fdc226..d62f1e295 100644 --- a/packages/service/tests/utilities/measurements/unknown_interface_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/unknown_interface_measurement/__init__.py @@ -1,6 +1,7 @@ """Contains utility functions to test loopback measurement service. """ import pathlib +from typing import Tuple import ni_measurement_plugin_sdk_service as nims @@ -17,8 +18,8 @@ @measurement_service.register_measurement @measurement_service.configuration("Float In", nims.DataType.Float, 0.06) @measurement_service.output("Float out", nims.DataType.Float) -def measure(float_input): +def measure(float_input: float) -> Tuple[float]: """Loopback measurement on the float input.""" float_output = float_input - return float_output + return (float_output,) diff --git a/packages/service/tests/utilities/measurements/v1_only_measurement/__init__.py b/packages/service/tests/utilities/measurements/v1_only_measurement/__init__.py index 909ba982e..a1b97eddb 100644 --- a/packages/service/tests/utilities/measurements/v1_only_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/v1_only_measurement/__init__.py @@ -1,6 +1,7 @@ """Contains utility functions to test loopback measurement service. """ import pathlib +from typing import Tuple import ni_measurement_plugin_sdk_service as nims @@ -17,8 +18,8 @@ @measurement_service.register_measurement @measurement_service.configuration("Float In", nims.DataType.Float, 0.06) @measurement_service.output("Float out", nims.DataType.Float) -def measure(float_input): +def measure(float_input: float) -> Tuple[float]: """Loopback measurement on the float input.""" float_output = float_input - return float_output + return (float_output,) diff --git a/packages/service/tests/utilities/measurements/v2_only_measurement/__init__.py b/packages/service/tests/utilities/measurements/v2_only_measurement/__init__.py index 54f80c226..96013e2cf 100644 --- a/packages/service/tests/utilities/measurements/v2_only_measurement/__init__.py +++ b/packages/service/tests/utilities/measurements/v2_only_measurement/__init__.py @@ -1,6 +1,7 @@ """Contains utility functions to test loopback measurement service. """ import pathlib +from typing import Tuple import ni_measurement_plugin_sdk_service as nims @@ -17,8 +18,8 @@ @measurement_service.register_measurement @measurement_service.configuration("Float In", nims.DataType.Float, 0.06) @measurement_service.output("Float out", nims.DataType.Float) -def measure(float_input): +def measure(float_input: float) -> Tuple[float]: """Loopback measurement on the float input.""" float_output = float_input - return float_output + return (float_output,) From e9953793978f270f8fbf6ce1becfc5652a3f1f0b Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Tue, 24 Sep 2024 15:35:06 -0500 Subject: [PATCH 4/4] examples: Undo Iterable->Sequence change in sample_measurement --- examples/sample_measurement/measurement.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/sample_measurement/measurement.py b/examples/sample_measurement/measurement.py index 756ba9ae2..bd0b98693 100644 --- a/examples/sample_measurement/measurement.py +++ b/examples/sample_measurement/measurement.py @@ -4,7 +4,7 @@ import pathlib import sys from enum import Enum -from typing import Sequence, Tuple +from typing import Iterable, Tuple import click import ni_measurement_plugin_sdk_service as nims @@ -62,14 +62,14 @@ class Color(Enum): @measurement_service.output("String Array out", nims.DataType.StringArray1D) def measure( float_input: float, - double_array_input: Sequence[float], + double_array_input: Iterable[float], bool_input: bool, string_input: str, enum_input: Color, protobuf_enum_input: color_pb2.ProtobufColor.ValueType, - string_array_in: Sequence[str], + string_array_in: Iterable[str], ) -> Tuple[ - float, Sequence[float], bool, str, Color, color_pb2.ProtobufColor.ValueType, Sequence[str] + float, Iterable[float], bool, str, Color, color_pb2.ProtobufColor.ValueType, Iterable[str] ]: """Perform a loopback measurement with various data types.""" logging.info("Executing measurement")