$npx skillfedfor your agent

outcome

Capture the outcome of Python function calls.

With conditionsPyPI Released Oct 202353.0M downloads / moMIT OR Apache-2.0Pure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — outcome-1.3.0.post0-py2.py3-none-any.whl
v1.3.0.post0 · released 2023-10-26 · Python >=3.7 · 1 runtime deps: attrs

Yes, if you need to treat function outcomes (success or failure) as first-class values in your code. It is lightweight, stable, well-licensed, and has no dependencies beyond attrs. The aging maintenance status is not a blocker—the package is mature and unlikely to need frequent updates—but verify that a result-type abstraction fits your design before adopting it.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Low install friction with a single lightweight dependency (attrs).
  • Maintenance status is aging—last release was over 1000 days ago, though the repository remains active with a recent commit in February 2026.

License · maintenance · safety

MIT OR Apache-2.0 (permissive) — Dual-licensed under MIT or Apache License 2.0, both permissive; you may choose whichever suits your project.

last release 2023-10-26 (1023 days) · last repo commit 2026-02-02 · 36 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 52,958,339 downloads/mo, #556 on PyPI

Verify before relying

from outcome import capture

def my_func():
    return "success"

result = capture(my_func)
print(result.unwrap())
  • Whether the aging maintenance status (1023 days since last release) indicates stable-and-done maturity or signals reduced responsiveness to issues.
  • Specific use-case patterns where outcome's result-type abstraction provides measurable benefit over standard exception handling.
Same gist for agents: .md · .json

What it is and what it does

Outcome is a small library extracted from the Trio async framework that wraps the result of a function call—either its return value or any exception it raised—into a single Result object. Instead of letting exceptions propagate or requiring try-except blocks, you capture both success and failure as data that can be inspected, transformed, and handled uniformly. It is useful when you need to defer exception handling, combine results from multiple calls, or pass success and failure states through a pipeline.

The package is production-stable, supports Python 3.7 through 3.10 on CPython and PyPy, and depends only on attrs. It has no known security vulnerabilities and carries permissive licensing (MIT or Apache 2.0).

Use it for

  • Collecting results from multiple function calls and processing successes and failures separately without early exception propagation.
  • Building retry logic or error-recovery pipelines that need to inspect both outcomes before deciding what to do next.
  • Writing test fixtures or mock handlers that need to return either a computed value or a captured exception for later inspection.
  • Async frameworks and concurrent code where you want to capture task outcomes without blocking on exception handling.

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

With conditions

Yes, if you need to treat function outcomes (success or failure) as first-class values in your code.

It is lightweight, stable, well-licensed, and has no dependencies beyond attrs. The aging maintenance status is not a blocker—the package is mature and unlikely to need frequent updates—but verify that a result-type abstraction fits your design before adopting it.

Install

outcome on PyPI

Before you install

Low install friction with a single lightweight dependency (attrs). Maintenance status is aging—last release was over 1000 days ago, though the repository remains active with a recent commit in February 2026.

License in practice

Dual-licensed under MIT or Apache License 2.0, both permissive; you may choose whichever suits your project.

Quickstart

from outcome import capture

def my_func():
    return "success"

result = capture(my_func)
print(result.unwrap())

Verify before relying

  • Whether the aging maintenance status (1023 days since last release) indicates stable-and-done maturity or signals reduced responsiveness to issues.
  • Specific use-case patterns where outcome's result-type abstraction provides measurable benefit over standard exception handling.

Package facts

LicenseMIT OR Apache-2.0 permissive
Python supportSupports the current Python release >=3.7
Install frictionLow. Pure-Python wheel
Runtime dependencies
1 package
attrs
MaintenanceAging 1,023 days since the last release
Last repo commit
First released
Downloads52,958,339 / month, #556 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 5 - Production/StableFramework :: TrioIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseLicense :: OSI Approved :: MIT LicenseOperating System :: MacOS :: MacOS XOperating System :: Microsoft :: WindowsOperating System :: POSIX :: LinuxProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTyping :: Typed

Evidence: outcome-1.3.0.post0-py2.py3-none-any.whl

Tags

Capabilities
capture function result or exceptionresult type pythonoutcome handlingexception as valuefunction call result wrapper
Topics
result-typeerror-handlingtrio-ecosystem
PyPI keywords
result

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “capture function result or exception”

  • outcomeCaptures the outcome of Python function calls—either a return value…
  • func-timeoutRuns any Python function with a specified timeout limit, raising an…
  • retryingRetrying is a decorator-based library that adds automatic retry logic…

Give your agent the search over MCP, or paste the wish link into any chat.

Similar packages

pytest-reraise With conditions
PyPI · Libraries · released Sep 2022

Captures exceptions raised in threads during pytest tests and re-raises them in the main thread so that multi-threaded test failures are properly detected.

However, the abandoned maintenance status (last commit 2023-02-06) is a concern—verify compatibility with your pytest and Python versions before relying on it for new…

MITpure Pythonabandoned
180.4Kdownloads / mo
trio-typing With conditions
PyPI · Software Development · released Dec 2023

Provides PEP 561 type stubs and typing utilities for Trio async framework, enabling static type checking with mypy for Trio, outcome, and async_generator packages.

However, maintenance is dormant (last release 2023-12-01), so verify that the type stubs remain accurate for your Trio version before relying on it for new projects.

Apache-2.0pure Pythondormant
1.4Mdownloads / mo
trio Worth it
PyPI · Networking · released Aug 2026

Trio is an async I/O library that lets you write concurrent Python programs using async/await syntax, handling multiple network connections, file operations, and tasks simultaneously with a focus on correctness and ease of use.

Install it if you need to write concurrent I/O code and prefer structured concurrency principles and a simpler API over asyncio.

MIT OR Apache-2.0pure Python · 3.10+
56.1Mdownloads / mo
flake8-async With conditions
PyPI · Quality Assurance · released Jul 2026

A flake8 plugin that detects async-related issues in code using Trio, AnyIO, or asyncio, flagging bugs, dead code, performance problems, and idiom violations.

MITpure Python · 3.9+
351.9Kdownloads / mo
pytest-trio With conditions
PyPI · Testing · released Nov 2022

A pytest plugin that enables testing of async code written with Trio, allowing you to write and run async test functions directly within pytest.

Apache-2.0pure Python · 3.7+aging
394.5Kdownloads / mo
pytest-harvest With conditions
PyPI · Python Modules · released Mar 2024

pytest-harvest captures and stores data generated during test execution, making it available for retrieval after the test session completes—useful for benchmarking, result aggregation, and post-test analysis.

BSD-3-Clausepure Pythonaging
730.5Kdownloads / mo

See also sniffio · subprocess-tee · trio-websocket · colcon-test-result