Skip to main content

hpp-python

Pipeline status Coverage report Code style: black

hpp-python provides native Python bindings for the HPP (Humanoid Path Planner) C++ libraries (hpp-core, hpp-constraints, hpp-pinocchio, hpp-manipulation, ...), generated with boost::python. These bindings differ from the ones provided by hpp-corbaserver: they are native, in-process bindings that do not use a CORBA middleware, so there is no client/server split and no serialization overhead.

The resulting pyhpp package mirrors the C++ namespace layout:

  • pyhpp.pinocchio — robot model (Device), grippers, Lie-group utilities. Wraps hpp-pinocchio.
  • pyhpp.constraints — differentiable functions, transformations, implicit/explicit constraints, the hierarchical iterative solver. Wraps hpp-constraints.
  • pyhpp.core — planning problem, path planners, path optimizers, path validation, roadmap, steering methods. Wraps hpp-core.
  • pyhpp.manipulation — manipulation-specific Device, constraint graph, path planners/optimizers for manipulation problems, URDF/SRDF loading. Wraps hpp-manipulation and hpp-manipulation-urdf.
  • pyhpp.tools — pure-Python helpers (xacro processing, constraint-error reporting) that are not generated bindings.

Table of contents

Module dependency graph

The BOOST_PYTHON_MODULE initializers import each other in a fixed order, which also reflects the underlying C++ library dependencies:

flowchart LR
    pin["pyhpp.pinocchio\n(hpp-pinocchio)"]
    cons["pyhpp.constraints\n(hpp-constraints)"]
    core["pyhpp.core\n(hpp-core)"]
    manip["pyhpp.manipulation\n(hpp-manipulation)"]
    ext["pinocchio\n(external package)"]

    ext --> pin
    pin --> cons
    cons --> core
    core --> manip

    style pin fill:#dbe9f4,stroke:#4a90d9
    style cons fill:#dbe9f4,stroke:#4a90d9
    style core fill:#dbe9f4,stroke:#4a90d9
    style manip fill:#dbe9f4,stroke:#4a90d9
    style ext fill:#e8f4e8,stroke:#4a9d4a

Dependencies

  • Python ≥ 3.10, with numpy
  • Boost.Python (found via search_for_boost_python())
  • eigenpy
  • Pinocchio (C++ and Python)
  • HPP C++ libraries: hpp-util, hpp-pinocchio, hpp-constraints, hpp-core, hpp-manipulation, hpp-manipulation-urdf
  • Optional: pybind11-stubgen to generate .pyi type stubs (GENERATE_PYTHON_STUBS, default ON)
  • For running the test suite (BUILD_TESTING): example-robot-data, hpp-environments

Installation

From source with CMake

git clone https://github.com/humanoid-path-planner/hpp-python.git
mkdir hpp-python/build
cd hpp-python/build
cmake -DCMAKE_INSTALL_PREFIX=<your_install_prefix> -DCMAKE_BUILD_TYPE=Release ..
make
make test
make install

Relevant CMake options:

  • GENERATE_PYTHON_STUBS (default ON): generate .pyi stub files with pybind11-stubgen for IDE autocompletion; automatically disabled if the tool is not found.
  • HPP_DEBUG (default OFF): enable hpp-util debug logging (-DHPP_DEBUG).
  • HPP_BENCHMARK (default OFF): enable hpp-util benchmark output (-DHPP_ENABLE_BENCHMARK).
  • BUILD_TESTING: build and run the unit/integration test suite (requires example-robot-data and hpp-environments).

With Nix

A flake is provided, pulling hpp-constraints, hpp-core and hpp-manipulation from their own flakes and building against github:gepetto/nix:

nix build github:humanoid-path-planner/hpp-python

Documentation generation

Injecting Doxygen docstrings into bindings

Script doc/configure.py is used to generate documentation of Python objects from C++ objects. It reads the XML documentation generated by doxygen so the dependencies must provide such files. To make it work, do:

  • Add GENERATE_XML=YES into doc/Doxyfile.extra.in of all the dependency of this project.
  • Install the generated documentation by adding the following lines to CMakeLists.txt:
IF(_INSTALL_DOC)
  INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/doxygen-xml
    DESTINATION ${CMAKE_INSTALL_DOCDIR})
ENDIF()

File doc/configure.py contains a short documentation of how to document the bindings.

API reference from stubs

After building and installing pyhpp, pybind11-stubgen produces .pyi stub files under the Python site-packages directory.

doc/fix_stubs.py improves those raw Boost.Python stubs in-place by recovering proper parameter names, types, and return-type annotations from the embedded docstrings. The fixed stubs are useful on their own — IDEs (autocompletion, type checking) and static analysis tools consume them directly, independently of any documentation generation step:

python doc/fix_stubs.py path/to/site-packages/pyhpp/
# or individual files:
python doc/fix_stubs.py path/to/site-packages/pyhpp/core/bindings.pyi

