From b7287ad32ab2a0971fed850437149aba7643d4ce Mon Sep 17 00:00:00 2001 From: Francisco Griman Date: Wed, 30 Oct 2024 00:29:15 -0400 Subject: [PATCH 1/3] Improve error handling in find_provider function to suggest similar provider names --- simplemind/utils.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/simplemind/utils.py b/simplemind/utils.py index 7427312..40fdd91 100644 --- a/simplemind/utils.py +++ b/simplemind/utils.py @@ -1,3 +1,4 @@ +import difflib from typing import Union from .providers import providers @@ -10,4 +11,11 @@ def find_provider(provider_name: Union[str, None]): if provider_class.NAME.lower() == provider_name.lower(): # Instantiate the provider return provider_class() - raise ValueError(f"Provider {provider_name} not found") + + providers_name = [provider.NAME.lower() for provider in providers] + providers_founds = difflib.get_close_matches(provider_name.lower(), providers_name) + + if providers_founds: + raise ValueError(f"Provider {provider_name} not found. Maybe you try to use is '{providers_founds[0]}'?") + else: + raise ValueError(f"Provider {provider_name} not found.") \ No newline at end of file From 1ecd4a496659d2883e9ba53086fc4db6cbe11d5c Mon Sep 17 00:00:00 2001 From: Francisco Griman Date: Wed, 30 Oct 2024 02:08:12 -0400 Subject: [PATCH 2/3] Refine error handling in find_provider function to suggest a single similar provider name --- simplemind/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/simplemind/utils.py b/simplemind/utils.py index 40fdd91..2828753 100644 --- a/simplemind/utils.py +++ b/simplemind/utils.py @@ -13,9 +13,9 @@ def find_provider(provider_name: Union[str, None]): return provider_class() providers_name = [provider.NAME.lower() for provider in providers] - providers_founds = difflib.get_close_matches(provider_name.lower(), providers_name) + provider_found = difflib.get_close_matches(provider_name.lower(), providers_name, n=1) # Show only one suggestion - if providers_founds: - raise ValueError(f"Provider {provider_name} not found. Maybe you try to use is '{providers_founds[0]}'?") + if provider_found: + raise ValueError(f"Provider {provider_name} not found. Maybe you try to use is '{provider_found[0]}'?") else: raise ValueError(f"Provider {provider_name} not found.") \ No newline at end of file From 9a5c7ff61b6547e0aa52302b8fd3042087a8a334 Mon Sep 17 00:00:00 2001 From: Francisco Griman Date: Wed, 30 Oct 2024 02:10:18 -0400 Subject: [PATCH 3/3] Refactor find_provider function to optimize provider name matching --- simplemind/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/simplemind/utils.py b/simplemind/utils.py index 2828753..f39c036 100644 --- a/simplemind/utils.py +++ b/simplemind/utils.py @@ -3,6 +3,7 @@ from typing import Union 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.""" @@ -12,8 +13,7 @@ def find_provider(provider_name: Union[str, None]): # Instantiate the provider return provider_class() - providers_name = [provider.NAME.lower() for provider in providers] - provider_found = difflib.get_close_matches(provider_name.lower(), providers_name, 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]}'?")