HEX
Server: LiteSpeed
System: Linux us-bos-web1978.main-hosting.eu 5.14.0-611.27.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 4 04:40:11 EST 2026 x86_64
User: u773298991 (773298991)
PHP: 8.3.30
Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/cloudlinux/venv/lib64/python3.11/site-packages/virtualenv/app_data/read_only.py
import os.path

from virtualenv.util.lock import NoOpFileLock

from .via_disk_folder import AppDataDiskFolder, PyInfoStoreDisk


class ReadOnlyAppData(AppDataDiskFolder):
    can_update = False

    def __init__(self, folder: str) -> None:
        if not os.path.isdir(folder):
            raise RuntimeError(f"read-only app data directory {folder} does not exist")
        super().__init__(folder)
        self.lock = NoOpFileLock(folder)

    def reset(self) -> None:
        raise RuntimeError("read-only app data does not support reset")

    def py_info_clear(self) -> None:
        raise NotImplementedError

    def py_info(self, path):
        return _PyInfoStoreDiskReadOnly(self.py_info_at, path)

    def embed_update_log(self, distribution, for_py_version):  # noqa: U100
        raise NotImplementedError


class _PyInfoStoreDiskReadOnly(PyInfoStoreDisk):
    def write(self, content):  # noqa: U100
        raise RuntimeError("read-only app data python info cannot be updated")


__all__ = [
    "ReadOnlyAppData",
]