Skip to main content

Hyperiso Python binding (C++ backend via pybind11)

Project description

HyperIso core and Python package

This directory contains the buildable HyperIso package:

  • core/ - C++20 backend, CMake build system, CLI and tests;
  • pyhyperiso/ - Python package wrapping the C++ backend;
  • examples_cpp/ - C++ examples built against an installed HyperIso package;
  • examples_python/ - Python examples using pyhyperiso;
  • pyproject.toml - Python packaging entry point based on scikit-build-core.

Build the C++ core

From the repository root:

cmake -S Hyperiso/Hyperiso/core -B build \
  -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_WITH_CLI=ON

cmake --build build -j
cmake --install build --prefix "$HOME/.local"

Useful options:

Option Default Purpose
ENABLE_TESTS OFF Build CTest tests.
BUILD_WITH_APP OFF Build development and benchmark executables.
BUILD_WITH_CLI OFF Build the hyperiso-ui command-line executable.
BUILD_WITH_PYTHON OFF Build the Python extension from the CMake tree.
BUILD_WITH_MARTY OFF Enable MARTY integration.
BUILD_WITH_SOFTSUSY OFF Enable bundled SOFTSUSY fallback; Python/C++ can also use a runtime softpoint.x path.
ENABLE_CLANG_TIDY OFF Run clang-tidy during the build.
ENABLE_ADDRESS_SANITIZER OFF Enable AddressSanitizer.
ENABLE_UNDEFINED_SANITIZER OFF Enable UndefinedBehaviorSanitizer.

Run tests

cmake -S Hyperiso/Hyperiso/core -B build \
  -G Ninja \
  -DCMAKE_BUILD_TYPE=Debug \
  -DENABLE_TESTS=ON

cmake --build build -j
ctest --test-dir build --output-on-failure

Labels can be used to select a subset:

ctest --test-dir build -L common --output-on-failure
ctest --test-dir build -L database --output-on-failure
ctest --test-dir build -L statistic --output-on-failure

Heavy validation/comparison tests are opt-in:

cmake -S Hyperiso/Hyperiso/core -B build-comparison \
  -DENABLE_TESTS=ON \
  -DHYPERISO_BUILD_COMPARISON_TESTS=ON

Install the Python package

python -m pip install --upgrade pip
python -m pip install ./Hyperiso/Hyperiso

Editable development install:

python -m pip install -e ./Hyperiso/Hyperiso

Complete development environment:

python -m pip install -e "./Hyperiso/Hyperiso[test,dev]"

HyperIso uses pybind11; the PyPI package named pybind is unrelated.

Run Python tests:

python -m pip install -e "./Hyperiso/Hyperiso[test]"
python -m pytest Hyperiso/Hyperiso/pyhyperiso/test

Build examples against an installed package

cmake -S Hyperiso/Hyperiso/examples_cpp -B build-examples \
  -G Ninja \
  -DCMAKE_PREFIX_PATH="$HOME/.local"

cmake --build build-examples -j

Public interfaces

Interface Entry point
C++ API headers and CMake targets exported by the C++ install.
Python API pyhyperiso.Common, pyhyperiso.Core, pyhyperiso.Wilson, pyhyperiso.Observable, pyhyperiso.Statistic; pyhyperiso.Core.DatabaseWriter exports the initialized database.
CLI hyperiso-ui, built with -DBUILD_WITH_CLI=ON.
Dash GUI GHyperiso/HyperisoDashGUI.

Versioning

The C++ project, Python package and release tag should use the same semantic version. For example:

CMake project version: 1.0.2
Python package version: 1.0.2
Git tag: v1.0.2

Update all version locations in the same pull request.

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

pyhyperiso-1.0.2.tar.gz (1.4 MB view details)

Uploaded Source

Built Distributions

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

pyhyperiso-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyhyperiso-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyhyperiso-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

File details

Details for the file pyhyperiso-1.0.2.tar.gz.

File metadata

  • Download URL: pyhyperiso-1.0.2.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyhyperiso-1.0.2.tar.gz
Algorithm Hash digest
SHA256 7cd86846877bf7970e0aa563bcf067df7a209f0550714894192886af7f8f1e7c
MD5 484f2a83ca0107cab77434ee75937d56
BLAKE2b-256 0c6204751cdfff9b22e6272b87ddc3b94d4d669354e0c7ac68befad7fe063e1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.2.tar.gz:

Publisher: release.yml on Hyperiso/Hyperiso

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

File details

Details for the file pyhyperiso-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 376981d4403e80b49900b7296b0659d8195d1bd4ca642ad8e7260dd52c190e36
MD5 c319fd1bce73ea2cfe1221bf449cafa0
BLAKE2b-256 e4256a2a88ccbf0ea31f4e310863ca95f548bf349821e6541b6e7d826bebf10f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on Hyperiso/Hyperiso

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

File details

Details for the file pyhyperiso-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5954c1aed1c469f06fc0b57192dc1601d3150b55847795940ba6e56c07c8a4d8
MD5 e0eea1d85cb5f11458ad57ed079593c8
BLAKE2b-256 f10d5bbeed7e0eac74a7b734f199fe41e7a16ddc506b91f7b603ed9e763a2946

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on Hyperiso/Hyperiso

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

File details

Details for the file pyhyperiso-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e3290693aa37ab6b676695371cebeca0ce5e177482e587194a9ae92d288708a8
MD5 2851f391b90f7e84e8e5b2f0ee2562fc
BLAKE2b-256 576af850110f134bb11865e4755743c643760985ed9c58f9925a569dd334d303

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on Hyperiso/Hyperiso

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

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