Spaces:
Sleeping
Sleeping
| """ | |
| 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() | |