Skip to content
Back to top
View this page
Edit this page

# Extended Types

This module implements the type extensions applied by SearXNG.

- `flask.request` is replaced by `sxng_request`

- `flask.Request` is replaced by `SXNG_Request`

- `httpx.response` is replaced by `SXNG_Response`

searx.extended_types.sxng_request: SXNG_Request

  A replacement for `flask.request` with type cast `SXNG_Request`.

class searx.extended_types.SXNG_Request(environ: WSGIEnvironment, populate_request: bool = True, shallow: bool = False)

  SearXNG extends the class `flask.Request` with properties from this class definition, see type cast `sxng_request`.

  user_plugins: list[str]

    list of searx.plugins.Plugin.id (the id of the plugins)

  preferences: searx.preferences.Preferences

    The preferences of the request.

  errors: list[str]

    A list of errors (translated text) added by `searx.webapp` in case of errors.

  start_time: float

    Start time of the request, `timeit.default_timer` added by `searx.webapp` to calculate the total time of the request.

  render_time: float

    Duration of the rendering, calculated and added by `searx.webapp`.

  timings: list[searx.results.Timing]

    A list of `searx.results.Timing` of the engines, calculatid in and hold by `searx.results.ResultContainer.timings`.

  remote_addr: str

    The address of the client sending the request.

class searx.extended_types.SXNG_Response(status_code: int, *, headers: Headers | Mapping[str, str] | Mapping[bytes, bytes] | Sequence[Tuple[str, str]] | Sequence[Tuple[bytes, bytes]] | None = None, content: str | bytes | Iterable[bytes] | AsyncIterable[bytes] | None = None, text: str | None = None, html: str | None = None, json: Any = None, stream: SyncByteStream | AsyncByteStream | None = None, request: Request | None = None, extensions: Mapping[str, Any] | None = None, history: list[Response] | None = None, default_encoding: str | Callable[[bytes], str] = 'utf-8')

  SearXNG extends the class `httpx.Response` with properties from this class (type cast of `httpx.Response`).

      response = httpx.get("https://example.org")
      response = typing.cast(SXNG_Response, response)
      if response.ok:
         ...
      query_was = search_params["query"]