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.
- Wraps one lab instrument
- Implements
BaseDeviceSyncModel - Exposes params via
write/query - Runs as ZMQ TCP server
- Declares
module_type = "device"
- Receives raw data from devices
- Converts to calibrated results
- Uses device TCP clients
- No hardware ownership
- Declares
module_type = "analyzer"
- 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.