CultLib/packages/cultcache-py/src/cultcache_py
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Libby b2434fc7fc cultcache-py: single-file store takes the cross-process lock, stages uniquely and fsyncs
push, push_all and delete hold <path>.lock (flock; LockFileEx over the whole file on
Windows, as cultcache-ts store-file.ts) across the read and the replace. The staged file
is <path>.tmp-<pid>-<uuid>, fsynced before os.replace, with a directory fsync after off
Windows; a failed write removes its staged file and leaves the store.

Tests fail when the rule breaks: a write waits while a flock holder (Rust's lock) and the
TypeScript runtime's withStoreWriteLock hold the lock, three processes lose no writes,
fsync precedes replace, staged names differ, a failed replace leaves no staged file.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:49:32 +00:00
..
__init__.py Merge origin/main into hands/variants-c2a-main (main-into-c2a) 2026-10-14 04:06:41 +02:00
backing_store.py Add Python CultCache wire parity package 2026-06-13 20:35:58 +01:00
cache.py Python: a document listing an id registers beside the one owning it; registration refuses typed 2026-09-30 15:31:25 +02:00
documents.py cultcache-py: msgpack is a hard dependency; drop the optional-import fallbacks 2026-11-06 20:47:07 +00:00
interop.py cultcache-py: typed leaves own each slot's C# type name, write check and read check; the catalog derives from them 2026-10-12 01:06:24 +02:00
leaves.py cultcache-py: msgpack is a hard dependency; drop the optional-import fallbacks 2026-11-06 20:47:07 +00:00
py.typed Mark Python runtime package typed 2026-06-13 22:36:12 +01:00
stores.py cultcache-py: single-file store takes the cross-process lock, stages uniquely and fsyncs 2026-11-06 20:49:32 +00:00