Skip to main content

pyDefine

Convert Python errors into beginner-friendly explanations and guides you with actionable solutions

Python Version PyPI Version License: MIT Tests

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!


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 📦

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 📂

  1. Syntax & Formatting (SyntaxError, IndentationError, TabError)
  2. Name & Scope (NameError, UnboundLocalError, AttributeError)
  3. Type & Value (TypeError, ValueError, KeyError, IndexError, LookupError, AssertionError)
  4. Arithmetic & Math (ZeroDivisionError, OverflowError, FloatingPointError, SingularMatrixError)
  5. File & Operating System (FileNotFoundError, PermissionError, OSError, SubprocessError)
  6. Import & Module (ImportError, ModuleNotFoundError, ZipImportError)
  7. Runtime & Recursion (RuntimeError, RecursionError, NotImplementedError, ExceptionGroup)
  8. Network & Connection (ConnectionError, BrokenPipeError, TimeoutError, URLError)
  9. Process & Lifecycle (MemoryError, BufferError, KeyboardInterrupt, SystemExit)
  10. Database & SQL (DatabaseError, OperationalError, IntegrityError, ProgrammingError, SQLAlchemyError)
  11. Web & HTTP APIs (JSONDecodeError, HTTPError, RequestException, RateLimitError)
  12. Data Science & Arrays (EmptyDataError, ParserError, AxisError, LinAlgError, ShapeError)
  13. Async & Concurrency (CancelledError, InvalidStateError, QueueEmpty, ThreadError)
  14. Security & Cryptography (SSLError, AuthenticationError, ForbiddenError, JWTError)
  15. Validation & Serialization (ValidationError, PydanticCustomError, SchemaError)
  16. Warnings & Deprecations (DeprecationWarning, RuntimeWarning, UserWarning, FutureWarning)

License 📜

This project is licensed under the MIT License - see the LICENSE file for details.


Author & Contact 📞


✨ Powered by pyDefine ● Created by Yahya Mundewadi (yahya.in)

Release files for pydefine 1.1.25

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydefine 1.1.25
File Size Uploaded
pydefine-1.1.25.tar.gz 38.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydefine 1.1.25
File Interpreter ABI Platform
pydefine-1.1.25-py3-none-any.whl Python 3 none any Details

Total release size: 74.2 kB

Release files / pydefine-1.1.25.tar.gz

Download URL pydefine-1.1.25.tar.gz
Size 38.8 kB
Tags Source
SHA-256 checksum
How to use checksums
33b5ce4731a0c4621b80eb1533e34bd4f45c4284af94e4264fc60357257a7a09
BLAKE2b-256 checksum
How to use checksums
3abd69a024360ec132c61cef0bb5d9ff24b57340eaa9c66f97cb4c6f5b6755bb
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.25-py3-none-any.whl

Download URL pydefine-1.1.25-py3-none-any.whl
Size 35.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ae9311107fd307a8bee7ae1c00c93578d2f136e52ca47e3d3e2fcc585675e48
BLAKE2b-256 checksum
How to use checksums
498c8d279297dcc44bea0b60c26fa7b6bf9b356ee5fc27bf08fc20ba6dd4c2bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

1.1.27

2 release files

1.1.26

2 release files

This release

1.1.25 This release

2 release files

1.1.24

2 release files

1.1.23

2 release files

1.1.22

2 release files

1.1.21

2 release files

1.1.20

2 release files

1.1.19

2 release files

1.1.18

2 release files

1.1.17

2 release files

1.1.16

2 release files

1.1.15

2 release files

1.1.14

2 release files

1.1.13

2 release files

1.1.12

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page