Source code for jdxi_editor.ui.editors.effects.dispatch_stats

from __future__ import annotations

from dataclasses import dataclass
from typing import List


@dataclass
[docs] class DispatchStats:
[docs] applied: List[str]
[docs] skipped: List[str]
[docs] failed: List[str]
[docs] successes: List[str]
[docs] def record_applied(self, name: str): self.applied.append(name)
[docs] def record_skipped(self, name: str): self.skipped.append(name)
[docs] def record_failed(self, name: str): self.failed.append(name)
@property
[docs] def attempted(self) -> int: return len(self.applied) + len(self.failed)
@property
[docs] def coverage(self) -> float: total = self.attempted + len(self.skipped) return (self.attempted / total) if total else 0.0
@property
[docs] def success_rate(self) -> float: return (len(self.applied) / self.attempted) if self.attempted else 0.0