Skip to main content

Library for data acquisition and control of devices implementing the Harp protocol.

Project description

Harp logo

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 Device interface, 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

harp-0.5.0rc1.tar.gz (147.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

harp-0.5.0rc1-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

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

Hashes for harp-0.5.0rc1.tar.gz
Algorithm Hash digest
SHA256 576dcee1865f320a639754c23fdd8b469411b9c30d91dd64d2eb04ef11b34ed1
MD5 dc85281c1e8c34b1bcc181fba1dbaf65
BLAKE2b-256 fa2b2c0359abf7dafe3b5d2071e1741e86d70382ac5562b77f25271eddb63474

See more details on using hashes here.

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

Hashes for harp-0.5.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 4c7d1c2a0e22ed6e404783d8cda3e91eaf90fe022b4edd32d5d46a96c11bca35
MD5 bc6f99983880ea90047ae37cf4d93741
BLAKE2b-256 d0526423586f8d8abe9c68eb2050cb570c3b8a12652e33c2ddb4d312af6177ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page