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:
- Device lifecycle and synchronous device models
- Transport/traffic management (Serial, VISA, TCP/IP)
- Command and operation solvers (for example SCPI and operation-message protocols)
- Parameter and function metadata systems
- 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:
- Base device model: operation entry points and parameter/function systems
- Command/operation solver: map standardized calls to protocol payloads
- Traffic manager: transport-specific I/O with real hardware
- 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.
Release files for plesty-lib 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plesty_lib-0.4.1.tar.gz | 660.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plesty_lib-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / plesty_lib-0.4.1.tar.gz
| Download URL | plesty_lib-0.4.1.tar.gz |
|---|---|
| Size | 660.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66f2136524709406ac051bf0fe426316ed3427cd488cb4c947bb1bab0d469420
|
|
BLAKE2b-256 checksum How to use checksums |
fd438e1623a04b23951a1c10acb321a7e7ec5ef776ffea295ddc4ce5f793be9b
|
| 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.1-py3-none-any.whl
| Download URL | plesty_lib-0.4.1-py3-none-any.whl |
|---|---|
| Size | 370.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c95c2da6cc7f69e48cf02b4fd8052088bafb30e0f4536e0e2987c287466b8cff
|
|
BLAKE2b-256 checksum How to use checksums |
f2c158664c45da3ce8756db1f59912f30d0bbf3242b31dc03cea322f86edef4a
|
| 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}
|