From cb72857710ebe008a4c18f2c421d315ab8ec70ac Mon Sep 17 00:00:00 2001 From: Young Date: Tue, 6 Jul 2021 05:20:53 +0000 Subject: [PATCH] fix annotation recursive error --- qlib/backtest/__init__.py | 12 ++++++++++-- qlib/backtest/backtest.py | 7 ++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/qlib/backtest/__init__.py b/qlib/backtest/__init__.py index 0de290f02..b2c3f8c09 100644 --- a/qlib/backtest/__init__.py +++ b/qlib/backtest/__init__.py @@ -1,9 +1,13 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. +from __future__ import annotations import copy -from typing import Union +from typing import Union, TYPE_CHECKING from .account import Account + +if TYPE_CHECKING: + from ..strategy.base import BaseStrategy from .exchange import Exchange from .executor import BaseExecutor from .backtest import backtest_loop @@ -11,7 +15,6 @@ from .backtest import collect_data_loop from .utils import CommonInfrastructure from .order import Order -from ..strategy.base import BaseStrategy from ..utils import init_instance_by_config from ..log import get_module_logger from ..config import C @@ -137,6 +140,11 @@ def get_strategy_executor( pos_type: str = "Position", ): + # NOTE: + # - for avoiding recursive import + # - typing annotations is not reliable + from ..strategy.base import BaseStrategy + trade_account = create_account_instance( start_time=start_time, end_time=end_time, benchmark=benchmark, account=account, pos_type=pos_type ) diff --git a/qlib/backtest/backtest.py b/qlib/backtest/backtest.py index 0ac4581da..48d06db6c 100644 --- a/qlib/backtest/backtest.py +++ b/qlib/backtest/backtest.py @@ -1,7 +1,12 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. + +from __future__ import annotations from qlib.backtest.order import BaseTradeDecision -from qlib.strategy.base import BaseStrategy +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from qlib.strategy.base import BaseStrategy from qlib.backtest.executor import BaseExecutor from ..utils.time import Freq from tqdm.auto import tqdm