From 80f68a6ccdbf810ae1c7409040342ccc02695a1f Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Sat, 6 Jun 2026 16:27:17 +0545 Subject: [PATCH] feat(devgen): enhance provider import error handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhancements: - Split ModuleNotFoundError and AttributeError handling to deliver clearer diagnostics - Explicitly list available providers and flag missing provider classes as packaging bugs Bug Fixes: - Provide specific guidance when a provider module is not a built‑in module - Clarify that a missing provider class indicates a packaging issue rather than user error --- devgen/ai.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/devgen/ai.py b/devgen/ai.py index 45e0340..44b4929 100644 --- a/devgen/ai.py +++ b/devgen/ai.py @@ -21,8 +21,16 @@ def generate_with_ai( provider_module = import_module(f"devgen.providers.{provider}") class_name = "".join([x.capitalize() for x in provider.split("_")]) + "Provider" provider_class = getattr(provider_module, class_name) - except (ModuleNotFoundError, AttributeError) as e: - raise ImportError(f"Provider `{provider}` not found or invalid: {e}") from e + except ModuleNotFoundError as e: + raise ImportError( + f"Provider `{provider}` is not a built-in module: {e}. " + f"Available providers: gemini, openai, anthropic, huggingface, openrouter." + ) from e + except AttributeError as e: + raise ImportError( + f"Provider `{provider}` exists but does not expose a " + f"`{class_name}` class. This is a packaging bug." + ) from e provider_instance = provider_class() return provider_instance.generate(prompt, api_key=api_key, model=model, **kwargs)