{"id":358,"library":"kiwisolver","title":"Kiwisolver","description":"Kiwisolver is a fast implementation of the Cassowary constraint solver, designed to be lightweight and efficient. The current version is 1.5.0, released on March 9, 2026. The library is actively maintained and follows a regular release cadence, with updates approximately every few months.","status":"active","version":"1.5.0","language":"python","source_language":"en","source_url":"https://github.com/nucleic/kiwi","tags":["constraint solver","Python bindings","C++","optimization"],"install":[{"cmd":"pip install kiwisolver","lang":"bash","label":"Install Kiwisolver"}],"dependencies":[{"reason":"Required for Python bindings to the C++ codebase","package":"cppy","optional":false}],"imports":[{"note":"Ensure correct import path to access the Solver class.","symbol":"Solver","correct":"from kiwisolver import Solver"}],"quickstart":{"code":"import os\nfrom kiwisolver import Solver\n\nsolver = Solver()\n# Define variables and constraints here\nsolver.update()\n# Solve the system\nsolution = solver.solve()\nprint(solution)","lang":"python","description":"A basic example demonstrating how to set up and solve a constraint system using Kiwisolver."},"warnings":[{"fix":"Upgrade your Python installation to version 3.10 or later.","message":"Kiwisolver requires Python 3.10 or higher.","severity":"breaking","affected_versions":">=1.5.0"},{"fix":"Install the 'cppy' package using pip.","message":"Ensure that the 'cppy' package is installed for Python bindings.","severity":"gotcha","affected_versions":">=1.5.0"},{"fix":"Consult the `kiwisolver` documentation for available methods and correct API usage. Common methods for solving or updating variables include `solve()` or `updateVariables()`.","message":"The `kiwisolver.Solver` object does not have an `update` method. This often indicates an incorrect API usage or an expectation of a method that is not part of the `kiwisolver` library's standard interface.","severity":"breaking","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-12T13:16:18.028Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Download and install the \"Build Tools for Visual Studio\" from Microsoft's website, ensuring the \"Desktop development with C++\" workload is selected during installation.","cause":"On Windows, kiwisolver requires the Microsoft Visual C++ Build Tools to compile its C++ extensions during installation.","error":"error: Microsoft Visual C++ 14.0 or greater is required. Get it with \"Microsoft C++ Build Tools\": https://visualstudio.microsoft.com/visual-cpp-build-tools/"},{"fix":"Install the Python development package for your specific Python version using your system's package manager (e.g., `sudo apt-get install python3-dev` on Debian/Ubuntu, or `sudo yum install python3-devel` on CentOS/Fedora).","cause":"On Unix-like systems, kiwisolver requires the Python development headers to compile its C++ extension, but these headers (specifically Python.h) are missing.","error":"fatal error: Python.h: No such file or directory"},{"fix":"Install the package using pip: `pip install kiwisolver`, and ensure you are running your script in the correct virtual environment if one was used during installation.","cause":"The kiwisolver package is either not installed in the current Python environment, or the environment in which it was installed is not the one being used.","error":"ModuleNotFoundError: No module named 'kiwisolver'"}],"ecosystem":"pypi","meta_description":null,"install_score":80,"install_tag":"verified","quickstart_score":0,"quickstart_tag":"stale","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"24.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"25M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"26.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"25M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"18.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"18M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.2,"disk_size":"18.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0,"disk_size":"17M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"24.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"24M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"stale","tag_description":"widespread failures or data too old to trust","results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}