This commit is contained in:
Ivan Gabaldon
2026-09-01 21:46:00 +02:00
parent aee33412aa
commit 401d7f9f51
85 changed files with 48 additions and 73 deletions

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementation of the :py:obj:`preference <searx.preference>` settings.""" """Implementation of the :py:obj:`preference <searx.preference>` settings."""
# pylint: disable = too-few-public-methods # pylint: disable = too-few-public-methods
import typing as t import typing as t

View File

@@ -38,7 +38,6 @@ area:
""" """
__all__ = ["AnswererInfo", "Answerer", "AnswerStorage"] __all__ = ["AnswererInfo", "Answerer", "AnswerStorage"]

View File

@@ -13,7 +13,6 @@ from dataclasses import dataclass
from searx.utils import load_module from searx.utils import load_module
from searx.result_types.answer import BaseAnswer from searx.result_types.answer import BaseAnswer
_default = pathlib.Path(__file__).parent _default = pathlib.Path(__file__).parent
log: logging.Logger = logging.getLogger("searx.answerers") log: logging.Logger = logging.getLogger("searx.answerers")

View File

@@ -5,7 +5,6 @@ Implementations used for bot detection.
""" """
__all__ = ["init", "dump_request", "get_network", "too_many_requests", "ProxyFix"] __all__ = ["init", "dump_request", "get_network", "too_many_requests", "ProxyFix"]

View File

@@ -182,7 +182,7 @@ class Config:
if default is UNSET: if default is UNSET:
raise KeyError(name) raise KeyError(name)
return default return default
(modulename, name) = str(fqn).rsplit('.', 1) modulename, name = str(fqn).rsplit('.', 1)
m = __import__(modulename, {}, {}, [name], 0) m = __import__(modulename, {}, {}, [name], 0)
return getattr(m, name) return getattr(m, name)

View File

@@ -13,7 +13,6 @@ Accept_ header ..
""" """
from ipaddress import ( from ipaddress import (
IPv4Network, IPv4Network,
IPv6Network, IPv6Network,

View File

@@ -14,7 +14,6 @@ bot if the Accept-Encoding_ header ..
""" """
from ipaddress import ( from ipaddress import (
IPv4Network, IPv4Network,
IPv6Network, IPv6Network,

View File

@@ -11,7 +11,6 @@ if the Accept-Language_ header is unset.
""" """
from ipaddress import ( from ipaddress import (
IPv4Network, IPv4Network,
IPv6Network, IPv6Network,

View File

@@ -11,7 +11,6 @@ the Connection_ header is set to ``close``.
""" """
from ipaddress import ( from ipaddress import (
IPv4Network, IPv4Network,
IPv6Network, IPv6Network,

View File

@@ -20,6 +20,7 @@ Metadata`_. A request is filtered out in case of:
""" """
# pylint: disable=unused-argument # pylint: disable=unused-argument

View File

@@ -12,7 +12,6 @@ the User-Agent_ header is unset or matches the regular expression
""" """
import re import re
from ipaddress import ( from ipaddress import (
IPv4Network, IPv4Network,
@@ -25,7 +24,6 @@ import flask
from . import config from . import config
from ._helpers import too_many_requests from ._helpers import too_many_requests
USER_AGENT = ( USER_AGENT = (
r'(' r'('
+ r'unknown' + r'unknown'

View File

@@ -55,7 +55,6 @@ from ._helpers import (
logger, logger,
) )
logger = logger.getChild('ip_limit') logger = logger.getChild('ip_limit')
BURST_WINDOW = 20 BURST_WINDOW = 20

View File

@@ -23,6 +23,7 @@ The ``ip_lists`` method implements :py:obj:`block-list <block_ip>` and
] ]
""" """
# pylint: disable=unused-argument # pylint: disable=unused-argument

View File

@@ -1,6 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementation of a middleware to determine the real IP of an HTTP request """Implementation of a middleware to determine the real IP of an HTTP request
(:py:obj:`flask.request.remote_addr`) behind a proxy chain.""" (:py:obj:`flask.request.remote_addr`) behind a proxy chain."""
# pylint: disable=too-many-branches # pylint: disable=too-many-branches

