refactor: enhance error handling in user prompts

- Updated exception handling in multiple prompt functions to catch NotImplementedError alongside ImportError, improving robustness across the application.
- Ensured fallback mechanisms are clearly documented for better understanding of platform limitations.
This commit is contained in:
teknium1
2026-02-25 14:10:54 -08:00
parent cd66546e24
commit 3c5bf5b9d8
4 changed files with 8 additions and 8 deletions

View File

@@ -923,7 +923,7 @@ def _prompt_model_selection(model_ids: List[str], current_model: str = "") -> Op
custom = input("Enter model name: ").strip()
return custom if custom else None
return None
except ImportError:
except (ImportError, NotImplementedError):
pass
# Fallback: numbered list

View File

@@ -231,7 +231,7 @@ def _prompt_provider_choice(choices):
idx = menu.show()
print()
return idx
except ImportError:
except (ImportError, NotImplementedError):
pass
# Fallback: numbered list

View File

@@ -99,8 +99,8 @@ def prompt_choice(question: str, choices: list, default: int = 0) -> int:
print() # Add newline after selection
return idx
except ImportError:
# Fallback to number-based selection
except (ImportError, NotImplementedError):
# Fallback to number-based selection (simple_term_menu doesn't support Windows)
for i, choice in enumerate(choices):
marker = "" if i == default else ""
if i == default:
@@ -192,8 +192,8 @@ def prompt_checklist(title: str, items: list, pre_selected: list = None) -> list
selected = list(terminal_menu.chosen_menu_indices or [])
return selected
except ImportError:
# Fallback: numbered toggle interface
except (ImportError, NotImplementedError):
# Fallback: numbered toggle interface (simple_term_menu doesn't support Windows)
selected = set(pre_selected)
while True:

View File

@@ -116,7 +116,7 @@ def _prompt_choice(question: str, choices: list, default: int = 0) -> int:
sys.exit(0)
print()
return idx
except ImportError:
except (ImportError, NotImplementedError):
for i, c in enumerate(choices):
marker = "" if i == default else ""
style = Colors.GREEN if i == default else ""
@@ -179,7 +179,7 @@ def _prompt_toolset_checklist(platform_label: str, enabled: Set[str]) -> Set[str
return {CONFIGURABLE_TOOLSETS[i][0] for i in selected_indices}
except ImportError:
except (ImportError, NotImplementedError):
# Fallback: numbered toggle
selected = set(pre_selected_indices)
while True: