A JupyterLab extension
Project description
jupyterlab-env-sync
A JupyterLab 4.x extension that provides a shared service for propagating environment variables to running kernels (Python, R, Julia) and terminals.
Other extensions consume jupyterlab-env-sync via the IEnvSync token to set, reset, and query environment variables without dealing with kernel injection or terminal lifecycle directly.
Features
- Kernel propagation — injects env var changes into all running Python, R, and Julia kernels
- Terminal restart — restarts open terminals so they inherit updated variables, with a toast notification
- Startup hooks — new kernels and terminals automatically pick up overrides via IPython/R/Julia startup scripts
- Multi-extension support — multiple consumer extensions can set variables independently; ownership is tracked per key
- Spawner-aware reset — resetting a variable restores the original spawner value (or deletes it if none existed)
Requirements
- JupyterLab >= 4.0.0
- Python >= 3.8
Installation
pip install jupyterlab-env-sync
API
Consumer extensions depend on the IEnvSync token:
import { IEnvSync } from 'jupyterlab-env-sync';
const plugin: JupyterFrontEndPlugin<void> = {
id: 'my-extension:plugin',
autoStart: true,
requires: [IEnvSync],
activate: async (app: JupyterFrontEnd, envSync: IEnvSync) => {
await envSync.setVar(
'my-extension',
'DATABASE_URL',
'postgres://localhost/mydb'
);
}
};
Methods
| Method | Signature | Description |
|---|---|---|
setVar |
(extId, key, value) → Promise<void> |
Set a variable. Propagates to all kernels and restarts terminals. |
resetVar |
(extId, key, force?) → Promise<void> |
Reset to spawner value. Only the owner can reset unless force=true. |
getAll |
() → Promise<Record<string, IEnvEntry>> |
All overrides with metadata (value, spawner_value, set_by, set_at). |
getByExtension |
(extId) → Promise<Record<string, string>> |
Variables owned by a specific extension (key-value pairs). |
resetAllByExtension |
(extId) → Promise<void> |
Reset all variables owned by an extension. |
Consumer package.json
{
"dependencies": {
"jupyterlab-env-sync": "^1.0.0"
},
"jupyterlab": {
"sharedPackages": {
"jupyterlab-env-sync": { "bundled": false, "singleton": true }
}
}
}
bundled: falseandsingleton: trueare required so all extensions share the sameIEnvSynctoken instance.
Development
Development Installation
# Clone the repository
git clone https://github.com/aristide/jupyterlab-env-sync.git
cd jupyterlab-env-sync
# Set up a virtual environment
virtualenv .venv
source .venv/bin/activate
# Install in development mode
pip install -e ".[test]"
# Link the extension with JupyterLab
jupyter labextension develop . --overwrite
# Enable the server extension
jupyter server extension enable jupyterlab-env-sync
# Build the TypeScript source
jlpm build
Running Tests
# Python tests (env store + REST handlers)
pytest jupyterlab-env-sync/tests/ -v
# TypeScript tests (kernel injection snippets)
jlpm test
# UI tests (requires Playwright)
cd ui-tests && jlpm install && npx playwright test
Development Uninstallation
jupyter server extension disable jupyterlab-env-sync
pip uninstall jupyterlab-env-sync
License
BSD-3-Clause
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupyterlab_env_sync-1.1.0.tar.gz.
File metadata
- Download URL: jupyterlab_env_sync-1.1.0.tar.gz
- Upload date:
- Size: 846.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c1bc6fb0c7877e83a10a1bb0709d93e67c1a101a7a6c2d9d1d38904156daa34
|
|
| MD5 |
207086b1b751b44f38a4f5b907485b00
|
|
| BLAKE2b-256 |
e62b6747e74bb83515602c2a51df77dd6161bc3cdfe2717d59a9b4a2ab68736a
|
File details
Details for the file jupyterlab_env_sync-1.1.0-py3-none-any.whl.
File metadata
- Download URL: jupyterlab_env_sync-1.1.0-py3-none-any.whl
- Upload date:
- Size: 38.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a595105afabae081ac6cd855620b9b6d0f8a18d8dd160adf476ea9c3d4294aff
|
|
| MD5 |
876432d6641e55eea264999724534855
|
|
| BLAKE2b-256 |
f3b53af86cfdcc1a5fd3132f03c98cc31b022942f19e7486e9e3baf411ad4fe0
|