import prompt_toolkit as pt from prompt_toolkit.completion import WordCompleter, FuzzyCompleter def generate_completer(game_list): g_list = [x['name'] for x in game_list] + [x['appid'] for x in game_list] return FuzzyCompleter(WordCompleter(g_list)) class PromptHelper: def __init__(self, game_list): self.game_list = game_list self.completer = generate_completer(game_list) def find_game_str(self, game_name): for game in self.game_list: if game['name'] == game_name: return game def find_game_num(self, appid: int): for game in self.game_list: if game['appid'] == appid: return game def prompt_game(self, text, default="None"): response = pt.prompt(text, completer=self.completer, complete_while_typing=True) if response == "": return None elif response[0].isalpha(): return self.find_game_str(response) else: return self.find_game_num(int(response))