| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | # SPDX-License-Identifier: AGPL-3.0-or-later"""This module implements the type extensions applied by SearXNG.- :py:obj:`flask.request` is replaced by :py:obj:`sxng_request`- :py:obj:`flask.Request` is replaced by :py:obj:`SXNG_Request`- :py:obj:`httpx.response` is replaced by :py:obj:`SXNG_Response`----.. py:attribute:: sxng_request   :type: SXNG_Request   A replacement for :py:obj:`flask.request` with type cast :py:obj:`SXNG_Request`... autoclass:: SXNG_Request   :members:.. autoclass:: SXNG_Response   :members:"""# pylint: disable=invalid-namefrom __future__ import annotations__all__ = ["SXNG_Request", "sxng_request", "SXNG_Response"]import typingimport flaskimport httpxif typing.TYPE_CHECKING:    import searx.preferences    import searx.resultsclass SXNG_Request(flask.Request):    """SearXNG extends the class :py:obj:`flask.Request` with properties from    *this* class definition, see type cast :py:obj:`sxng_request`.    """    user_plugins: list[str]    """list of searx.plugins.Plugin.id (the id of the plugins)"""    preferences: "searx.preferences.Preferences"    """The prefernces of the request."""    errors: list[str]    """A list of errors (translated text) added by :py:obj:`searx.webapp` in    case of errors."""    # request.form is of type werkzeug.datastructures.ImmutableMultiDict    # form: dict[str, str]    start_time: float    """Start time of the request, :py:obj:`timeit.default_timer` added by    :py:obj:`searx.webapp` to calculate the total time of the request."""    render_time: float    """Duration of the rendering, calculated and added by    :py:obj:`searx.webapp`."""    timings: list["searx.results.Timing"]    """A list of :py:obj:`searx.results.Timing` of the engines, calculatid in    and hold by :py:obj:`searx.results.ResultContainer.timings`."""#: A replacement for :py:obj:`flask.request` with type cast :py:`SXNG_Request`.sxng_request = typing.cast(SXNG_Request, flask.request)class SXNG_Response(httpx.Response):    """SearXNG extends the class :py:obj:`httpx.Response` with properties from    *this* class (type cast of :py:obj:`httpx.Response`).    .. code:: python       response = httpx.get("https://example.org")       response = typing.cast(SXNG_Response, response)       if response.ok:          ...    """    ok: bool
 |