Skip to main content

Python SDK for motorbridge Rust ABI

Project description

motorbridge Python SDK

Channel Compatibility (PCAN + CANable candleLight/gs_usb + CAN-FD + Damiao Serial Bridge)

  • Linux SocketCAN uses prepared interfaces directly: can0, can1. For CANable, use candleLight/gs_usb firmware so it appears as a SocketCAN interface such as can0.
  • Use PCAN or CANable candleLight/gs_usb for standard CAN.
  • CAN-FD transport is available both in CLI (--transport socketcanfd) and Python SDK (Controller.from_socketcanfd(...)), and is required for Hexfellow.
  • Damiao-only serial bridge transport is also available in CLI (--transport dm-serial --serial-port /dev/ttyACM0 --serial-baud 921600).
  • Full Damiao serial-bridge interface list and command patterns are documented in motor_cli/README.md (section 3.6 in motor_cli/README.zh-CN.md).
  • On Linux SocketCAN, do not append bitrate in --channel (for example can0@1000000 is invalid).
  • On Windows (PCAN backend), can0/can1 map to PCAN_USBBUS1/2; optional @bitrate suffix is supported.

Python binding layer on top of motor_abi.

Chinese version: README.zh-CN.md

README Navigation (What Each One Is For)

If this is your first time in this folder, read in this order:

  1. This file: README.md
    Purpose: Python binding overview (install, API scope, common commands).
  2. examples/README.md (English) / examples/READMEzh_cn.md (Chinese)
    Purpose: practical demo index and run instructions (from simplest to advanced). 2.5. ../motorbridge-docs Purpose: canonical Mintlify documentation site (tutorial + API style docs).
  3. get_started/README.md / get_started/README.zh-CN.md
    Purpose: pip-first onboarding path (install -> scan -> run).
  4. DAMIAO_PYTHON_REFERENCE.zh-CN.md
    Purpose: Damiao Python interface reference (parameter lookup style).
  5. DAMIAO_binding.md
    Purpose: Damiao binding implementation notes (design/internal behavior).
  6. README.zh-CN.md
    Purpose: Chinese overview for Chinese-speaking teammates.

Notes:

  • If your goal is "run something now", start with Start Here (Simplest 2 Examples) in examples/README.md.
  • If your goal is CLI parameter lookup, see ../../motor_cli/README.md.

Scope

Packaging note:

  • Current package target version: 0.3.1.

  • Published wheel includes motor_abi shared library and ws_gateway binary for that platform.

  • After pip install motorbridge, gateway binary path is typically: .../site-packages/motorbridge/bin/ws_gateway (or ws_gateway.exe on Windows).

  • 0.3.1 only changes Python CLI RobStride control startup timing. The CLI now aligns mit / pos-vel / vel with the Rust CLI and WebSocket gateway by disabling torque before mode switch, verifying run_mode, re-enabling torque, and then writing the target.

  • Gateway launch command (added to PATH by pip):

    • motorbridge-gateway -- --bind 127.0.0.1:9002 ...
  • Security note:

    • keep loopback bind (127.0.0.1) for local usage.
    • if you bind to non-loopback addresses (0.0.0.0 or host IP), export MOTORBRIDGE_WS_TOKEN before launch.
    • clients must pass the token in x-motorbridge-token or Authorization: Bearer ....
  • macOS runtime note (only if you see dynamic library load errors):

    • Resolve binary path generically: GW="$(python3 -c "import motorbridge, pathlib; print(pathlib.Path(motorbridge.__file__).resolve().parent/'bin'/'ws_gateway')")"
    • Use package-local lib directory (no machine-specific absolute path): PKG_DIR="$(python3 -c "import motorbridge, pathlib; print(pathlib.Path(motorbridge.__file__).resolve().parent)")" DYLD_LIBRARY_PATH="$PKG_DIR/lib:${DYLD_LIBRARY_PATH:-}" "$GW" --bind 127.0.0.1:9002 --vendor damiao --channel can0 --model auto --motor-id 0x01 --feedback-id 0x11 --dt-ms 20
  • High-level API: Controller, Motor, Mode

  • CLI: motorbridge-cli

  • Controller constructors:

    • Controller(channel="can0") (SocketCAN/PCAN path)
    • Controller.from_socketcanfd(channel="can0") (CAN-FD path, required by Hexfellow)
    • Controller.from_dm_serial(serial_port="/dev/ttyACM0", baud=921600) (Damiao-only serial bridge)
  • Vendors:

    • Damiao: add_damiao_motor(...)
    • Hexfellow: add_hexfellow_motor(...)
    • MyActuator: add_myactuator_motor(...)
    • RobStride: add_robstride_motor(...)
    • HighTorque: add_hightorque_motor(...)
  • Unified state-query pattern:

    • Recommended flow: request_feedback() -> poll_feedback_once() -> get_state().
    • RobStride now supports this unified pattern via ABI-level compatibility (while robstride_ping() is still available).

