Library for data acquisition and control of devices implementing the Harp protocol.
Project description
harp
This project includes four main packages:
-
harp-protocol: Provides the core protocol definitions and utilities for the Harp protocol. See Protocol API Documentation for details.
-
harp-serial: Implements serial communication functionalities for generic Harp devices. See Serial API Documentation for more information.
-
harp-device: Implements the transport-agnostic
Deviceinterface, the common register map, and the shared registers and enums. See Device API Documentation for details. -
harp-data: Parses register binary dumps into pandas DataFrames. See Data API Documentation for more information.
Installation
All packages are published to PyPI. The harp package is a metadata package with no code of
its own — it just depends on the four packages above, so it's the easiest way to get everything:
pip install harp
uv add harp
If you only need part of the stack (e.g. you're parsing offline data dumps and don't need serial I/O), install just the packages you need — each one only pulls in what it actually depends on:
| Package | Provides | Depends on |
|---|---|---|
harp-protocol |
Core protocol types: registers, messages, payload parsing | — |
harp-device |
Transport-agnostic Device class, common register map |
harp-protocol |
harp-serial |
Serial (COM/tty) transport for Device |
harp-protocol, harp-device |
harp-data |
Parse register binary dumps into pandas DataFrames | harp-protocol |
pip install harp-protocol
pip install harp-device
pip install harp-serial
pip install harp-data
harp-benchmarks (under src/packages/) is internal-only and is never published to PyPI.
Contributing
harp is a uv workspace: every package under
src/packages/ is its own distribution, plus the root harp metadata package. Contributions are
welcome — please open an issue or PR.
Clone the repo and install everything (all workspace packages, editable, plus test/lint tooling)
with the dev dependency group:
uv sync --group dev
Before opening a PR, run the same checks CI runs:
uv run ruff format --check # formatting
uv run ruff check # lint
uv run ty check # type checking
uv run codespell # spelling
uv run pytest --cov harp # tests
Adding a new package? Drop it under src/packages/<name>/ with its own pyproject.toml, add it
to [tool.uv.sources] in the root pyproject.toml, and (if it should ship as part of harp) add
it to the root package's dependencies too.
Building the documentation
Install the docs dependency group and run mkdocs through uv:
uv sync --group docs --group dev
uv run mkdocs serve # live-reloading local preview
uv run mkdocs build # static site in ./site
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file harp-0.5.0rc1.tar.gz.
File metadata
- Download URL: harp-0.5.0rc1.tar.gz
- Upload date:
- Size: 147.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
576dcee1865f320a639754c23fdd8b469411b9c30d91dd64d2eb04ef11b34ed1
|
|
| MD5 |
dc85281c1e8c34b1bcc181fba1dbaf65
|
|
| BLAKE2b-256 |
fa2b2c0359abf7dafe3b5d2071e1741e86d70382ac5562b77f25271eddb63474
|
File details
Details for the file harp-0.5.0rc1-py3-none-any.whl.
File metadata
- Download URL: harp-0.5.0rc1-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c7d1c2a0e22ed6e404783d8cda3e91eaf90fe022b4edd32d5d46a96c11bca35
|
|
| MD5 |
bc6f99983880ea90047ae37cf4d93741
|
|
| BLAKE2b-256 |
d0526423586f8d8abe9c68eb2050cb570c3b8a12652e33c2ddb4d312af6177ce
|