源码索引 / CURRENT IMPLEMENTATION
providers/report.py
29 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
跳到函数 / 声明
import json
import math
import sys
def main():
try:
request = json.load(sys.stdin)
if not isinstance(request, dict) or set(request) != {"numbers"}:
raise ValueError("expected an object with only a numbers array")
numbers = request["numbers"]
if not isinstance(numbers, list) or not 1 <= len(numbers) <= 100:
raise ValueError("numbers must contain 1 to 100 values")
if any(isinstance(value, bool) or not isinstance(value, (int, float)) or not math.isfinite(value)
for value in numbers):
raise ValueError("numbers must contain only finite numbers")
total = sum(numbers)
if not math.isfinite(total):
raise ValueError("sum must be finite")
json.dump({"count": len(numbers), "total": total}, sys.stdout, allow_nan=False)
sys.stdout.write("\n")
except (json.JSONDecodeError, ValueError, TypeError, OverflowError) as error:
print(f"report worker: {error}", file=sys.stderr)
return 2
return 0
if __name__ == "__main__":
raise SystemExit(main())