Skip to main content

Measurement Plug-In SDK Generator for Python


Introduction

Measurement Plug-In SDK Generator for Python (ni-measurement-plugin-sdk-generator) is a Python package containing tools for generating reusable measurement plug-ins and clients.

  • ni-measurement-plugin-generator is a command for generating measurement plug-ins using gRPC services.
  • ni-measurement-plugin-client-generator is a command for generating plug-in clients to interact with the measurement plug-ins.

Dependencies


Developing Measurements: Quick Start

For installation and usage, see Measurement Plug-In SDK Service for Python - Developing Measurements: Quick Start section.


Generating Measurement Clients: Quick Start

This section provides instructions to generate custom measurement clients in Python using Measurement Plug-In SDK for Python.

Installation

Make sure the system has the recommended Python version installed. Install Measurement Plug-In SDK for Python using pip.

REM Activate the required virtual environment if any.
pip install ni-measurement-plugin-sdk

Check if you have installed the expected version of Measurement Plug-In SDK for Python installed by running the below command:

pip show ni-measurement-plugin-sdk

Generating a Minimal Python Measurement Client

Run the ni-measurement-plugin-client-generator tool.

  1. To create measurement clients for specific measurements, use this command with optional arguments:

    ni-measurement-plugin-client-generator --measurement-service-class "ni.examples.SampleMeasurement_Python" [--module-name "sample_measurement_client"] [--class-name "SampleMeasurementClient"] [--directory-out <new_path_for_created_files>]

    • --measurement-service-class specifies the measurement service class for which the client is being generated.

    • Optional arguments:

      • --module-name and --class-name define the module and class names of the generated client. If not specified, they are derived from the measurement service class name.

      • --directory-out specifies the output directory for the generated files. If not specified, files are placed in the current directory.

    Note: When generating multiple measurement clients, --module-name and --class-name are ignored and derived from the service class of each measurement. So, ensure that the measurement service class name adheres to proper naming conventions.

  2. To create measurement clients for all registered measurements, use this command:

    ni-measurement-plugin-client-generator --all [--directory-out <new_path_for_created_files>]

  3. To interactively create measurement clients for any registered measurements, use this command:

    ni-measurement-plugin-client-generator --interactive

The generated client includes four APIs: measure, stream_measure, register_pin_map, and cancel. The usage of these APIs is discussed in the "Steps to Run/Debug the Measurement Client" section.

Note:

  • The Measurement Plug-In Client is compatible with all datatypes supported by the Measurement Plug-In.
  • The Double XY datatype is not supported for measurement configurations (inputs).
  • For Enum datatypes, the generated enum class names will be the measurement parameter name suffixed with 'Enum'. For instance, if the measurement parameter name is 'Enum In', the generated enum in the client will be `EnumInEnum'.
  • Ring control in LabVIEW measurements will be represented as numeric datatypes in the generated client.

Steps to Run/Debug the Measurement Client

  1. Make sure the required measurement service is running before interacting with it via the client.

  2. Use the client APIs from the "Generating a Minimal Python Measurement Client" section.

    1. For non-streaming measurements, use the measure method.

      from sample_measurement_client import SampleMeasurementClient
      
      client = SampleMeasurementClient()
      outputs = client.measure()
      print(outputs)
      
    2. For streaming measurements, use the stream_measure method.

      from sample_measurement_client import SampleMeasurementClient
      
      client = SampleMeasurementClient()
      outputs_itr = client.stream_measure()
      for index, outputs in enumerate(outputs_itr):
          print(f"outputs[{index}] = {outputs}")
      
    3. If a measurement requires a pin map, it can be registered using the register_pin_map method. By default, sites is set to [0].

      from sample_measurement_client import SampleMeasurementClient
      
      client = SampleMeasurementClient()
      client.register_pin_map(pin_map_path)
      outputs = client.measure()
      print(outputs)
      
      • Alternatively, when calling a measurement service from another measurement, you can pass the first measurement's pin map context to the second measurement's pin map context through the pin_map_context property. Sites can also be provided through the sites property.
      from sample_measurement_client import SampleMeasurementClient
      
      client = SampleMeasurementClient()
      client.pin_map_context = available_pin_map_context
      client.sites = [0, 1]
      outputs = client.measure()
      print(outputs)
      
    4. Cancel an ongoing measure or stream_measure call using the cancel method.

      from concurrent.futures import ThreadPoolExecutor
      from sample_measurement_client import SampleMeasurementClient
      
      client = SampleMeasurementClient()
      with ThreadPoolExecutor() as executor:
          future = executor.submit(client.measure)
          client.cancel()
          outputs = future.result()  # Raises grpc.RpcException with status code "CANCELLED" 
      

Release files for ni-measurement-plugin-sdk-generator 3.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ni-measurement-plugin-sdk-generator 3.1.0
File Size Uploaded
ni_measurement_plugin_sdk_generator-3.1.0.tar.gz 20.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ni-measurement-plugin-sdk-generator 3.1.0
File Interpreter ABI Platform
ni_measurement_plugin_sdk_generator-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.8 kB

Release files / ni_measurement_plugin_sdk_generator-3.1.0.tar.gz

Download URL ni_measurement_plugin_sdk_generator-3.1.0.tar.gz
Size 20.9 kB
Tags Source
SHA-256 checksum
How to use checksums
10456fc82e4a90322dbee21cd06b28d13f90c84332338844b80c79530bd5c843
BLAKE2b-256 checksum
How to use checksums
61544c02e6eaed40eaea988f0b37f812f6754ae7766d505ae1dfcda641dd31ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 16, 2025.

Transparency log

Release files / ni_measurement_plugin_sdk_generator-3.1.0-py3-none-any.whl

Download URL ni_measurement_plugin_sdk_generator-3.1.0-py3-none-any.whl
Size 24.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
676ed46ed8add60597e91386e5ad575f17f23edad1e47ad1750c6067a4a1aa8a
BLAKE2b-256 checksum
How to use checksums
2ffe04322a3665a0a9e7fb34144f5ee5058a423bd3a4a759fb94be060dd9cba4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 16, 2025.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page