Skip to main content

muoblpbindings

Performance-critical MOLP solver algorithms implemented in C++20, exposed to Python via pybind11. Built with scikit-build-core + CMake. 4th subproject of the multiobjective-lp monorepo; consumed by solvers as a path dependency.

Build requirements

  • C++20 toolchain (gcc/clang/MSVC).
  • Python >=3.13.
  • CMake + Ninja: auto-provisioned by scikit-build-core during pip/poetry install (build isolation) — no manual install needed.
  • pybind11 >=3, scikit-build-core >=0.12 (build-system deps, auto-fetched).

Build happens transparently on poetry install in solvers (path dep). No auto-rebuild on C++ edits — re-run install to rebuild.

macOS broken-CommandLineTools workaround

If bare clang++ can't find c++/v1 headers (broken CommandLineTools install):

export SDKROOT=$(xcrun --show-sdk-path)
export CXXFLAGS="-cxx-isystem $SDKROOT/usr/include/c++/v1"

Proper fix: reinstall CLT (xcode-select --install).

Core-model-shape contract

common.cpp reads the muoblp LpProblem (core) directly — bindings depend on this shape implicitly (no compile-time link to core):

  • prob.objectives: list; each element has .name and is iterable as a dict {LpVariable: utility}. Utilities must be int — Utility is long long; pybind rejects float (non-dedup objective weights must be 1, not 1.0).
  • prob.objectives_weights: dict[name -> double].
  • prob.variables(), prob.constraints (first constraint = budget; budget = -constraint.constant, per-var cost from constraint dict).

Exposed functions

  • equal_shares_utils(...), equal_shares_add1(...) — Method of Equal Shares.
  • expanding_approvals(prob), single_transferable_vote(prob), solid_coalition_refinement(prob).

See src/muoblpbindings/__init__.pyi for signatures.

Adding new algorithm

  1. Assuming algorithm is named x
  2. Create x.cpp and x.hpp files with implementation
  3. Bind method in binder.cpp
  4. Define import and method signature in __init__.py and __init__.pyi
  5. Add and link x.cpp as library in CMakeLists.txt
  6. Bump project version in pyproject.toml

Publishing

Independent semver from the rest of the monorepo. Tag bindings@x.y.z (must match pyproject.toml version) triggers root .github/workflows/wheels.yml: sdist + cibuildwheel (ubuntu/macos-15/windows, cp313+cp314) → PyPI via OIDC. No rc/test.pypi route. workflow_dispatch runs a build-only dry run (upload skipped). Every PR additionally builds a linux wheel + import smoke test; solvers CI tests run against that artifact.

Metadata

Release files for muoblpbindings 0.0.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muoblpbindings 0.0.18
File Size Uploaded Provenance Actions
muoblpbindings-0.0.18.tar.gz 12.6 kB Without provenance Details for muoblpbindings-0.0.18.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for muoblpbindings 0.0.18
File Actions
muoblpbindings-0.0.18-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details for muoblpbindings-0.0.18-cp314-cp314-win_arm64.whl
muoblpbindings-0.0.18-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for muoblpbindings-0.0.18-cp314-cp314-win_amd64.whl
muoblpbindings-0.0.18-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details for muoblpbindings-0.0.18-cp314-cp314-win32.whl
muoblpbindings-0.0.18-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for muoblpbindings-0.0.18-cp314-cp314-musllinux_1_2_x86_64.whl
muoblpbindings-0.0.18-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ x86-64, Linux glibc 2.28+ x86-64 Details for muoblpbindings-0.0.18-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
muoblpbindings-0.0.18-cp314-cp314-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 macOS 14.0+ ARM64 Details for muoblpbindings-0.0.18-cp314-cp314-macosx_14_0_arm64.whl
muoblpbindings-0.0.18-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details for muoblpbindings-0.0.18-cp313-cp313-win_arm64.whl
muoblpbindings-0.0.18-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for muoblpbindings-0.0.18-cp313-cp313-win_amd64.whl
muoblpbindings-0.0.18-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details for muoblpbindings-0.0.18-cp313-cp313-win32.whl
muoblpbindings-0.0.18-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for muoblpbindings-0.0.18-cp313-cp313-musllinux_1_2_x86_64.whl
muoblpbindings-0.0.18-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.26+ x86-64 Details for muoblpbindings-0.0.18-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
muoblpbindings-0.0.18-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details for muoblpbindings-0.0.18-cp313-cp313-macosx_14_0_arm64.whl

Total release size: 4.5 MB

Release files / muoblpbindings-0.0.18.tar.gz