Optional JSON override files can supply or correct signatures that cannot be inferred from docstrings alone (--setter-overrides, --method-overrides).

doc/gen_api_md.py reads the (optionally fixed) stubs and generates one Markdown file per module — suitable for mdbook — plus an index.md, with syntax-coloured signatures and clickable cross-module type links:

python doc/gen_api_md.py \
    --stubs path/to/site-packages \
    --output path/to/docs/api/

Modules covered: pyhpp.core, pyhpp.core.path, pyhpp.core.path_optimization, pyhpp.core.problem_target, pyhpp.constraints, pyhpp.manipulation, pyhpp.manipulation.urdf, pyhpp.manipulation.steering_method, pyhpp.pinocchio, pyhpp.pinocchio.urdf.

License

hpp-python is released under the BSD 2-Clause License, Copyright (c) 2018-2025, CNRS.

Download files

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

Source Distribution

hpp_python-9.0.2.tar.gz (143.0 kB view details)

Uploaded Source

Built Distributions

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

hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

File details

Details for the file hpp_python-9.0.2.tar.gz.

File metadata

  • Download URL: hpp_python-9.0.2.tar.gz
  • Upload date:
  • Size: 143.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for hpp_python-9.0.2.tar.gz
Algorithm Hash digest
SHA256 02b636299c604985a21f1d304dde5c2a02ffd5018e8fb50b656b14632d8879fc
MD5 936515d20dfca37ec66e729573cd0224
BLAKE2b-256 8114de1a97ecac5461325fe0bc597ee2e94ec1e09a550942da764b3a17b77419

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2.tar.gz:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a978104cc6cf27bbca63658d3dbff63347f7b1d0aa7a4cfb95adb86fd7d01f10
MD5 7d66a23a571d5b31bd65eaf7a06b5c83
BLAKE2b-256 e5c8ec7ffc4ae3949db4ae534dc1cbe429ee3d8a109b1f5e08ab83ff3c636e29

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f9584c0b4018adefd9a430de7106dc1a8b6131bcd96077a3558eb803be299c11
MD5 575856d1f0ee940357180049476915d6
BLAKE2b-256 601247a0d18b22866a8beab72f8e73e7dc9077ca6fd9e1501679022f8943058c

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 482bb971f344b834b74e3d385114b863e08ea4d96546a91936551b69bd72764f
MD5 c0c1deab6e7c54af5476bf42b8d5227e
BLAKE2b-256 cc13c0f54ab81d0a96c0f65701bdecaeff6dd5f15a5342cf6a5167446c6e0172

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e371461bdc9988138aa8a6eae4d738cb8eb866fe019599d6c52e175b586297a2
MD5 0339031138e9ba8162cdfce07f66a855
BLAKE2b-256 cfe7cfb4ccd7eb326c240fba6d36d778c96650be5f86078e47f70f16aff51a24

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b38731373e7e4ff8dd27ced9d44e0e7c6a46ec873a4c0ceb2a9d105fd78abc8
MD5 84a18cc9a8137321701631d8ff9a2aff
BLAKE2b-256 afd7f3cb4105cd78b49f4b42f379a0efb28d72a0670557bb57f7559f92164a48

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 11c0c2d095c4d39963cbe6395ea930cef9c1fdf020603a6403ca05686d3fe507
MD5 7a5ad485bd3618ab3cb19892f17e46b0
BLAKE2b-256 9a8dd37125489904c438b1d93f1195ce4f8c9f97cb2c790ad03caac782545eb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bbff0800d7176d1f298c340859a44f77b9641e035ee5b51a2fc3d9da15bf6efe
MD5 6698abbae5c9971372a1df12cb01b9af
BLAKE2b-256 d185708bddb25ba4a899989bf9c600efe341a7692c20713f5596f06a15301438

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 669d6653c5d00fc19ed3e76f8322bbee7f08c6ea800aec27cff059c376e3fcb2
MD5 a7d747621cf2adf522f6ca8ca2b4d77e
BLAKE2b-256 0333af07ee047cb97f88c9883fa2759b7e5fb67a1e75cf057046997694c58f4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c0d0060d42e237411ae4dfd8303c213d1bfb8f7a2d2e4d1c15042c2cd3c2d1c0
MD5 551eef1e731a4f6ab3a0cd25ba55fd3d
BLAKE2b-256 4e1fae0a4269e0eb11c52ab342c5a6420a343ccc2e8d2b2fad0136d3cd3c1162

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ed1982420da6c16498c6dbfe370812db5625c7b7564fbcc08c7d211f7550cade
MD5 20028aaccba6697458c3214b962b385e
BLAKE2b-256 738f8289649cff92786eef68132c3f1e8453b1bdc4902d218bf66399bd353c1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_python-9.0.2-0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

9.0.2 This release

11 files

9.0.1

11 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