diff --git a/gamestonk_terminal/cryptocurrency/crypto_controller.py b/gamestonk_terminal/cryptocurrency/crypto_controller.py index b181bc58559..6285df87e3e 100644 --- a/gamestonk_terminal/cryptocurrency/crypto_controller.py +++ b/gamestonk_terminal/cryptocurrency/crypto_controller.py @@ -3,6 +3,7 @@ __docformat__ = "numpy" # pylint: disable=R0904, C0302, R1710, W0622 import argparse +import difflib import matplotlib.pyplot as plt import pandas as pd from colorama import Style @@ -867,4 +868,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, crypto_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/economy/economy_controller.py b/gamestonk_terminal/economy/economy_controller.py index e3a809368ce..fef6bd6d04a 100644 --- a/gamestonk_terminal/economy/economy_controller.py +++ b/gamestonk_terminal/economy/economy_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" # pylint:disable=too-many-lines import argparse +import difflib from datetime import datetime, timedelta import os from typing import List @@ -1271,4 +1272,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, econ_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/etf/etf_controller.py b/gamestonk_terminal/etf/etf_controller.py index 340b749bc69..9929a1439f4 100644 --- a/gamestonk_terminal/etf/etf_controller.py +++ b/gamestonk_terminal/etf/etf_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib import os from datetime import datetime from typing import List @@ -504,4 +505,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, etf_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/forex/forex_controller.py b/gamestonk_terminal/forex/forex_controller.py index d0dbb38dee2..a65fd87762c 100644 --- a/gamestonk_terminal/forex/forex_controller.py +++ b/gamestonk_terminal/forex/forex_controller.py @@ -1,4 +1,8 @@ +"""Forex Controller""" +__docformat__ = "numpy" + import argparse +import difflib from datetime import timedelta, datetime from typing import List @@ -317,4 +321,10 @@ def menu(): except SystemExit: print("The command selected doesn't exit\n") + similar_cmd = difflib.get_close_matches( + an_input, fx_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/portfolio/portfolio_controller.py b/gamestonk_terminal/portfolio/portfolio_controller.py index 7c45e060821..5a227339be7 100644 --- a/gamestonk_terminal/portfolio/portfolio_controller.py +++ b/gamestonk_terminal/portfolio/portfolio_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib import os from os import listdir from os.path import isfile, join @@ -469,4 +470,10 @@ def menu(): except SystemExit: print("The command selected doesn't exit\n") + similar_cmd = difflib.get_close_matches( + an_input, portfolio_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/reports/reports_controller.py b/gamestonk_terminal/reports/reports_controller.py index 3d681479120..fbe4d88792b 100644 --- a/gamestonk_terminal/reports/reports_controller.py +++ b/gamestonk_terminal/reports/reports_controller.py @@ -4,6 +4,7 @@ __docformat__ = "numpy" # pylint: disable=R1732 import argparse +import difflib import os import subprocess import webbrowser @@ -270,4 +271,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, report_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/backtesting/bt_controller.py b/gamestonk_terminal/stocks/backtesting/bt_controller.py index 029c648ceac..7db4983037d 100644 --- a/gamestonk_terminal/stocks/backtesting/bt_controller.py +++ b/gamestonk_terminal/stocks/backtesting/bt_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List import matplotlib as mpl @@ -356,4 +357,11 @@ def menu(ticker: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, bt_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") + continue diff --git a/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py b/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py index 45869f93220..9cf33780cb7 100644 --- a/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py +++ b/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py @@ -3,6 +3,7 @@ __docformat__ = "numpy" # pylint:disable=too-many-lines import argparse +import difflib from typing import List from datetime import datetime import textwrap @@ -990,4 +991,10 @@ def menu(ticker: str, start: datetime): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, ba_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/comparison_analysis/ca_controller.py b/gamestonk_terminal/stocks/comparison_analysis/ca_controller.py index ce60975a60a..2c68908f511 100644 --- a/gamestonk_terminal/stocks/comparison_analysis/ca_controller.py +++ b/gamestonk_terminal/stocks/comparison_analysis/ca_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" # pylint:disable=too-many-lines import argparse +import difflib import random from typing import List @@ -999,4 +1000,10 @@ def menu(ticker: str, start: str, interval: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, ca_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/dark_pool_shorts/dps_controller.py b/gamestonk_terminal/stocks/dark_pool_shorts/dps_controller.py index 93be5b36ec0..1439df3d4a5 100644 --- a/gamestonk_terminal/stocks/dark_pool_shorts/dps_controller.py +++ b/gamestonk_terminal/stocks/dark_pool_shorts/dps_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from datetime import datetime, timedelta from colorama import Style @@ -687,4 +688,10 @@ def menu(ticker: str = "", start: str = "", stock: pd.DataFrame = pd.DataFrame() except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, dps_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/discovery/disc_controller.py b/gamestonk_terminal/stocks/discovery/disc_controller.py index 54843a03db0..e9d67d8565a 100644 --- a/gamestonk_terminal/stocks/discovery/disc_controller.py +++ b/gamestonk_terminal/stocks/discovery/disc_controller.py @@ -3,6 +3,7 @@ __docformat__ = "numpy" # pylint:disable=too-many-lines import argparse +import difflib from datetime import datetime from typing import List @@ -1129,4 +1130,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, disc_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/due_diligence/dd_controller.py b/gamestonk_terminal/stocks/due_diligence/dd_controller.py index 5091952d593..b7dda636c84 100644 --- a/gamestonk_terminal/stocks/due_diligence/dd_controller.py +++ b/gamestonk_terminal/stocks/due_diligence/dd_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from pandas.core.frame import DataFrame from prompt_toolkit.completion import NestedCompleter @@ -510,4 +511,10 @@ def menu(ticker: str, start: str, interval: str, stock: DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, dd_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py b/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py index b1ce5349e5b..39b810e3192 100644 --- a/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py +++ b/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from prompt_toolkit.completion import NestedCompleter from colorama import Style @@ -823,4 +824,10 @@ def menu(ticker: str, start: str, interval: str, suffix: str = ""): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, fa_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/government/gov_controller.py b/gamestonk_terminal/stocks/government/gov_controller.py index 764bfb175ea..b48da321075 100644 --- a/gamestonk_terminal/stocks/government/gov_controller.py +++ b/gamestonk_terminal/stocks/government/gov_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from colorama import Style from matplotlib import pyplot as plt @@ -589,4 +590,10 @@ def menu(ticker: str): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, gov_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/insider/insider_controller.py b/gamestonk_terminal/stocks/insider/insider_controller.py index c54a4cac43a..02328eaafa9 100644 --- a/gamestonk_terminal/stocks/insider/insider_controller.py +++ b/gamestonk_terminal/stocks/insider/insider_controller.py @@ -3,6 +3,7 @@ __docformat__ = "numpy" import os import argparse +import difflib import configparser from typing import List import pandas as pd @@ -534,4 +535,10 @@ def menu(ticker: str, start: str, interval: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, ins_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/options/options_controller.py b/gamestonk_terminal/stocks/options/options_controller.py index b18c3e8ef2b..7691c39f2b0 100644 --- a/gamestonk_terminal/stocks/options/options_controller.py +++ b/gamestonk_terminal/stocks/options/options_controller.py @@ -4,6 +4,7 @@ __docformat__ = "numpy" import argparse +import difflib import os from datetime import datetime, timedelta from typing import List @@ -1300,4 +1301,10 @@ def menu(ticker: str = ""): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, op_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/prediction_techniques/pred_controller.py b/gamestonk_terminal/stocks/prediction_techniques/pred_controller.py index 410088d5d83..9f05e375f89 100644 --- a/gamestonk_terminal/stocks/prediction_techniques/pred_controller.py +++ b/gamestonk_terminal/stocks/prediction_techniques/pred_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from datetime import datetime import pandas as pd @@ -794,4 +795,10 @@ def menu(ticker: str, start: datetime, interval: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, pred_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/quantitative_analysis/qa_controller.py b/gamestonk_terminal/stocks/quantitative_analysis/qa_controller.py index 78a6ff94dfa..75c70060d41 100644 --- a/gamestonk_terminal/stocks/quantitative_analysis/qa_controller.py +++ b/gamestonk_terminal/stocks/quantitative_analysis/qa_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib from typing import List from datetime import datetime @@ -852,4 +853,10 @@ def menu(ticker: str, start: datetime, interval: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, qa_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/research/res_controller.py b/gamestonk_terminal/stocks/research/res_controller.py index fb2dbd330a4..cd958edcd8f 100644 --- a/gamestonk_terminal/stocks/research/res_controller.py +++ b/gamestonk_terminal/stocks/research/res_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib import webbrowser from datetime import datetime from prompt_toolkit.completion import NestedCompleter @@ -241,4 +242,10 @@ def menu(ticker: str, start: datetime, interval: str): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, res_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/screener/screener_controller.py b/gamestonk_terminal/stocks/screener/screener_controller.py index e772f1ed48e..556c0be2e3a 100644 --- a/gamestonk_terminal/stocks/screener/screener_controller.py +++ b/gamestonk_terminal/stocks/screener/screener_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib import configparser import os from typing import List @@ -317,4 +318,10 @@ def menu(): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, scr_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/gamestonk_terminal/stocks/stocks_controller.py b/gamestonk_terminal/stocks/stocks_controller.py index 90e89917a70..9aea462f910 100644 --- a/gamestonk_terminal/stocks/stocks_controller.py +++ b/gamestonk_terminal/stocks/stocks_controller.py @@ -2,6 +2,7 @@ __docformat__ = "numpy" import argparse +import difflib import os from typing import List @@ -688,4 +689,11 @@ def menu(ticker: str = ""): except SystemExit: print("The command selected doesn't exit\n") + similar_cmd = difflib.get_close_matches( + an_input, stocks_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") + continue diff --git a/gamestonk_terminal/stocks/technical_analysis/ta_controller.py b/gamestonk_terminal/stocks/technical_analysis/ta_controller.py index dabc16de6e4..b7a0f039935 100644 --- a/gamestonk_terminal/stocks/technical_analysis/ta_controller.py +++ b/gamestonk_terminal/stocks/technical_analysis/ta_controller.py @@ -4,6 +4,7 @@ __docformat__ = "numpy" # pylint:disable=R0904 import argparse +import difflib from typing import List from datetime import datetime @@ -1577,4 +1578,10 @@ def menu(ticker: str, start: datetime, interval: str, stock: pd.DataFrame): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, ta_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") continue diff --git a/terminal.py b/terminal.py index 6ee99acedaa..931cad74639 100644 --- a/terminal.py +++ b/terminal.py @@ -3,6 +3,7 @@ __docformat__ = "numpy" import argparse +import difflib import sys from prompt_toolkit.completion import NestedCompleter @@ -301,6 +302,13 @@ def terminal(menu_prior_to_reset=""): except SystemExit: print("The command selected doesn't exist\n") + similar_cmd = difflib.get_close_matches( + an_input, t_controller.CHOICES, n=1, cutoff=0.7 + ) + + if similar_cmd: + print(f"Did you mean '{similar_cmd[0]}'?\n") + continue if not gtff.ENABLE_QUICK_EXIT: