CultLib/packages/cultcache-py/src/cultcache_py
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 5be87c7696 Refuse re-entrant Python cache mutations and adopt legacy-key globals on load
Attach, pull, registration, writes and deletes raise when started on a
thread already inside a mutation of the same cache (a store call,
decoder, encoder, extractor or updater), instead of running inside it
and corrupting the state being built. Reads stay reentrant. Internal
delegation (put_global, update, delete_global, register_registry,
add_backing_store) goes through private helpers so it is not re-entry.

A pull adopts a global persisted under a key other than __global__ as
that type's global without writing. The first write or delete of it
removes the legacy record in the same call; a failed removal takes the
new record back out. Two globals of one type on disk are still refused.

The lock and unlocked-read comments now state the per-call guarantee.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 12:27:55 +02:00
..
__init__.py Add Python CultCache wire parity package 2026-06-13 20:35:58 +01:00
backing_store.py Add Python CultCache wire parity package 2026-06-13 20:35:58 +01:00
cache.py Refuse re-entrant Python cache mutations and adopt legacy-key globals on load 2026-09-14 12:27:55 +02:00
documents.py Cache Python document schema catalogs 2026-06-14 01:43:14 +01:00
interop.py Add Python CultCache wire parity package 2026-06-13 20:35:58 +01:00
py.typed Mark Python runtime package typed 2026-06-13 22:36:12 +01:00
stores.py Recover schema-stamped cache records across runtimes 2026-06-27 14:34:53 +01:00