Passed
Push — master ( eb437a...a53d46 )
by Juho
03:20 queued 15s
created

annif.backend._xtransformer()   A

Complexity

Conditions 2

Size

Total Lines 8
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nop 0
dl 0
loc 8
rs 10
c 0
b 0
f 0
1
"""Registry of backend types for Annif"""
2
3
4
# define functions for lazily importing each backend (alphabetical order)
5
def _dummy():
6
    from . import dummy
7
8
    return dummy.DummyBackend
9
10
11
def _ensemble():
12
    from . import ensemble
13
14
    return ensemble.EnsembleBackend
15
16
17
def _fasttext():
18
    try:
19
        from . import fasttext
20
21
        return fasttext.FastTextBackend
22
    except ImportError:
23
        raise ValueError("fastText not available, cannot use fasttext backend")
24
25
26
def _http():
27
    from . import http
28
29
    return http.HTTPBackend
30
31
32
def _mllm():
33
    from . import mllm
34
35
    return mllm.MLLMBackend
36
37
38
def _nn_ensemble():
39
    try:
40
        from . import nn_ensemble
41
42
        return nn_ensemble.NNEnsembleBackend
43
    except ImportError:
44
        raise ValueError(
45
            "Keras and TensorFlow not available, cannot use " + "nn_ensemble backend"
46
        )
47
48
49
def _omikuji():
50
    try:
51
        from . import omikuji
52
53
        return omikuji.OmikujiBackend
54
    except ImportError:
55
        raise ValueError("Omikuji not available, cannot use omikuji backend")
56
57
58
def _pav():
59
    from . import pav
60
61
    return pav.PAVBackend
62
63
64
def _stwfsa():
65
    from . import stwfsa
66
67
    return stwfsa.StwfsaBackend
68
69
70
def _svc():
71
    from . import svc
72
73
    return svc.SVCBackend
74
75
76
def _tfidf():
77
    from . import tfidf
78
79
    return tfidf.TFIDFBackend
80
81
82
def _xtransformer():
83
    try:
84
        from . import xtransformer
85
86
        return xtransformer.XTransformerBackend
87
    except ImportError:
88
        raise ValueError(
89
            "XTransformer not available, not enabling XTransformer backend"
90
        )
91
92
93
def _yake():
94
    try:
95
        from . import yake
96
97
        return yake.YakeBackend
98
    except ImportError:
99
        raise ValueError("YAKE not available, cannot use yake backend")
100
101
102
# registry of the above functions
103
_backend_fns = {
104
    "dummy": _dummy,
105
    "ensemble": _ensemble,
106
    "fasttext": _fasttext,
107
    "http": _http,
108
    "mllm": _mllm,
109
    "nn_ensemble": _nn_ensemble,
110
    "omikuji": _omikuji,
111
    "pav": _pav,
112
    "stwfsa": _stwfsa,
113
    "svc": _svc,
114
    "tfidf": _tfidf,
115
    "xtransformer": _xtransformer,
116
    "yake": _yake,
117
}
118
119
120
def get_backend(backend_id):
121
    if backend_id in _backend_fns:
122
        return _backend_fns[backend_id]()
123
    else:
124
        raise ValueError("No such backend type {}".format(backend_id))
125