"""NasApiBackend — 외부 스토리지(맥미니4TB / NAS Docker API) stub (plan D-1). ★ 미프로비전 = 503. silent fallback 금지(다른 백엔드로 자동 우회 X). 실 프로비전 후 D-3 에서 활성화. infra_inventory.md 갱신(Update Rule) 이 선행이다. """ from __future__ import annotations import os from collections.abc import AsyncIterator from .base import StatResult, StorageBackend, StorageNotConfigured _MSG = "NasApiBackend 미구성 — 외부 스토리지 프로비전 후 활성(D-3). silent fallback 없음." class NasApiBackend(StorageBackend): is_local = False def __init__(self, base_url: str | None = None) -> None: self._base_url = base_url def local_path(self, rel_path: str) -> os.PathLike[str] | None: return None async def stat(self, rel_path: str) -> StatResult: raise StorageNotConfigured(_MSG) async def stream( self, rel_path: str, *, start: int | None = None, end: int | None = None ) -> AsyncIterator[bytes]: raise StorageNotConfigured(_MSG) yield b"" # 도달 불가 — async generator 형태 유지용(호출부 `async for` 계약 일치).