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.1.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.1-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.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: pyhyperiso-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 e7ba85998876a5587ea7c9623ec83add85b6e1ab7a61cd8c018eb16b2432480d
MD5 fca9542f4da31d7b688023d8aaee69d8
BLAKE2b-256 efaace449374c6b379e612e6a21518a26b7454baf6eaac03c3fd0bfc9f5bb7ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ed087151a186e928170e991e1c3509a30b696d57014cdbcc7e0e7da44fd3ff8
MD5 725b4a5b774df5f95cb724128e76c955
BLAKE2b-256 657ce7296600bc2107ea932a8b9f392ae94fd2446abf055c4e1d931e41b6457e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7ecda355f9144be97cdc84b16a4e1fa51abb9d08d8bd5d5049478db6b586e3a0
MD5 0d48dc2906b473684ff4ec9e90bfc50c
BLAKE2b-256 6e6331622af8c1536405bc84cf1ec2df14e65a7957a78d1141304ad5dba8022d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyhyperiso-1.0.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fbb4dd9188a589d6e1054972426fe2d8259d062349f43989c351b4e943a1c7da
MD5 eaf0c2b6342816331bb42900f2fa2df1
BLAKE2b-256 a3e0b5fb7016bba22274d21f66832ce179d4dc658b79cb9fc5b70c301d3b9445

See more details on using hashes here.

Provenance

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