Skip to main content

Handler for exceptions in Python with OpenRouter.ai

Project description

OpenRouter Exception Handler

A Python module distributed via pip that automatically handles exceptions using intelligent responses generated by OpenRouter.ai. It also sends the source code of the function where the exception occurred, which can help you debug issues more effectively.

🚀 Installation

pip install openrouter-exception-handler

📌 Features

  • Automatically captures Python exceptions during execution.
  • Sends exception details to OpenRouter.ai.
  • Sends the source code of the function that triggered the exception.
  • Displays intelligent responses from OpenRouter.ai directly in your stdout.
  • Facilitates AI-assisted debugging, reducing the time needed for error diagnosis.
  • Optionally decorates entire classes so all their methods automatically benefit from exception handling.

🔧 Quick Usage (Function-Level)

Simply decorate your functions with @exception_handler:

from openrouter_exception_handler.exception_handler import exception_handler

@exception_handler
def divide(a, b):
    return a / b

divide(10, 0)  # Will trigger ZeroDivisionError and send the function's source code along with the error.

Example Output

❌ Exception captured in 'divide': division by zero
Source code of the function:
def divide(a, b):
    return a / b

AI Response:
This exception occurs because you're trying to divide by zero.
Validate your inputs before performing division to prevent this error.

📜 Detailed Usage

💡 method-level Usage

Simply decorate your functions with @exception_handler:

from openrouter_exception_handler.exception_handler import exception_handler

@exception_handler
def divide(a, b):
    return a / b

divide(10, 0)  # Will trigger ZeroDivisionError and send the function's source code along with the error.

❌ Exception captured in 'divide': division by zero Source code of the function: def divide(a, b): return a / b

AI Response: This exception occurs because you're trying to divide by zero. Validate your inputs before performing division to prevent this error.

💡 Class-Level Usage

To automatically capture exceptions in all methods of a class (including staticmethod and classmethod), use @class_exception_handler:

from openrouter_exception_handler.exception_handler import class_exception_handler

@class_exception_handler
class MyClass:
    def instance_method(self, x):
        return 10 / x  # Will raise ZeroDivisionError if x == 0

    @staticmethod
    def static_method(x):
        return 10 / x  # Same behavior

    @classmethod
    def class_method(cls, x):
        return 10 / x  # Same behavior

obj = MyClass()
obj.instance_method(0)   # Exception will be caught and the function's source code will be sent.
MyClass.static_method(0) # Same behavior
MyClass.class_method(0)  # Same behavior

By default, dunder methods (like __init__, __str__, etc.) are not wrapped. If you want to handle those as well, adjust the class decorator code accordingly.

🔑 Configuration

Define your OpenRouter.ai API key in the environment variable APIKEY_OPENROUTER:

export APIKEY_OPENROUTER="your_api_key_here"

📦 Installation

Install easily using pip:

pip install openrouter-exception-handler

📌 Requirements

  • Python >= 3.6
  • requests

📄 License

MIT


Here's a simple guide to create an API key on OpenRouter

  1. Sign Up or Log In Go to openrouter.ai and create an account, or log in if you already have one.

  2. Go to Your User/Developer Settings Look for a section like Developer Settings, API Keys, or Settings in your account dashboard.

  3. Generate a New Key

    • Click Generate New Key (or a similar button) to create your new API key.
    • Copy the generated API key. Note that for security reasons, you usually only get to see the key once.
  4. Save Your API Key

    • Store it in a safe place (e.g., an environment variable or a password manager).
    • Avoid committing it directly to a public repository or version control.

Tip: Once you have your API key, set it in your environment (e.g., OPENROUTER_API_KEY), so your application can access it securely without exposing it in the source code.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openrouter_exception_handler-0.4.9.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openrouter_exception_handler-0.4.9-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file openrouter_exception_handler-0.4.9.tar.gz.

File metadata

File hashes

Hashes for openrouter_exception_handler-0.4.9.tar.gz
Algorithm Hash digest
SHA256 150ef55ec36836f0e88da5607cda91e20c929c27f2b0134c0bb05d18b726f8e2
MD5 9bc41134d28b506bb6499dd41589b126
BLAKE2b-256 ec8cbd52908aaf22ca06a7bc42d033fc22f63cb475b6baf3ec1814d72fd1b78c

See more details on using hashes here.

File details

Details for the file openrouter_exception_handler-0.4.9-py3-none-any.whl.

File metadata

File hashes

Hashes for openrouter_exception_handler-0.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9560f44e9aa87377fe6ef4796cd983a5e8abf1ba5437686155c41d3d63858051
MD5 d12e969b60ee3736d0a2b1742c389a1b
BLAKE2b-256 e13969049f65fe6e35a458f651f2f528648cbfa43e3f5db86978ef6dcce5fe0d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page