Skip to main content

PlestyLib

PlestyLib is the core Python library of PLESTY, a platform for automating lab measurements. Code built on it comes in three kinds, each a module of its own:

  • a device controls one instrument;
  • an experiment runs a measurement with devices and records it;
  • an analyzer turns recorded data into a result.

PlestyLib gives each kind a standard shape, so every instrument is driven the same way and every measurement is recorded the same way. It provides:

  1. Base classes for devices, with parameter and operation systems, status snapshots, and serving a device over the network
  2. Connections to instruments: serial, VISA, TCP/IP, and Thorlabs APT controllers (including those Kinesis has bound to FTDI's D2XX driver)
  3. Command solvers that translate standard calls into an instrument's own protocol, such as SCPI
  4. Experiments: a standard command line, run folders on a shared data disk, resuming, stopping, and a journal of every run
  5. Analyzers, HTML reports, and a viewer that plots a measurement live or replays it afterwards
  6. Test helpers for all three kinds of module

Full documentation: https://docs.plesty.net/plesty-lib/.

Requirements

  • Python 3.12+

Installation

Install from package index:

pip install plesty-lib
# or 
uv add plesty-lib

Optional dependencies

Features that need a heavy or platform-specific package keep it out of the base install and behind an extra. Without the extra the feature raises an ImportError naming it; nothing else is affected.

Extra Adds Enables
gui pyside6, pyqtgraph windows: device control panels and the viewer that plots a measurement
record pillow, imageio, imageio-ffmpeg saving a measurement's plots as a video (MP4, or GIF with Pillow alone)
report latex2mathml equations in reports opened as HTML; without it they show as LaTeX source
fit scipy SpectrumFit analyzer — Gaussian / Lorentzian / Voigt spectrum fits
hdf5 h5py convert_to_hdf5 — packs saved results into one HDF5 archive
pip install "plesty-lib[gui,record]"
# or
uv add "plesty-lib[gui,record]"

For development, install from source and sync the dev dependency group:

uv sync --group dev
# or
pip install -e .
pip install plesty-sdk

Quick Start

1. Create a device class from a base device

from plesty.lib.device.base_visa_scpi_device import BaseVisaScpiDevice


class PowermeterDevice(BaseVisaScpiDevice):
	def __init__(self, address: str):
		super().__init__(address)
		self.register_config("POWER", dtype=float, read_only=True, command="MEAS:SCAL:POW")
		self.register_config("WAVELENGTH", dtype=int, unit="nm", command="SENS:CORR:WAV")

2. Use the device

# replace the serial number P0000001 with that of your own device
address = "USB0::0x1313::0x8078::P0000001::INSTR"

with PowermeterDevice(address) as dev:
	print(dev.identity())
	print(dev.query("POWER"))

The documentation's quick start continues from here: serving the device over the network, using it without the instrument, then an experiment and an analyzer.

Architecture Overview

A device is built in layers, and a module's author only writes the lower ones:

  1. Traffic manager: the connection to the instrument (serial, VISA, TCP/IP, APT)
  2. Command solver: maps standard calls to the instrument's protocol
  3. Synchronous device: the class the author writes, with its parameters and operations
  4. Provided by PlestyLib: the asynchronous wrapper, the network server, and a client that drives a remote device with the same calls as a local one

An experiment then drives devices through those clients, and an analyzer reads what the experiment recorded. Concepts explains how the parts fit together.

License

Plesty is licensed under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later). See the LICENSE file.

Metadata

Release files for plesty-lib 0.6.2

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

Source distribution (sdist)

Source distribution for plesty-lib 0.6.2
File Size Uploaded Provenance Actions
plesty_lib-0.6.2.tar.gz 914.5 kB Without provenance Details for plesty_lib-0.6.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for plesty-lib 0.6.2
File Interpreter ABI Platform Actions
plesty_lib-0.6.2-py3-none-any.whl Python 3 none any Details for plesty_lib-0.6.2-py3-none-any.whl

Total release size: 1.4 MB

Release files / plesty_lib-0.6.2.tar.gz

Download URL plesty_lib-0.6.2.tar.gz
Size 914.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6417c1defa634c81df2287f0468a368f4fa48f90b4d8db5b20651c35aabfba2f
BLAKE2b-256 checksum
How to use checksums
dc453fc513d87d3bf213d5035b09fe486d51acebb01f83e9cf05f6384a694475
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / plesty_lib-0.6.2-py3-none-any.whl

Download URL plesty_lib-0.6.2-py3-none-any.whl
Size 514.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53f7cb226e450e962a3af69780ef6b5c4f9839b04ec037f0aad16b748b5e58d8
BLAKE2b-256 checksum
How to use checksums
140319a67318447bed0d224811649788a4e5698e52d4d2531f99189c033a61db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for plesty-lib 0.6.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.6.2 This release

2 release files No provenance

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