forked from zaclys/searxng
[fix] spelling
This commit is contained in:
parent
ad518f41f6
commit
b6316020f7
|
@ -190,7 +190,7 @@ Debian:
|
|||
Apache modules
|
||||
--------------
|
||||
|
||||
To load additional modules, in most distributions you have to un-comment the
|
||||
To load additional modules, in most distributions you have to uncomment the
|
||||
lines with the corresponding LoadModule_ directive, except in :ref:`Debian's
|
||||
Apache layout`.
|
||||
|
||||
|
|
|
@ -87,8 +87,8 @@ For a more detailed description, see :ref:`settings engine` in the :ref:`settin
|
|||
Overrides
|
||||
---------
|
||||
|
||||
A few of the options have default values in the namespace of engine's python
|
||||
modul, but are often overwritten by the settings. If ``None`` is assigned to an
|
||||
A few of the options have default values in the namespace of the engine's python
|
||||
module, but are often overwritten by the settings. If ``None`` is assigned to an
|
||||
option in the engine file, it has to be redefined in the settings, otherwise
|
||||
SearXNG will not start with that engine (global names with a leading underline can
|
||||
be ``None``).
|
||||
|
|
|
@ -259,7 +259,7 @@ modify (:ref:`make themes`)::
|
|||
``make format.python``
|
||||
======================
|
||||
|
||||
Format Python sourcee code using `Black code style`_. See ``$BLACK_OPTIONS``
|
||||
Format Python source code using `Black code style`_. See ``$BLACK_OPTIONS``
|
||||
and ``$BLACK_TARGETS`` in :origin:`Makefile`.
|
||||
|
||||
.. attention::
|
||||
|
|
|
@ -235,7 +235,7 @@ To refer anchors use the `ref role`_ markup:
|
|||
.. admonition:: ``:ref:`` role
|
||||
:class: rst-example
|
||||
|
||||
Visist chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo
|
||||
Visit chapter :ref:`reST anchor`. Or set hyperlink text manually :ref:`foo
|
||||
bar <reST anchor>`.
|
||||
|
||||
.. _reST ordinary ref:
|
||||
|
|
|
@ -188,7 +188,7 @@ output of::
|
|||
|
||||
Since the path ``/share/SearXNG`` of the HOST system is wrapped into the
|
||||
container under the same name, the shown ``Makefile`` (inode ``47712402``) in
|
||||
the ouput is always the identical ``/share/SearXNG/Makefile`` from the HOST
|
||||
the output is always the identical ``/share/SearXNG/Makefile`` from the HOST
|
||||
system. In the example shown above the owner of the path in the container is
|
||||
the ``root`` user of the container (and the timezone in the container is
|
||||
different to HOST system).
|
||||
|
|
|
@ -32,7 +32,7 @@ To intercept bots that get their IPs from a range of IPs, there is a
|
|||
for a longer time. IPs stored in this sliding window have a maximum of
|
||||
:py:obj:`SUSPICIOUS_IP_MAX` accesses before they are blocked. As soon as the IP
|
||||
makes a request that is not suspicious, the sliding window for this IP is
|
||||
droped.
|
||||
dropped.
|
||||
|
||||
.. _X-Forwarded-For:
|
||||
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
|
||||
|
|
|
@ -71,7 +71,7 @@ LIMITER_CFG_SCHEMA = Path(__file__).parent / "limiter.toml"
|
|||
"""Base configuration (schema) of the botdetection."""
|
||||
|
||||
LIMITER_CFG = Path('/etc/searxng/limiter.toml')
|
||||
"""Lokal Limiter configuration."""
|
||||
"""Local Limiter configuration."""
|
||||
|
||||
CFG_DEPRECATED = {
|
||||
# "dummy.old.foo": "config 'dummy.old.foo' exists only for tests. Don't use it in your real project config."
|
||||
|
|
|
@ -119,7 +119,7 @@ class Engine: # pylint: disable=too-few-public-methods
|
|||
"""Remove the engine from the settings (*disabled & removed*)."""
|
||||
|
||||
about: dict
|
||||
"""Additional fileds describing the engine.
|
||||
"""Additional fields describing the engine.
|
||||
|
||||
.. code:: yaml
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ def response(resp):
|
|||
|
||||
|
||||
def fetch_traits(engine_traits: EngineTraits):
|
||||
"""Fetch languages from Archlinix-Wiki. The location of the Wiki address of a
|
||||
"""Fetch languages from Archlinux-Wiki. The location of the Wiki address of a
|
||||
language is mapped in a :py:obj:`custom field
|
||||
<searx.enginelib.traits.EngineTraits.custom>` (``wiki_netloc``). Depending
|
||||
on the location, the ``title`` argument in the request is translated.
|
||||
|
@ -128,7 +128,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||
|
||||
resp = get('https://wiki.archlinux.org/')
|
||||
if not resp.ok: # type: ignore
|
||||
print("ERROR: response from wiki.archlinix.org is not OK.")
|
||||
print("ERROR: response from wiki.archlinux.org is not OK.")
|
||||
|
||||
dom = lxml.html.fromstring(resp.text) # type: ignore
|
||||
for a in eval_xpath_list(dom, "//a[@class='interlanguage-link-target']"):
|
||||
|
|
|
@ -138,7 +138,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||
|
||||
The :py:obj:`description <searx.engines.bing_news.bing_traits_url>` of the
|
||||
first table says *"query parameter when calling the Video Search API."*
|
||||
.. thats why I use the 4. table "News Category API markets" for the
|
||||
.. that's why I use the 4. table "News Category API markets" for the
|
||||
``xpath_market_codes``.
|
||||
|
||||
"""
|
||||
|
|
|
@ -37,7 +37,7 @@ Brave regions
|
|||
=============
|
||||
|
||||
Brave uses two-digit tags for the regions like ``ca`` while SearXNG deals with
|
||||
locales. To get a mapping, all *officatl de-facto* languages of the Brave
|
||||
locales. To get a mapping, all *officiat de-facto* languages of the Brave
|
||||
region are mapped to regions in SearXNG (see :py:obj:`babel
|
||||
<babel.languages.get_official_languages>`):
|
||||
|
||||
|
@ -63,10 +63,10 @@ region are mapped to regions in SearXNG (see :py:obj:`babel
|
|||
Brave languages
|
||||
===============
|
||||
|
||||
Brave's language support is limited to the UI (menues, area local notations,
|
||||
Brave's language support is limited to the UI (menus, area local notations,
|
||||
etc). Brave's index only seems to support a locale, but it does not seem to
|
||||
support any languages in its index. The choice of available languages is very
|
||||
small (and its not clear to me where the differencee in UI is when switching
|
||||
small (and its not clear to me where the difference in UI is when switching
|
||||
from en-us to en-ca or en-gb).
|
||||
|
||||
In the :py:obj:`EngineTraits object <searx.enginelib.traits.EngineTraits>` the
|
||||
|
@ -405,7 +405,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||
# country_name = extract_text(flag.xpath('./following-sibling::*')[0])
|
||||
country_tag = re.search(r'flag-([^\s]*)\s', flag.xpath('./@class')[0]).group(1) # type: ignore
|
||||
|
||||
# add offical languages of the country ..
|
||||
# add official languages of the country ..
|
||||
for lang_tag in babel.languages.get_official_languages(country_tag, de_facto=True):
|
||||
lang_tag = lang_map.get(lang_tag, lang_tag)
|
||||
sxng_tag = region_tag(babel.Locale.parse('%s_%s' % (lang_tag, country_tag.upper())))
|
||||
|
|
|
@ -67,11 +67,11 @@ or ``time``.
|
|||
|
||||
.. hint::
|
||||
|
||||
When *time_range* is activate, the results always orderd by ``time``.
|
||||
When *time_range* is activate, the results always ordered by ``time``.
|
||||
"""
|
||||
|
||||
bt4g_category = 'all'
|
||||
"""BT$G offers categoies: ``all`` (default), ``audio``, ``movie``, ``doc``,
|
||||
"""BT$G offers categories: ``all`` (default), ``audio``, ``movie``, ``doc``,
|
||||
``app`` and `` other``.
|
||||
"""
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ def get_vqd(query):
|
|||
def get_ddg_lang(eng_traits: EngineTraits, sxng_locale, default='en_US'):
|
||||
"""Get DuckDuckGo's language identifier from SearXNG's locale.
|
||||
|
||||
DuckDuckGo defines its lanaguages by region codes (see
|
||||
DuckDuckGo defines its languages by region codes (see
|
||||
:py:obj:`fetch_traits`).
|
||||
|
||||
To get region and language of a DDG service use:
|
||||
|
@ -338,7 +338,7 @@ def fetch_traits(engine_traits: EngineTraits):
|
|||
``Accept-Language`` HTTP header. The value in ``engine_traits.all_locale``
|
||||
is ``wt-wt`` (the region).
|
||||
|
||||
Beside regions DuckDuckGo also defines its lanaguages by region codes. By
|
||||
Beside regions DuckDuckGo also defines its languages by region codes. By
|
||||
example these are the english languages in DuckDuckGo:
|
||||
|
||||
- en_US
|
||||
|
|
|
@ -22,7 +22,7 @@ import babel.core
|
|||
import babel.languages
|
||||
|
||||
from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
|
||||
from searx.locales import language_tag, region_tag, get_offical_locales
|
||||
from searx.locales import language_tag, region_tag, get_official_locales
|
||||
from searx.network import get # see https://github.com/searxng/searxng/issues/762
|
||||
from searx.exceptions import SearxEngineCaptchaException
|
||||
from searx.enginelib.traits import EngineTraits
|
||||
|
@ -184,8 +184,8 @@ def get_google_info(params, eng_traits):
|
|||
#
|
||||
# To select 'all' languages an empty 'lr' value is used.
|
||||
#
|
||||
# Different to other google services, Google Schloar supports to select more
|
||||
# than one language. The languages are seperated by a pipe '|' (logical OR).
|
||||
# Different to other google services, Google Scholar supports to select more
|
||||
# than one language. The languages are separated by a pipe '|' (logical OR).
|
||||
# By example: &lr=lang_zh-TW%7Clang_de selects articles written in
|
||||
# traditional chinese OR german language.
|
||||
|
||||
|
@ -204,7 +204,7 @@ def get_google_info(params, eng_traits):
|
|||
if len(sxng_locale.split('-')) > 1:
|
||||
ret_val['params']['cr'] = 'country' + country
|
||||
|
||||
# gl parameter: (mandatory by Geeogle News)
|
||||
# gl parameter: (mandatory by Google News)
|
||||
# The gl parameter value is a two-letter country code. For WebSearch
|
||||
# results, the gl parameter boosts search results whose country of origin
|
||||
# matches the parameter value. See the Country Codes section for a list of
|
||||
|
@ -465,7 +465,7 @@ def fetch_traits(engine_traits: EngineTraits, add_domains: bool = True):
|
|||
engine_traits.all_locale = 'ZZ'
|
||||
continue
|
||||
|
||||
sxng_locales = get_offical_locales(eng_country, engine_traits.languages.keys(), regional=True)
|
||||
sxng_locales = get_official_locales(eng_country, engine_traits.languages.keys(), regional=True)
|
||||
|
||||
if not sxng_locales:
|
||||
print("ERROR: can't map from google country %s (%s) to a babel region." % (x.get('data-name'), eng_country))
|
||||
|
|
|
@ -72,7 +72,7 @@ time_range_support = False
|
|||
# Google-News results are always *SafeSearch*. Option 'safesearch' is set to
|
||||
# False here, otherwise checker will report safesearch-errors::
|
||||
#
|
||||
# safesearch : results are identitical for safesearch=0 and safesearch=2
|
||||
# safesearch : results are identical for safesearch=0 and safesearch=2
|
||||
safesearch = True
|
||||
# send_accept_language_header = True
|
||||
|
||||
|
@ -155,7 +155,7 @@ def response(resp):
|
|||
|
||||
title = extract_text(eval_xpath(result, './article/h3[1]'))
|
||||
|
||||
# The pub_date is mostly a string like 'yesertday', not a real
|
||||
# The pub_date is mostly a string like 'yesterday', not a real
|
||||
# timezone date or time. Therefore we can't use publishedDate.
|
||||
pub_date = extract_text(eval_xpath(result, './article//time'))
|
||||
pub_origin = extract_text(eval_xpath(result, './article//a[@data-n-tid]'))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Odysee_ is a decentralised video hosting platform.
|
||||
"""Odysee_ is a decentralized video hosting platform.
|
||||
|
||||
.. _Odysee: https://github.com/OdyseeTeam/odysee-frontend
|
||||
"""
|
||||
|
|
|
@ -162,7 +162,7 @@ def response(resp):
|
|||
}
|
||||
)
|
||||
|
||||
# simplify the code below: make sure extratags is a dictionnary
|
||||
# simplify the code below: make sure extratags is a dictionary
|
||||
for result in nominatim_json:
|
||||
if not isinstance(result.get('extratags'), dict):
|
||||
result["extratags"] = {}
|
||||
|
@ -445,7 +445,7 @@ def get_key_label(key_name, lang):
|
|||
if key_name.startswith('currency:'):
|
||||
# currency:EUR --> get the name from the CURRENCIES variable
|
||||
# see https://wiki.openstreetmap.org/wiki/Key%3Acurrency
|
||||
# and for exampe https://taginfo.openstreetmap.org/keys/currency:EUR#values
|
||||
# and for example https://taginfo.openstreetmap.org/keys/currency:EUR#values
|
||||
# but there is also currency=EUR (currently not handled)
|
||||
# https://taginfo.openstreetmap.org/keys/currency#values
|
||||
currency = key_name.split(':')
|
||||
|
|
|
@ -72,7 +72,7 @@ paging = True
|
|||
backend_url: list | str = "https://pipedapi.kavin.rocks"
|
||||
"""Piped-Backend_: The core component behind Piped. The value is an URL or a
|
||||
list of URLs. In the latter case instance will be selected randomly. For a
|
||||
complete list of offical instances see Piped-Instances (`JSON
|
||||
complete list of official instances see Piped-Instances (`JSON
|
||||
<https://piped-instances.kavin.rocks/>`__)
|
||||
|
||||
.. _Piped-Instances: https://github.com/TeamPiped/Piped/wiki/Instances
|
||||
|
|
|
@ -76,7 +76,7 @@ about = {
|
|||
categories = []
|
||||
paging = True
|
||||
qwant_categ = None
|
||||
"""One of ``web``, ``news``, ``images`` or ``videos``"""
|
||||
"""One of ``web-lite`` (or ``web``), ``news``, ``images`` or ``videos``"""
|
||||
|
||||
safesearch = True
|
||||
# safe_search_map = {0: '&safesearch=0', 1: '&safesearch=1', 2: '&safesearch=2'}
|
||||
|
|
|
@ -10,7 +10,7 @@ Example
|
|||
|
||||
To demonstrate the power of database engines, here is a more complex example
|
||||
which reads from a MediathekView_ (DE) movie database. For this example of the
|
||||
SQlite engine download the database:
|
||||
SQLite engine download the database:
|
||||
|
||||
- https://liste.mediathekview.de/filmliste-v2.db.bz2
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ The engine has the following settings:
|
|||
Prowlarr-categories_ or Jackett-categories_ for more information.
|
||||
|
||||
``show_torrent_files``:
|
||||
Whether to show the torrent file in the search results. Be carful as using
|
||||
Whether to show the torrent file in the search results. Be careful as using
|
||||
this with Prowlarr_ or Jackett_ leaks the API key. This should be used only
|
||||
if you are querying a Torznab endpoint without authentication or if the
|
||||
instance is private. Be aware that private trackers may ban you if you share
|
||||
|
|
|
@ -287,7 +287,7 @@ def get_results(attribute_result, attributes, language):
|
|||
elif attribute_type == WDGeoAttribute:
|
||||
# geocoordinate link
|
||||
# use the area to get the OSM zoom
|
||||
# Note: ignre the unit (must be km² otherwise the calculation is wrong)
|
||||
# Note: ignore the unit (must be km² otherwise the calculation is wrong)
|
||||
# Should use normalized value p:P2046/psn:P2046/wikibase:quantityAmount
|
||||
area = attribute_result.get('P2046')
|
||||
osm_zoom = area_to_osm_zoom(area) if area else 19
|
||||
|
|
|
@ -86,7 +86,7 @@ Replacements are:
|
|||
Search terms from user.
|
||||
|
||||
``{pageno}``:
|
||||
Page number if engine supports pagging :py:obj:`paging`
|
||||
Page number if engine supports paging :py:obj:`paging`
|
||||
|
||||
``{lang}``:
|
||||
ISO 639-1 language code (en, de, fr ..)
|
||||
|
|
|
@ -12,7 +12,7 @@ class SearxException(Exception):
|
|||
|
||||
|
||||
class SearxParameterException(SearxException):
|
||||
"""Raised when query miss a required paramater"""
|
||||
"""Raised when query miss a required parameter"""
|
||||
|
||||
def __init__(self, name, value):
|
||||
if value == '' or value is None:
|
||||
|
|
|
@ -55,7 +55,7 @@ class InfoPage:
|
|||
|
||||
@cached_property
|
||||
def content(self):
|
||||
"""Content of the page (rendered in a Jinja conntext)"""
|
||||
"""Content of the page (rendered in a Jinja context)"""
|
||||
ctx = self.get_ctx()
|
||||
template = jinja2.Environment().from_string(self.raw_content)
|
||||
return template.render(**ctx)
|
||||
|
@ -119,7 +119,7 @@ class InfoPageSet: # pylint: disable=too-few-public-methods
|
|||
):
|
||||
self.page_class = page_class or InfoPage
|
||||
self.folder: str = info_folder or _INFO_FOLDER
|
||||
"""location of the Markdwon files"""
|
||||
"""location of the Markdown files"""
|
||||
|
||||
self.CACHE: typing.Dict[tuple, typing.Optional[InfoPage]] = {}
|
||||
|
||||
|
|
|
@ -118,8 +118,8 @@ def _get_locale_descr(locale, language_code):
|
|||
language_name = locale.get_language_name(language_code).capitalize()
|
||||
if language_name and ('a' <= language_name[0] <= 'z'):
|
||||
language_name = language_name.capitalize()
|
||||
terrirtory_name = locale.get_territory_name(language_code)
|
||||
return language_name, terrirtory_name
|
||||
territory_name = locale.get_territory_name(language_code)
|
||||
return language_name, territory_name
|
||||
|
||||
|
||||
def locales_initialize(directory=None):
|
||||
|
@ -188,7 +188,7 @@ def get_locale(locale_tag: str) -> Optional[babel.Locale]:
|
|||
return None
|
||||
|
||||
|
||||
def get_offical_locales(
|
||||
def get_official_locales(
|
||||
territory: str, languages=None, regional: bool = False, de_facto: bool = True
|
||||
) -> Set[babel.Locale]:
|
||||
"""Returns a list of :py:obj:`babel.Locale` with languages from
|
||||
|
@ -262,20 +262,20 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
the selected language.
|
||||
|
||||
B. When user select a language and a territory the results should be
|
||||
optimized with first priority on terrirtory and second on language.
|
||||
optimized with first priority on territory and second on language.
|
||||
|
||||
First approximation rule (*by territory*):
|
||||
|
||||
When the user selects a locale with terrirtory (and a language), the
|
||||
territory has priority over the language. If any of the offical languages
|
||||
in the terrirtory is supported by the engine (``engine_locales``) it will
|
||||
When the user selects a locale with territory (and a language), the
|
||||
territory has priority over the language. If any of the official languages
|
||||
in the territory is supported by the engine (``engine_locales``) it will
|
||||
be used.
|
||||
|
||||
Second approximation rule (*by language*):
|
||||
|
||||
If "First approximation rule" brings no result or the user selects only a
|
||||
language without a terrirtory. Check in which territories the language
|
||||
has an offical status and if one of these territories is supported by the
|
||||
language without a territory. Check in which territories the language
|
||||
has an official status and if one of these territories is supported by the
|
||||
engine.
|
||||
|
||||
"""
|
||||
|
@ -305,7 +305,7 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
# SearXNG's selected locale is not supported by the engine ..
|
||||
|
||||
if locale.territory:
|
||||
# Try to narrow by *offical* languages in the territory (??-XX).
|
||||
# Try to narrow by *official* languages in the territory (??-XX).
|
||||
|
||||
for official_language in babel.languages.get_official_languages(locale.territory, de_facto=True):
|
||||
searxng_locale = official_language + '-' + locale.territory
|
||||
|
@ -313,11 +313,11 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
if engine_locale is not None:
|
||||
return engine_locale
|
||||
|
||||
# Engine does not support one of the offical languages in the territory or
|
||||
# Engine does not support one of the official languages in the territory or
|
||||
# there is only a language selected without a territory.
|
||||
|
||||
# Now lets have a look if the searxng_lang (the language selected by the
|
||||
# user) is a offical language in other territories. If so, check if
|
||||
# user) is a official language in other territories. If so, check if
|
||||
# engine does support the searxng_lang in this other territory.
|
||||
|
||||
if locale.language:
|
||||
|
@ -343,10 +343,10 @@ def get_engine_locale(searxng_locale, engine_locales, default=None):
|
|||
|
||||
# second: sort by population_percent and take first match
|
||||
|
||||
# drawback of "population percent": if there is a terrirtory with a
|
||||
# drawback of "population percent": if there is a territory with a
|
||||
# small number of people (e.g 100) but the majority speaks the
|
||||
# language, then the percentage migth be 100% (--> 100 people) but in
|
||||
# a different terrirtory with more people (e.g. 10.000) where only 10%
|
||||
# language, then the percentage might be 100% (--> 100 people) but in
|
||||
# a different territory with more people (e.g. 10.000) where only 10%
|
||||
# speak the language the total amount of speaker is higher (--> 200
|
||||
# people).
|
||||
#
|
||||
|
|
|
@ -152,19 +152,19 @@ def get_reliabilities(engline_name_list, checker_results):
|
|||
errors = engine_errors.get(engine_name) or []
|
||||
if counter('engine', engine_name, 'search', 'count', 'sent') == 0:
|
||||
# no request
|
||||
reliablity = None
|
||||
reliability = None
|
||||
elif checker_success and not errors:
|
||||
reliablity = 100
|
||||
reliability = 100
|
||||
elif 'simple' in checker_result.get('errors', {}):
|
||||
# the basic (simple) test doesn't work: the engine is broken accoding to the checker
|
||||
# the basic (simple) test doesn't work: the engine is broken according to the checker
|
||||
# even if there is no exception
|
||||
reliablity = 0
|
||||
reliability = 0
|
||||
else:
|
||||
# pylint: disable=consider-using-generator
|
||||
reliablity = 100 - sum([error['percentage'] for error in errors if not error.get('secondary')])
|
||||
reliability = 100 - sum([error['percentage'] for error in errors if not error.get('secondary')])
|
||||
|
||||
reliabilities[engine_name] = {
|
||||
'reliablity': reliablity,
|
||||
'reliability': reliability,
|
||||
'errors': errors,
|
||||
'checker': checker_results.get(engine_name, {}).get('errors', {}),
|
||||
}
|
||||
|
|
|
@ -78,7 +78,7 @@ def _get_timeout(start_time, kwargs):
|
|||
# 2 minutes timeout for the requests without timeout
|
||||
timeout = timeout or 120
|
||||
|
||||
# ajdust actual timeout
|
||||
# adjust actual timeout
|
||||
timeout += 0.2 # overhead
|
||||
if start_time:
|
||||
timeout -= default_timer() - start_time
|
||||
|
|
|
@ -166,7 +166,7 @@ def load_plugin(plugin_module_name, external):
|
|||
# searx compatibility: plugin.name in settings['enabled_plugins']
|
||||
plugin.default_on = plugin.name in settings["enabled_plugins"] or plugin.id in settings["enabled_plugins"]
|
||||
|
||||
# copy ressources if this is an external plugin
|
||||
# copy resources if this is an external plugin
|
||||
if external:
|
||||
prepare_package_resources(plugin, plugin_module_name)
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ def secret_hash(name: str):
|
|||
"""Creates a hash of the ``name``.
|
||||
|
||||
Combines argument ``name`` with the ``secret_key`` from :ref:`settings
|
||||
server`. This function can be used to get a more anonymised name of a Redis
|
||||
server`. This function can be used to get a more anonymized name of a Redis
|
||||
KEY.
|
||||
|
||||
:param name: the name to create a secret hash for
|
||||
|
@ -205,7 +205,7 @@ def incr_sliding_window(client, name: str, duration: int):
|
|||
minus *duration* time (ZREMRANGEBYSCORE_).
|
||||
|
||||
The EXPIRE_ time (the duration of the sliding window) is refreshed on each
|
||||
call (incrementation) and if there is no call in this duration, the sorted
|
||||
call (increment) and if there is no call in this duration, the sorted
|
||||
set expires from the redis DB.
|
||||
|
||||
The return value is the amount of items in the sorted set (ZCOUNT_), what
|
||||
|
|
|
@ -89,7 +89,7 @@ class Search:
|
|||
# max of all selected engine timeout
|
||||
default_timeout = 0
|
||||
|
||||
# start search-reqest for all selected engines
|
||||
# start search-request for all selected engines
|
||||
for engineref in self.search_query.engineref_list:
|
||||
processor = PROCESSORS[engineref.name]
|
||||
|
||||
|
|
|
@ -347,7 +347,7 @@ class CheckerTests:
|
|||
diff2_str = ', '.join(['{}={!r}'.format(k, v2) for (k, (v1, v2)) in diff.items()])
|
||||
self.test_results.add_error(
|
||||
self.test_name,
|
||||
'results are identitical for {} and {} ({})'.format(diff1_str, diff2_str, common_str),
|
||||
'results are identical for {} and {} ({})'.format(diff1_str, diff2_str, common_str),
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
|
||||
"""Implement request processores used by engine-types.
|
||||
"""Implement request processors used by engine-types.
|
||||
|
||||
"""
|
||||
|
||||
|
@ -30,7 +30,7 @@ from .abstract import EngineProcessor
|
|||
|
||||
logger = logger.getChild('search.processors')
|
||||
PROCESSORS: Dict[str, EngineProcessor] = {}
|
||||
"""Cache request processores, stored by *engine-name* (:py:func:`initialize`)
|
||||
"""Cache request processors, stored by *engine-name* (:py:func:`initialize`)
|
||||
|
||||
:meta hide-value:
|
||||
"""
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
|
||||
"""Abstract base classes for engine request processores.
|
||||
"""Abstract base classes for engine request processors.
|
||||
|
||||
"""
|
||||
|
||||
|
@ -58,7 +58,7 @@ class SuspendedStatus:
|
|||
|
||||
|
||||
class EngineProcessor(ABC):
|
||||
"""Base classes used for all types of reqest processores."""
|
||||
"""Base classes used for all types of request processors."""
|
||||
|
||||
__slots__ = 'engine', 'engine_name', 'lock', 'suspended_status', 'logger'
|
||||
|
||||
|
@ -165,7 +165,7 @@ class EngineProcessor(ABC):
|
|||
# deprecated / vintage --> use params['searxng_locale']
|
||||
#
|
||||
# Conditions related to engine's traits are implemented in engine.traits
|
||||
# module. Don't do 'locale' decissions here in the abstract layer of the
|
||||
# module. Don't do 'locale' decisions here in the abstract layer of the
|
||||
# search processor, just pass the value from user's choice unchanged to
|
||||
# the engine request.
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
|
||||
"""Processores for engine-type: ``offline``
|
||||
"""Processors for engine-type: ``offline``
|
||||
|
||||
"""
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
|
||||
"""Processores for engine-type: ``online``
|
||||
"""Processors for engine-type: ``online``
|
||||
|
||||
"""
|
||||
# pylint: disable=use-dict-literal
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Processores for engine-type: ``online_currency``
|
||||
"""Processors for engine-type: ``online_currency``
|
||||
|
||||
"""
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Processores for engine-type: ``online_dictionary``
|
||||
"""Processors for engine-type: ``online_dictionary``
|
||||
|
||||
"""
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
# lint: pylint
|
||||
"""Processores for engine-type: ``online_url_search``
|
||||
"""Processors for engine-type: ``online_url_search``
|
||||
|
||||
"""
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ def get_user_settings_path() -> Optional[str]:
|
|||
if 'SEARXNG_SETTINGS_PATH' in environ:
|
||||
return existing_filename_or_none(environ['SEARXNG_SETTINGS_PATH'])
|
||||
|
||||
# if SEARXNG_DISABLE_ETC_SETTINGS don't look any futher
|
||||
# if SEARXNG_DISABLE_ETC_SETTINGS don't look any further
|
||||
if environ.get('SEARXNG_DISABLE_ETC_SETTINGS', '').lower() in ('1', 'true'):
|
||||
return None
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@
|
|||
{%- endmacro -%}
|
||||
|
||||
{%- macro engine_reliability(engine_name) -%}
|
||||
{%- set r = reliabilities.get(engine_name, {}).get('reliablity', None) -%}
|
||||
{%- set r = reliabilities.get(engine_name, {}).get('reliability', None) -%}
|
||||
{%- set checker_result = reliabilities.get(engine_name, {}).get('checker', []) -%}
|
||||
{%- set errors = reliabilities.get(engine_name, {}).get('errors', []) -%}
|
||||
{%- if r != None -%}
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
</div>
|
||||
{%- endif -%}
|
||||
</td>
|
||||
<td class="engine-reliability"> {{ engine_reliabilities.get(engine_stat.name, {}).get('reliablity') }}</td>
|
||||
<td class="engine-reliability"> {{ engine_reliabilities.get(engine_stat.name, {}).get('reliability') }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
|
|
@ -543,7 +543,7 @@ def eval_xpath_list(element: ElementBase, xpath_spec: XPathSpecType, min_len: Op
|
|||
|
||||
def eval_xpath_getindex(elements: ElementBase, xpath_spec: XPathSpecType, index: int, default=_NOTSET):
|
||||
"""Call eval_xpath_list then get one element using the index parameter.
|
||||
If the index does not exist, either aise an exception is default is not set,
|
||||
If the index does not exist, either raise an exception is default is not set,
|
||||
other return the default value (can be None).
|
||||
|
||||
Args:
|
||||
|
@ -628,7 +628,7 @@ def detect_language(text: str, threshold: float = 0.3, only_search_languages: bo
|
|||
|
||||
b. Most of SearXNG's engines do not support all the languages from `language
|
||||
identification model`_ and there is also a discrepancy in the ISO-639-3
|
||||
(fastext) and ISO-639-2 (SearXNG)handling. Further more, in SearXNG the
|
||||
(fasttext) and ISO-639-2 (SearXNG)handling. Further more, in SearXNG the
|
||||
locales like ``zh-TH`` (``zh-CN``) are mapped to ``zh_Hant``
|
||||
(``zh_Hans``) while the `language identification model`_ reduce both to
|
||||
``zh``.
|
||||
|
@ -681,7 +681,7 @@ def js_variable_to_python(js_variable):
|
|||
# here, inside a JS string, we escape the double quote
|
||||
parts[i] = parts[i].replace('"', r'\"')
|
||||
|
||||
# deal with delimieters and escape character
|
||||
# deal with delimiters and escape character
|
||||
if not in_string and p in ('"', "'"):
|
||||
# we are not in string
|
||||
# but p is double or simple quote
|
||||
|
@ -710,7 +710,7 @@ def js_variable_to_python(js_variable):
|
|||
previous_p = p
|
||||
# join the string
|
||||
s = ''.join(parts)
|
||||
# add quote arround the key
|
||||
# add quote around the key
|
||||
# { a: 12 }
|
||||
# becomes
|
||||
# { "a": 12 }
|
||||
|
|
|
@ -938,19 +938,19 @@ def preferences():
|
|||
errors = engine_errors.get(e.name) or []
|
||||
if counter('engine', e.name, 'search', 'count', 'sent') == 0:
|
||||
# no request
|
||||
reliablity = None
|
||||
reliability = None
|
||||
elif checker_success and not errors:
|
||||
reliablity = 100
|
||||
reliability = 100
|
||||
elif 'simple' in checker_result.get('errors', {}):
|
||||
# the basic (simple) test doesn't work: the engine is broken accoding to the checker
|
||||
# the basic (simple) test doesn't work: the engine is broken according to the checker
|
||||
# even if there is no exception
|
||||
reliablity = 0
|
||||
reliability = 0
|
||||
else:
|
||||
# pylint: disable=consider-using-generator
|
||||
reliablity = 100 - sum([error['percentage'] for error in errors if not error.get('secondary')])
|
||||
reliability = 100 - sum([error['percentage'] for error in errors if not error.get('secondary')])
|
||||
|
||||
reliabilities[e.name] = {
|
||||
'reliablity': reliablity,
|
||||
'reliability': reliability,
|
||||
'errors': [],
|
||||
'checker': checker_results.get(e.name, {}).get('errors', {}).keys(),
|
||||
}
|
||||
|
@ -1144,7 +1144,7 @@ def stats():
|
|||
reverse, key_name, default_value = STATS_SORT_PARAMETERS[sort_order]
|
||||
|
||||
def get_key(engine_stat):
|
||||
reliability = engine_reliabilities.get(engine_stat['name'], {}).get('reliablity', 0)
|
||||
reliability = engine_reliabilities.get(engine_stat['name'], {}).get('reliability', 0)
|
||||
reliability_order = 0 if reliability else 1
|
||||
if key_name == 'reliability':
|
||||
key = reliability
|
||||
|
|
|
@ -64,7 +64,7 @@ def _instance_infosetset_ctx(base_url):
|
|||
with app.test_request_context(base_url=base_url):
|
||||
yield InfoPageSet()
|
||||
|
||||
# The searx.webapp import from above fires some HTTP requests, thats
|
||||
# The searx.webapp import from above fires some HTTP requests, that's
|
||||
# why we get a RuntimeError::
|
||||
#
|
||||
# RuntimeError: The connection pool was closed while 1 HTTP \
|
||||
|
|
|
@ -62,7 +62,7 @@ def merge_when_no_leaf(node):
|
|||
d -> d -> g -> <LEAF_KEY> (ddg)
|
||||
-> i -> g -> <LEAF_KEY> (dig)
|
||||
|
||||
becomes (3 noodes)::
|
||||
becomes (3 nodes)::
|
||||
|
||||
d -> dg -> <LEAF_KEY>
|
||||
-> ig -> <LEAF_KEY>
|
||||
|
|
|
@ -66,7 +66,7 @@ class TestLocales(SearxTestCase):
|
|||
# B. When user selects a language and a territory the results should be
|
||||
# optimized with first priority on territory and second on language.
|
||||
|
||||
# Assume we have an engine that supports the follwoing locales:
|
||||
# Assume we have an engine that supports the following locales:
|
||||
locale_tag_list = ['zh-CN', 'zh-HK', 'nl-BE', 'fr-CA']
|
||||
|
||||
# Examples (Assumption A.)
|
||||
|
|
|
@ -215,7 +215,7 @@ class ViewsTestCase(SearxTestCase):
|
|||
'Search language ignored browser preference.',
|
||||
)
|
||||
|
||||
def test_brower_empty_locale(self):
|
||||
def test_browser_empty_locale(self):
|
||||
result = self.app.get('/preferences', headers={'Accept-Language': ''})
|
||||
self.assertEqual(result.status_code, 200)
|
||||
self.assertIn(
|
||||
|
|
|
@ -10,7 +10,7 @@ from os.path import realpath, dirname, join, sep, abspath
|
|||
repo_root = realpath(dirname(realpath(__file__)) + sep + '..')
|
||||
sys.path.insert(0, repo_root)
|
||||
|
||||
# Assure that the settings file from reposetorie's working tree is used to
|
||||
# Assure that the settings file from repository's working tree is used to
|
||||
# generate the build_env, not from /etc/searxng/settings.yml.
|
||||
os.environ['SEARXNG_SETTINGS_PATH'] = join(repo_root, 'etc', 'settings.yml')
|
||||
|
||||
|
@ -38,7 +38,7 @@ brand_env = 'utils' + sep + 'brand.env'
|
|||
|
||||
# Some defaults in the settings.yml are taken from the environment,
|
||||
# e.g. SEARXNG_BIND_ADDRESS (:py:obj:`searx.settings_defaults.SHEMA`). When the
|
||||
# 'brand.env' file is created these envirnoment variables should be unset first::
|
||||
# 'brand.env' file is created these environment variables should be unset first::
|
||||
|
||||
_unset = object()
|
||||
for name, option in name_val:
|
||||
|
|
Loading…
Reference in New Issue