File size: 2,897 Bytes
079c32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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)