pyobservablejs
pyobservablejs brings reactive Observable notebooks
to Python. Build cells, charts, and browser inputs, or import an existing notebook.
Display the whole notebook or selected cells in JupyterLab, marimo, VS Code,
Colab, and other anywidget hosts.
Try it in your browser · Quickstart · Examples · API reference
Start
Install in a Python 3.11 through 3.14 notebook environment:
pip install pyobservablejs
Create an input and a result that updates when it changes:
import observablejs as obs
notebook = obs.Notebook(
obs.ojs(
"viewof threshold = Inputs.range([0, 1], {value: 0.5, step: 0.1})",
key="control",
),
obs.js(
"const doubled = threshold * 2; display(md`Doubled: **${doubled}**`);",
key="result",
),
)
view = notebook.view()
view
Cells run in the browser through Notebook Kit.
Its Inputs library loads from the network. Use notebook and module sources you
trust, since their JavaScript runs in the host page.
Experimental: the API may change between releases.
Run headlessly
Read notebook values in Python scripts and services. Native wheels for Linux, macOS, and Windows evaluate cells in a V8 engine inside the Python process:
print(notebook.with_variables(threshold=0.5).data["doubled"].to_python())
Read Python values, Polars or pandas dataframes, Arrow tables, and attachment bytes through the data and file namespaces. Headless Python guide.
Build on it
- Compose views.
notebook.view("result")displays the result and evaluates its dependencies. Select and arrange cells. - Connect Python.
notebook.update_variables({"threshold": 0.8})updates mounted views. Read named results throughview.state. Send values and read results. - Bring notebooks and data. Load Notebook Kit HTML, public ObservableHQ notebooks, local files, and JavaScript modules. Create and import notebooks.
- Inspect and extract. Browse cells, imports, attachments, and dependencies. Read datasets as Arrow or projected rows. Inspect notebook data.
- Work with agents. The installed package carries instructions that match its API. Read the packaged skill or the documentation map.
Documentation · Troubleshooting · Contributing · MIT license
Built on Observable's Notebook Kit
and anywidget.
pyobsplot informed the Python variable API.
Metadata
Release files for pyobservablejs 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyobservablejs-0.3.0.tar.gz | 1.8 MB | Without provenance | Details for pyobservablejs-0.3.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| pyobservablejs-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for pyobservablejs-0.3.0-py3-none-any.whl |
| pyobservablejs-0.3.0-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details for pyobservablejs-0.3.0-cp311-abi3-win_amd64.whl |
| pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64 | Details for pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_x86_64.whl |
| pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64 | Details for pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_aarch64.whl |
| pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_x86_64.whl | CPython 3.11 | abi3 | macOS 12.0+ x86-64 | Details for pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_x86_64.whl |
| pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_arm64.whl | CPython 3.11 | abi3 | macOS 12.0+ ARM64 | Details for pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_arm64.whl |
Total release size: 149.4 MB
Release files / pyobservablejs-0.3.0.tar.gz
| Download URL | pyobservablejs-0.3.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70a0adb8143267a2a8cb9e5e6934b81738047ef85816b971f3144b4915423da1
|
|
BLAKE2b-256 checksum How to use checksums |
e0e177f629b3b81ac50e714f49d16311de7036a14ffa31a74eb95ff5b0fd6cf2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-py3-none-any.whl
| Download URL | pyobservablejs-0.3.0-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
199949ce8a761d5cb2d3d269d8d76ae14bb6bfaf0d8ffdf8e7696fbafccd370f
|
|
BLAKE2b-256 checksum How to use checksums |
ab83d1386bf11bed256a7be6e7fa9cc74e7162d9f666f9e9305b5b75c1194eac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-cp311-abi3-win_amd64.whl
| Download URL | pyobservablejs-0.3.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 27.5 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d170365975f8610ac8ca75b254598078d1257e77c03c42e87d43f2ad31b3f424
|
|
BLAKE2b-256 checksum How to use checksums |
9d98aeb84006505308561385419cc15be0ee40752ad7ca4fa253245957426209
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_x86_64.whl
| Download URL | pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 30.3 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
26c9c0ef1324373e234c2ef1e2063924068577aa1537971ec6d2e5cbdc9ae3ae
|
|
BLAKE2b-256 checksum How to use checksums |
5de87a215c146b115be69645690714e9b3c9b84bcbf705921a096c817e6b9ecf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_aarch64.whl
| Download URL | pyobservablejs-0.3.0-cp311-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 31.3 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
9d0e9e5b7ac8200006e85bf0877a1563e6948b3fd1811c40b6e9e200348948ab
|
|
BLAKE2b-256 checksum How to use checksums |
82ea70226e7478d193fde437984a8aea234ee33a038caa4a2ca548a30ccbfffa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_x86_64.whl
| Download URL | pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_x86_64.whl |
|---|---|
| Size | 29.1 MB |
| Tags | CPython 3.11 abi3 macOS 12.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
00b1a419751657dce74561860653bd748ed6625b1c9f52c791ce3b9a9e236f2c
|
|
BLAKE2b-256 checksum How to use checksums |
a9149998c90c898607a743391c0a69b15ad210debb8619f3b31e8213d3324788
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_arm64.whl
| Download URL | pyobservablejs-0.3.0-cp311-abi3-macosx_12_0_arm64.whl |
|---|---|
| Size | 28.2 MB |
| Tags | CPython 3.11 abi3 macOS 12.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cf26c00ca76d77fc91f0bb863bb406d2b2833e5cb0693e1d0245cbd6af903ad4
|
|
BLAKE2b-256 checksum How to use checksums |
509e450010be991c54bb16969e95d195db456c2546b8d005e78bce45fb477aa4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for pyobservablejs 0.3.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.