Your question is Handling Edge Cases and Failures. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
Amperecloud's monitoring dashboard shows fleet-wide solar inverter output, computed from a batch of readings collected every few minutes. On-call has seen this function crash the whole batch job when a single inverter reports a malformed reading, taking the dashboard down for every site until the bad record is manually removed.
def compute_average_output(readings):
total = 0
for r in readings:
total += r["power_kw"]
average = total / len(readings)
peak = readings[0]["power_kw"]
for r in readings:
if r["power_kw"] > peak:
peak = r["power_kw"]
efficiency = readings[-1]["power_kw"] / readings[-1]["rated_kw"]
return {"average": average, "peak": peak, "efficiency": efficiency}
How does this code handle edge cases or potential failures? Go through each way it can break in production and what you would change.