View File

@@ -1,7 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Providing a Valkey database for the botdetection methods.""" """Providing a Valkey database for the botdetection methods."""
import valkey import valkey
__all__ = ["set_valkey_client", "get_valkey_client"] __all__ = ["set_valkey_client", "get_valkey_client"]

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementations needed for a branding of SearXNG.""" """Implementations needed for a branding of SearXNG."""
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods
# Struct fields aren't discovered in Python 3.14 # Struct fields aren't discovered in Python 3.14

View File

@@ -465,7 +465,7 @@ class ExpireCacheSQLite(sqlitedb.SQLiteAppl, ExpireCache):
# Check if value is expired. It's possible that it's expired but has not # Check if value is expired. It's possible that it's expired but has not
# yet been automatically deleted by the periodic maintenance # yet been automatically deleted by the periodic maintenance
(value, expire) = row value, expire = row
now = time.time() now = time.time()
if expire < now: if expire < now:
# The record is deleted during the maintenance interval. Deleting # The record is deleted during the maintenance interval. Deleting

View File

@@ -3,7 +3,6 @@
import warnings import warnings
# limiter backward compatibility # limiter backward compatibility
# ------------------------------ # ------------------------------

View File

@@ -4,6 +4,7 @@
make data.all make data.all
""" """
# pylint: disable=invalid-name # pylint: disable=invalid-name
__all__ = ["ahmia_blacklist_loader", "data_dir", "get_cache"] __all__ = ["ahmia_blacklist_loader", "data_dir", "get_cache"]

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Simple implementation to store TrackerPatterns data in a SQL database.""" """Simple implementation to store TrackerPatterns data in a SQL database."""
# pylint: disable=too-many-branches # pylint: disable=too-many-branches
import typing as t import typing as t

View File

@@ -25,6 +25,7 @@ To use this engine, add an entry similar to the following to your engine list in
https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app
""" """
import typing as t import typing as t
from searx.enginelib import EngineCache from searx.enginelib import EngineCache

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""BASE (Scholar publications)""" """BASE (Scholar publications)"""
from datetime import datetime from datetime import datetime
import re import re

View File

