Skip to main content

PlestyLib

PlestyLib is the core Python library in the PLESTY ecosystem for building standardized device APIs for laboratory and experimental automation.

It provides reusable abstractions for:

  1. Device lifecycle and synchronous device models
  2. Transport/traffic management (Serial, VISA, TCP/IP)
  3. Command and operation solvers (for example SCPI and operation-message protocols)
  4. Parameter and function metadata systems
  5. Auto testing helpers, logging, and error-handling utilities

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
hdf5 h5py convert_to_hdf5 — packs saved results into one HDF5 archive
pip install "plesty-lib[hdf5]"
# or
uv add "plesty-lib[hdf5]"

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"))

Architecture Overview

PlestyLib encourages a layered device API design:

  1. Base device model: operation entry points and parameter/function systems
  2. Command/operation solver: map standardized calls to protocol payloads
  3. Traffic manager: transport-specific I/O with real hardware
  4. Optional wrappers: async and TCP/IP service/client patterns

This separation keeps implementations testable and easier to maintain.

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.4.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.4.2
File Size Uploaded
plesty_lib-0.4.2.tar.gz 665.2 kB Details

Built distribution (wheel)

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

Total release size: 1.0 MB

Release files / plesty_lib-0.4.2.tar.gz

Download URL plesty_lib-0.4.2.tar.gz
Size 665.2 kB
Tags Source
SHA-256 checksum
How to use checksums
b4f491dd5cfb61aacbe7d09e1ca9a8cfae4f25df1358da680c1d47841747a270
BLAKE2b-256 checksum
How to use checksums
356b652d36eb4fcae300c21c27de533257460b38d844e2b89cfa7de86ee4778e
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.4.2-py3-none-any.whl

Download URL plesty_lib-0.4.2-py3-none-any.whl
Size 372.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec6895ad19cd46a62b500d889886b935afa37411b36e7dc19892f01f4e9494c7
BLAKE2b-256 checksum
How to use checksums
6a8c4cd18030b3f91f55661502ec6de72f341733bdd100fe15ea96ff329017f9
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 history Release notifications | RSS feed

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

1 release file

0.1.1

2 release files

0.1.0

2 release files

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