Skip to main content

pydeno

Run AI-generated JavaScript from Python, securely, in a sandbox.

Real V8 · supervised worker process · OS-level sandbox · your Python functions as the only way out

Tests PyPI Python License: MIT Docs

Quickstart · How it is secure · How it was tested · Performance · Docs · Security policy


Agents increasingly answer questions by writing code: a data transform, a chart spec, a slide deck, a loop that calls your tools. That code is untrusted by construction. pydeno lets a Python program run it and get the result back, behind a boundary that holds even if the code is hostile.

from pydeno import IsolatedRuntime, RuntimeConfig

with IsolatedRuntime(RuntimeConfig(timeout=2.0), sandbox="require") as rt:
    rt.bind_function("lookup", lambda sku: {"A1": 3.5}[sku])   # the only thing the guest can call
    print(rt.eval("lookup('A1') * 2"))                          # 7.0
    rt.eval("new Array(2 ** 32 - 1).fill(0)")                   # WorkerCrashed. Your process is fine.

Why pydeno

🧱 Contained A V8 abort, a hang or a memory blow-up kills a disposable worker process, never yours.
🔒 No ambient authority No filesystem, network, processes, environment, Deno, process or require. Whatever the guest can do beyond computing, you bound on purpose.
🧰 Real JavaScript The engine behind Chrome and Node (deno_core + V8), so model-written code behaves like JavaScript and real libraries run.
⚡ Fast A native Rust wire codec and a pre-started spare worker: as little as ~15 ms to create a runtime and evaluate, a 2 MB result in ~18 ms.
🧪 Tested like an attacker would Assume-breach syscall sweeps against the real kernel, a verified seccomp filter, fuzzing and hostile-worker fakes, on 12 Linux distros and two CPU architectures.
🔌 Tool-calling built in bind_function and ToolBridge give the model's code your Python tools, with call budgets and errors it can branch on.

Quickstart

pip install pydeno     # or: uv pip install pydeno     (Python 3.10+, macOS or Linux)

Tools the guest can call, with a total budget:

from pydeno import IsolatedRuntime, ToolBridge

bridge = ToolBridge({"get_weather": get_weather, "send_email": send_email}, max_calls=50)

with IsolatedRuntime(sandbox="require") as rt:
    bridge.attach(rt)
    rt.eval("tools.get_weather('Zurich')")

The call that exceeds max_calls never reaches your Python function; the guest gets a catchable ToolBudgetError. A Python exception inside a tool reaches JavaScript as a real Error whose name is the exception's class, so the model's code can branch on it. Use redact_host_errors=True if exception text must not reach the guest.

Make the easy path the safe one (the module-level helpers then use a sandboxed worker):

import pydeno

pydeno.configure_default_runtime(isolated=True, sandbox="require")
pydeno.eval("1 + 1")

Run real libraries. Many assume browser basics a bare isolate lacks. Opt in to a small, pure-JavaScript set (virtual-time timers, TextEncoder, btoa, Blob, EventTarget, AbortController, structuredClone) that never defines window or document:

from pydeno import IsolatedRuntime, RuntimeConfig, WEB_POLYFILLS

rt = IsolatedRuntime(RuntimeConfig(bootstrap=WEB_POLYFILLS))

Showcase: Python and JavaScript, both sandboxed

