Refactor find_provider function to improve error handling

This commit is contained in:
2024-10-30 09:10:20 -04:00
parent 2e448b9c3d
commit 7d89af37f1
+10 -5
View File
@@ -5,6 +5,7 @@ from .providers import providers
_PROVIDER_NAMES = [provider.NAME.lower() for provider in providers]
def find_provider(provider_name: Union[str, None]):
"""Find a provider by name."""
if provider_name:
@@ -12,10 +13,14 @@ def find_provider(provider_name: Union[str, None]):
if provider_class.NAME.lower() == provider_name.lower():
# Instantiate the provider
return provider_class()
provider_found = difflib.get_close_matches(provider_name.lower(), _PROVIDER_NAMES, n=1) # Show only one suggestion
provider_found = difflib.get_close_matches(
provider_name.lower(), _PROVIDER_NAMES, n=1
) # Show only one suggestion
if provider_found:
raise ValueError(f"Provider {provider_name} not found. Maybe you try to use is '{provider_found[0]}'?")
raise ValueError(
f"Provider {provider_name!r} not found. Did you mean {provider_found[0]!r}?"
)
else:
raise ValueError(f"Provider {provider_name} not found.")
raise ValueError(f"Provider {provider_name} not found.")