chore: update commands to modern typing syntax

This commit is contained in:
Matthias 2024-10-04 06:37:49 +02:00
parent 74b8dca63e
commit 65bbf7b2a2
13 changed files with 58 additions and 58 deletions

View File

@ -1,6 +1,6 @@
import logging import logging
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any
from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration import setup_utils_configuration
from freqtrade.enums import RunMode from freqtrade.enums import RunMode
@ -10,7 +10,7 @@ from freqtrade.exceptions import ConfigurationError, OperationalException
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def setup_analyze_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]: def setup_analyze_configuration(args: dict[str, Any], method: RunMode) -> dict[str, Any]:
""" """
Prepare the configuration for the entry/exit reason analysis module Prepare the configuration for the entry/exit reason analysis module
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -47,7 +47,7 @@ def setup_analyze_configuration(args: Dict[str, Any], method: RunMode) -> Dict[s
return config return config
def start_analysis_entries_exits(args: Dict[str, Any]) -> None: def start_analysis_entries_exits(args: dict[str, Any]) -> None:
""" """
Start analysis script Start analysis script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()

View File

@ -5,7 +5,7 @@ This module contains the argument manager class
from argparse import ArgumentParser, Namespace, _ArgumentGroup from argparse import ArgumentParser, Namespace, _ArgumentGroup
from functools import partial from functools import partial
from pathlib import Path from pathlib import Path
from typing import Any, Dict, List, Optional, Union from typing import Any, Optional, Union
from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS from freqtrade.commands.cli_options import AVAILABLE_CLI_OPTIONS
from freqtrade.constants import DEFAULT_CONFIG from freqtrade.constants import DEFAULT_CONFIG
@ -23,7 +23,7 @@ ARGS_STRATEGY = [
ARGS_TRADE = ["db_url", "sd_notify", "dry_run", "dry_run_wallet", "fee"] ARGS_TRADE = ["db_url", "sd_notify", "dry_run", "dry_run_wallet", "fee"]
ARGS_WEBSERVER: List[str] = [] ARGS_WEBSERVER: list[str] = []
ARGS_COMMON_OPTIMIZE = [ ARGS_COMMON_OPTIMIZE = [
"timeframe", "timeframe",
@ -277,11 +277,11 @@ class Arguments:
Arguments Class. Manage the arguments received by the cli Arguments Class. Manage the arguments received by the cli
""" """
def __init__(self, args: Optional[List[str]]) -> None: def __init__(self, args: Optional[list[str]]) -> None:
self.args = args self.args = args
self._parsed_arg: Optional[Namespace] = None self._parsed_arg: Optional[Namespace] = None
def get_parsed_arg(self) -> Dict[str, Any]: def get_parsed_arg(self) -> dict[str, Any]:
""" """
Return the list of arguments Return the list of arguments
:return: List[str] List of arguments :return: List[str] List of arguments
@ -322,7 +322,7 @@ class Arguments:
return parsed_arg return parsed_arg
def _build_args( def _build_args(
self, optionlist: List[str], parser: Union[ArgumentParser, _ArgumentGroup] self, optionlist: list[str], parser: Union[ArgumentParser, _ArgumentGroup]
) -> None: ) -> None:
for val in optionlist: for val in optionlist:
opt = AVAILABLE_CLI_OPTIONS[val] opt = AVAILABLE_CLI_OPTIONS[val]

View File

@ -1,7 +1,7 @@
import logging import logging
import secrets import secrets
from pathlib import Path from pathlib import Path
from typing import Any, Dict, List from typing import Any
from questionary import Separator, prompt from questionary import Separator, prompt
@ -48,13 +48,13 @@ def ask_user_overwrite(config_path: Path) -> bool:
return answers["overwrite"] return answers["overwrite"]
def ask_user_config() -> Dict[str, Any]: def ask_user_config() -> dict[str, Any]:
""" """
Ask user a few questions to build the configuration. Ask user a few questions to build the configuration.
Interactive questions built using https://github.com/tmbo/questionary Interactive questions built using https://github.com/tmbo/questionary
:returns: Dict with keys to put into template :returns: Dict with keys to put into template
""" """
questions: List[Dict[str, Any]] = [ questions: list[dict[str, Any]] = [
{ {
"type": "confirm", "type": "confirm",
"name": "dry_run", "name": "dry_run",
@ -219,7 +219,7 @@ def ask_user_config() -> Dict[str, Any]:
return answers return answers
def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None: def deploy_new_config(config_path: Path, selections: dict[str, Any]) -> None:
""" """
Applies selections to the template and writes the result to config_path Applies selections to the template and writes the result to config_path
:param config_path: Path object for new config file. Should not exist yet :param config_path: Path object for new config file. Should not exist yet
@ -250,7 +250,7 @@ def deploy_new_config(config_path: Path, selections: Dict[str, Any]) -> None:
config_path.write_text(config_text) config_path.write_text(config_text)
def start_new_config(args: Dict[str, Any]) -> None: def start_new_config(args: dict[str, Any]) -> None:
""" """
Create a new strategy from a template Create a new strategy from a template
Asking the user questions to fill out the template accordingly. Asking the user questions to fill out the template accordingly.
@ -271,7 +271,7 @@ def start_new_config(args: Dict[str, Any]) -> None:
deploy_new_config(config_path, selections) deploy_new_config(config_path, selections)
def start_show_config(args: Dict[str, Any]) -> None: def start_show_config(args: dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE, set_dry=False) config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE, set_dry=False)
print("Your combined configuration is:") print("Your combined configuration is:")

View File

@ -1,7 +1,7 @@
import logging import logging
import sys import sys
from collections import defaultdict from collections import defaultdict
from typing import Any, Dict from typing import Any
from freqtrade.configuration import TimeRange, setup_utils_configuration from freqtrade.configuration import TimeRange, setup_utils_configuration
from freqtrade.constants import DATETIME_PRINT_FORMAT, DL_DATA_TIMEFRAMES, Config from freqtrade.constants import DATETIME_PRINT_FORMAT, DL_DATA_TIMEFRAMES, Config
@ -38,7 +38,7 @@ def _check_data_config_download_sanity(config: Config) -> None:
) )
def start_download_data(args: Dict[str, Any]) -> None: def start_download_data(args: dict[str, Any]) -> None:
""" """
Download data (former download_backtest_data.py script) Download data (former download_backtest_data.py script)
""" """
@ -53,7 +53,7 @@ def start_download_data(args: Dict[str, Any]) -> None:
sys.exit("SIGINT received, aborting ...") sys.exit("SIGINT received, aborting ...")
def start_convert_trades(args: Dict[str, Any]) -> None: def start_convert_trades(args: dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE) config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
timerange = TimeRange() timerange = TimeRange()
@ -92,7 +92,7 @@ def start_convert_trades(args: Dict[str, Any]) -> None:
) )
def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None: def start_convert_data(args: dict[str, Any], ohlcv: bool = True) -> None:
""" """
Convert data from one format to another Convert data from one format to another
""" """
@ -114,7 +114,7 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None:
) )
def start_list_data(args: Dict[str, Any]) -> None: def start_list_data(args: dict[str, Any]) -> None:
""" """
List available OHLCV data List available OHLCV data
""" """
@ -177,7 +177,7 @@ def start_list_data(args: Dict[str, Any]) -> None:
) )
def start_list_trades_data(args: Dict[str, Any]) -> None: def start_list_trades_data(args: dict[str, Any]) -> None:
""" """
List available Trades data List available Trades data
""" """