Unified Mode Mapping Summary (Top-Level -> Vendor Native)

Unified Mode Damiao RobStride Hexfellow MyActuator HighTorque
Mode.MIT native MIT native MIT native MIT (mode 5) unsupported maps to native pos+vel+tqe
Mode.POS_VEL native POS_VEL maps to native Position (run_mode=1 + limit_spd(0x7017) + loc_ref(0x7016)) native POS_VEL (mode 1) Position setpoint flow maps to native pos+vel+tqe
Mode.VEL native VEL native Velocity unsupported native velocity setpoint flow native velocity command
Mode.FORCE_POS native FORCE_POS unsupported unsupported unsupported maps to native pos+vel+tqe

Note:

  • RobStride unified high-level control currently covers MIT / POS_VEL / VEL.
  • Torque/current is parameter-level only for RobStride (robstride_write_param_*), not a dedicated unified mode.
  • RobStride feedback/host default should use 0xFD; scan tries 0xFD,0xFF,0xFE,0x00,0xAA by default.
  • RobStride feedback_id / host_id is not the motor device_id; scan hits report the motor ID as probe / device_id.

Quick Start

from motorbridge import Controller, Mode

with Controller("can0") as ctrl:
    motor = ctrl.add_damiao_motor(0x01, 0x11, "4340P")
    ctrl.enable_all()
    motor.ensure_mode(Mode.MIT, 1000)
    motor.send_mit(0.0, 0.0, 20.0, 1.0, 0.0)
    print(motor.get_state())
    motor.close()

Damiao over serial bridge:

from motorbridge import Controller, Mode

with Controller.from_dm_serial("/dev/ttyACM1", 921600) as ctrl:
    motor = ctrl.add_damiao_motor(0x04, 0x14, "4310")
    ctrl.enable_all()
    motor.ensure_mode(Mode.MIT, 1000)
    motor.send_mit(0.5, 0.0, 20.0, 1.0, 0.0)
    motor.close()

RobStride quick use:

from motorbridge import Controller

with Controller("can0") as ctrl:
motor = ctrl.add_robstride_motor(127, 0xFD, "rs-00")
    print(motor.robstride_ping())
    print(motor.robstride_get_param_f32(0x7019))
    motor.close()

MyActuator quick use:

from motorbridge import Controller, Mode

with Controller("can0") as ctrl:
    motor = ctrl.add_myactuator_motor(1, 0x241, "X8")
    ctrl.enable_all()
    motor.ensure_mode(Mode.POS_VEL, 1000)
    motor.send_pos_vel(3.1416, 2.0)  # rad / rad/s
    print(motor.get_state())
    motor.close()

Hexfellow quick use (CAN-FD only):

from motorbridge import Controller, Mode

with Controller.from_socketcanfd("can0") as ctrl:
    motor = ctrl.add_hexfellow_motor(1, 0x00, "hexfellow")
    ctrl.enable_all()
    motor.ensure_mode(Mode.MIT, 1000)      # Hexfellow supports MIT / POS_VEL
    motor.send_mit(0.8, 1.0, 30.0, 1.0, 0.1)
    print(motor.get_state())
    motor.close()

CLI Examples

