| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 | # SPDX-License-Identifier: AGPL-3.0-or-later"""Implementations of the framework for the SearXNG engines... hint::   The long term goal is to modularize all implementations of the engine   framework here in this Python package.  ToDo:   - move implementations of the :ref:`searx.engines loader` to a new module in     the :py:obj:`searx.enginelib` namespace."""from __future__ import annotationsfrom typing import List, Callable, TYPE_CHECKINGif TYPE_CHECKING:    from searx.enginelib import traitsclass Engine:  # pylint: disable=too-few-public-methods    """Class of engine instances build from YAML settings.    Further documentation see :ref:`general engine configuration`.    .. hint::       This class is currently never initialized and only used for type hinting.    """    # Common options in the engine module    engine_type: str    """Type of the engine (:ref:`searx.search.processors`)"""    paging: bool    """Engine supports multiple pages."""    time_range_support: bool    """Engine supports search time range."""    safesearch: bool    """Engine supports SafeSearch"""    language_support: bool    """Engine supports languages (locales) search."""    language: str    """For an engine, when there is ``language: ...`` in the YAML settings the engine    does support only this one language:    .. code:: yaml      - name: google french        engine: google        language: fr    """    region: str    """For an engine, when there is ``region: ...`` in the YAML settings the engine    does support only this one region::    .. code:: yaml      - name: google belgium        engine: google        region: fr-BE    """    fetch_traits: Callable    """Function to to fetch engine's traits from origin."""    traits: traits.EngineTraits    """Traits of the engine."""    # settings.yml    categories: List[str]    """Specifies to which :ref:`engine categories` the engine should be added."""    name: str    """Name that will be used across SearXNG to define this engine.  In settings, on    the result page .."""    engine: str    """Name of the python file used to handle requests and responses to and from    this search engine (file name from :origin:`searx/engines` without    ``.py``)."""    enable_http: bool    """Enable HTTP (by default only HTTPS is enabled)."""    shortcut: str    """Code used to execute bang requests (``!foo``)"""    timeout: float    """Specific timeout for search-engine."""    display_error_messages: bool    """Display error messages on the web UI."""    proxies: dict    """Set proxies for a specific engine (YAML):    .. code:: yaml       proxies :         http:  socks5://proxy:port         https: socks5://proxy:port    """    disabled: bool    """To disable by default the engine, but not deleting it.  It will allow the    user to manually activate it in the settings."""    inactive: bool    """Remove the engine from the settings (*disabled & removed*)."""    about: dict    """Additional fields describing the engine.    .. code:: yaml       about:          website: https://example.com          wikidata_id: Q306656          official_api_documentation: https://example.com/api-doc          use_official_api: true          require_api_key: true          results: HTML    """    using_tor_proxy: bool    """Using tor proxy (``true``) or not (``false``) for this engine."""    send_accept_language_header: bool    """When this option is activated, the language (locale) that is selected by    the user is used to build and send a ``Accept-Language`` header in the    request to the origin search engine."""    tokens: List[str]    """A list of secret tokens to make this engine *private*, more details see    :ref:`private engines`."""    weight: int    """Weighting of the results of this engine (:ref:`weight <settings engines>`)."""
 |