Skip to content

Commit 42b02cb

Browse files
committed
nums: safer mean and median
1 parent ccad37e commit 42b02cb

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
*.duckdb
12
*.pdf
23
*.epub
34
/.mutmut-cache

library/playback/media_printer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def media_printer(args, data, units=None, media_len=None) -> None:
140140
marked = db_history.add(args, [d["path"] for d in media], mark_done=True)
141141
log.warning(f"Marked {marked} metadata records as watched")
142142

143-
total_duration = sum(m.get("duration") or 0 for m in media)
143+
total_duration = sum(nums.safe_int(m.get("duration")) or 0 for m in media)
144144
if "a" in print_args and ("Aggregate" not in media[0].get("path") or ""):
145145
if "count" in media[0]:
146146
D = {"path": "Aggregate", "count": sum(d.get("count") or 0 for d in media)}

library/utils/nums.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ def safe_median(l) -> float | None:
6363
if not l:
6464
return None
6565
try:
66-
return statistics.median(v for v in l if v is not None and v > 0)
66+
l = (safe_float(v) for v in l)
67+
l = (v for v in l if v and v > 0)
68+
return statistics.median(l)
6769
except statistics.StatisticsError:
6870
return None
6971

@@ -72,7 +74,9 @@ def safe_mean(l) -> float | None:
7274
if not l:
7375
return None
7476
try:
75-
return statistics.mean(v for v in l if v is not None and v > 0)
77+
l = (safe_float(v) for v in l)
78+
l = (v for v in l if v and v > 0)
79+
return statistics.mean(l)
7680
except statistics.StatisticsError:
7781
return None
7882

0 commit comments

Comments
 (0)