@@ -83,7 +83,6 @@ from threading import Thread
from searx import logger from searx import logger
from searx.result_types import EngineResults from searx.result_types import EngineResults
engine_type = 'offline' engine_type = 'offline'
paging = True paging = True
command = [] command = []

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Docker Hub (IT)""" """Docker Hub (IT)"""
# pylint: disable=use-dict-literal # pylint: disable=use-dict-literal
from urllib.parse import urlencode from urllib.parse import urlencode

View File

@@ -164,6 +164,7 @@ Terms / phrases that you keep coming across:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Language https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Accept-Language
""" """
# pylint: disable=global-statement # pylint: disable=global-statement
import json import json

View File

@@ -12,6 +12,7 @@ least we could not find out how language support should work. It seems that
most of the features are based on English terms. most of the features are based on English terms.
""" """
import typing as t import typing as t
from urllib.parse import urlencode, urlparse, urljoin from urllib.parse import urlencode, urlparse, urljoin

View File

@@ -17,7 +17,6 @@ from searx.result_types import EngineResults
from searx.extended_types import SXNG_Response from searx.extended_types import SXNG_Response
from searx import weather from searx import weather
about = { about = {
"website": 'https://duckduckgo.com/', "website": 'https://duckduckgo.com/',
"wikidata_id": 'Q12805', "wikidata_id": 'Q12805',

View File

@@ -2,7 +2,6 @@
# pylint: disable=invalid-name # pylint: disable=invalid-name
"""Dummy Offline""" """Dummy Offline"""
# about # about
about = { about = {
"wikidata_id": None, "wikidata_id": None,

View File

@@ -65,7 +65,6 @@ code lines are just relabeled (starting from 1) and appended (a disjoint set of
code blocks in a single file might be returned from the API). code blocks in a single file might be returned from the API).
""" """
import typing as t import typing as t
from urllib.parse import urlencode from urllib.parse import urlencode

View File

@@ -4,7 +4,6 @@
from urllib.parse import urlencode from urllib.parse import urlencode
from dateutil import parser from dateutil import parser
about = { about = {
# pylint: disable=line-too-long # pylint: disable=line-too-long
"website": "https://hex.pm/", "website": "https://hex.pm/",

View File

@@ -108,14 +108,12 @@ def get_infobox(alt_forms, result_url, definitions):
infobox_content.append(f'<p><i>Other forms:</i> {", ".join(alt_forms[1:])}</p>') infobox_content.append(f'<p><i>Other forms:</i> {", ".join(alt_forms[1:])}</p>')
# definitions # definitions
infobox_content.append( infobox_content.append('''
'''
<small><a href="https://www.edrdg.org/wiki/index.php/JMdict-EDICT_Dictionary_Project">JMdict</a> <small><a href="https://www.edrdg.org/wiki/index.php/JMdict-EDICT_Dictionary_Project">JMdict</a>
and <a href="https://www.edrdg.org/enamdict/enamdict_doc.html">JMnedict</a> and <a href="https://www.edrdg.org/enamdict/enamdict_doc.html">JMnedict</a>
by <a href="https://www.edrdg.org/edrdg/licence.html">EDRDG</a>, CC BY-SA 3.0.</small> by <a href="https://www.edrdg.org/edrdg/licence.html">EDRDG</a>, CC BY-SA 3.0.</small>
<ul> <ul>
''' ''')
)
for pos, engdef, extra in definitions: for pos, engdef, extra in definitions:
if pos == 'Wikipedia definition': if pos == 'Wikipedia definition':
infobox_content.append('</ul><small>Wikipedia, CC BY-SA 3.0.</small><ul>') infobox_content.append('</ul><small>Wikipedia, CC BY-SA 3.0.</small><ul>')

View File

@@ -49,7 +49,6 @@ except ImportError:
from searx.result_types import EngineResults from searx.result_types import EngineResults
engine_type = 'offline' engine_type = 'offline'
# mongodb connection variables # mongodb connection variables

View File

@@ -4,7 +4,6 @@
from urllib.parse import urlencode from urllib.parse import urlencode
from dateutil import parser from dateutil import parser
about = { about = {
"website": "https://npms.io/", "website": "https://npms.io/",
"wikidata_id": "Q7067518", "wikidata_id": "Q7067518",

View File

@@ -9,7 +9,6 @@ from datetime import datetime
from searx.result_types import EngineResults, WeatherAnswer from searx.result_types import EngineResults, WeatherAnswer
from searx import weather from searx import weather
about = { about = {
"website": "https://open-meteo.com", "website": "https://open-meteo.com",
"wikidata_id": None, "wikidata_id": None,

View File

@@ -8,7 +8,6 @@ Openverse (formerly known as: Creative Commons search engine) [Images]
from json import loads from json import loads
from urllib.parse import urlencode from urllib.parse import urlencode
about = { about = {
"website": 'https://openverse.org/', "website": 'https://openverse.org/',
"wikidata_id": None, "wikidata_id": None,

View File

@@ -12,7 +12,6 @@ from searx.enginelib import EngineCache
from searx.exceptions import SearxEngineAPIException, SearxEngineAccessDeniedException from searx.exceptions import SearxEngineAPIException, SearxEngineAccessDeniedException
from searx.network import get from searx.network import get
# about # about
about = { about = {
"website": 'https://www.pexels.com', "website": 'https://www.pexels.com',

View File

@@ -48,7 +48,6 @@ Implementations
""" """
import time import time
import random import random
from urllib.parse import urlencode from urllib.parse import urlencode

View File

@@ -18,7 +18,6 @@ from searx.utils import eval_xpath_list, eval_xpath, extract_text, get_embeded_s
from searx.locales import region_tag from searx.locales import region_tag
from searx.result_types import EngineResults from searx.result_types import EngineResults
if t.TYPE_CHECKING: if t.TYPE_CHECKING:
from lxml.etree import ElementBase from lxml.etree import ElementBase
from searx.extended_types import SXNG_Response from searx.extended_types import SXNG_Response

View File

@@ -35,6 +35,7 @@ Implementations
=============== ===============
""" """
import typing as t import typing as t
from datetime import date, timedelta from datetime import date, timedelta

View File

@@ -34,7 +34,6 @@ from searx.exceptions import SearxEngineAPIException
from searx.result_types import EngineResults from searx.result_types import EngineResults
from searx.extended_types import SXNG_Response from searx.extended_types import SXNG_Response
base_url = 'http://localhost:8983' base_url = 'http://localhost:8983'
collection = '' collection = ''
rows = 10 rows = 10

View File

@@ -44,6 +44,7 @@ Implementations
=============== ===============
""" """
import typing as t import typing as t
import sqlite3 import sqlite3
import contextlib import contextlib

View File

@@ -82,6 +82,7 @@ Startpage's category (for Web-search, News, Videos, ..) is set by
Supported categories are ``web``, ``news`` and ``images``. Supported categories are ``web``, ``news`` and ``images``.
""" """
# pylint: disable=too-many-statements # pylint: disable=too-many-statements
import re import re

View File

@@ -74,7 +74,6 @@ Implementations
=============== ===============
""" """
from urllib.parse import urlencode from urllib.parse import urlencode
from dateutil.parser import parse from dateutil.parser import parse
from searx.utils import html_to_text, humanize_number from searx.utils import html_to_text, humanize_number

View File

@@ -12,7 +12,6 @@ from lxml import html
from searx.result_types import EngineResults from searx.result_types import EngineResults
from searx.utils import eval_xpath_list, eval_xpath, extract_text from searx.utils import eval_xpath_list, eval_xpath, extract_text
if t.TYPE_CHECKING: if t.TYPE_CHECKING:
from lxml.etree import ElementBase from lxml.etree import ElementBase
from searx.extended_types import SXNG_Response from searx.extended_types import SXNG_Response

View File

@@ -3,6 +3,7 @@
Some implementations are shared from :ref:`wikipedia engine`. Some implementations are shared from :ref:`wikipedia engine`.
""" """
# pylint: disable=missing-class-docstring # pylint: disable=missing-class-docstring
import typing as t import typing as t

View File

@@ -3,7 +3,6 @@
Wolfram|Alpha (Science) Wolfram|Alpha (Science)
""" """
from json import loads from json import loads
from urllib.parse import urlencode from urllib.parse import urlencode

View File

@@ -50,6 +50,7 @@ the engine).
Implementations Implementations
=============== ===============
""" """
# pylint: disable=fixme # pylint: disable=fixme

View File

@@ -8,7 +8,6 @@ from lxml import html
from searx.exceptions import SearxEngineCaptchaException from searx.exceptions import SearxEngineCaptchaException
from searx.utils import humanize_bytes, eval_xpath, eval_xpath_list, extract_text, extr from searx.utils import humanize_bytes, eval_xpath, eval_xpath_list, extract_text, extr
# Engine metadata # Engine metadata
about = { about = {
"website": 'https://yandex.com/', "website": 'https://yandex.com/',

View File

@@ -19,6 +19,7 @@
:members: :members:
""" """
# pylint: disable=invalid-name # pylint: disable=invalid-name
__all__ = ["SXNG_Request", "sxng_request", "SXNG_Response"] __all__ = ["SXNG_Request", "sxng_request", "SXNG_Response"]

View File

@@ -5,7 +5,6 @@ import math
from searx.data import EXTERNAL_URLS from searx.data import EXTERNAL_URLS
IMDB_PREFIX_TO_URL_ID = { IMDB_PREFIX_TO_URL_ID = {
'tt': 'imdb_title', 'tt': 'imdb_title',
'mn': 'imdb_name', 'mn': 'imdb_name',

View File

@@ -8,7 +8,6 @@ an example in which the command line is called in the development environment::
(py3) python -m searx.favicons --help (py3) python -m searx.favicons --help
""" """
__all__ = ["init", "favicon_url", "favicon_proxy"] __all__ = ["init", "favicon_url", "favicon_proxy"]
import pathlib import pathlib

View File

@@ -1,7 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementations for a favicon proxy""" """Implementations for a favicon proxy"""
from typing import Callable from typing import Callable
import importlib import importlib