Download URL muoblpbindings-0.0.18.tar.gz
Size 12.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ac49e19de3d04e742131ea1f1e1b1cb0d4f0639d32bffd0367c6d62ea74e09ca
BLAKE2b-256 checksum
How to use checksums
a1ad2cf16d311eb4be468bf058140578902661b1bf0e6d8639edae6a192f4707
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-win_arm64.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-win_arm64.whl
Size 201.7 kB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
56eca7bafa2820220d18271356510d5583789b556c2011cb0049b0a52989552e
BLAKE2b-256 checksum
How to use checksums
b89d958dc3c0ba4345ba9b9ef31432e92223c4df156f61926c9b36f900243309
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-win_amd64.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-win_amd64.whl
Size 204.7 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
dd0496118ae58e96fea255104a6ef2a41a0bf7b8f838eee8092d4230a99b54d8
BLAKE2b-256 checksum
How to use checksums
ab0cb4c1356458c91538f910111adb717eb23d93075d4bf2eea98b61b9aeeddd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-win32.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-win32.whl
Size 190.8 kB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
287c9d0cad7e4c03b4fa7145b71983689f79ad53113b654555d3287340867dcd
BLAKE2b-256 checksum
How to use checksums
7fe232dd23c9d6a5e4128371ba2ac89c0b4d1da4e4c2c213ef91a834e7bf1899
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-musllinux_1_2_x86_64.whl
Size 1.2 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2f7980e86a7983759b5d37059da1b1691be2f53069a8306f85a84d667da338a8
BLAKE2b-256 checksum
How to use checksums
269f231dde8d05990a4301feef3e270809221d12ee2361a394cb2ca079124b55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 302.8 kB
Tags CPython 3.14 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
82f2d49e92cc7879f5dd9c850d3b43abd5461de2e7425625176eaf69c97b39cb
BLAKE2b-256 checksum
How to use checksums
5d2deb1e8068ac808fbb4eabe58573428530e4866d0d7811572b33a2a7c132f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp314-cp314-macosx_14_0_arm64.whl

Download URL muoblpbindings-0.0.18-cp314-cp314-macosx_14_0_arm64.whl
Size 134.4 kB
Tags CPython 3.14 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
b4878f235bde8e5d39f9abca4b916cfaa7b2f7362254c5aede12d80469cd29ac
BLAKE2b-256 checksum
How to use checksums
24e5c1e36fc7c63bb7a1da51e63c9c0f4fed228ed4d6af17a0943bf3e618b945
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-win_arm64.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-win_arm64.whl
Size 196.4 kB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
60d31cd71cd8c14f6854b2dea97a77f880cf08a56bf117e2c163a6dbbbd471d1
BLAKE2b-256 checksum
How to use checksums
d8dbca8df55b3ff5ca221fc0446332a1546b03072dfb3f4c48866a22024df04b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-win_amd64.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-win_amd64.whl
Size 200.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4eaeb629f8530dd2491c0520b318ffb0f98fcc28686c7349ed9357b65a47a38c
BLAKE2b-256 checksum
How to use checksums
8e9553c057b9bbbee1b255ee8c9dca322ec007c1b75ebd445207b4b47c64753a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-win32.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-win32.whl
Size 187.1 kB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
5240c7d5ad938eb19101e78686d720aaac054fb3a83192d44d75706f28c836ce
BLAKE2b-256 checksum
How to use checksums
4f6cc537263c6678b5ada709d194de857d77c9511df83752ab4898dee1f11372
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-musllinux_1_2_x86_64.whl
Size 1.2 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3cd10494b24d11d74a62a96a22ee1c05bb51a08f8177a66c577977d932171c88
BLAKE2b-256 checksum
How to use checksums
7284e27711d9b9dcf2dc28083c2f453faacbd0fa9968b53a456480ac782031cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Size 302.7 kB
Tags CPython 3.13 Linux glibc 2.26+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0a9bb4c68782008f170697d5b51b63f02d621aaf26525a0446e5fb44880e37ec
BLAKE2b-256 checksum
How to use checksums
4b940416eda73c7c62596a1c360466c385014ff6cbc2c96ab842fd6d139213b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / muoblpbindings-0.0.18-cp313-cp313-macosx_14_0_arm64.whl

Download URL muoblpbindings-0.0.18-cp313-cp313-macosx_14_0_arm64.whl
Size 134.3 kB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
38896546e88148b303537a65fc80c8deaf538035f5932dbaddfc7311c0ca0411
BLAKE2b-256 checksum
How to use checksums
10014f1f7e19555de0bd7e5c0ffe533778e166b576a46788041cfddd44ed8693
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Security for muoblpbindings 0.0.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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