View File

@ -1,5 +1,5 @@
import logging import logging
from typing import Any, Dict from typing import Any
from sqlalchemy import func, select from sqlalchemy import func, select
@ -10,7 +10,7 @@ from freqtrade.enums import RunMode
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_convert_db(args: Dict[str, Any]) -> None: def start_convert_db(args: dict[str, Any]) -> None:
from sqlalchemy.orm import make_transient from sqlalchemy.orm import make_transient
from freqtrade.persistence import Order, Trade, init_db from freqtrade.persistence import Order, Trade, init_db

View File

@ -1,7 +1,7 @@
import logging import logging
import sys import sys
from pathlib import Path from pathlib import Path
from typing import Any, Dict, Optional, Tuple from typing import Any, Optional
import requests import requests
@ -20,7 +20,7 @@ logger = logging.getLogger(__name__)
req_timeout = 30 req_timeout = 30
def start_create_userdir(args: Dict[str, Any]) -> None: def start_create_userdir(args: dict[str, Any]) -> None:
""" """
Create "user_data" directory to contain user data strategies, hyperopt, ...) Create "user_data" directory to contain user data strategies, hyperopt, ...)
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -81,7 +81,7 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st
strategy_path.write_text(strategy_text) strategy_path.write_text(strategy_text)
def start_new_strategy(args: Dict[str, Any]) -> None: def start_new_strategy(args: dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if "strategy" in args and args["strategy"]: if "strategy" in args and args["strategy"]:
@ -139,7 +139,7 @@ def download_and_install_ui(dest_folder: Path, dl_url: str, version: str):
f.write(version) f.write(version)
def get_ui_download_url(version: Optional[str] = None) -> Tuple[str, str]: def get_ui_download_url(version: Optional[str] = None) -> tuple[str, str]:
base_url = "https://api.github.com/repos/freqtrade/frequi/" base_url = "https://api.github.com/repos/freqtrade/frequi/"
# Get base UI Repo path # Get base UI Repo path
@ -171,7 +171,7 @@ def get_ui_download_url(version: Optional[str] = None) -> Tuple[str, str]:
return dl_url, latest_version return dl_url, latest_version
def start_install_ui(args: Dict[str, Any]) -> None: def start_install_ui(args: dict[str, Any]) -> None:
dest_folder = Path(__file__).parents[1] / "rpc/api_server/ui/installed/" dest_folder = Path(__file__).parents[1] / "rpc/api_server/ui/installed/"
# First make sure the assets are removed. # First make sure the assets are removed.
dl_url, latest_version = get_ui_download_url(args.get("ui_version")) dl_url, latest_version = get_ui_download_url(args.get("ui_version"))

View File

@ -1,6 +1,6 @@
import logging import logging
from operator import itemgetter from operator import itemgetter
from typing import Any, Dict from typing import Any
from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration import setup_utils_configuration
from freqtrade.data.btanalysis import get_latest_hyperopt_file from freqtrade.data.btanalysis import get_latest_hyperopt_file
@ -12,7 +12,7 @@ from freqtrade.optimize.optimize_reports import show_backtest_result
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_hyperopt_list(args: Dict[str, Any]) -> None: def start_hyperopt_list(args: dict[str, Any]) -> None:
""" """
List hyperopt epochs previously evaluated List hyperopt epochs previously evaluated
""" """
@ -57,7 +57,7 @@ def start_hyperopt_list(args: Dict[str, Any]) -> None:
HyperoptTools.export_csv_file(config, epochs, export_csv) HyperoptTools.export_csv_file(config, epochs, export_csv)
def start_hyperopt_show(args: Dict[str, Any]) -> None: def start_hyperopt_show(args: dict[str, Any]) -> None:
""" """
Show details of a hyperopt epoch previously evaluated Show details of a hyperopt epoch previously evaluated
""" """

View File

@ -1,7 +1,7 @@
import csv import csv
import logging import logging
import sys import sys
from typing import Any, Dict, List, Union from typing import Any, Union
import rapidjson import rapidjson
from rich.console import Console from rich.console import Console
@ -21,13 +21,13 @@ from freqtrade.util import print_rich_table
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_list_exchanges(args: Dict[str, Any]) -> None: def start_list_exchanges(args: dict[str, Any]) -> None:
""" """
Print available exchanges Print available exchanges
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
:return: None :return: None
""" """
available_exchanges: List[ValidExchangesType] = list_available_exchanges( available_exchanges: list[ValidExchangesType] = list_available_exchanges(
args["list_exchanges_all"] args["list_exchanges_all"]
) )
@ -85,9 +85,9 @@ def start_list_exchanges(args: Dict[str, Any]) -> None:
console.print(table) console.print(table)
def _print_objs_tabular(objs: List, print_colorized: bool) -> None: def _print_objs_tabular(objs: list, print_colorized: bool) -> None:
names = [s["name"] for s in objs] names = [s["name"] for s in objs]
objs_to_print: List[Dict[str, Union[Text, str]]] = [ objs_to_print: list[dict[str, Union[Text, str]]] = [
{ {
"name": Text(s["name"] if s["name"] else "--"), "name": Text(s["name"] if s["name"] else "--"),
"location": s["location_rel"], "location": s["location_rel"],
@ -125,7 +125,7 @@ def _print_objs_tabular(objs: List, print_colorized: bool) -> None:
console.print(table) console.print(table)
def start_list_strategies(args: Dict[str, Any]) -> None: def start_list_strategies(args: dict[str, Any]) -> None:
""" """
Print files with Strategy custom classes available in the directory Print files with Strategy custom classes available in the directory
""" """
@ -148,7 +148,7 @@ def start_list_strategies(args: Dict[str, Any]) -> None:
_print_objs_tabular(strategy_objs, config.get("print_colorized", False)) _print_objs_tabular(strategy_objs, config.get("print_colorized", False))
def start_list_freqAI_models(args: Dict[str, Any]) -> None: def start_list_freqAI_models(args: dict[str, Any]) -> None:
""" """
Print files with FreqAI models custom classes available in the directory Print files with FreqAI models custom classes available in the directory
""" """
@ -164,7 +164,7 @@ def start_list_freqAI_models(args: Dict[str, Any]) -> None:
_print_objs_tabular(model_objs, config.get("print_colorized", False)) _print_objs_tabular(model_objs, config.get("print_colorized", False))
def start_list_timeframes(args: Dict[str, Any]) -> None: def start_list_timeframes(args: dict[str, Any]) -> None:
""" """
Print timeframes available on Exchange Print timeframes available on Exchange
""" """
@ -184,7 +184,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None:
) )
def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None: def start_list_markets(args: dict[str, Any], pairs_only: bool = False) -> None:
""" """
Print pairs/markets on the exchange Print pairs/markets on the exchange
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -296,7 +296,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None:
print(f"{summary_str}.") print(f"{summary_str}.")
def start_show_trades(args: Dict[str, Any]) -> None: def start_show_trades(args: dict[str, Any]) -> None:
""" """
Show trades Show trades
""" """

View File

@ -1,5 +1,5 @@
import logging import logging
from typing import Any, Dict from typing import Any
from freqtrade import constants from freqtrade import constants
from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration import setup_utils_configuration
@ -11,7 +11,7 @@ from freqtrade.util import fmt_coin
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def setup_optimize_configuration(args: Dict[str, Any], method: RunMode) -> Dict[str, Any]: def setup_optimize_configuration(args: dict[str, Any], method: RunMode) -> dict[str, Any]:
""" """
Prepare the configuration for the Hyperopt module Prepare the configuration for the Hyperopt module
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -41,7 +41,7 @@ def setup_optimize_configuration(args: Dict[str, Any], method: RunMode) -> Dict[
return config return config
def start_backtesting(args: Dict[str, Any]) -> None: def start_backtesting(args: dict[str, Any]) -> None:
""" """
Start Backtesting script Start Backtesting script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -60,7 +60,7 @@ def start_backtesting(args: Dict[str, Any]) -> None:
backtesting.start() backtesting.start()
def start_backtesting_show(args: Dict[str, Any]) -> None: def start_backtesting_show(args: dict[str, Any]) -> None:
""" """
Show previous backtest result Show previous backtest result
""" """
@ -76,7 +76,7 @@ def start_backtesting_show(args: Dict[str, Any]) -> None:
show_sorted_pairlist(config, results) show_sorted_pairlist(config, results)
def start_hyperopt(args: Dict[str, Any]) -> None: def start_hyperopt(args: dict[str, Any]) -> None:
""" """
Start hyperopt script Start hyperopt script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -121,7 +121,7 @@ def start_hyperopt(args: Dict[str, Any]) -> None:
# Same in Edge and Backtesting start() functions. # Same in Edge and Backtesting start() functions.
def start_edge(args: Dict[str, Any]) -> None: def start_edge(args: dict[str, Any]) -> None:
""" """
Start Edge script Start Edge script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -138,7 +138,7 @@ def start_edge(args: Dict[str, Any]) -> None:
edge_cli.start() edge_cli.start()
def start_lookahead_analysis(args: Dict[str, Any]) -> None: def start_lookahead_analysis(args: dict[str, Any]) -> None:
""" """
Start the backtest bias tester script Start the backtest bias tester script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()
@ -150,7 +150,7 @@ def start_lookahead_analysis(args: Dict[str, Any]) -> None:
LookaheadAnalysisSubFunctions.start(config) LookaheadAnalysisSubFunctions.start(config)
def start_recursive_analysis(args: Dict[str, Any]) -> None: def start_recursive_analysis(args: dict[str, Any]) -> None:
""" """
Start the backtest recursive tester script Start the backtest recursive tester script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()

View File

@ -1,5 +1,5 @@
import logging import logging
from typing import Any, Dict from typing import Any
import rapidjson import rapidjson
@ -11,7 +11,7 @@ from freqtrade.resolvers import ExchangeResolver
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_test_pairlist(args: Dict[str, Any]) -> None: def start_test_pairlist(args: dict[str, Any]) -> None:
""" """
Test Pairlist configuration Test Pairlist configuration
""" """

View File

@ -1,11 +1,11 @@
from typing import Any, Dict from typing import Any
from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration import setup_utils_configuration
from freqtrade.enums import RunMode from freqtrade.enums import RunMode
from freqtrade.exceptions import ConfigurationError from freqtrade.exceptions import ConfigurationError
def validate_plot_args(args: Dict[str, Any]) -> None: def validate_plot_args(args: dict[str, Any]) -> None:
if not args.get("datadir") and not args.get("config"): if not args.get("datadir") and not args.get("config"):
raise ConfigurationError( raise ConfigurationError(
"You need to specify either `--datadir` or `--config` " "You need to specify either `--datadir` or `--config` "
@ -13,7 +13,7 @@ def validate_plot_args(args: Dict[str, Any]) -> None:
) )
def start_plot_dataframe(args: Dict[str, Any]) -> None: def start_plot_dataframe(args: dict[str, Any]) -> None:
""" """
Entrypoint for dataframe plotting Entrypoint for dataframe plotting
""" """
@ -26,7 +26,7 @@ def start_plot_dataframe(args: Dict[str, Any]) -> None:
load_and_plot_trades(config) load_and_plot_trades(config)
def start_plot_profit(args: Dict[str, Any]) -> None: def start_plot_profit(args: dict[str, Any]) -> None:
""" """
Entrypoint for plot_profit Entrypoint for plot_profit
""" """

View File

@ -1,7 +1,7 @@
import logging import logging
import time import time
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any
from freqtrade.configuration import setup_utils_configuration from freqtrade.configuration import setup_utils_configuration
from freqtrade.enums import RunMode from freqtrade.enums import RunMode
@ -12,7 +12,7 @@ from freqtrade.strategy.strategyupdater import StrategyUpdater
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_strategy_update(args: Dict[str, Any]) -> None: def start_strategy_update(args: dict[str, Any]) -> None:
""" """
Start the strategy updating script Start the strategy updating script
:param args: Cli args from Arguments() :param args: Cli args from Arguments()

View File

@ -1,12 +1,12 @@
import logging import logging
import signal import signal
from typing import Any, Dict from typing import Any
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def start_trading(args: Dict[str, Any]) -> int: def start_trading(args: dict[str, Any]) -> int:
""" """
Main entry point for trading mode Main entry point for trading mode
""" """