Implement models for searx/answerers

sort froms

Import List from typing to support Python 3.8

Use SearchQuery model

Remove list for List

use Dict instead of dict

Use RawTextQuery instead of SearchQuery, type a dict, and remove unecessary str() method in webapp

improve docstring, remove test code

Implement a BaseQuery class and use that, improve answerer tests based on updated types

Add back sys

fix new linting issues

add space

Update answerer.py - use dict

use future annotations

use BaseQuery for RawTextQuery
This commit is contained in:
Grant Lanham 2024-03-09 18:22:35 -05:00
parent e2af3e4970
commit fed105b09e
9 changed files with 95 additions and 32 deletions

View file

@ -1,10 +1,14 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
from __future__ import annotations
import hashlib
import random
import string
import uuid
from flask_babel import gettext
from typing import Callable
from searx.answerers.models import AnswerDict, AnswerSelfInfoDict
from searx.search.models import BaseQuery
# required answerer attribute
# specifies which search query keywords triggers this answerer
@ -45,7 +49,7 @@ def random_color():
return f"#{color.upper()}"
random_types = {
random_types: dict[str, Callable[[], str]] = {
'string': random_string,
'int': random_int,
'float': random_float,
@ -57,7 +61,7 @@ random_types = {
# required answerer function
# can return a list of results (any result type) for a given query
def answer(query):
def answer(query: BaseQuery) -> list[AnswerDict]:
parts = query.query.split()
if len(parts) != 2:
return []
@ -70,7 +74,7 @@ def answer(query):
# required answerer function
# returns information about the answerer
def self_info():
def self_info() -> AnswerSelfInfoDict:
return {
'name': gettext('Random value generator'),
'description': gettext('Generate different random values'),