def __init__(self, hummingbot_application): super(HummingbotCompleter, self).__init__() self.hummingbot_application = hummingbot_application self._path_completer = WordCompleter(file_name_list(str(STRATEGIES_CONF_DIR_PATH), "yml")) self._command_completer = WordCompleter(self.parser.commands, ignore_case=True) self._exchange_completer = WordCompleter(sorted(AllConnectorSettings.get_connector_settings().keys()), ignore_case=True) self._spot_exchange_completer = WordCompleter(sorted(AllConnectorSettings.get_exchange_names()), ignore_case=True) self._exchange_amm_completer = WordCompleter(sorted(AllConnectorSettings.get_exchange_names().union(AllConnectorSettings.get_gateway_evm_amm_connector_names())), ignore_case=True) self._evm_amm_lp_completer = WordCompleter(sorted(AllConnectorSettings.get_gateway_evm_amm_lp_connector_names()), ignore_case=True) self._trading_timeframe_completer = WordCompleter(["infinite", "from_date_to_date", "daily_between_times"], ignore_case=True) self._derivative_completer = WordCompleter(AllConnectorSettings.get_derivative_names(), ignore_case=True) self._derivative_exchange_completer = WordCompleter(AllConnectorSettings.get_derivative_names().difference(AllConnectorSettings.get_derivative_dex_names()), ignore_case=True) self._connect_option_completer = WordCompleter(CONNECT_OPTIONS, ignore_case=True) self._export_completer = WordCompleter(["keys", "trades"], ignore_case=True) self._balance_completer = WordCompleter(["limit", "paper"], ignore_case=True) self._history_completer = WordCompleter(["--days", "--verbose", "--precision"], ignore_case=True) self._gateway_completer = WordCompleter(["create", "config", "connect", "connector-tokens", "generate-certs", "status", "test-connection", "start", "stop"], ignore_case=True) self._gateway_connect_completer = WordCompleter(GATEWAY_CONNECTORS, ignore_case=True) self._gateway_connector_tokens_completer = WordCompleter(sorted(AllConnectorSettings.get_gateway_evm_amm_connector_names()), ignore_case=True) self._gateway_config_completer = WordCompleter(hummingbot_application.gateway_config_keys, ignore_case=True) self._strategy_completer = WordCompleter(STRATEGIES, ignore_case=True) self._py_file_completer = WordCompleter(file_name_list(str(PMM_SCRIPTS_PATH), "py")) self._script_strategy_completer = WordCompleter(file_name_list(str(SCRIPT_STRATEGIES_PATH), "py")) self._rate_oracle_completer = WordCompleter([r.name for r in RateOracleSource], ignore_case=True) self._gateway_networks = [] self._list_gateway_wallets_parameters = {"wallets": [], "chain": ""}
def validate_exchange(value: str) -> Optional[str]: """ Restrict valid exchanges to the exchange file names """ from hummingbot.client.settings import AllConnectorSettings if value not in AllConnectorSettings.get_exchange_names(): return f"Invalid exchange, please choose value from {AllConnectorSettings.get_exchange_names()}"
def __init__(self, hummingbot_application): super(HummingbotCompleter, self).__init__() self.hummingbot_application = hummingbot_application self._path_completer = WordCompleter(file_name_list(CONF_FILE_PATH, "yml")) self._command_completer = WordCompleter(self.parser.commands, ignore_case=True) self._exchange_completer = WordCompleter(sorted(AllConnectorSettings.get_connector_settings().keys()), ignore_case=True) self._spot_completer = WordCompleter(sorted(AllConnectorSettings.get_exchange_names().union(SPOT_PROTOCOL_CONNECTOR)), ignore_case=True) self._spot_exchange_completer = WordCompleter(sorted(AllConnectorSettings.get_exchange_names()), ignore_case=True) self._trading_timeframe_completer = WordCompleter(["infinite", "from_date_to_date", "daily_between_times"], ignore_case=True) self._derivative_completer = WordCompleter(AllConnectorSettings.get_derivative_names(), ignore_case=True) self._derivative_exchange_completer = WordCompleter(AllConnectorSettings.get_derivative_names().difference(DERIVATIVE_PROTOCOL_CONNECTOR), ignore_case=True) self._connect_option_completer = WordCompleter(CONNECT_OPTIONS, ignore_case=True) self._export_completer = WordCompleter(["keys", "trades"], ignore_case=True) self._balance_completer = WordCompleter(["limit", "paper"], ignore_case=True) self._history_completer = WordCompleter(["--days", "--verbose", "--precision"], ignore_case=True) self._gateway_completer = WordCompleter(["generate_certs", "list-configs", "update"], ignore_case=True) self._strategy_completer = WordCompleter(STRATEGIES, ignore_case=True) self._py_file_completer = WordCompleter(file_name_list(SCRIPTS_PATH, "py")) self._rate_oracle_completer = WordCompleter([r.name for r in RateOracleSource], ignore_case=True)
PMM_SCRIPT_FILE_PATH_KEY: ConfigVar( key=PMM_SCRIPT_FILE_PATH_KEY, prompt='Enter path to your PMM script file >>> ', type_str="str", required_if=lambda: global_config_map[PMM_SCRIPT_ENABLED_KEY].value, validator=validate_pmm_script_file_path), "balance_asset_limit": ConfigVar(key="balance_asset_limit", prompt="Use the `balance limit` command" "e.g. balance limit [EXCHANGE] [ASSET] [AMOUNT]", required_if=lambda: False, type_str="json", default={ exchange: None for exchange in AllConnectorSettings.get_exchange_names() }), "manual_gas_price": ConfigVar( key="manual_gas_price", prompt= "Enter fixed gas price (in Gwei) you want to use for Ethereum transactions >>> ", required_if=lambda: False, type_str="decimal", validator=lambda v: validate_decimal(v, Decimal(0), inclusive=False), default=50), "gateway_api_host": ConfigVar(key="gateway_api_host", prompt=None, required_if=lambda: False, default='localhost'),
type_str="bool", default=False, validator=validate_bool), "script_file_path": ConfigVar(key="script_file_path", prompt='Enter path to your script file >>> ', type_str="str", required_if=lambda: global_config_map["script_enabled"].value, validator=validate_script_file_path), "balance_asset_limit": ConfigVar(key="balance_asset_limit", prompt="Use the `balance limit` command" "e.g. balance limit [EXCHANGE] [ASSET] [AMOUNT]", required_if=lambda: False, type_str="json", default={exchange: None for exchange in AllConnectorSettings.get_exchange_names()}), "manual_gas_price": ConfigVar(key="manual_gas_price", prompt="Enter fixed gas price (in Gwei) you want to use for Ethereum transactions >>> ", required_if=lambda: False, type_str="decimal", validator=lambda v: validate_decimal(v, Decimal(0), inclusive=False), default=50), "gateway_api_host": ConfigVar(key="gateway_api_host", prompt=None, required_if=lambda: False, default='localhost'), "gateway_api_port": ConfigVar(key="gateway_api_port", prompt="Please enter your Gateway API port >>> ",