Skip to content

Commit

Permalink
examples: Don't assume array parameters are implemented as lists (#924)
Browse files Browse the repository at this point in the history
* examples: Update niscope_acquire_waveform to expect Sequence[str], not List[str]

* examples: Update sample_measurement to use Sequence[T] instead of Iterable[T]

* service/tests: Fix type hints

* examples: Undo Iterable->Sequence change in sample_measurement

(cherry picked from commit d441367)
  • Loading branch information
bkeryan committed Sep 26, 2024
1 parent a267107 commit d2b6e39
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 22 deletions.
6 changes: 3 additions & 3 deletions examples/niscope_acquire_waveform/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -26,7 +26,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."""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -63,14 +63,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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -34,7 +34,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:
Expand All @@ -55,8 +55,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:
Expand All @@ -77,7 +77,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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import math
import pathlib
from typing import List, Sequence, Tuple
from typing import Iterable, List, Sequence, Tuple

import nidmm

Expand All @@ -28,7 +28,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."""
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -16,8 +17,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,)
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -16,8 +17,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,)
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -16,8 +17,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,)

0 comments on commit d2b6e39

Please sign in to comment.