From 8a0135d79a601391454bd56f18ba97c959f3feac Mon Sep 17 00:00:00 2001 From: Young Date: Mon, 2 Nov 2020 09:42:07 +0000 Subject: [PATCH] fix data provider init bug --- qlib/__init__.py | 1 + qlib/config.py | 3 ++- qlib/data/data.py | 15 +++------------ qlib/model/base.py | 2 +- qlib/utils/__init__.py | 6 +++--- qlib/workflow/expm.py | 2 +- 6 files changed, 11 insertions(+), 18 deletions(-) diff --git a/qlib/__init__.py b/qlib/__init__.py index 8620acdb7..83c36dbd3 100644 --- a/qlib/__init__.py +++ b/qlib/__init__.py @@ -35,6 +35,7 @@ def init(default_conf="client", **kwargs): if _logging_config: set_log_with_config(_logging_config) + # FIXME: this logger ignored the level in config LOG = get_module_logger("Initialization", level=logging.INFO) LOG.info(f"default_conf: {default_conf}.") diff --git a/qlib/config.py b/qlib/config.py index 878888a84..31acfc535 100644 --- a/qlib/config.py +++ b/qlib/config.py @@ -13,7 +13,8 @@ Two modes are supported import copy from pathlib import Path -import re, os +import re +import os class Config: diff --git a/qlib/data/data.py b/qlib/data/data.py index 11dc62d91..eb92425a8 100644 --- a/qlib/data/data.py +++ b/qlib/data/data.py @@ -1035,10 +1035,7 @@ def register_all_wrappers(): _calendar_provider = init_instance_by_config(C.calendar_provider, module) if getattr(C, "calendar_cache", None) is not None: - _calendar_cache_config = {} - _calendar_cache_config.update(C.calendar_cache) - _calendar_cache_config["kwargs"].update(provider=_calendar_provider) - _calendar_provider = init_instance_by_config(_calendar_cache_config, module) + _calendar_provider = init_instance_by_config(C.calendar_cache, module, provide=_calendar_provider) register_wrapper(Cal, _calendar_provider, "qlib.data") logger.debug(f"registering Cal {C.calendar_provider}-{C.calenar_cache}") @@ -1054,19 +1051,13 @@ def register_all_wrappers(): # This provider is unnecessary in client provider _eprovider = init_instance_by_config(C.expression_provider, module) if getattr(C, "expression_cache", None) is not None: - _expression_cache_config = {} - _expression_cache_config.update(C.expression_cache) - _expression_cache_config["kwargs"].update(provider=_eprovider) - _eprovider = init_instance_by_config(C.expression_cache, module) + _eprovider = init_instance_by_config(C.expression_cache, module, provider=_eprovider) register_wrapper(ExpressionD, _eprovider, "qlib.data") logger.debug(f"registering ExpressioneD {C.expression_provider}-{C.expression_cache}") _dprovider = init_instance_by_config(C.dataset_provider, module) if getattr(C, "dataset_cache", None) is not None: - _dataset_cache_config = {} - _dataset_cache_config.update(C.dataset_cache) - _dataset_cache_config["kwargs"].update(provider=_dprovider) - _dprovider = init_instance_by_config(_dataset_cache_config, module) + _dprovider = init_instance_by_config(C.dataset_cache, module, provider=_dprovider) register_wrapper(DatasetD, _dprovider, "qlib.data") logger.debug(f"registering DataseteD {C.dataset_provider}-{C.dataset_cache}") diff --git a/qlib/model/base.py b/qlib/model/base.py index 3a6ad504e..02333bfb6 100644 --- a/qlib/model/base.py +++ b/qlib/model/base.py @@ -14,7 +14,7 @@ class BaseModel(Serializable, metaclass=abc.ABCMeta): pass def __call__(self, *args, **kwargs) -> object: - """ levarge Python syntactic sugar to make the models' behaviors like functions """ + """ leverage Python syntactic sugar to make the models' behaviors like functions """ return self.predict(*args, **kwargs) diff --git a/qlib/utils/__init__.py b/qlib/utils/__init__.py index ca0ff4c28..dcf2473ef 100644 --- a/qlib/utils/__init__.py +++ b/qlib/utils/__init__.py @@ -195,7 +195,7 @@ def get_cls_kwargs(config: Union[dict, str], module) -> (type, dict): def init_instance_by_config( - config: Union[str, dict], module=None, accept_types: Union[type, Tuple[type]] = tuple([]) + config: Union[str, dict], module=None, accept_types: Union[type, Tuple[type]] = tuple([]), **kwargs ) -> object: """ get initialized instance with config @@ -229,8 +229,8 @@ def init_instance_by_config( if module is None: module = get_module_by_module_path(config["module_path"]) - klass, kwargs = get_cls_kwargs(config, module) - return klass(**kwargs) + klass, cls_kwargs = get_cls_kwargs(config, module) + return klass(**cls_kwargs, **kwargs) def compare_dict_value(src_data: dict, dst_data: dict): diff --git a/qlib/workflow/expm.py b/qlib/workflow/expm.py index 34a76e61d..0f27c200e 100644 --- a/qlib/workflow/expm.py +++ b/qlib/workflow/expm.py @@ -9,7 +9,7 @@ from .exp import MLflowExperiment from .recorder import MLflowRecorder from ..log import get_module_logger -logger = get_module_logger("workflow", "Warning") +logger = get_module_logger("workflow", "WARN") class ExpManager: