Add WebDAV backup, statistics, progress and dashboard
- WebDAV uploader: concurrency, request and bandwidth limits, retry with backoff, offline catch-up, encrypted manifests, durability tracking - Automatic unique remote directory claimed with a conditional PUT - AES-256-GCM client-side encryption with keyed blob names - /stats, /progress, /progress/stream and a /dashboard page - Own ctypes inotify binding with a compact watch tree (263 MB -> 76 MB RSS) - Directory-path ignore patterns and a forget command - Indexed range queries instead of LIKE for path prefixes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
ddf09bea88
commit
7e05e3d26c
@@ -40,6 +40,14 @@ def test_filter_patterns():
|
||||
assert f.path_reason(PurePath("src/key.txt")) is None
|
||||
|
||||
|
||||
def test_directory_patterns():
|
||||
f = Filters(patterns=("app/data/uploads",))
|
||||
assert f.skip_dir("uploads", "app/data/uploads")
|
||||
assert not f.skip_dir("uploads", "other/uploads")
|
||||
assert f.path_reason(PurePath("app/data/uploads/a/b.txt")) == "ignored-pattern"
|
||||
assert f.path_reason(PurePath("app/data/config.json")) is None
|
||||
|
||||
|
||||
def test_diff_unified():
|
||||
a = b"one\ntwo\nthree\n"
|
||||
b = b"one\n2\nthree\nfour\n"
|
||||
|
||||
Reference in New Issue
Block a user