A gentle, story-driven supervision and recovery framework for Python — because every error deserves a story.
Project description
🌿 Beautiful Oops
Because every error deserves a graceful story.
Beautiful Oops is a lightweight adventure-style supervision and recovery framework for Python.
It turns error handling into storytelling — each Moment can fail, retry, or succeed,
and all outcomes are recorded in a StoryBook.
✨ Features
- 🪄 @oops_moment decorator for automatic retry / timeout / rollback
- 🧙♀️ Elf & Hero – pluggable decision-makers for handling Oops
- 📖 StoryBook Plugin – records every success and failure
- 🔁 Backoff Policy – exponential with jitter
- ⚙️ Plugin Architecture – easy to extend (logging, monitoring, circuit-breaker)
- 🧩 Works in both sync and async modes
🚀 Quickstart
from beautiful_oops import oops_moment, Adventure, StorybookPlugin
@oops_moment(chapter="Chapter I", stage="decode_scroll")
def decode_scroll():
return "ancient wisdom"
adv = Adventure(name="demo", plugins=[StorybookPlugin()])
with Adventure.auto(adv):
print("Scroll:", decode_scroll())
🧠 Philosophy
⚡ Resilience is not about avoiding errors, but about facing them gracefully.
Adventure builds the story, Elf gives advice, Hero decides, StoryBook remembers.
🌌 Roadmap
🧩 Short-term (v0.2.x)
- Fallback Plugin
- Circuit Breaker Plugin
- Sink System (Console / File / Prometheus / Loki)
🤖 Mid-term (v0.3–0.5)
- Agent-based Error Decision Engine
– let an intelligent agent decide whether to retry, ignore, or fallback
🕊️ Long-term (v1.0)
- Visual Dashboard (Adventure Timeline)
- Community Plugin Ecosystem
🧪 Testing & CI
pip install -e .[dev]
pytest -q
ruff check .
mypy beautiful_oops
or
uv run --extra dev pytest
MIT License © 2025 Sean Liu
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file beautiful_oops-0.1.9.tar.gz.
File metadata
- Download URL: beautiful_oops-0.1.9.tar.gz
- Upload date:
- Size: 21.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1576a5974f3c8199f1d488e675c19692eee5114de05fa0068b4ad58b1492a736
|
|
| MD5 |
ee2991cf78b5354b1a2e05bbaff52e58
|
|
| BLAKE2b-256 |
3e9eeeea414ad41fafc7cafb96e795d33d23ade9daf645222282c7f56e23e8cc
|
File details
Details for the file beautiful_oops-0.1.9-py3-none-any.whl.
File metadata
- Download URL: beautiful_oops-0.1.9-py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb58339f41df7b976efd7662e15518bd7d1d603548b258143b2cfbf601a7d28
|
|
| MD5 |
16f2781d4680e91fcc9b85e04b905716
|
|
| BLAKE2b-256 |
634a9663ec4168c2283b0311ab2a5ed5a05022c8053fba862ea4518127cfd3ba
|