logo

searx

Unnamed repository; edit this file 'description' to name the repository.
commit: 7eed8a5dd909ca70d45fdff5706bb207e6aa8bdf
parent: 971ed0abd159625bd01d0b3ca52c90b394711d77
Author: Adam Tauber <asciimoo@gmail.com>
Date:   Sat, 19 Nov 2016 21:03:27 +0100

[enh] add statistics answerer

Diffstat:

searx/answerers/statistics/answerer.py | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+), 0 deletions(-)

diff --git a/searx/answerers/statistics/answerer.py b/searx/answerers/statistics/answerer.py @@ -0,0 +1,51 @@ +from functools import reduce +from operator import mul + +from flask_babel import gettext + +keywords = ('min', + 'max', + 'avg', + 'sum', + 'prod') + + +# required answerer function +# can return a list of results (any result type) for a given query +def answer(query): + parts = query.query.split() + + if len(parts) < 2: + return [] + + try: + args = map(float, parts[1:]) + except: + return [] + + func = parts[0] + answer = None + + if func == 'min': + answer = min(args) + elif func == 'max': + answer = max(args) + elif func == 'avg': + answer = sum(args)/len(args) + elif func == 'sum': + answer = sum(args) + elif func == 'prod': + answer = reduce(mul, args, 1) + + if answer is None: + return [] + + return [{'answer': unicode(answer)}] + + +# required answerer function +# returns information about the answerer +def self_info(): + return {'name': gettext('Statistics functions'), + 'description': gettext('Compute {functions} of the arguments').format(functions='/'.join(keywords)), + 'examples': ['avg 123 548 2.04 24.2']}