summaryrefslogtreecommitdiff
path: root/searx/utils.py
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2022-12-26 08:32:58 +0000
committerAlexandre Flament <alex@al-f.net>2022-12-26 18:44:23 +0000
commitf3515041af527741cbdc383434d099c38e40dfba (patch)
treec2b9be472c75618133c701a5bd88eccc5ae54025 /searx/utils.py
parentec4237586db661f023df30f0ffee2a7f8761ceaa (diff)
downloadsearxng-f3515041af527741cbdc383434d099c38e40dfba.tar.gz
searxng-f3515041af527741cbdc383434d099c38e40dfba.zip
Lazy load fasttext-predict
Diffstat (limited to 'searx/utils.py')
-rw-r--r--searx/utils.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/searx/utils.py b/searx/utils.py
index 2157a4ce0..cda336035 100644
--- a/searx/utils.py
+++ b/searx/utils.py
@@ -15,7 +15,6 @@ from os.path import splitext, join
from random import choice
from html.parser import HTMLParser
from urllib.parse import urljoin, urlparse
-import fasttext
from lxml import html
from lxml.etree import ElementBase, XPath, XPathError, XPathSyntaxError, _ElementStringResult, _ElementUnicodeResult
@@ -51,12 +50,9 @@ _STORAGE_UNIT_VALUE: Dict[str, int] = {
_XPATH_CACHE: Dict[str, XPath] = {}
_LANG_TO_LC_CACHE: Dict[str, Dict[str, str]] = {}
-_FASTTEXT_MODEL: Optional[fasttext.FastText._FastText] = None
+_FASTTEXT_MODEL: Optional["fasttext.FastText._FastText"] = None
"""fasttext model to predict laguage of a search term"""
-# Monkey patch: prevent fasttext from showing a (useless) warning when loading a model.
-fasttext.FastText.eprint = lambda x: None
-
class _NotSetClass: # pylint: disable=too-few-public-methods
"""Internal class for this module, do not create instance of this class.
@@ -630,9 +626,13 @@ def eval_xpath_getindex(elements: ElementBase, xpath_spec: XPathSpecType, index:
return default
-def _get_fasttext_model() -> fasttext.FastText._FastText:
+def _get_fasttext_model() -> "fasttext.FastText._FastText":
global _FASTTEXT_MODEL # pylint: disable=global-statement
if _FASTTEXT_MODEL is None:
+ import fasttext # pylint: disable=import-outside-toplevel
+
+ # Monkey patch: prevent fasttext from showing a (useless) warning when loading a model.
+ fasttext.FastText.eprint = lambda x: None
_FASTTEXT_MODEL = fasttext.load_model(str(data_dir / 'lid.176.ftz'))
return _FASTTEXT_MODEL