mirror of
https://github.com/kuhyx/utils.git
synced 2026-11-13 16:10:58 +01:00
crdt_sync_dart: new domain-agnostic LogStore -- an in-memory Log with a reactive changes stream and upsert/delete(sticky tombstone)/replaceAll, behind an injectable LogPersistence port -- plus logToJson/logFromJson. FileLogPersistence (atomic temp-file-then-rename, generalizing diet_guard's LogStorageService) lives behind a separate crdt_sync_io.dart entrypoint so the core barrel stays pure Dart / web-safe. crdt-sync (Python): mirror dump_log/load_log/read_log/write_log sharing the same on-disk JSON format so a log written on one side parses on the other. Load/save only -- the reactive store is a Dart/Flutter convenience with no Python equivalent by design (Python consumers are headless sync ticks). Querying stays app-side: a Record's fields are opaque to the library, so filtering/sorting/search is the caller's job over LogStore.values. Both packages bumped to 0.2.0. 83 Dart tests + 71 Python tests (100% branch coverage) green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019KwUCPESvE5CjCtmUFz8xQ
29 lines
714 B
Python
29 lines
714 B
Python
"""Shared CRDT merge scheme + GitHub-Contents-API sync transport."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from crdt_sync._github import GitHubSyncClient, GitHubSyncError, RepoNotFoundError
|
|
from crdt_sync._hlc import Hlc
|
|
from crdt_sync._log import Log, merge_logs
|
|
from crdt_sync._record import Field, Record, merge_field, merge_record
|
|
from crdt_sync._store import dump_log, load_log, read_log, write_log
|
|
from crdt_sync._sync import sync_log
|
|
|
|
__all__ = [
|
|
"Field",
|
|
"GitHubSyncClient",
|
|
"GitHubSyncError",
|
|
"Hlc",
|
|
"Log",
|
|
"Record",
|
|
"RepoNotFoundError",
|
|
"dump_log",
|
|
"load_log",
|
|
"merge_field",
|
|
"merge_logs",
|
|
"merge_record",
|
|
"read_log",
|
|
"sync_log",
|
|
"write_log",
|
|
]
|