From a8974ce5354d1db5982f498cdbef522e14bade27 Mon Sep 17 00:00:00 2001 From: chaosyu Date: Wed, 7 Jul 2021 15:14:05 +0800 Subject: [PATCH] bug fix: ClientProvider cannot set connection to calendar and instrument providers --- qlib/data/data.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qlib/data/data.py b/qlib/data/data.py index eb7fbe0ea..27c181164 100644 --- a/qlib/data/data.py +++ b/qlib/data/data.py @@ -1028,13 +1028,21 @@ class ClientProvider(BaseProvider): """ def __init__(self): + def is_instance_of_provider(instance: object, cls: type): + if isinstance(instance, Wrapper): + p = getattr(instance, "_provider", None) + + return False if p is None else isinstance(p, cls) + + return isinstance(instance, cls) + from .client import Client self.client = Client(C.flask_server, C.flask_port) self.logger = get_module_logger(self.__class__.__name__) - if isinstance(Cal, ClientCalendarProvider): + if is_instance_of_provider(Cal, ClientCalendarProvider): Cal.set_conn(self.client) - if isinstance(Inst, ClientInstrumentProvider): + if is_instance_of_provider(Inst, ClientInstrumentProvider): Inst.set_conn(self.client) if hasattr(DatasetD, "provider"): DatasetD.provider.set_conn(self.client)