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:
@@ -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
|
||||
|
||||
@@ -231,7 +231,7 @@ def _prompt_provider_choice(choices):
|
||||
idx = menu.show()
|
||||
print()
|
||||
return idx
|
||||
except ImportError:
|
||||
except (ImportError, NotImplementedError):
|
||||
pass
|
||||
|
||||
# Fallback: numbered list
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user