Damiao:

motorbridge-cli run \
  --vendor damiao --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 \
  --mode mit --pos 0 --vel 0 --kp 20 --kd 1 --tau 0 --loop 50 --dt-ms 20

# Rust CLI style ID update is also accepted:
motorbridge-cli run \
  --vendor damiao --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 \
  --set-motor-id 0x02 --set-feedback-id 0x12 --store 1 --verify-id 1

RobStride:

motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 --motor-id 127 \
  --mode ping

RobStride MIT quick check:

motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 2 --feedback-id 0xFD \
  --mode mit --ensure-strict 1 \
  --pos 0.5 --vel 0 --kp 20.0 --kd 0.5 --tau 0 \
  --loop 100 --dt-ms 20

RobStride position target, aligned with the WS gateway native register path (limit_spd 0x7017, loc_kp 0x701E, loc_ref 0x7016):

motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 2 --feedback-id 0xFD \
  --mode pos-vel \
  --pos 1.5 --vlim 1.0 --loc-kp 5.0 \
  --loop 1 --dt-ms 20

motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 \
  --motor-id 2 --feedback-id 0xFD \
  --mode pos-vel \
  --pos -1.5 --vlim 1.0 --loc-kp 5.0 \
  --loop 1 --dt-ms 20

RobStride parameter read:

motorbridge-cli robstride-read-param \
  --channel can0 --model rs-00 --motor-id 127 --param-id 0x7019 --type f32

# Rust CLI style is also accepted by Python CLI:
motorbridge-cli run \
  --vendor robstride --channel can0 --model rs-00 --motor-id 127 --feedback-id 0xFD \
  --mode read-param --param-id 0x7019 --param-type f32

Damiao parameter read/write:

motorbridge-cli damiao-read-param \
  --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 \
  --param-id 21 --type f32

motorbridge-cli damiao-write-param \
  --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 \
  --param-id 8 --type u32 --value 0x01 --verify 1

Unified scan (all vendors):

motorbridge-cli scan --vendor all --channel can0 --start-id 0x01 --end-id 0xFF

RobStride-focused scan and ID update:

motorbridge-cli scan \
  --vendor robstride --channel can0 --start-id 1 --end-id 127 \
  --feedback-ids 0xFD,0xFF,0xFE,0x00,0xAA

motorbridge-cli id-set \
  --vendor robstride --channel can0 \
  --motor-id 127 --feedback-id 0xFD \
  --new-motor-id 126 --store 1 --verify 1

HighTorque via binding:

from motorbridge import Controller

with Controller("can0") as ctrl:
    motor = ctrl.add_hightorque_motor(1, 0x01, "hightorque")
    motor.send_mit(3.1416, 0.8, 0.0, 0.0, 0.8)  # kp/kd are accepted but ignored by protocol
    motor.request_feedback()
    print(motor.get_state())
    motor.close()

HighTorque via Rust CLI:

cargo run -p motor_cli --release -- \
  --vendor hightorque --channel can0 --motor-id 1 --mode read

Experimental Windows Support (PCAN-USB)

Linux remains the primary target. Windows support is experimental and currently uses PEAK PCAN.

  • Install PEAK PCAN driver + PCAN-Basic runtime (PCANBasic.dll).
  • Use channel as can0@1000000 (maps to PCAN_USBBUS1 at 1Mbps).

Recommended quick validation with Rust CLI on Windows:

cargo run -p motor_cli --release -- --vendor damiao --channel can0@1000000 --model 4340P --motor-id 0x01 --feedback-id 0x11 --mode scan --start-id 1 --end-id 16
cargo run -p motor_cli --release -- --vendor damiao --channel can0@1000000 --model 4340P --motor-id 0x01 --feedback-id 0x11 --mode pos-vel --pos 3.1416 --vlim 2.0 --loop 1 --dt-ms 20
cargo run -p motor_cli --release -- --vendor damiao --channel can0@1000000 --model 4310 --motor-id 0x07 --feedback-id 0x17 --mode pos-vel --pos 3.1416 --vlim 2.0 --loop 1 --dt-ms 20

Local wheel build (Windows):

python -m pip install --user wheel
set MOTORBRIDGE_LIB=%CD%\\target\\release\\motor_abi.dll
set MOTORBRIDGE_WS_GATEWAY_BIN=%CD%\\target\\release\\ws_gateway.exe
python -m pip wheel --no-build-isolation bindings/python -w bindings/python/dist
python -m pip install bindings/python/dist/motorbridge-*.whl

Example Programs

  • Damiao wrapper demo: examples/python_wrapper_demo.py
  • Hexfellow CAN-FD demo: examples/hexfellow_canfd_demo.py (MIT / POS_VEL only)
  • Damiao maintenance demo: examples/damiao_maintenance_demo.py
  • Damiao register rw demo: examples/damiao_register_rw_demo.py
  • Damiao dm-serial demo: examples/damiao_dm_serial_demo.py
  • RobStride wrapper demo: examples/robstride_wrapper_demo.py
  • Full Damiao mode demo: examples/full_modes_demo.py
  • Damiao scan / tune / position helpers:
    • examples/scan_ids_demo.py
    • examples/pid_register_tune_demo.py
    • examples/pos_ctrl_demo.py
    • examples/pos_repl_demo.py

See examples/README.md (English) or examples/READMEzh_cn.md (Chinese).

Damiao Full-Coverage Status

Damiao usage in Python examples is now covered end-to-end:

  • control modes: mit / pos-vel / vel / force-pos
  • transport paths: SocketCAN/PCAN constructor + from_dm_serial(...)
  • maintenance ops: clear_error, set_zero_position, set_can_timeout_ms, request_feedback
    • project guard for Damiao set-zero: call disable() before set_zero_position()
    • no user-facing ms parameter for set-zero; core applies fixed 20ms settle
  • register APIs: get/write f32, get/write u32, store_parameters

RobStride Maintenance Notes

  • clear_error() is supported through the same unified motor method as Damiao.
  • robstride_set_active_report(True/False) toggles RobStride comm_type 24 active status reporting.
  • With active reporting enabled, background polling can update get_state() from incoming status frames without a fresh query command; request_feedback() remains available as a compatibility/manual-refresh helper.

End-to-End Demo Commands

# Build ABI once
cargo build -p motor_abi --release
export PYTHONPATH=bindings/python/src
export LD_LIBRARY_PATH=$PWD/target/release:${LD_LIBRARY_PATH}

# Damiao wrapper demo
python3 bindings/python/examples/python_wrapper_demo.py \
  --channel can0 --model 4340P --motor-id 0x01 --feedback-id 0x11 \
  --pos 0 --vel 0 --kp 20 --kd 1 --tau 0 --loop 20 --dt-ms 20

# RobStride wrapper demo: ping
python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD --mode ping

# RobStride wrapper demo: clear fault
python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD --mode clear-error

# RobStride wrapper demo: active-report bring-up
python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD \
  --mode write-param --param-id 0x7026 --param-type u16 --param-value 3

python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD \
  --mode active-report --active-report 1

# RobStride wrapper demo: position command
python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD \
  --mode pos-vel --pos 1.5 --vlim 1.0 --loc-kp 5.0 --loop 1 --dt-ms 20

# RobStride wrapper demo: velocity
python3 bindings/python/examples/robstride_wrapper_demo.py \
  --channel can0 --model rs-00 --motor-id 2 --feedback-id 0xFD \
  --mode vel --vel 0.3 --loop 40 --dt-ms 50

