Plesty Documentation

Architecture

The three-tier HUB pipeline, core repo roles, and Python namespace convention.

The HUB Pipeline

Every PLESTY module lives in one of three tiers. Data always flows left to right — devices collect it, analyzers process it, experiments orchestrate the whole workflow.

Device
  • Wraps one lab instrument
  • Implements BaseDeviceSyncModel
  • Exposes params via write/query
  • Runs as ZMQ TCP server
  • Declares module_type = "device"
Analyzer
  • Receives raw data from devices
  • Converts to calibrated results
  • Uses device TCP clients
  • No hardware ownership
  • Declares module_type = "analyzer"
Experiment
  • Orchestrates multiple devices
  • Uses CompositeDevice
  • Defines measurement sequences
  • Returns structured results
  • Declares module_type = "experiment"

Core repos

These three repos are the infrastructure layer. You depend on them but never modify them as part of hub module work.

Repo Version What it provides
plesty-sdk v0.2.1 plesty CLI: check, init, docs, license, manual, update
plesty-lib v0.2.6 Runtime base classes, traffic managers, solvers, TCP service layer
plesty-ci GitLab CI templates (plesty-standard-ci component)

All hub modules declare plesty-lib as a runtime dependency and plesty-sdk as a dev dependency.

Python namespace convention

All PLESTY modules share the plesty namespace package. The module name is derived from the project directory name:

plesty-power-meter/           ← project dir (kebab-case)
├── plesty/
│   └── power_meter/          ← namespace package (snake_case)
│       ├── __init__.py
│       ├── __main__.py
│       ├── base_device.py
│       └── device.py
├── assets/
│   ├── param_schema.json
│   └── op_schema.json
├── docs/
│   ├── index.md
│   └── toc.yaml
├── tests/
│   └── test_pipeline.py
├── pyproject.toml
├── CHANGELOG.md
└── .gitlab-ci.yml
Artifact Convention Example
Project directory plesty-<kebab-name> plesty-power-meter
Source package plesty/<module_name>/ plesty/power_meter/
PyPI distribution plesty-<kebab-name> plesty-power-meter
Python import plesty.<module_name> plesty.power_meter

The plesty- prefix is stripped automatically when plesty init infers the module name.

GitLab group structure

plesty/
├── core/
│   ├── plesty-sdk
│   ├── plesty-lib
│   └── plesty-ci
└── hub/
    ├── devices/
    │   ├── ape/
    │   ├── coherent/
    │   ├── m2/
    │   ├── meadowlark/
    │   ├── national-instruments/
    │   ├── princeton-instruments/
    │   └── thorlab/
    ├── analyzers/
    └── experiments/

Hub module repos live under the appropriate vendor or category subgroup and are created once via the PLESTY management workspace.