View File

@@ -6,7 +6,6 @@ timeout``) and returns a tuple ``(data, mime)``.
""" """
__all__ = ["DEFAULT_RESOLVER_MAP", "allesedv", "duckduckgo", "google", "kagi", "yandex"] __all__ = ["DEFAULT_RESOLVER_MAP", "allesedv", "duckduckgo", "google", "kagi", "yandex"]
from typing import Callable from typing import Callable

View File

@@ -36,7 +36,6 @@ from .. import get_setting
from ..version import GIT_URL from ..version import GIT_URL
from ..locales import LOCALE_NAMES from ..locales import LOCALE_NAMES
logger = logging.getLogger('searx.infopage') logger = logging.getLogger('searx.infopage')
_INFO_FOLDER = os.path.abspath(os.path.dirname(__file__)) _INFO_FOLDER = os.path.abspath(os.path.dirname(__file__))
INFO_PAGES: 'InfoPageSet' INFO_PAGES: 'InfoPageSet'

View File

@@ -26,7 +26,6 @@ SearXNGs locale implementations
================================ ================================
""" """
import typing as t import typing as t
from pathlib import Path from pathlib import Path

View File

@@ -16,7 +16,6 @@ from searx.exceptions import (
from searx import searx_parent_dir, settings from searx import searx_parent_dir, settings
from searx.engines import engines from searx.engines import engines
errors_per_engines: dict[str, t.Any] = {} errors_per_engines: dict[str, t.Any] = {}
LogParametersType = tuple[str, ...] LogParametersType = tuple[str, ...]

View File

@@ -8,7 +8,6 @@ import threading
from searx import logger from searx import logger
__all__ = ["Histogram", "HistogramStorage", "CounterStorage"] __all__ = ["Histogram", "HistogramStorage", "CounterStorage"]
logger = logger.getChild('searx.metrics') logger = logger.getChild('searx.metrics')

View File

@@ -20,7 +20,6 @@ from searx.extended_types import SXNG_Response
from .client import new_client, get_loop, AsyncHTTPTransportNoHttp from .client import new_client, get_loop, AsyncHTTPTransportNoHttp
from .raise_for_httperror import raise_for_httperror from .raise_for_httperror import raise_for_httperror
logger = logger.getChild('network') logger = logger.getChild('network')
DEFAULT_NAME = '__DEFAULT__' DEFAULT_NAME = '__DEFAULT__'
NETWORKS: dict[str, "Network"] = {} NETWORKS: dict[str, "Network"] = {}

View File

@@ -94,7 +94,6 @@ Implementation
:members: :members:
""" """
__all__ = ["PluginInfo", "Plugin", "PluginStorage", "PluginCfg"] __all__ = ["PluginInfo", "Plugin", "PluginStorage", "PluginCfg"]

View File

@@ -4,6 +4,7 @@ user searches for ``tor-check``. It fetches the tor exit node list from
:py:obj:`url_exit_list` and parses all the IPs into a list, then checks if the :py:obj:`url_exit_list` and parses all the IPs into a list, then checks if the
user's IP address is in it. user's IP address is in it.
""" """
from ipaddress import ip_address from ipaddress import ip_address
import typing import typing

View File

@@ -8,6 +8,7 @@ converters, each converter is one item in the list (compare
of measurement are evaluated. The weighting in the evaluation results from the of measurement are evaluated. The weighting in the evaluation results from the
sorting of the :py:obj:`list of unit converters<symbol_to_si>`. sorting of the :py:obj:`list of unit converters<symbol_to_si>`.
""" """
import typing import typing
import re import re
import babel.numbers import babel.numbers

View File

@@ -9,6 +9,7 @@
gradually. For more, please read :ref:`result types`. gradually. For more, please read :ref:`result types`.
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods

View File

@@ -26,6 +26,7 @@ template.
:members: :members:
:show-inheritance: :show-inheritance:
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods

View File

@@ -12,6 +12,7 @@ template. For highlighting the code passages, Pygments_ is used.
:show-inheritance: :show-inheritance:
""" """
# pylint: disable=too-few-public-methods, disable=invalid-name # pylint: disable=too-few-public-methods, disable=invalid-name
__all__ = ["Code"] __all__ = ["Code"]
@@ -26,7 +27,6 @@ from pygments.formatters import HtmlFormatter # pylint: disable=no-name-in-modu
from ._base import MainResult from ._base import MainResult
_pygments_languages: list[str] = [] _pygments_languages: list[str] = []

View File

@@ -11,6 +11,7 @@ template.
:show-inheritance: :show-inheritance:
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods

View File

@@ -11,6 +11,7 @@ template.
:members: :members:
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods
__all__ = ["Image", "ImageRef"] __all__ = ["Image", "ImageRef"]

View File

@@ -11,6 +11,7 @@ template.
:show-inheritance: :show-inheritance:
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods

View File

@@ -19,6 +19,7 @@ Related topics:
:show-inheritance: :show-inheritance:
""" """
# pylint: disable=too-few-public-methods, disable=invalid-name # pylint: disable=too-few-public-methods, disable=invalid-name
__all__ = ["Paper"] __all__ = ["Paper"]

View File

@@ -8,7 +8,6 @@ from searx import webutils
from searx import engines from searx import engines
from searx.weather import WeatherConditionType from searx.weather import WeatherConditionType
__all__ = [ __all__ = [
'CONSTANT_NAMES', 'CONSTANT_NAMES',
'CATEGORY_NAMES', 'CATEGORY_NAMES',

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementation of the default settings.""" """Implementation of the default settings."""
from __future__ import annotations from __future__ import annotations
import typing as t import typing as t

View File

@@ -1,5 +1,6 @@
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""Implementations used for weather conditions and forecast.""" """Implementations used for weather conditions and forecast."""
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods
__all__ = [ __all__ = [

View File

@@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
"""WebApp""" """WebApp"""
# pylint: disable=use-dict-literal # pylint: disable=use-dict-literal
import json import json
@@ -118,7 +119,6 @@ from searx.sxng_locales import sxng_locales
import searx.search import searx.search
from searx.network import stream as http_stream, set_context_network_name from searx.network import stream as http_stream, set_context_network_name
logger = logger.getChild('webapp') logger = logger.getChild('webapp')
warnings.simplefilter("always") warnings.simplefilter("always")
@@ -1119,17 +1119,13 @@ def stats():
technical_report = [] technical_report = []
for error in engine_reliabilities.get(selected_engine_name, {}).get('errors', []): for error in engine_reliabilities.get(selected_engine_name, {}).get('errors', []):
technical_report.append( technical_report.append(f"\
f"\
Error: {error['exception_classname'] or error['log_message']} \ Error: {error['exception_classname'] or error['log_message']} \
Parameters: {error['log_parameters']} \ Parameters: {error['log_parameters']} \
File name: {error['filename'] }:{ error['line_no'] } \ File name: {error['filename'] }:{ error['line_no'] } \
Error Function: {error['function']} \ Error Function: {error['function']} \
Code: {error['code']} \ Code: {error['code']} \
".replace( ".replace(' ' * 12, '').strip())
' ' * 12, ''
).strip()
)
technical_report = ' '.join(technical_report) technical_report = ' '.join(technical_report)
engine_stats['time'] = sorted(engine_stats['time'], reverse=reverse, key=get_key) engine_stats['time'] = sorted(engine_stats['time'], reverse=reverse, key=get_key)

View File

@@ -7,7 +7,6 @@ from urllib.parse import urlencode
from searx.network import get, post from searx.network import get, post
from searx.utils import gen_useragent from searx.utils import gen_useragent
# SPARQL # SPARQL
SPARQL_ENDPOINT_URL = "https://query.wikidata.org/sparql" SPARQL_ENDPOINT_URL = "https://query.wikidata.org/sparql"
SPARQL_EXPLAIN_URL = "https://query.wikidata.org/bigdata/namespace/wdq/sparql?explain" SPARQL_EXPLAIN_URL = "https://query.wikidata.org/bigdata/namespace/wdq/sparql?explain"

View File

@@ -93,9 +93,7 @@ class WDAmountAttribute(WDAttribute):
def get_where(self): def get_where(self):
return """ OPTIONAL { ?item p:{name} ?{name}Node . return """ OPTIONAL { ?item p:{name} ?{name}Node .
?{name}Node rdf:type wikibase:BestRank ; ps:{name} ?{name} . ?{name}Node rdf:type wikibase:BestRank ; ps:{name} ?{name} .
OPTIONAL { ?{name}Node psv:{name}/wikibase:quantityUnit ?{name}Unit. } }""".replace( OPTIONAL { ?{name}Node psv:{name}/wikibase:quantityUnit ?{name}Unit. } }""".replace('{name}', self.name)
'{name}', self.name
)
def get_group_by(self) -> str: def get_group_by(self) -> str:
return self.get_select() return self.get_select()
@@ -126,9 +124,7 @@ class WDArticle(WDAttribute):
return """OPTIONAL { ?article{language} schema:about ?item ; return """OPTIONAL { ?article{language} schema:about ?item ;
schema:inLanguage "{language}" ; schema:inLanguage "{language}" ;
schema:isPartOf <https://{language}.wikipedia.org/> ; schema:isPartOf <https://{language}.wikipedia.org/> ;
schema:name ?articleName{language} . }""".replace( schema:name ?articleName{language} . }""".replace('{language}', self.language)
'{language}', self.language
)
def get_group_by(self): def get_group_by(self):
return self.get_select() return self.get_select()
@@ -216,9 +212,7 @@ class WDGeoAttribute(WDAttribute):
def get_where(self): def get_where(self):
return """OPTIONAL { ?item p:{name}/psv:{name} [ return """OPTIONAL { ?item p:{name}/psv:{name} [
wikibase:geoLatitude ?{name}Lat ; wikibase:geoLatitude ?{name}Lat ;
wikibase:geoLongitude ?{name}Long ] }""".replace( wikibase:geoLongitude ?{name}Long ] }""".replace('{name}', self.name)
'{name}', self.name
)
def get_group_by(self): def get_group_by(self):
return self.get_select() return self.get_select()
@@ -258,9 +252,7 @@ class WDDateAttribute(WDAttribute):
wikibase:timePrecision ?{name}timePrecision ; wikibase:timePrecision ?{name}timePrecision ;
wikibase:timeTimezone ?{name}timeZone ; wikibase:timeTimezone ?{name}timeZone ;
wikibase:timeCalendarModel ?{name}timeCalendar ] . } wikibase:timeCalendarModel ?{name}timeCalendar ] . }
hint:Prior hint:rangeSafe true;""".replace( hint:Prior hint:rangeSafe true;""".replace('{name}', self.name)
'{name}', self.name
)
def get_group_by(self): def get_group_by(self):
return self.get_select() return self.get_select()