Notes

  • id-dump is a Damiao workflow; id-set supports Damiao and RobStride; scan supports damiao|hexfellow|myactuator|robstride|hightorque|all.
  • For RobStride id-set, --new-motor-id changes device_id; --feedback-id remains the host-side ID.
  • RobStride motor_id / device_id is validated as 1..255; feedback_id / host_id is validated as 0..255 to prevent silent ctypes truncation.
  • RobStride scan probes each --feedback-ids host_id exactly through host-id-specific ABI helpers; invalid host IDs are rejected instead of silently falling back.
  • Python CLI and Rust CLI are aligned for the production Damiao and RobStride workflows: scan, enable/disable, control, ID update, parameter read/write, RobStride clear-error, and RobStride active-report. Rust CLI still exposes deeper vendor-specific surfaces for HighTorque/MyActuator/Hexfellow debugging.
  • Mode.MIT and send_force_pos are not available for MyActuator in ABI wrapper.
  • Hexfellow supports MIT and POS_VEL through ABI wrapper; VEL and FORCE_POS return unsupported.
  • Full Damiao tuning reference stays in:

PyPI Auto Publish (GitHub Actions)

This repository includes .github/workflows/pypi-publish.yml.

  • Tag publish policy:
    • push vX.Y.Z -> publish the same artifacts to both TestPyPI and PyPI
  • Manual publish is still available via workflow Python Publish:
    • testpypi (only TestPyPI)
    • pypi (only PyPI)

One-time setup (token mode)

  1. Create API token on PyPI and add repository secret PYPI_API_TOKEN.
  2. Create API token on TestPyPI and add repository secret TEST_PYPI_API_TOKEN.
  3. Keep package version unique for every upload (for example 0.1.6, 0.1.7).

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

motorbridge-0.3.1.tar.gz (30.1 kB view details)

Uploaded Source

Built Distributions

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

motorbridge-0.3.1-cp314-cp314-win_amd64.whl (869.6 kB view details)

Uploaded CPython 3.14Windows x86-64

motorbridge-0.3.1-cp313-cp313-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.13Windows x86-64

motorbridge-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

motorbridge-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

motorbridge-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

motorbridge-0.3.1-cp312-cp312-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.12Windows x86-64

motorbridge-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

motorbridge-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

motorbridge-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

motorbridge-0.3.1-cp311-cp311-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.11Windows x86-64

motorbridge-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

motorbridge-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

motorbridge-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

motorbridge-0.3.1-cp310-cp310-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.10Windows x86-64

motorbridge-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

motorbridge-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

motorbridge-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file motorbridge-0.3.1.tar.gz.

