Extract cache/backend.py to mizan-core (Tier A)

cache/backend.py is pure framework-agnostic key-value abstraction —
CacheBackend Protocol, MemoryCache, RedisCache. No Django imports.
Moves to cores/mizan-python/src/mizan_core/cache/backend.py with no
content changes; mizan-django re-imports.

Verified: mizan-core 15/15, mizan-django 348 pass / 21 skip.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-06 14:23:01 -04:00
parent 37e61c646b
commit 9150cdc5ee
3 changed files with 7 additions and 7 deletions

View File

@@ -15,7 +15,7 @@ import logging
import threading
from typing import Any
from .backend import CacheBackend, MemoryCache, RedisCache
from mizan_core.cache.backend import CacheBackend, MemoryCache, RedisCache
from mizan_core.cache.keys import derive_cache_key, CONTEXT_KEY_PREFIX
logger = logging.getLogger("mizan.cache")

View File

@@ -2782,7 +2782,7 @@ class CacheBackendTests(TestCase):
"""Tests for MemoryCache backend operations."""
def setUp(self):
from mizan.cache.backend import MemoryCache
from mizan_core.cache.backend import MemoryCache
self.cache = MemoryCache()
def test_get_miss(self):
@@ -2825,7 +2825,7 @@ class CachePurgeTests(TestCase):
def setUp(self):
from mizan.cache import cache_put, set_cache
from mizan.cache.backend import MemoryCache
from mizan_core.cache.backend import MemoryCache
self.cache = MemoryCache()
set_cache(self.cache)
@@ -2869,7 +2869,7 @@ class CacheIntegrationTests(TestCase):
self.factory = RequestFactory()
from mizan.cache import set_cache
from mizan.cache.backend import MemoryCache
from mizan_core.cache.backend import MemoryCache
from mizan.setup.settings import clear_settings_cache
self.cache = MemoryCache()
@@ -3139,7 +3139,7 @@ class CachePolicyIntegrationTests(TestCase):
"""Context with mixed revs uses the maximum for cache key."""
from mizan_core.cache.keys import derive_cache_key
from mizan.cache import set_cache, reset_cache
from mizan.cache.backend import MemoryCache
from mizan_core.cache.backend import MemoryCache
from mizan.setup.settings import clear_settings_cache
from django.test import override_settings
@@ -3292,7 +3292,7 @@ class RedisCacheBackendTests(TestCase):
def setUp(self):
if _SKIP_REDIS:
self.skipTest(_SKIP_MSG)
from mizan.cache.backend import RedisCache
from mizan_core.cache.backend import RedisCache
self.cache = RedisCache(REDIS_URL, prefix="mizan:test:")
self.cache.clear()
@@ -3370,7 +3370,7 @@ class RedisCachePurgeTests(TestCase):
def setUp(self):
if _SKIP_REDIS:
self.skipTest(_SKIP_MSG)
from mizan.cache.backend import RedisCache
from mizan_core.cache.backend import RedisCache
from mizan.cache import cache_put
self.cache = RedisCache(REDIS_URL, prefix="mizan:test:")
self.cache.clear()