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/poetryinstall (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.nameand is iterable as a dict{LpVariable: utility}. Utilities must be int —Utilityislong long; pybind rejects float (non-dedup objective weights must be1, not1.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
- Assuming algorithm is named
x - Create
x.cppandx.hppfiles with implementation - Bind method in
binder.cpp - Define import and method signature in
__init__.pyand__init__.pyi - Add and link x.cpp as library in
CMakeLists.txt - 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)
| 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)
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.