A model that writes code wants the best language for each half of the job: Python for wrangling data, JavaScript for what only the JS ecosystem does well. Pair pydeno with Monty (Pydantic's Python sandbox) and run both without trusting either, sharing one set of host tools and one call budget:

with Monty() as pool, pool.checkout() as py:                      # the model's Python, in Monty
    analysis = py.feed_run(model_python, external_lookup={"fetch_sales": fetch_sales})

with IsolatedRuntime(RuntimeConfig(bootstrap=WEB_POLYFILLS), sandbox="require") as js:
    js.bind_function("getAnalysis", lambda: analysis)             # hand the result across
    js.bind_function("fetch_sales", fetch_sales)                  # the same tool, same budget
    svg = await js.eval_async(model_javascript)                   # the model's JS, in pydeno
1. Python half, in Monty
  [python] best region: East (1750)
  [python] refused: PermissionError: Permission denied: '/etc/passwd'
2. JavaScript half, in pydeno
  [js]     refused: Evaluation failed: ReferenceError: fetch is not defined
  [js]     sandbox: seatbelt
3. wrote sales.svg (11021 bytes); tool calls used: 2 of 5

A bar chart of revenue by region, rendered by Vega-Lite inside the pydeno sandbox from data computed by Python inside Monty

Python crunched the numbers; JavaScript drew the chart with Vega-Lite; each sandbox refused its own attempt to reach outside, and both drew on the same five-call tool budget. Full runnable example: examples/monty_and_pydeno.py.

More of the same: Python prepares, JavaScript builds

Monty is excellent at the data half, and the JavaScript ecosystem has libraries nothing in Python matches. Each example below is a complete, tested program: the model's Python runs in Monty, the model's JavaScript runs in pydeno, neither can reach your files, network or environment, and each test checks the answer against an independent computation (and Monty's against CPython's).

Example Monty (Python) does pydeno (JavaScript) does Produces
3D terrain layered value-noise heightmap, slope analysis, tree placement three.js: mesh, normals, vertex colours by slope, instanced trees, raycast line-of-sight .glb 3D model
Orbits symplectic N-body integrator (figure-eight choreography), energy drift three.js: speed-coloured tube trails, closest-approach analysis .glb 3D model
Julia relief Monty's own julia example: escape-time counts for every grid point three.js: a mountain range along the fractal's boundary, painted by escape time .glb 3D model
City sun analysis procedural city layout and zoning three.js: extruded buildings, a raycast from every roof to the sun, shade ranking .glb with per-building sunlight
Dependency network synthetic package graph, PageRank, components d3: force layout run to convergence, Voronoi cells, treemap one self-contained SVG
Dashboard a year of metrics: moving average, z-score anomalies, correlations, regression ECharts: four-panel dashboard, server-side HTML page with inline SVG, no scripts
Geospatial fleet GPS tracks, cleaning and resampling turf.js: buffer union, hulls, Voronoi service zones, nearest depot GeoJSON and an SVG map
SQL to chart answers a business question through a read-only SQL tool Vega-Lite: bars, stacked bars, cohort heatmap SVG charts
Spreadsheet to deck analyses a sheet through a read-only wrapper pptxgenjs: native charts, tables, narrative .pptx board deck

How fast are they together? One warm worker, median of three, on an Apple-silicon Mac, with V8 in its secure default (jitless) and with the JIT turned on:

Example jitless (default) V8 JIT on JIT speed-up
three.js terrain (129x129 grid) 879 ms 180 ms 4.9x
three.js N-body orbits (3000 steps) 247 ms 172 ms 1.4x
three.js city sun analysis (6x6 blocks) 210 ms 27 ms 7.9x
d3 network layout (200 packages) 1,619 ms 198 ms 8.2x
ECharts dashboard (365 days x 4 regions) 64 ms 42 ms 1.5x
turf geospatial (8 vehicles) 1,937 ms 347 ms 5.6x
SQL question to Vega-Lite chart (4000 orders) 18 ms 17 ms 1.1x
spreadsheet to PowerPoint (1000 rows) 70 ms 31 ms 2.3x

Most turns finish in well under a second even in the secure mode; Monty's data half stays within about 1.1x of plain CPython. The JIT matters for compute-heavy JavaScript (layouts, raycasting), and it is exactly the part of V8 where most exploits live, which is why it is off by default. If you trust the code a little more, IsolatedRuntime(jitless=False) buys the second column and still runs behind the full OS sandbox. Reproduce with benches_py/monty_three_bench.py.

How it works

flowchart LR
    app["Your Python app"] -- "eval, tools" --> parent["IsolatedRuntime<br/>(supervisor)"]
    parent <-->|"validated frames only"| worker
    subgraph worker["Worker process: sandboxed before V8 starts"]
        v8["V8 (jitless)<br/>guest JavaScript"]
    end
    v8 -. "bound functions only" .-> parent
    parent --> tools["Your tools"]

The worker is a separate process with an empty environment, its own session, no privileges, and an OS sandbox applied before the JavaScript engine exists. The parent enforces the deadline, memory and call budgets from outside and treats everything the worker sends as untrusted input.

How it is secure

Defence in depth: each layer assumes the one above it has failed. The threat model is in SECURITY.md and the details in the isolation guide.

Layer What it does
Separate process Empty environment, own session. A V8 abort, hang or out-of-memory kills the worker; the parent raises WorkerCrashed or RuntimeTimeout.
OS sandbox, before the engine exists macOS: Seatbelt. Linux: Landlock, a private empty root (mount, network, IPC and UTS namespaces) and a seccomp-bpf filter that denies new processes, network, mounts, kernel interfaces, filesystem changes and signals to other processes. Syscalls newer than the reviewed range answer ENOSYS. sandbox="require" refuses to start unless every layer applied.
No privileges A worker started as root drops to nobody with an empty capability set; no_new_privs is set.
Smaller engine surface V8 runs --jitless (no JIT, no WebAssembly). SharedArrayBuffer, Atomics, WeakRef and FinalizationRegistry are removed: they are what timers and garbage-collection probes are built from.
Limits enforced from outside Wall-clock deadline (default 60 s), CPU cap, memory ceiling (default 1 GiB), host-call budgets, an in-flight call cap and a write-stall limit. A guest that keeps calling your functions cannot hold the deadline open indefinitely.
The worker is untrusted Every frame it sends goes through a strict native decoder with size, depth, node and hash-collision budgets. No pickle, no eval. A worker that sends nonsense is killed.
Capability tokens A bound function is reachable only through an unguessable token, installed after the binding exists.
Determinism on request clock= freezes Date/Intl; random_seed= seeds Math.random.

What it does not promise. A V8 bug is contained to the worker, not prevented, and about 200 syscalls the engine needs stay reachable. For multi-tenant use, run one runtime per trust unit and put the whole thing in a locked-down container or microVM (see the deployment guidance). Libraries that need WebAssembly, a DOM or a canvas do not work. The engine is only as current as the deno_core release it is built on; a weekly check tells maintainers when a newer V8 becomes available.

Which runtime?

IsolatedRuntime Runtime (in-process)
Use it for Anything a model or a user supplied Code you wrote or reviewed
A hostile builtin can abort or hang your process No: it kills the worker Yes (new Array(2 ** 32 - 1).fill(0))
timeout= always enforced Yes (hard kill from outside) Not for every builtin (e.g. sparse-array sort)
OS sandbox Yes No
Start-up ~15-45 ms with the spare worker, ~70-105 ms without microseconds
A host tool call Crosses a process boundary (~70 µs per call) ~12-17 µs (BENCHMARKS.md)

How it was tested

The sandbox is tested the way an attacker would try it: from inside, and against the real kernel.

  • Assume-breach syscall sweeps. A sandboxed process fires every syscall in the kernel's table with garbage arguments, from a fresh process each time, and records what is still reachable. Dangerous calls are fired for real (inside a container, never on a host).
  • The seccomp program is verified, not trusted. A BPF interpreter in the tests runs the filter's decision logic on any platform, and every syscall number in it is checked against the Linux kernel's own tables (regenerated from a pinned kernel tag by scripts/gen_syscall_tables.py).
  • A capability checklist. What untrusted code tries first (read or write a file, reach the network, spawn a process, read the environment; Deno, Node and browser globals; the runtime's own plumbing), through both eval and eval_async, plus a check that nothing reached the host.
  • Hostile peers. Fake workers that stop reading, send malformed or oversized frames, flood hash tables or lie about types; fuzzing with Hypothesis; and a port of pydantic/monty's security suite (the cases an in-process runtime cannot survive are pinned as strict expected failures).
  • Two codecs, tested against each other. The wire codec is native (Rust) with a readable Python reference; hundreds of tests, including generated frames, require identical results and errors.
  • Real libraries, inside the sandbox. pptxgenjs, three.js (GLB export), Vega-Lite and dagre give the same results as an unsandboxed runtime, with their bytes pinned in vendor/libs/; about 25 more (d3, ECharts, jsPDF, Tailwind v4, Prettier, ...) were checked by hand.
  • Many kernels. The Linux suite runs on 12 distro images (Debian, Ubuntu, Fedora, AlmaLinux, Amazon Linux; Python 3.10 to 3.14) on both x86_64 and aarch64, and under simulated kernels that lack Landlock, seccomp or both, to prove the sandbox degrades honestly and sandbox="require" fails closed. See .github/workflows/test.yml.
  • Zero skips. Platform-specific tests are deselected, never skipped; CI enforces a skip budget of zero so an unrun test cannot hide.
  • The worker proves its own confinement. Before any guest code exists it tries to read a file, write one, spawn a process, connect out, signal its parent and (on macOS) read the parent's environment and the machine's hardware ID; a complete sandbox that lets one through refuses to start. Each probe is also checked in reverse: it must report a breach in an unsandboxed process.
  • Independent review, and what it found. Three AI reviewers (each given a separate slice of the sandbox and told to reproduce before reporting), GitHub Copilot, and research into how vm2, SandboxJS, isolated-vm and Monty were attacked. The result is a findings table that lists the misses as well as the catches, including a macOS leak of the host's environment, a bridge bug that let a guest abort the process, and a V8 x86_64 startup trap that only a native x86_64 run revealed. Read it in the security report.

Performance

Measured on macOS arm64 (Apple M2) with a release build, on a machine that was not idle, so ranges are shown. Reproduce with benches_py/isolated_report.py and the Criterion and pytest-benchmark suites (BENCHMARKS.md, which also shows 0.5.0 is no slower than 0.4.5).

Create an IsolatedRuntime and evaluate ~15 ms with the spare worker used soon after it starts, ~30-45 ms after it has sat idle, ~70-105 ms without
Move a 2 MB structured result across the boundary ~18 ms each way (native codec)
import pydeno ~19 ms (the isolation stack loads on first use)
Release extension size 43 MB, nearly all of it V8 and its built-in Intl data
In-process Runtime: a complete host tool call ~12-17 µs; a bare eval ~6-10 µs

Jitless V8 (the default for IsolatedRuntime) makes compute-heavy code roughly 1.5 to 2 times slower than with the JIT; jitless=False trades that back for a larger attack surface.

Integrations

  • FastMCP tool bridge: expose FastMCP tools to sandboxed JS via bind_function and an in-process fastmcp.Client
  • pydantic-ai code mode (JSCodeMode): the JavaScript counterpart of pydantic-ai's Monty-based code mode. The agent gets one run_javascript tool; your other tools become typed tools.* functions the model's code calls with await and Promise.all, with retries, usage limits and approvals mapped onto pydantic-ai's own. Runs offline: examples/pydantic_ai_agent.py. pip install "pydeno[pydantic-ai]"
  • Agent sessions (AgentSandbox): state across turns, pause and resume at every tool call (approval flows), a signed replay journal you can dump() and load(), and the tool descriptions and .d.ts for your prompt
  • ToolBridge: several Python tools with a total call budget, typed errors the model's JS can branch on, and console.log routed back to Python
  • Monty + pydeno: the model's Python runs in Monty, its JavaScript in pydeno, both sandboxed, sharing one tool and one call budget; Python computes, a Vega-Lite chart is drawn in JS
  • Vendored npm libraries: run real npm document-generation libraries (pptxgenjs, pdf-lib) from their browser bundles inside the sandbox; see the guide
  • Arrow IPC dataframes: move 100k+ row tables into the sandbox as Arrow IPC bytes instead of JSON objects (5 ms vs 253 ms); see the guide

Documentation

Status and contributing

pydeno is experimental: expect breaking changes between versions. Found a way out of the sandbox? Please report it privately, as described in SECURITY.md. Everything else: issues and pull requests are welcome; start with docs/contributing/.

Licensed under the MIT License.

Acknowledgements

pydeno began as a fork of jsrun by Xin Fu, which had the original idea of a Python library that runs JavaScript on a Rust runtime built on deno_core. We took that idea and its foundations, then changed a great deal: the sandboxed worker process and OS confinement, the tool boundary, the wire codec, the resource limits, and most of the tests are new. Thank you to jsrun for the starting point. The MIT licence and original copyright are kept, and docs/contributing/upstream-divergence.md records what came from where.

Thanks also to Monty by Pydantic, whose design for running agent-written code (limits, host functions, a public challenge to break it) shaped how we think about this problem; the two sandboxes work well side by side.

Metadata

Release files for pydeno 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydeno 0.6.1
File Size Uploaded
pydeno-0.6.1.tar.gz 2.2 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for pydeno 0.6.1
File
pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp314-cp314t-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pydeno-0.6.1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
pydeno-0.6.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pydeno-0.6.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
pydeno-0.6.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pydeno-0.6.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
pydeno-0.6.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pydeno-0.6.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
pydeno-0.6.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
pydeno-0.6.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pydeno-0.6.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
pydeno-0.6.1-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details

Total release size: 437.3 MB

Release files / pydeno-0.6.1.tar.gz

Download URL pydeno-0.6.1.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
5e6bd0fd49ce340b86112cfb460337552c376099d7383276db06b35f72154a8c
BLAKE2b-256 checksum
How to use checksums
f1273618d38ff3899b75ada671899a3f77c80b2719078c58833f0084a338bcc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
d004616a24d327cc16154e5da5cb824a08f82906b884224a26e250d03e122e84
BLAKE2b-256 checksum
How to use checksums
68c752b7f1d7052488222ad6ebc7174abd4af389edc6d33c0c0cc0623580f58a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
f097f779f385694391628b6aae5e01a274d8e8cdcb618ca56cb46e9ba46b2fa9
BLAKE2b-256 checksum
How to use checksums
cbb5af7279c92d054a480a57607edcd401b7366d4b62bbd75db8512b3df5b3eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c89bf44368d986e7c85e3b3299d7ba6df5b5a23fbb941fe0b215922f2f4052ca
BLAKE2b-256 checksum
How to use checksums
1b6c5549ed691755e15b016015511d7e8b91ee18be70f3846013471b2db8ec60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314t-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp314-cp314t-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
13d97115288eab87747c57c7c3b8adbcb7cc883b2ea13dd85a32f980077d4d86
BLAKE2b-256 checksum
How to use checksums
1b57b3b3969bc5a2c9b646185f7db143fb2d6f6f2e596c137ca17de69178e84c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314-win_amd64.whl

Download URL pydeno-0.6.1-cp314-cp314-win_amd64.whl
Size 18.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
a8ff61dfcb2bfe5d29c1d97d9d1f27f6976a37fd307ff8e9b40ec9f02e5be43e
BLAKE2b-256 checksum
How to use checksums
19b11032130086437a42a54b0332389da5b306b888a46c1f9c21bd6fc5e78d50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp314-cp314-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
72906b8fdf6808e60943cbf59295c4238fde1316db25623776435c2c2a9e56ad
BLAKE2b-256 checksum
How to use checksums
00133603f24213349e0cae68c2f23c8d4af9404b28dfdd98cb49f8bc1af1319e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp314-cp314-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e13294481f9609a194d5c4576419dd25b515ca245c03226e1d8c90788ccd8089
BLAKE2b-256 checksum
How to use checksums
a0c7a5546b184551409058d38c5cd5840670a6bbe44dc61826823d8cafb70e7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL pydeno-0.6.1-cp314-cp314-macosx_11_0_arm64.whl
Size 17.6 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9f1b0d6b0222a951aca425e8aa23c32acf7edd0f0ad180d3efff967702bef6a1
BLAKE2b-256 checksum
How to use checksums
0e5626db3903353275552bc1d1ca43a0e43fdc7eb7d9ae20d707a28c5bf37f32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp313-cp313-win_amd64.whl

Download URL pydeno-0.6.1-cp313-cp313-win_amd64.whl
Size 18.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
e4de41a5edaf43dc64c95c1d66f4f8c2b9ec17b7f130702f809fab9aa5ebf14e
BLAKE2b-256 checksum
How to use checksums
c37158b1fba6424e7956d91aad3ba2a56c92f99f224bf61375da6e4569ebee1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9bfb5228d8a29d47ca76e01af0c84ef36817a7fd46221a349ce281d128fdfa52
BLAKE2b-256 checksum
How to use checksums
57990705cae17f5c118d36fe385591166fbf48fe34768d794438c9eb255d0638
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp313-cp313-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1a00db5e0a1c572865b49e0733530554715125fd09e751f63b668c9993f0d537
BLAKE2b-256 checksum
How to use checksums
7421f4da95f6f7a9ca9498add49fe09daaa3ee5ed3cfc176d7dba987586956d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL pydeno-0.6.1-cp313-cp313-macosx_11_0_arm64.whl
Size 17.6 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c25630e9f5d55221f67737bb2924600a03902e8584a3069266a337e40f34872d
BLAKE2b-256 checksum
How to use checksums
539ecc1f81386a63759d34db7517b2b02a8fbf57b8107c00172f8ee96864d368
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp312-cp312-win_amd64.whl

Download URL pydeno-0.6.1-cp312-cp312-win_amd64.whl
Size 18.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
010aa2c4485f7fbf4b06ccdbd6a1917ef31582c3b77a1c7c6ba9c0b7dcb641bd
BLAKE2b-256 checksum
How to use checksums
0fcc054e0a13989c7623b8faf73920b4b1b09abd6f24af240b82c00dea70a770
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0da3e346e3d0ee32fab5c8e4f2ae92aacc76342cd5ecbd46566c70597ee2906e
BLAKE2b-256 checksum
How to use checksums
45a0b0360ae12667177972cd6accb14919598b273792f01fb24cfb84c31ec47d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp312-cp312-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ddeaaabf49405cc0aeb95b2c76c98b7fa7650b29772585695531597a320f6e3c
BLAKE2b-256 checksum
How to use checksums
b32914b06b363b2c19fe29b29e071c8dfee1b5b4598405b6ac6e1b26e2ad2b87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL pydeno-0.6.1-cp312-cp312-macosx_11_0_arm64.whl
Size 17.6 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8238d4b91f51fa38d72274c8bb507089758341616e5609dc340135927e3af68c
BLAKE2b-256 checksum
How to use checksums
8102e8d3d089b856782ab1e072de9f887a2d65a8d5d0d4f07c813858f3615b66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp311-cp311-win_amd64.whl

Download URL pydeno-0.6.1-cp311-cp311-win_amd64.whl
Size 18.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
c5c99ace55318babc4a535a463aa50fe41845cc768de4f92038a62019b54a481
BLAKE2b-256 checksum
How to use checksums
92e417bb6526ec1443f2153f054f921591529974b5d8acc62c5507f52b07c269
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
262b0963a4fb6cebc2fa7d5e93f4dd1ffd112911faff11f46da4ae75d09396e8
BLAKE2b-256 checksum
How to use checksums
88f3c6265a5b1b479ddae5ab13be5c98449f83767d0d3f9bb68ab97a0fcef7f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp311-cp311-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
3944eb9f48470fa88c843648f2fc68e17688f886f8922e5c94561af41a006e24
BLAKE2b-256 checksum
How to use checksums
f4d96cfd188dff194e6d512b10b0e9ad0538d19456efe3064d882dc437d81f40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL pydeno-0.6.1-cp311-cp311-macosx_11_0_arm64.whl
Size 17.6 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
514a2313fa332366404e4697129d2985a76790a5caa4fe291c402311330dbb50
BLAKE2b-256 checksum
How to use checksums
c929c148e9631048d233f93fbf979e2a366c0ada9eb5b19de9e6669c54ab570c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp310-cp310-win_amd64.whl

Download URL pydeno-0.6.1-cp310-cp310-win_amd64.whl
Size 18.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
afc6276c8cf2920249f4d4b4fba6e9b8f67bd04cdb871f60eef19f0be63a1217
BLAKE2b-256 checksum
How to use checksums
34dea97da4c5181a62a17e569d59bfdf9d783a09e02ea5fdbdcc7c98cfd99540
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL pydeno-0.6.1-cp310-cp310-manylinux_2_28_x86_64.whl
Size 19.6 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33209b692c447cbaf924fc90fe99d88c2d04cb736f522a42728a14992ff41e92
BLAKE2b-256 checksum
How to use checksums
034deeca9a1c0e4d30f099a9ff48a7fb09990f739b96fbaa1b50411592c071bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / pydeno-0.6.1-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL pydeno-0.6.1-cp310-cp310-manylinux_2_28_aarch64.whl
Size 19.0 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b5e884006394120950c655bb95de8e1241deb88a05be3183a08fbd3a0e1c8b6d
BLAKE2b-256 checksum
How to use checksums
1c6b2ee1d389317f68d8ad93b837a9a5ae8edc7cd72e366547f8f0ee29886a36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.1 This release

24 release files

0.4.5

24 release files

0.4.4

17 release files

0.4.3

17 release files

0.4.2

17 release files

0.4.1

17 release files

0.4.0

17 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page