{ "schema": "python-runtime-manifest.v1", "runtime": "Pyodide", "version": "0.29.4", "python_version": "3.13.2", "abi_version": "2025_0", "platform": "emscripten_4_0_9", "index_url": "https://cdn.jsdelivr.net/pyodide/v0.29.4/full/", "origin_release": "https://github.com/pyodide/pyodide/releases/tag/0.29.4", "worker_only": true, "offline_required": true, "package_policy": { "mode": "allowlist", "allowed_packages": [], "reason": "LinuxCNC compatibility modules are virtual and core Python packages are not accepted until individually mapped and hashed." }, "virtual_modules": { "linuxcnc": ["command", "stat", "error", "ini"], "hal": ["component", "pin", "param", "signal", "thread"], "gstat": ["state", "task", "motion"], "INI": ["find", "findall", "sections"] }, "denied_capabilities": [ "os.system", "subprocess", "socket", "select", "multiprocessing", "threading", "ctypes", "fcntl", "pty", "termios", "device_paths", "arbitrary_host_paths" ], "artifacts": [ { "name": "pyodide-lock.json", "version": "0.29.4", "source_url": "https://cdn.jsdelivr.net/pyodide/v0.29.4/full/pyodide-lock.json", "origin_url": "https://github.com/pyodide/pyodide/releases/tag/0.29.4", "sha256": "14d2c2dba101277999e17135e653d8f15389ad1437f53eae213bf0c3cdff723d", "bytes": 122027, "license": "MPL-2.0", "mirror_kind": "official", "role": "package_lock" }, { "name": "pyodide.js", "version": "0.29.4", "source_url": "https://cdn.jsdelivr.net/pyodide/v0.29.4/full/pyodide.js", "origin_url": "https://github.com/pyodide/pyodide/releases/tag/0.29.4", "sha256": "7be9e63eddf6bd8786a5ab71c8689c35731d187e3415fe58d7cb95423b50421a", "bytes": 18597, "license": "MPL-2.0", "mirror_kind": "official", "role": "loader_metadata" } ] }