Metadata-Version: 2.3
Name: tantrumpy
Version: 1.0.0
Summary: Your Python app's last words — dramatic, rude, comic, or philosophical exit messages.
Keywords: cli,humor,exit,signals,terminal,funny,developer-tools
Author: hemupadhyay26
Author-email: hemupadhyay26 <hemupadhyay26@users.noreply.github.com>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Project-URL: Homepage, https://github.com/hemupadhyay26/tantrumpy
Project-URL: Repository, https://github.com/hemupadhyay26/tantrumpy
Project-URL: Issues, https://github.com/hemupadhyay26/tantrumpy/issues
Description-Content-Type: text/markdown

# tantrumpy

> Your Python app's last words — dramatic, rude, comic, or philosophical exit messages.

```
😤 OH COME ON. Again?! I JUST got settled in.
```

Every Python app exits. Most do it silently. **tantrumpy** gives yours a voice.

---

## Install

```bash
pip install tantrumpy
```

## Usage

```python
import tantrumpy
tantrumpy.enable()
```

That's it. The next time your app exits — Ctrl+C, `sys.exit()`, a crash, or a kill signal — it throws a tantrum first.

---

## Moods

| Mood | Emoji | Vibe |
|------|-------|------|
| `frustrated` | 😤 | "OH COME ON. Again?!" |
| `rude` | 💀 | "Good riddance. Don't let the GC hit you." |
| `comic` | 🎭 | "And... scene. Nobody clap." |
| `cringe` | 😬 | "uwu ur pwogram is sweeping now 😭" |
| `philosophy` | 🧠 | "To exit is to finally understand the void." |
| `dramatic` | 🎬 | "IT'S OVER. Like tears in rain... gone." |

```python
tantrumpy.enable(mood="philosophy")   # specific mood
tantrumpy.enable(mood="random")       # surprise me (default)
```

---

## Options

### `verbose=True` — show what triggered the exit

```python
tantrumpy.enable(verbose=True)
# 😤 I JUST got settled in.  [exit via: SIGINT (Ctrl+C)]
```

### Custom moods

```python
tantrumpy.add_messages("corporate", [
    "This exit event has been logged for review.",
    "Please submit a ticket for this disruption.",
])
tantrumpy.enable(mood="corporate")
```

### Disable

```python
tantrumpy.disable()   # cleanly removes all hooks
```

---

## CI / Production

Set `TANTRUMPY_SILENT=1` to suppress all output without touching your code:

```bash
TANTRUMPY_SILENT=1 python my_app.py
```

---

## What it hooks into

| Trigger | How |
|---------|-----|
| Ctrl+C | `signal.SIGINT` |
| Kill signal | `signal.SIGTERM` |
| `sys.exit()` / end of script | `atexit` |
| Unhandled exceptions / crashes | `sys.excepthook` |

tantrumpy **never blocks the exit** — it sneaks a message in, then lets the process die normally.

---

## License

MIT — © [hemupadhyay26](https://github.com/hemupadhyay26)
