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

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

Built distribution (wheel)

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

Total release size: 74.2 kB

Release files / pydefine-1.1.11.tar.gz

Download URL pydefine-1.1.11.tar.gz
Size 38.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bfaf6df0ba285bf28a99485b537ac7f6719ef6fb5678e62c11508bb76f8cacc9
BLAKE2b-256 checksum
How to use checksums
4288c3c36fe645976de67b6a05afbed6941094d52b5135b20f5260416de4c6b0
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.11-py3-none-any.whl

Download URL pydefine-1.1.11-py3-none-any.whl
Size 35.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
42a51c227ca6763eada712b05f29061235fb7a51d6383909c455a303653a26c8
BLAKE2b-256 checksum
How to use checksums
416847c4f003d8f60e9edf4d39b7b04ca0b0790f79f7922f570cad9f8a6e7f04
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

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

This release

1.1.11 This release

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