pyDefine
Convert Python errors into beginner-friendly explanations and guides you with actionable solutions ✨
pyDefine is a pure-Python developer library created by Yahya Mundewadi (Portfolio: yahya.in). pyDefine takes raw Python tracebacks and exceptions and converts them into clean, beginner-friendly explanations with actionable fix suggestions and source code context previews. Perfect for students, educators, and developers!
- 🌐 Official Website: pydefine.yahya.in
- 👨💻 Author Portfolio: yahya.in
- 📦 PyPI Package: pypi.org/project/pydefine
Features 🌟
- 164+ Exception Types Covered - Comprehensive support for built-ins, Web APIs, Databases, Data Science (Pandas/NumPy), Asyncio, Security, and Validation errors.
- 16 Core Categories - Structured categorization from Syntax, Types, and Math to Database, Network, and Concurrency.
- Source Code Context Previews - Automatically reads target source lines and highlights the exact error line with a pointer (
>). - Dynamic Class Inheritance Fallback - Custom and third-party library exceptions automatically inherit explanations from their base exception classes.
- Actionable Fix Suggestions - Every error comes with an immediate, plain-English solution.
- Multiple Interfaces - Use as a library (
import pydefine), CLI tool (pydefine script.py), or interactive decoder. - Pure Python & Zero Dependencies - Fast, lightweight, and works anywhere Python runs.
- Safe Code Execution - Built-in
safe_run()for testing code snippets with live error decoding. - Production Ready - 100% test pass rate, type-hinted, and Ruff-linted.
Installation 📦
From PyPI (Recommended)
pip install --upgrade pydefine
From Source
git clone https://github.com/mdyahhya/pydefine.git
cd pydefine
pip install -e .
Quick Start 🚀
1. Global Exception Hook (Easiest)
Just enable pyDefine once at the start of your script or app:
import pydefine
pydefine.enable()
# Normal code - any uncaught exception will now show a clean card!
number = 10
divisor = 0
result = number / divisor
Output:
┌─ ➗ Error: ZeroDivisionError ──────────────────────────────────────────
│ Category : Arithmetic & Math
│ Message : division by zero
│ Location : app.py:6
│
│ Summary : Division or modulo operation by zero was attempted.
│ Fix : Check if the divisor is zero before performing division.
│
│ Context :
│ 5 │ divisor = 0
│ > 6 │ result = number / divisor
└───────────────────────────────────────────────────────────── pyDefine ─
2. Manual Decoding in try/except
import pydefine
try:
data = {"name": "Alice"}
print(data["email"])
except Exception as e:
pydefine.quick_decode(e)
3. Quick One-Liner Explanation
import pydefine
try:
int("hello")
except Exception as e:
print(pydefine.explain(e))
# 🎯 ValueError: An argument received the correct data type but an invalid value.
Command Line Interface (CLI) 💻
Run scripts directly through pydefine with live diagnostic reports:
# Run a Python script with error diagnostics
pydefine script.py
# List all 16 categories
pydefine --list
# Filter exceptions by category
pydefine --category "Database & SQL"
pydefine --category "Web & HTTP APIs"
# List all 164+ exceptions
pydefine --list-all
Supported Categories 📂
- Syntax & Formatting (
SyntaxError,IndentationError,TabError) - Name & Scope (
NameError,UnboundLocalError,AttributeError) - Type & Value (
TypeError,ValueError,KeyError,IndexError,LookupError,AssertionError) - Arithmetic & Math (
ZeroDivisionError,OverflowError,FloatingPointError,SingularMatrixError) - File & Operating System (
FileNotFoundError,PermissionError,OSError,SubprocessError) - Import & Module (
ImportError,ModuleNotFoundError,ZipImportError) - Runtime & Recursion (
RuntimeError,RecursionError,NotImplementedError,ExceptionGroup) - Network & Connection (
ConnectionError,BrokenPipeError,TimeoutError,URLError) - Process & Lifecycle (
MemoryError,BufferError,KeyboardInterrupt,SystemExit) - Database & SQL (
DatabaseError,OperationalError,IntegrityError,ProgrammingError,SQLAlchemyError) - Web & HTTP APIs (
JSONDecodeError,HTTPError,RequestException,RateLimitError) - Data Science & Arrays (
EmptyDataError,ParserError,AxisError,LinAlgError,ShapeError) - Async & Concurrency (
CancelledError,InvalidStateError,QueueEmpty,ThreadError) - Security & Cryptography (
SSLError,AuthenticationError,ForbiddenError,JWTError) - Validation & Serialization (
ValidationError,PydanticCustomError,SchemaError) - Warnings & Deprecations (
DeprecationWarning,RuntimeWarning,UserWarning,FutureWarning)
License 📜
This project is licensed under the MIT License - see the LICENSE file for details.
Author & Contact 📞
- Author: Yahya Mundewadi
- Portfolio Website: yahya.in
- Project Portal: pydefine.yahya.in
- Email: yahyabuilds@gmail.com
- GitHub: @mdyahhya
- Instagram: @pydefine
✨ Powered by pyDefine ● Created by Yahya Mundewadi (yahya.in) ✨
Release files for pydefine 1.1.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pydefine-1.1.15.tar.gz | 38.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydefine-1.1.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 74.2 kB
Release files / pydefine-1.1.15.tar.gz
| Download URL | pydefine-1.1.15.tar.gz |
|---|---|
| Size | 38.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e07bd6fa0109d914cde3c3ce581e83ab59bbb4a0900e5e7ea3d3538b950f4a42
|
|
BLAKE2b-256 checksum How to use checksums |
c7d39322fc716b2a0f28fa7bd9eef996ffbb9757b8b07525dcafc3bcb8cd3e3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pydefine-1.1.15-py3-none-any.whl
| Download URL | pydefine-1.1.15-py3-none-any.whl |
|---|---|
| Size | 35.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9f180e6b7f5ecc06eb684e156acbc07a946900dc39b8e1b98e7244d5379b8ce
|
|
BLAKE2b-256 checksum How to use checksums |
2b06b9210446ad2f77b3accbf1badf9190b7c0504004a4b70c87c6db6b0fadb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|