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.0
Python package version: 1.0.0
Git tag: v1.0.0

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

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

pyhyperiso-1.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.6 MB view details)

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

pyhyperiso-1.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (20.6 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.0.tar.gz.

File metadata

  • Download URL: pyhyperiso-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 11b1fe9e4a4ab2ae1dc7dac6ea14d27d00b4fd2bed9c7ad0539c502f5b8cb720
MD5 4700da1b0809f0664600de4eb872ccaa
BLAKE2b-256 47c8d9d49168ca71606aab6fb441f5cbdf5b646f0ef09f2f3d180ddd8bd5735d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61910d3702c2248425bebaed05cda9cef44e02a1e3c4b1cb1132591bdfdc1b65
MD5 10e70713020dcea17b76ce831597a752
BLAKE2b-256 1fa1350c0344a1620492e968f7d416f68c689bb6a2a82b3f27b8f88d83ecb296

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b2d0d7c60196eee4c82e2196856910ebb137989446bf47059af9790ed60c777
MD5 e2c8021f3045deba6ddb36ad3d41ac2b
BLAKE2b-256 e71b8baa594d4b63fbba4246c546bcb00088165c76bdc3e05483439ea9780762

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9876755cb7d89a6ddf11f7c3c867587a0901b891e10278a03ee24cc28293d162
MD5 be57fc608fc29c3a76d341693a74ded8
BLAKE2b-256 7b447d3d44336226dc63737eb7410067a6ef1d711918886f8d9fbabfcc320df0

See more details on using hashes here.

Provenance

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