import importlib from typing import List import ding from .default_helper import one_time_warning def try_import_ceph(): """ Overview: Try import ceph module, if failed, return ``None`` Returns: - (:obj:`Module`): Imported module, or ``None`` when ceph not found """ try: import ceph client = ceph.S3Client() return client except ModuleNotFoundError as e: try: from petrel_client.client import Client client = Client(conf_path='~/petreloss.conf') return client except ModuleNotFoundError as e: one_time_warning("You have not installed ceph package! DI-engine has changed to some alternatives.") ceph = None return ceph def try_import_mc(): """ Overview: Try import mc module, if failed, return ``None`` Returns: - (:obj:`Module`): Imported module, or ``None`` when mc not found """ try: import mc except ModuleNotFoundError as e: # one_time_warning("You have not installed memcache package! DI-engine has changed to some alternatives.") mc = None return mc def try_import_redis(): """ Overview: Try import redis module, if failed, return ``None`` Returns: - (:obj:`Module`): Imported module, or ``None`` when redis not found """ try: import redis except ModuleNotFoundError as e: one_time_warning("You have not installed redis package! DI-engine has changed to some alternatives.") redis = None return redis def try_import_rediscluster(): """ Overview: Try import rediscluster module, if failed, return ``None`` Returns: - (:obj:`Module`): Imported module, or ``None`` when rediscluster not found """ try: import rediscluster except ModuleNotFoundError as e: one_time_warning("You have not installed rediscluster package! DI-engine has changed to some alternatives.") rediscluster = None return rediscluster def try_import_link(): """ Overview: Try import linklink module, if failed, import ding.tests.fake_linklink instead Returns: - (:obj:`Module`): Imported module (may be ``fake_linklink``) """ if ding.enable_linklink: try: import linklink as link except ModuleNotFoundError as e: one_time_warning("You have not installed linklink package! DI-engine has changed to some alternatives.") from .fake_linklink import link else: from .fake_linklink import link return link def import_module(modules: List[str]) -> None: """ Overview: Import several module as a list Arguments: - (:obj:`str list`): List of module names """ for name in modules: importlib.import_module(name)