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 |
fit |
scipy |
SpectrumFit analyzer — Gaussian / Lorentzian / Voigt spectrum fits |
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.
Metadata
Release files for plesty-lib 0.5.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.5.1.tar.gz | 886.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plesty_lib-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / plesty_lib-0.5.1.tar.gz
| Download URL | plesty_lib-0.5.1.tar.gz |
|---|---|
| Size | 886.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dec27e86a90091755813fe2d9865d8b6de8f871ed03f9e1761aaa5dd3798c15c
|
|
BLAKE2b-256 checksum How to use checksums |
0af1c095f78e164c158b4e9eb75de1066f59d7e29d36ab721a62f27faf9a4d56
|
| 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.5.1-py3-none-any.whl
| Download URL | plesty_lib-0.5.1-py3-none-any.whl |
|---|---|
| Size | 503.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
057d7f3db25d9a8d9db7e1d84137d08e539e941c40f5f25385f3f6cbb2f06595
|
|
BLAKE2b-256 checksum How to use checksums |
b9820d5b2b4738477b389c7fe6e5f81f89d48a3c5fe76a9ea5d1c4ce27a9bde6
|
| 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}
|