chore: rename project coven → hack-house ⛧

Rebrand the Rust client crate (coven/ → hh/, package+binary "hack-house"),
README, CLI strings, and branch (coven → hack-house). Gitea repo renamed
cmd-chat → hack-house to match. Crypto/server logic unchanged; selftest +
golden-vector test still green, binary is now `hack-house`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
leetcrypt
2026-05-30 13:29:14 -07:00
parent 82a04f3e12
commit bb1d662ee1
2730 changed files with 712933 additions and 46 deletions
@@ -0,0 +1,125 @@
Metadata-Version: 2.4
Name: tracerite
Version: 2.3.1
Summary: Human-readable HTML tracebacks for Python exceptions
Project-URL: Homepage, https://github.com/sanic-org/tracerite
Project-URL: Repository, https://github.com/sanic-org/tracerite
Project-URL: Issues, https://github.com/sanic-org/tracerite/issues
Author-email: Sanic Community <tronic@noreply.users.github.com>
License: Public Domain
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: Public Domain
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Debuggers
Requires-Python: >=3.9
Requires-Dist: html5tagger>=1.2.1
Provides-Extra: nb
Requires-Dist: ipykernel>=6.29.5; extra == 'nb'
Requires-Dist: ipywidgets>=8.1.8; extra == 'nb'
Requires-Dist: jupyter-client>=8.6.3; extra == 'nb'
Requires-Dist: jupyter>=1.1.1; extra == 'nb'
Requires-Dist: jupyterlab>=4.3.8; extra == 'nb'
Requires-Dist: notebook>=7.3.3; extra == 'nb'
Description-Content-Type: text/markdown
# TraceRite
**Beautiful, readable error messages for Python, with text and HTML formatting.**
[![PyPI version](https://badge.fury.io/py/tracerite.svg)](https://pypi.org/project/tracerite/)
![Tests](https://raw.githubusercontent.com/sanic-org/tracerite/main/docs/img/tests-badge.svg)
![Coverage](https://raw.githubusercontent.com/sanic-org/tracerite/main/docs/img/coverage-badge.svg)
![TraceRite features](https://raw.githubusercontent.com/sanic-org/tracerite/main/docs/screenshots/features-composite.webp)
## Installation
### Python scripts or REPL
```sh
pip install tracerite
```
```python
import tracerite; tracerite.load()
```
Any error message after that call will be prettified. Handles any syntax errors and uncaught exceptions, even captures `logging.exception` (optionally).
### IPython or Jupyter Notebook
```ipython
%pip install tracerite
%load_ext tracerite
```
This enables tracebacks in text or HTML format depending on where you are running. Add to `~/.ipython/profile_default/startup/tracerite.ipy` to make it load automatically for all your ipython and notebook sessions. Alternatively, put the two lines at the top of your notebook.
### FastAPI
Add the extension loader at the top of your app module:
```python
from tracerite import patch_fastapi; patch_fastapi()
```
This monkeypatches Starlette error handling and FastAPI routing to work with HTML tracebacks. Note: this runs regardless of whether you are in production mode or debug mode, so you might want to call that function only conditionally in the latter.
### Sanic
Comes with TraceRite built in whenever running in debug mode.
## Clarity in complex situations
![Exception chain comparison](https://raw.githubusercontent.com/sanic-org/tracerite/main/docs/screenshots/chain-comparison.webp)
*TraceRite shows even complex exception chains in chronological order, as opposed to the convoluted order of Python's own tracebacks where the entry point `func()` is near bottom and the flow jumps back and forth.*
## Features
- **Chronological order** - Single timeline with the program entry point is at top, and the finally uncaught exception bottom.
- **Minimalistic output** - Smart pruning to show only relevant pieces of information, excluding library internals where not relevant and avoiding any repetition.
- **ExceptionGroups** - Full tracebacks of the subexceptions from exceptions that occurred in parallel execution.
- **Variable inspection** - See the values of your variables in a pretty printed HTML format, Terminal or JSON-compatible machine-readable dict.
- **JSON output** - Intermediady dict format is JSON-compatible, useful for machine processing and used by our HTML and TTY modules.
- **HTML output** - Works in Jupyter, Colab, and web frameworks such as FastAPI and Sanic as the debug mode error handler.
- **TTY output** - Colorful, formatted tracebacks for terminal applications and Python REPL.
- **Custom Styling** - Theme with your colors by defining CSS variables or tty.COLORS.
- **Automatic dark mode** - Saves your eyes.
![ExceptionGroup comparison](https://raw.githubusercontent.com/sanic-org/tracerite/main/docs/screenshots/group-comparison.webp)
*Python 3.11+ introduced `ExceptionGroup` for parallel execution errors (e.g., `asyncio.TaskGroup`). TraceRite displays these clearly.*
## Usage
### `html_traceback(exc)`
Renders an exception as interactive HTML that can be included on a page. Pass an exception object, or call with no arguments inside an `except` block to use the current exception.
### `extract_chain(exc)`
Extracts exception information as a list of dictionaries—useful for logging, custom formatting, or machine processing.
### `prettyvalue(value)`
Formats any value with smart truncation, array shape display, and SI-scaled numerics. Useful beyond exceptions for debugging tools or custom logging.
### `extract_variables(locals, source)`
Extracts and formats variables mentioned in a line of source code.
### `load()` / `unload()`
Load or remove TraceRite as the default exception handler for terminal applications. Handles both `sys.excepthook` and `threading.excepthook`.
### `tty_traceback(exc)`
Renders an exception as colorful terminal output with ANSI escape codes. Pass an exception object, or call with no arguments inside an `except` block.
See the [API documentation](https://github.com/sanic-org/tracerite/blob/main/docs/API.md) for details, or [Development guide](https://github.com/sanic-org/tracerite/blob/main/docs/Development.md) for contributors.
## License
Public Domain or equivalent.
@@ -0,0 +1,29 @@
tracerite-2.3.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
tracerite-2.3.1.dist-info/METADATA,sha256=ATix6Kr13GGNkDPv2QuNA3r3OAeBy_dr0l6zcla236o,5705
tracerite-2.3.1.dist-info/RECORD,,
tracerite-2.3.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
tracerite-2.3.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
tracerite/__init__.py,sha256=A9XLqrEoeZzchfyYGVlhigSuihCNT4qjK4ekX2w3hXQ,503
tracerite/__pycache__/__init__.cpython-312.pyc,,
tracerite/__pycache__/chain_analysis.cpython-312.pyc,,
tracerite/__pycache__/fastapi.cpython-312.pyc,,
tracerite/__pycache__/html.cpython-312.pyc,,
tracerite/__pycache__/inspector.cpython-312.pyc,,
tracerite/__pycache__/logging.cpython-312.pyc,,
tracerite/__pycache__/notebook.cpython-312.pyc,,
tracerite/__pycache__/syntaxerror.cpython-312.pyc,,
tracerite/__pycache__/trace.cpython-312.pyc,,
tracerite/__pycache__/trace_cpy.cpython-312.pyc,,
tracerite/__pycache__/tty.cpython-312.pyc,,
tracerite/chain_analysis.py,sha256=udM58egvoXNlJJ1rTUDjnx3L7H4FHdBVg49QMyF9JRg,26476
tracerite/fastapi.py,sha256=5cA4Ey3TayORys1ImYNkNcEvlWHqw9iKWvHHq_o5t60,2131
tracerite/html.py,sha256=hWGJiDSADCfsX2hboB7Gp6j0p1-ZHRbXON1zA6UvZh8,18870
tracerite/inspector.py,sha256=SEaK5yhNRZvhrAaT7TDzErRWHBNaieNSqmy6Smsozaw,17615
tracerite/logging.py,sha256=Zc6tHJn31aVo0UcBGQSSBwkrQPW2CIMMBLtYZdMXYV8,86
tracerite/notebook.py,sha256=EbFXFsRykPknvaWZsvMwYqqrzQqhdyNd7Mqo6LIps_Y,3922
tracerite/script.js,sha256=sEt37ft1udt2TyIASUnX9dUDgd3JCV2jqu24ITje8bg,750
tracerite/style.css,sha256=UT-49NLqxzbh4wZgUHHDRoxppVU_MMT_O--fmOA6bzQ,13505
tracerite/syntaxerror.py,sha256=iDZcE95etiuKPcV1JE7JuW18jIrkmfIkxdw-1IA4QFM,14779
tracerite/trace.py,sha256=zfmUI2AWg5BdizzZYiGisp0DP70pV_4C_pzLEQrTTgs,69647
tracerite/trace_cpy.py,sha256=5HYah0bGU4Q_vAZGQpFZQXPF20YSHtC_3_If27J38EA,14152
tracerite/tty.py,sha256=AsHiNlRzQZA7yW_QKxVBHs2-gi8DGhRtHaoCQrykDiM,53207
@@ -0,0 +1,4 @@
Wheel-Version: 1.0
Generator: hatchling 1.28.0
Root-Is-Purelib: true
Tag: py3-none-any