| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | # SPDX-License-Identifier: AGPL-3.0-or-later# pylint: disable=missing-module-docstringfrom functools import reducefrom operator import mulfrom flask_babel import gettextkeywords = ('min', 'max', 'avg', 'sum', 'prod')# required answerer function# can return a list of results (any result type) for a given querydef answer(query):    parts = query.query.split()    if len(parts) < 2:        return []    try:        args = list(map(float, parts[1:]))    except:  # pylint: disable=bare-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': str(_answer)}]# required answerer function# returns information about the answererdef 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'],    }
 |