| Total Complexity | 18 | 
| Total Lines | 100 | 
| Duplicated Lines | 0 % | 
| Changes | 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 |