Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Find the latest release of ReachPy on: ReachPy PyPI Module

ReachPy 🚀

ReachPy is a modern Python framework built to dramatically improve the Developer Experience (DX) for robotics engineers using ROS 2.

Building robotics applications in ROS 2 shouldn't mean wrestling with boilerplate, complex build pipelines, or rigid message compilation. ReachPy aims to provide a more Pythonic, intuitive, and dynamic interface to the ROS 2 ecosystem, letting you focus on writing robot logic rather than fighting the middleware.

✨ Why ReachPy?

While rclpy provides the standard bindings for ROS 2, the workflow often requires dropping down to C++ build tools (colcon, CMake) just to define custom data structures. ReachPy is being built to bridge this gap, offering dynamic runtime features powered by a high-performance Rust backend.

📦 Core Components

Dynamic Messaging (reachpy_messages)

At the core of ReachPy is our custom message serialization engine, written in Rust (via PyO3).

Instead of writing .msg files, recompiling your workspace, and sourcing environments just to add a new field to a message, reachpy_messages allows you to define, serialize, and deserialize native ROS 2 Common Data Representation (CDR) bytes on the fly.

  • Dynamic Schema Registry: Register complex nested types, arrays, and primitives entirely at runtime.
  • Native CDR Support: Outputs perfectly aligned Little-Endian bytes that are 100% compatible with standard ROS 2 nodes.
  • Blazing Fast: Offloads the heavy lifting of byte-packing to Rust, ensuring your Python nodes stay performant.

🚀 Quick Start (Preview)

Note: ReachPy is currently in active development.

import reachpy
from reachpy.messages import MessageSchema, FieldSchema, FieldType

# 1. Define a ROS 2 compatible message entirely in Python
schema = MessageSchema(
    name="RobotWaypoint",
    fields=[
        FieldSchema("x", FieldType.Float64),
        FieldSchema("y", FieldType.Float64),
        FieldSchema("is_active", FieldType.Bool)
    ]
)

# 2. Register it dynamically (no CMake or colcon build required!)
reachpy.messages.register_schema("RobotWaypoint", schema)

# 3. Serialize directly to ROS 2 CDR bytes to send over the wire
cdr_payload = reachpy.messages.serialize("RobotWaypoint", [15.2, -7.8, True])

🛠️ Building from Source

ReachPy uses Rust for its performance-critical extensions. You will need Rust and Python 3.8+ installed.

# Build and install the Rust extension locally
maturin develop --release

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

reachpy-0.1.2a3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp315-cp315t-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp315-cp315-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp314-cp314t-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp314-cp314-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp313-cp313-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp312-cp312-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp311-cp311-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

reachpy-0.1.2a3-cp310-cp310-manylinux_2_28_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

File details

Details for the file reachpy-0.1.2a3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3cf37362a8bb6f63bccc2247fa3fdb4a37d1b04d5e0432ef3514c9ff094db4c2
MD5 cd32c468064a56da3370855b92c1b083
BLAKE2b-256 6ea3abc78002d56f8c2080535c673b5a729036549d96039f761853215212db57

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp315-cp315t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp315-cp315t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6bacf41ea535a23c723e9006f2f0db094a9ba8f78d9a939ceb1fd3a9243b3fdc
MD5 7a9e3080b1b1b4b33f9fcdf017057e26
BLAKE2b-256 7a52696699ac99f6ad0896d64ffdc9d73be41408a36b4a57b17a27e4eb297adf

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp315-cp315-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp315-cp315-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 898b3d7f4d5e53f9a549969d0dc43a7a1982ce4fa6465f6f48ee78d3bfe6debc
MD5 6dbbc11e616e24217925918dd95c3ae3
BLAKE2b-256 a8599e7c869efed82390ce080043b1770c652e31edd23c1af5fe88fc73d5ac7e

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 da696eac0b726cf5ff7cd489e62c700dc31eb0f9873c97b32331f49fde08a1c2
MD5 835c29b34bf374528c2efd59f4668a04
BLAKE2b-256 774377494ec0ee15eb2180a32f248842172d496753db5eaa3cfafb378aadc1d0

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 964bc78e1c2efe99cdf0c4786418b9aeae12a6b46930fdbae641f7144f765891
MD5 ea7508fa1930bd6855f0581954ac6edc
BLAKE2b-256 3566eb529d5df79801c207b4c05848b2e1634ad4b57bb921c928da32976e2d57

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 905c8f845e3d51ecc75a144c81ce3aa9335fec35db8d68298c6127f9010f6b16
MD5 dba128b4b5eb5d3e04cac81b6265ec62
BLAKE2b-256 8243a04492c5fe242526cc43a89643c66fdec3713a2e717382bd9cbad8e2147c

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5c193ba997fb83cf0797a18507d5fe445c83a9aae2aa845d3f49fe345c712000
MD5 c32ad435fbb003bebd0e8adb82f48035
BLAKE2b-256 196508ee3632517a59f34948ee2a0f1888875deb43e730541464640b0cb87079

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c7314eb975ca43168ad4611a0af1d26c1477f705ff10f92e49e617911493a468
MD5 48b75a627ba4aab0f099ca8305664f2a
BLAKE2b-256 f3f96e6455a22ac5ade96de9299870e199c39fed0aa9c5c73fe8dff48a1367d5

See more details on using hashes here.

File details

Details for the file reachpy-0.1.2a3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for reachpy-0.1.2a3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f7eb0206c34d71cf54fdf03cca94ac5d98f61c1a92b3efde359e1ebd7d2c5d30
MD5 b38c8dd517b35966986ce40b644ef60e
BLAKE2b-256 590e5e853338f62625fa12ee31e90df3b0f71965d4ca05af54ba0310f677e126

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2a3 This release

9 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page