Spaces:
Sleeping
Sleeping
File size: 1,768 Bytes
54c857f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
"""
Monkey-patch cascade-lattice to use writable directories.
This MUST be imported BEFORE any cascade imports.
HF Spaces runs as non-root user, so site-packages is read-only.
"""
import os
from pathlib import Path
# Get writable directory from env or use home
LATTICE_DIR = Path(os.environ.get('LATTICE_DIR', Path.home() / '.cascade'))
LATTICE_DIR.mkdir(parents=True, exist_ok=True)
def patch_cascade():
"""Patch cascade.observation.ObservationManager to use writable dir."""
try:
import cascade.observation as obs_module
_original_init = obs_module.ObservationManager.__init__
def _patched_init(self, lattice_dir: Path = None):
# Force use of writable directory
_original_init(self, lattice_dir=lattice_dir or LATTICE_DIR)
obs_module.ObservationManager.__init__ = _patched_init
print(f"[CASCADE-PATCH] ObservationManager patched to use {LATTICE_DIR}")
return True
except Exception as e:
print(f"[CASCADE-PATCH] Failed: {e}")
return False
def patch_model_registry():
"""Patch ModelRegistry to use writable dir."""
try:
import cascade.identity as id_module
_original_init = id_module.ModelRegistry.__init__
def _patched_init(self, lattice_dir: Path = None):
_original_init(self, lattice_dir=lattice_dir or LATTICE_DIR)
id_module.ModelRegistry.__init__ = _patched_init
print(f"[CASCADE-PATCH] ModelRegistry patched to use {LATTICE_DIR}")
return True
except Exception as e:
print(f"[CASCADE-PATCH] ModelRegistry patch failed: {e}")
return False
# Apply patches immediately on import
patch_cascade()
patch_model_registry()
|