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.2
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.2.tar.gz | 38.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pydefine-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 74.0 kB
Release files / pydefine-1.1.2.tar.gz
| Download URL | pydefine-1.1.2.tar.gz |
|---|---|
| Size | 38.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
303ad911ba1a85add932ef9c592d47aed01d5bc0503c16ac9eba280bd989c2ac
|
|
BLAKE2b-256 checksum How to use checksums |
29348cdf0c0cb17091f0df94e33200214fe28e12f1951a52728cdf89027cc3f4
|
| 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.2-py3-none-any.whl
| Download URL | pydefine-1.1.2-py3-none-any.whl |
|---|---|
| Size | 35.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
74b5dbb59e464c306bb83f946177d2358aa7b61cd19bff83afee97f6c95e8601
|
|
BLAKE2b-256 checksum How to use checksums |
750c59b916a96d2122ad5a456b8731ea43a57db2bbc3eb11e79204b44fd07142
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|