Skip to content

Commit d339957

Browse files
committed
Resolve review comments
1 parent 0321851 commit d339957

7 files changed

Lines changed: 19 additions & 32 deletions

File tree

lean/commands/backtest.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ def backtest(project: Path,
299299
extra_config: Optional[Tuple[str, str]],
300300
extra_docker_config: Optional[str],
301301
no_update: bool,
302-
parameter: List[Tuple[str, str]] = None,
302+
parameter: List[Tuple[str, str]],
303303
**kwargs) -> None:
304304
"""Backtest a project locally using Docker.
305305
@@ -399,8 +399,7 @@ def backtest(project: Path,
399399
kwargs, logger, environment_name, container_module_version)
400400

401401
if parameter:
402-
from lean.components.config.lean_config_manager import LeanConfigManager
403-
parameters = LeanConfigManager.parse_parameters(parameter)
402+
parameters = dict(parameter)
404403
logger.debug(f"Using parameters from command line: {parameters}")
405404
lean_config["parameters"] = parameters
406405

lean/commands/cloud/backtest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ def backtest(project: str, name: Optional[str], push: bool, open_browser: bool,
5555
if name is None:
5656
name = container.name_generator.generate_name()
5757

58-
from lean.components.config.lean_config_manager import LeanConfigManager
59-
parameters = LeanConfigManager.parse_parameters(parameter)
58+
parameters = None
59+
if parameter:
60+
parameters = dict(parameter)
61+
logger.debug(f"Using parameters: {parameters}")
6062

6163
cloud_runner = container.cloud_runner
6264
finished_backtest = cloud_runner.run_backtest(cloud_project, name, parameters)

lean/components/api/backtest_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def get(self, project_id: int, backtest_id: str) -> QCBacktest:
4040

4141
return QCBacktest(**data["backtest"])
4242

43-
def create(self, project_id: int, compile_id: str, name: str, parameters: Dict[str, Union[int, float, str]] = None) -> QCBacktest:
43+
def create(self, project_id: int, compile_id: str, name: str, parameters: Dict[str, str] = None) -> QCBacktest:
4444
"""Creates a new backtest.
4545
4646
:param project_id: the id of the project to create a backtest for

lean/components/cloud/cloud_runner.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def is_backtest_done(self, backtest_data: QCBacktest, delay: float = 10.0):
7575
self._logger.error(f"Error checking backtest completion status for ID {backtest_data.backtestId}: {e}")
7676
raise
7777

78-
def run_backtest(self, project: QCProject, name: str, parameters: Dict[str, Union[int, float, str]] = None) -> QCBacktest:
78+
def run_backtest(self, project: QCProject, name: str, parameters: Dict[str, str] = None) -> QCBacktest:
7979
"""Runs a backtest in the cloud.
8080
8181
:param project: the project to backtest
@@ -87,8 +87,6 @@ def run_backtest(self, project: QCProject, name: str, parameters: Dict[str, Unio
8787
created_backtest = self._api_client.backtests.create(project.projectId, finished_compile.compileId, name, parameters)
8888

8989
self._logger.info(f"Started backtest named '{name}' for project '{project.name}'")
90-
if parameters:
91-
self._logger.debug(f"Using parameters: {parameters}")
9290
self._logger.info(f"Backtest url: {created_backtest.get_url()}")
9391

9492
try:

lean/components/config/lean_config_manager.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
from os.path import normcase, normpath
1515
from pathlib import Path
16-
from typing import Any, Dict, Optional, List, Tuple, Union
16+
from typing import Any, Dict, Optional, List
17+
1718

1819
from lean.components.cloud.module_manager import ModuleManager
1920
from lean.components.config.cli_config_manager import CLIConfigManager
@@ -352,16 +353,3 @@ def parse_json(self, content) -> Dict[str, Any]:
352353
# just in case slower fallback
353354
from json5 import loads
354355
return loads(content)
355-
356-
@staticmethod
357-
def parse_parameters(parameters: List[Tuple[str, str]]) -> Dict[str, Union[int, float, str]]:
358-
"""Parse parameters from command line to appropriate types."""
359-
parsed: Dict[str, Union[int, float, str]] = {}
360-
for key, value in parameters:
361-
try:
362-
num = float(value)
363-
parsed_value = int(num) if num.is_integer() else num
364-
except ValueError:
365-
parsed_value = value
366-
parsed[key] = parsed_value
367-
return parsed

tests/commands/cloud/test_backtest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ def test_cloud_backtest_with_parameters() -> None:
271271
parameters = args[2]
272272

273273
# --parameter values should be parsed correctly
274-
assert parameters["integer"] == 123.0
275-
assert parameters["float"] == 456.789
274+
assert parameters["integer"] == "123"
275+
assert parameters["float"] == "456.789"
276276
assert parameters["string"] == "hello world"
277-
assert parameters["negative"] == -42.5
277+
assert parameters["negative"] == "-42.5"

tests/commands/test_backtest.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -750,10 +750,10 @@ def test_backtest_with_parameters() -> None:
750750
parameters = lean_config["parameters"]
751751

752752
# --parameter values should be parsed correctly
753-
assert parameters["integer"] == 123.0
754-
assert parameters["float"] == 456.789
753+
assert parameters["integer"] == "123"
754+
assert parameters["float"] == "456.789"
755755
assert parameters["string"] == "hello world"
756-
assert parameters["negative"] == -42.5
756+
assert parameters["negative"] == "-42.5"
757757

758758

759759
def test_backtest_parameters_override_config_json() -> None:
@@ -805,7 +805,7 @@ def test_backtest_parameters_override_config_json() -> None:
805805
# Only CLI --parameter values should remain
806806
assert "param1" not in parameters
807807
assert "param2" not in parameters
808-
assert parameters["integer"] == 123
809-
assert parameters["float"] == 456.789
808+
assert parameters["integer"] == "123"
809+
assert parameters["float"] == "456.789"
810810
assert parameters["string"] == "hello world"
811-
assert parameters["negative"] == -42.5
811+
assert parameters["negative"] == "-42.5"

0 commit comments

Comments
 (0)