kiwisolver
A fast implementation of the Cassowary constraint solver
Install
kiwisolver on PyPI
pip
pip install kiwisolveruv
uv add kiwisolverpoetry
poetry add kiwisolverPackage facts
| License | ========================= The Kiwi licensing terms ========================= Kiwi is licensed under the terms of the Modified BSD License (also known as New or Revised BSD), as follows: Copyright (c)… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 157 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: kiwisolver-1.5.0-cp310-cp310-macosx_10_9_universal2.whl; kiwisolver-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl; kiwisolver-1.5.0-cp310-cp310-macosx_11_0_arm64.whl; kiwisolver-1.5.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl; kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl; kiwisolver-1.5.0-cp310-cp310-manylinux_2_24_s390x.manylinux_2_28_s390x.whl; kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl; kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl; kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl; kiwisolver-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl; kiwisolver-1.5.0-cp310-cp310-win_amd64.whl; kiwisolver-1.5.0-cp310-cp310-win_arm64.whl; kiwisolver-1.5.0-cp311-cp311-macosx_10_9_universal2.whl; kiwisolver-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl; kiwisolver-1.5.0-cp311-cp311-macosx_11_0_arm64.whl; kiwisolver-1.5.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl; kiwisolver-1.5.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl
About kiwisolver
from the package's own PyPI description — quoted content, verbatim
Welcome to Kiwi
Continuous Integration (image) Documentation building (image) codecov (image) Documentation Status (image)
Kiwi is an efficient C++ implementation of the Cassowary constraint solving algorithm. Kiwi is an implementation of the algorithm based on the seminal Cassowary paper. It is not a refactoring of the original C++ solver. Kiwi has been designed from the ground up to be lightweight and fast. Kiwi ranges from 10x to 500x faster than the original Cassowary solver with typical use cases gaining a 40x improvement. Memory savings are consistently > 5x.
In addition to the C++ solver, Kiwi ships with hand-rolled Python bindings.
How to use
C++...
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
Kiwisolver is a fast C++ implementation of the Cassowary constraint solving algorithm, accessible via Python bindings, for solving systems of linear constraints efficiently.
Medium install friction due to compiled C++ extensions; however, prebuilt wheels cover Python 3.10–3.14 across macOS, Linux (x86_64, ARM, ppc64le, s390x), and Windows. Actively maintained with recent releases and no known vulnerabilities.
Licensed under the Modified BSD License (permissive), allowing commercial and proprietary use with minimal restrictions—only requiring copyright notice retention and disclaimer inclusion.
Usage
pip install kiwisolver==1.5.0
import kiwisolver
solver = kiwisolver.Solver()
x = kiwisolver.Variable('x')
y = kiwisolver.Variable('y')
solver.addConstraint(x + y == 10)
solver.addConstraint(x - y == 4)
solver.updateVariables()
print(f'x: {x.value()}, y: {y.value()}')
Verdict: Kiwisolver is a mature, well-maintained constraint solver with broad platform support and no security issues. Its permissive Modified BSD License and active development (last commit 2026-08-04) make it suitable for production use. Medium install friction is offset by comprehensive prebuilt wheels.
Needs verification
- Whether Python 3.14 wheels are fully tested or represent forward compatibility only
- Performance benchmarks against competing constraint solvers in real-world scenarios
- Memory overhead for large constraint systems relative to the documented 5x improvement claim
- Exact API surface and method signatures for the Python bindings
Similar packages
unclear · top 1,000 on PyPI
pybind11permissive · top 1,000 on PyPI
nvidia-cusolver-cu12unclear · top 1,000 on PyPI
resolvelibpermissive · top 1,000 on PyPI
brotlipermissive · top 1,000 on PyPI
scipypermissive · top 100 on PyPI
annotated-typespermissive · top 100 on PyPI
rfc3987-syntaxpermissive · top 1,000 on PyPI
bytecodepermissive · top 1,000 on PyPI
tokenizerspermissive · top 1,000 on PyPI