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.3
Python package version: 1.0.3
Git tag: v1.0.3

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.3.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.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.8 MB view details)

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

pyhyperiso-1.0.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.8 MB view details)

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

pyhyperiso-1.0.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.8 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.3.tar.gz.

File metadata

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

File hashes

Hashes for pyhyperiso-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e95c05d54a218c3696ea0f9c70fa1991656a5f24d5354a0aa6dd8b2d7e0a7f87
MD5 bb80df00ed2087494d365e4319633a2a
BLAKE2b-256 2aa9aaff7e0b090e1ba8438ff49ab205d14c55116b07e70e86fee1cdcf9e181d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.3.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.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 796ee42cdb53edd8170c67aa335f64ede260caebf5ad317ecfdb322c48781dff
MD5 64a312d11b5979fcec5f72c4b4495518
BLAKE2b-256 345ca674d7133dc4f404093f8289b724321383ebc7b354c99b3fb35e76fc88b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.3-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.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d7cb41b42b0d3fdd632a39af37aa751db6bc5abe198729c7ba7c3edfb2eeb36
MD5 6a2bf46d9f39176bb329912301c15330
BLAKE2b-256 6ce50f2cde612a54dd0f0c973818973285b39d1898536f12632d4c4b66678e47

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.3-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.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyhyperiso-1.0.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5d120a57622fc6b05b799b165a5e3ca88d7da913911d6e47ec81a26f81ab0a3
MD5 e49501798d0d2b0fd5c25a9f4a53de77
BLAKE2b-256 735180c00b9866acc57ace7743e7f70596effb4330dd9e1d131790b4e4c44857

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyhyperiso-1.0.3-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