12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- from sys import version_info
- from functools import reduce
- from operator import mul
- from flask_babel import gettext
- if version_info[0] == 3:
- unicode = str
- 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 = list(map(float, parts[1:]))
- except:
- return []
- func = parts[0]
- answer = None
- if func == b'min':
- answer = min(args)
- elif func == b'max':
- answer = max(args)
- elif func == b'avg':
- answer = sum(args) / len(args)
- elif func == b'sum':
- answer = sum(args)
- elif func == b'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']}
|