File: //opt/saltstack/salt/lib/python3.10/site-packages/virtualenv/app_data/read_only.py
from __future__ import annotations
import os.path
from typing import TYPE_CHECKING
from virtualenv.util.lock import NoOpFileLock
from .via_disk_folder import AppDataDiskFolder, PyInfoStoreDisk
if TYPE_CHECKING:
from pathlib import Path
from typing import NoReturn
class ReadOnlyAppData(AppDataDiskFolder):
can_update = False
def __init__(self, folder: str) -> None:
if not os.path.isdir(folder):
msg = f"read-only app data directory {folder} does not exist"
raise RuntimeError(msg)
super().__init__(folder)
self.lock = NoOpFileLock(folder)
def reset(self) -> None:
msg = "read-only app data does not support reset"
raise RuntimeError(msg)
def py_info_clear(self) -> None:
raise NotImplementedError
def py_info(self, path: Path) -> _PyInfoStoreDiskReadOnly:
return _PyInfoStoreDiskReadOnly(self.py_info_at, path)
def embed_update_log(self, distribution: str, for_py_version: str) -> NoReturn:
raise NotImplementedError
class _PyInfoStoreDiskReadOnly(PyInfoStoreDisk):
def write(self, content: str) -> NoReturn: # noqa: ARG002
msg = "read-only app data python info cannot be updated"
raise RuntimeError(msg)
__all__ = [
"ReadOnlyAppData",
]