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.20

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.20
File Size Uploaded
pydefine-1.1.20.tar.gz 38.9 kB Details

Built distribution (wheel)

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

Total release size: 74.2 kB

Release files / pydefine-1.1.20.tar.gz

Download URL pydefine-1.1.20.tar.gz
Size 38.9 kB
Tags Source
SHA-256 checksum
How to use checksums
a09713dfa46d8435bb6804b282d02a902c01033a251e6f017fdcadad7070bd41
BLAKE2b-256 checksum
How to use checksums
8fe1ba40aea2c6a3086ab1a9ed0f7eb058bac7b441f5522217509d53857ba994
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.20-py3-none-any.whl

Download URL pydefine-1.1.20-py3-none-any.whl
Size 35.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f08e45a1649ac716da6886c36711a76604f1b0eb6c12054575162ccde1ab8e54
BLAKE2b-256 checksum
How to use checksums
cbcabb8ca98aa20c80b1b4e29d58ea686c49b69805aecdb99e7c5c74552df5bb
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

1.1.25

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

This release

1.1.20 This release

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