Add duplicate filename diagnostics

This commit is contained in:
Philip Guzman
2026-06-30 18:52:16 -07:00
parent d764f910e4
commit 6449c7de6a
10 changed files with 212 additions and 7 deletions
+3
View File
@@ -1,4 +1,5 @@
from serato_doctor.models.crate import Crate, CrateKind
from serato_doctor.models.duplicate import DuplicateGroup, DuplicateKind
from serato_doctor.models.health import HealthReport
from serato_doctor.models.library import Library
from serato_doctor.models.match import MatchEvidence, TrackMatch
@@ -9,6 +10,8 @@ __all__ = [
"Crate",
"CrateKind",
"DiskTrack",
"DuplicateGroup",
"DuplicateKind",
"HealthReport",
"Library",
"MatchEvidence",
+30
View File
@@ -0,0 +1,30 @@
from dataclasses import dataclass
from enum import Enum
from typing import Tuple
from serato_doctor.models.track import DiskTrack
class DuplicateKind(str, Enum):
EXACT_NAME = "exact_name"
CLOUD_CONFLICT = "cloud_conflict"
@dataclass(frozen=True)
class DuplicateGroup:
"""A deterministic group of files that warrants duplicate review."""
kind: DuplicateKind
comparison_key: str
tracks: Tuple[DiskTrack, ...]
@property
def extra_files(self) -> int:
return max(0, len(self.tracks) - 1)
@property
def display_name(self) -> str:
return min(
(track.filename for track in self.tracks),
key=lambda name: (len(name), name.casefold()),
)
+2
View File
@@ -15,6 +15,8 @@ class HealthReport:
disk_tracks: int
duplicate_filename_groups: int
duplicate_files: int
suspected_cloud_conflict_groups: int
suspected_cloud_conflict_files: int
unused_tracks: int
suggested_matches: int
static_crates: int