PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
课程与章节
源码索引 / 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())