View File

@@ -8,6 +8,7 @@ Output file: :origin:`searx/data/ahmia_blacklist.txt` (:origin:`CI Update data
.. _Ahmia's blacklist: https://ahmia.fi/blacklist/ .. _Ahmia's blacklist: https://ahmia.fi/blacklist/
""" """
# pylint: disable=use-dict-literal # pylint: disable=use-dict-literal
import requests import requests

View File

@@ -12,6 +12,7 @@ The script :origin:`searxng_extra/update/update_engine_traits.py` is called in
the :origin:`CI Update data ... <.github/workflows/data-update.yml>` the :origin:`CI Update data ... <.github/workflows/data-update.yml>`
""" """
# pylint: disable=invalid-name # pylint: disable=invalid-name
import typing as t import typing as t

View File

@@ -6,6 +6,7 @@ Output file: :origin:`searx/data/useragents.json` (:origin:`CI Update data ...
<.github/workflows/data-update.yml>`). <.github/workflows/data-update.yml>`).
""" """
# pylint: disable=use-dict-literal # pylint: disable=use-dict-literal
import json import json

View File

@@ -6,6 +6,7 @@
- :py:obj:`searx.locales.RTL_LOCALES` - :py:obj:`searx.locales.RTL_LOCALES`
- :py:obj:`searx.locales.LOCALE_NAMES` - :py:obj:`searx.locales.LOCALE_NAMES`
""" """
# pylint: disable=invalid-name # pylint: disable=invalid-name
from typing import Set from typing import Set

