simplesat
Prototype for SAT-based dependency handling. This is a work in progress, do not expect any API not to change at this point.
What it is and what it does
Simplesat is a pure-Python implementation of a SAT solver designed to handle package dependency resolution. It reads package metadata and constraints, then uses Boolean satisfiability techniques to determine which versions of which packages can be installed together without conflicts. The solver supports equality and version-range constraints and can detect cyclic dependencies and unsatisfiable scenarios.
The package is explicitly marked as a prototype and work-in-progress, meaning its public API may change without warning. It depends on attrs for data structures, okonomiyaki for version parsing, and six for Python 2/3 compatibility. While it has been maintained across multiple Python versions (3.8–3.12) and receives occasional bug fixes, the long gap since the last release suggests the project is in a stable but not actively developed state.
Use it for:
- Build a custom package manager or dependency resolver that needs to solve complex version constraints without relying on pip or conda.
- Analyze package dependency graphs to detect conflicts, cyclic dependencies, or unsatisfiable requirements before attempting installation.
- Compare dependency resolution strategies by running the same scenario through simplesat and other solvers (e.g., PHP Composer, via the included scripts).
- Prototype or research SAT-based approaches to package management, using simplesat's YAML scenario format and CLI tools.
- Integrate SAT-based constraint solving into a build or deployment system where fine-grained control over version selection is required.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Solves package dependency resolution using Boolean satisfiability (SAT) solving, determining which package versions satisfy a set of constraints.
Yes, if you need a standalone SAT-based dependency resolver and can accept an unstable API and aging codebase. The package has low install friction, no known vulnerabilities, and permissive licensing. However, the explicit prototype status and 498-day gap since the last release suggest it is not actively maintained; use it for research, prototyping, or custom tooling rather than as a drop-in replacement for production package managers. For typical Python packaging, pip or conda are more appropriate.
Install
simplesat on PyPI
pip
pip install simplesatuv
uv add simplesatpoetry
poetry add simplesatInstalling simplesat
Before you install
Low friction installation with three stable runtime dependencies (attrs, okonomiyaki, six). Maintenance status is aging—last release 498 days ago—but the repository remains active with a recent commit on 2025-04-03 and support for Python 3.8 through 3.12.
License in practice
BSD-3-Clause is permissive; you may use, modify, and distribute this package freely provided you retain the license notice and disclaimer.
Quickstart
pip install simplesat
from simplesat.resolver import Resolver
from simplesat.pool import Pool
pool = Pool()
resolver = Resolver(pool, policy=None)
# Add packages and constraints, then call resolver.resolve(request)
Requires Python 3.8 or later. The package is explicitly a work-in-progress prototype with an unstable API, so production use should be approached cautiously.
Verify before relying
- Whether the API stability warnings in the description apply to the current 0.9.2 release or remain a general caveat.
- Real-world performance characteristics when solving large dependency graphs or highly constrained scenarios.
- Whether the aging maintenance status (498 days since last release) signals that the project is stable or abandoned.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — attrs, okonomiyaki, six |
| Maintenance | aging — 498 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 279,237/month — #8,123 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: simplesat-0.9.2-py3-none-any.whl
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
pycosatProvides efficient Python bindings to PicoSAT,…
permissive · top 15,000 on PyPI
python-satPySAT wraps modern Boolean satisfiability…
permissive · top 15,000 on PyPI
PyBoolectorPython wrapper around Boolector, a…
permissive · top 15,000 on PyPI
nab-resolverA generic PubGrub-style dependency resolver…
permissive · top 15,000 on PyPI
oldest-supported-numpyProvides the oldest version of NumPy compatible…
permissive · top 5,000 on PyPI
cvc5cvc5 is a satisfiability modulo theories (SMT)…
unclear · top 15,000 on PyPI
z3-solverZ3 is a theorem prover and SMT (satisfiability…
permissive · top 5,000 on PyPI
claripyClaripy is an abstraction layer for constraint…
permissive · top 5,000 on PyPI
resolvelibResolveLib provides a generic dependency…
permissive · top 1,000 on PyPI
bindepBindep checks for missing system binary…
permissive · top 5,000 on PyPI