Completed
Push — master ( fbd1f9...5c6af9 )
by Osma
19s queued 12s
created

annif.backend._yake()   A

Complexity

Conditions 2

Size

Total Lines 6
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 6
nop 0
dl 0
loc 6
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
    return dummy.DummyBackend
8
9
10
def _ensemble():
11
    from . import ensemble
12
    return ensemble.EnsembleBackend
13
14
15
def _fasttext():
16
    try:
17
        from . import fasttext
18
        return fasttext.FastTextBackend
19
    except ImportError:
20
        raise ValueError("fastText not available, cannot use fasttext backend")
21
22
23
def _http():
24
    from . import http
25
    return http.HTTPBackend
26
27
28
def _mllm():
29
    from . import mllm
30
    return mllm.MLLMBackend
31
32
33
def _nn_ensemble():
34
    try:
35
        from . import nn_ensemble
36
        return nn_ensemble.NNEnsembleBackend
37
    except ImportError:
38
        raise ValueError("Keras and TensorFlow not available, cannot use " +
39
                         "nn_ensemble backend")
40
41
42
def _omikuji():
43
    try:
44
        from . import omikuji
45
        return omikuji.OmikujiBackend
46
    except ImportError:
47
        raise ValueError("Omikuji not available, cannot use omikuji backend")
48
49
50
def _pav():
51
    from . import pav
52
    return pav.PAVBackend
53
54
55
def _stwfsa():
56
    from . import stwfsa
57
    return stwfsa.StwfsaBackend
58
59
60
def _svc():
61
    from . import svc
62
    return svc.SVCBackend
63
64
65
def _tfidf():
66
    from . import tfidf
67
    return tfidf.TFIDFBackend
68
69
70
def _yake():
71
    try:
72
        from . import yake
73
        return yake.YakeBackend
74
    except ImportError:
75
        raise ValueError("YAKE not available, cannot use yake backend")
76
77
78
# registry of the above functions
79
_backend_fns = {
80
    'dummy': _dummy,
81
    'ensemble': _ensemble,
82
    'fasttext': _fasttext,
83
    'http': _http,
84
    'mllm': _mllm,
85
    'nn_ensemble': _nn_ensemble,
86
    'omikuji': _omikuji,
87
    'pav': _pav,
88
    'stwfsa': _stwfsa,
89
    'svc': _svc,
90
    'tfidf': _tfidf,
91
    'yake': _yake
92
}
93
94
95
def get_backend(backend_id):
96
    if backend_id in _backend_fns:
97
        return _backend_fns[backend_id]()
98
    else:
99
        raise ValueError("No such backend type {}".format(backend_id))
100