View File

@@ -5,6 +5,7 @@
Call this script after each upgrade of pygments Call this script after each upgrade of pygments
""" """
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods
from pathlib import Path from pathlib import Path

View File

@@ -5,7 +5,6 @@ import pathlib
import os import os
import aiounittest import aiounittest
os.environ.pop('SEARXNG_SETTINGS_PATH', None) os.environ.pop('SEARXNG_SETTINGS_PATH', None)
os.environ['SEARXNG_DISABLE_ETC_SETTINGS'] = '1' os.environ['SEARXNG_DISABLE_ETC_SETTINGS'] = '1'

View File

@@ -11,7 +11,6 @@ from searx.external_bang import (
from searx.search.models import EngineRef, SearchQuery from searx.search.models import EngineRef, SearchQuery
from tests import SearxTestCase from tests import SearxTestCase
TEST_DB = { TEST_DB = {
'trie': { 'trie': {
'exam': { 'exam': {

View File

@@ -7,6 +7,7 @@ https://github.com/Nykakin/chompjs/blob/c1501b5cd82c0044539875331745b820e7bfd067
The commented-out tests are not yet supported by the current implementation. The commented-out tests are not yet supported by the current implementation.
""" """
# pylint: disable=missing-class-docstring, invalid-name # pylint: disable=missing-class-docstring, invalid-name
import math import math

View File

@@ -21,7 +21,6 @@ from searx.preferences import Preferences
from tests import SearxTestCase from tests import SearxTestCase
from .test_plugins import PluginMock from .test_plugins import PluginMock
locales_initialize() locales_initialize()
favicons.init() favicons.init()

View File

@@ -8,7 +8,6 @@ from searx.search.models import SearchQuery, EngineRef
from searx import settings from searx import settings
from tests import SearxTestCase from tests import SearxTestCase
SAFESEARCH = 0 SAFESEARCH = 0
PAGENO = 1 PAGENO = 1
PUBLIC_ENGINE_NAME = "dummy engine" # from the ./settings/test_settings.yml PUBLIC_ENGINE_NAME = "dummy engine" # from the ./settings/test_settings.yml