File metadata

  • Download URL: motorbridge-0.3.1.tar.gz
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1.tar.gz
Algorithm Hash digest
SHA256 efea5a53c14c50efa83a0c461f480e9369f6bfd59ee6c6db1d9fc8d5bbcfeb6b
MD5 bd809b1ef23062f09a2ec5d78f084113
BLAKE2b-256 4828176108d39ce525f4e383a4d26c23951787e0bf622857645c70216f8f2a84

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: motorbridge-0.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 869.6 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 60125849e4091e9d1199dbe7ef0e46d55937715dd7f47bc73bfbe0ad40092043
MD5 1d45f40df11df99c1e2398fcfe70206a
BLAKE2b-256 7fb92b542f7f49341ce2e8164e24aebeec27f446e1c53112e8327496441cc6ef

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: motorbridge-0.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 838.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0ff5e4ea782f7e7e376361274b0541fe26862e39bb5c77abc95cab6844b659ce
MD5 b711a74f0327d4dc7b0b66a69f306149
BLAKE2b-256 1d23f2ec14245df411b2d6418516ac9bced6bfec3fdcce575237d661d4e2b734

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a03563d4de3f41c6791654aa45c1c0f3d93862b719f1bca879fcb3834b38f99
MD5 a535e0529c22aa32a6b5a1b5d6648f9d
BLAKE2b-256 19b3097b0d484900e0a63822d87514661b750d7b1095d12701b9c16b6592f4d8

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 18f7fecb01f30a3f92da5f2a574aa47b66c0ec667d49a21aa0ede2246efb9b64
MD5 86d13e88d84adcd77993dde9d361fe3d
BLAKE2b-256 e8214e188978b8bde4626dbd168d3d620d5af11327ce2c95f315214c59e839ef

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2eba3e3a53851b4cbe3358ff785fe88ccf50960355bc5a2cf057c6c57370c6bc
MD5 6f3aecfffebdd43c8ce21718b372ac78
BLAKE2b-256 78b4dd4bc09a3d706fa12679a0f439278f34c3ef54fa40bc2bd7cff59a02f7f9

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: motorbridge-0.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 838.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ae1debdcf9671e2f352098f79e4bc0ec0c54266f457cabe2c81b977d79965d39
MD5 eaec878987c3a0ddf899c0c1fb3f8881
BLAKE2b-256 abea81bb669f6ae5e50505a31607f74aecbc9282b002e7f7d491dc0c64ce34fc

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c6d0de59c5a912f8ad1782386013e490c7c22c07b4517d67607034af98ba48b
MD5 bb801acf524947e08d2661e3ab4f3c28
BLAKE2b-256 90db925af0fddf0ba0fa2b10faac516b20298b66270e6691160e430f28146bc8

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3171083225d1871c9533e12e64d1944e1a8f03e30d2a0a09fe0210468cc5e0ca
MD5 ea6503e698c6a8fc413d269e4a85d36b
BLAKE2b-256 55f535e60f9b1638166a52cf17690443e223076a45c8c1a357faf223cef70ece

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 412784d4bb42b2c1a0451c61102189a9bc7da777ecf316a12849f25663c13247
MD5 e9a7e9a6c5ce9d1776f9caa6448cacbc
BLAKE2b-256 3c1dc15105751d3035f438bbb6a2e24cffe988a53e5880da48682aa8fb8bd8f6

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: motorbridge-0.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 838.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4d170c9e9fc9f91c6f1630dbcdec2c5e60e553048e13ec00252711f3dbff4cff
MD5 fe9317ddde834a549959ed99b0b0df3e
BLAKE2b-256 8546578f8f6b3f79145204da84a321dbb0ded0727e53c11314e9778841b9ff67

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 923f76e37a571522b6593bb44eb3456b47e4d74823445ca69ce378704c78ec33
MD5 27e50ddd292f6a64352951a7e88eca8d
BLAKE2b-256 5d7289354e53c14684ca6ff6fc48297fffc0c6a71fb58da51eefb4cb0a887ca7

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 54db46007dbb1041833cd4230b0ba3d00a51f3e4c44b34246198d1388a4556ad
MD5 e2f6798d81b21d2a3e513c68ae7d28bd
BLAKE2b-256 e0c945860e8393545926d377f31a90d237ea892eb1499734e434f133d2de5c7b

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 291446c31c06fedd7c873e4b5e55b3003e79f46d913d860335ab680a590378a8
MD5 7dc6352a7049b7c7c354483fd5be912f
BLAKE2b-256 1a8aead1b42f69c9f1aa752bbc76efabcc01fdb26bbd48ed36a890e6d3e26921

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: motorbridge-0.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 838.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for motorbridge-0.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 41f29497b6703317324c174f233cd47c1e5cbd4c816e662de00dc064e7354b2a
MD5 f4c64b9a814e469dce2c398f0d6314c0
BLAKE2b-256 443bc3f3a2832f5e28fbe350a008daf408eaa5d4ed4bd4481fb0466a1bd87349

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2bb693b37d6bf81d58b56a115437e0e31405e046258f00e22602e42b65b3bff1
MD5 56a42436ace59246a7762b222a9cb071
BLAKE2b-256 d33a2704ba997f9c173ab7c6108b768bdb80e15a9bc1842afa0c814a300f9999

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7c85daf545553e6ba69a7767652745d4e38313583073a32800ca8f75b1e7c578
MD5 3967541989c150edee28b8308c8e12f6
BLAKE2b-256 1c7e9b74b78f9650a1858e0dfa0dd9869ac6d64d101547b64e99921e0f5ac0f5

See more details on using hashes here.

File details

Details for the file motorbridge-0.3.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for motorbridge-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3ca92bf2a66592dac47b35aa55e66504a6472e22ddbbd65b5b26e3bb06c74ca
MD5 0492a8341925c45d8223c77a392f5940
BLAKE2b-256 5d4a1979850db4be51dd75c4aefc9e1667bd91b160198b0a0cbf1ff430a809fe

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