promise
Promises/A+ implementation for Python
What it is and what it does
Promise is a Python implementation of the Promises/A+ specification, a standard for handling asynchronous operations through chainable callbacks. It lets you wrap async work in a Promise object, resolve or reject it with a value, and attach handlers via .then() and .catch() that execute when the promise settles. The library supports composing multiple promises (Promise.all, Promise.for_dict) and wrapping existing futures.
The package has no runtime dependencies and works with Python 2.7 through 3.8 (and PyPy). It is designed to be a readable, performant alternative to raw callbacks for async patterns in Python, though modern Python now has native async/await syntax and asyncio, which may be preferable for new code.
Use it for:
- Wrapping callback-based async operations (e.g., I/O) in a chainable Promise interface for cleaner control flow
- Composing multiple async tasks with Promise.all() to wait for all to complete before proceeding
- Converting Python Futures into Promises for interoperability with promise-based libraries or frameworks
- Building promise-based libraries or frameworks that need a standard async abstraction layer
- Handling rejection and error propagation through .catch() in async workflows without explicit try/except nesting
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements Promises/A+ specification for Python, enabling asynchronous value resolution and rejection with chainable then/catch handlers.
Yes-with-conditions. The package is stable (MIT, no known vulnerabilities, 367 GitHub stars) but dormant since 2019. Install only if you are maintaining legacy code that already uses promise or integrating with a framework that requires it. For new projects, use Python's native async/await and asyncio instead.
Install
promise on PyPI
pip
pip install promiseuv
uv add promisepoetry
poetry add promiseInstalling promise
Before you install
High install friction due to source-only distribution (promise-2.3.tar.gz). Maintenance is dormant—last release was 2019-12-18 and last commit 2024-07-09, with no active development signals.
License in practice
MIT license (permissive) places no restrictions on use, modification, or distribution. Safe for commercial and open-source projects.
Quickstart
from promise import Promise
promise = Promise(lambda resolve, reject: resolve('RESOLVED!'))
result = promise.then(lambda value: print(value))
Verify before relying
- Whether promise.get() method exists and how it blocks/retrieves resolved values (shown in docs but not formally specified)
- Python 3.9+ compatibility—classifiers list only up to 3.8; current support unclear
- Whether this package is maintained or if a modern alternative is recommended for new projects
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | dormant — 2,431 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,280,496/month — #2,676 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: promise-2.3.tar.gz
Keywords: concurrent, future, deferred, promise
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
vineVine provides a Python implementation of…
permissive · top 1,000 on PyPI
graphql-core-promiseAdds promise-based resolver and dataloader…
permissive · top 15,000 on PyPI
wrapsProvides type-safe wrapper types for…
permissive · top 15,000 on PyPI
pytest-asyncio-concurrentA pytest plugin that executes async test…
permissive · top 15,000 on PyPI
uncalled-forProvides async dependency injection for Python…
permissive · top 1,000 on PyPI
pytest-twistedA pytest plugin that enables testing of…
permissive · top 15,000 on PyPI
duetDuet is a lightweight async library that wraps…
permissive · top 15,000 on PyPI
threadedProvides decorators to wrap functions for…
permissive · top 15,000 on PyPI
synchronicityWraps async functions, generators, and classes…
permissive · top 1,000 on PyPI
pytest-reraiseCaptures exceptions raised in threads during…
permissive · top 15,000 on PyPI