tracker django_spire.contrib.sync.database.tracker FieldUpdateTracker Source code in django_spire/contrib/sync/database/tracker.py 12 13def __init__(self) -> None: self._original: dict[str, Any] = {} get_dirty Source code in django_spire/contrib/sync/database/tracker.py 15 16 17 18 19 20 21 22def get_dirty(self, current: dict[str, Any]) -> set[str]: dirty: set[str] = set() for key, value in current.items(): if key not in self._original or self._original[key] != value: dirty.add(key) return dirty snapshot Source code in django_spire/contrib/sync/database/tracker.py 24 25 26 27 28def snapshot(self, fields: dict[str, Any]) -> None: self._original = { key: copy.deepcopy(value) if isinstance(value, _MUTABLE_TYPES) else value for key, value in fields.items() }