Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
24497fa
V2 release :
Oct 22, 2025
1133277
Bump async_kernel version which has dropped the AsyncEvent class and …
Nov 5, 2025
e00ca1c
Bump async-kernel min version to 0.7 and update lock file.
Nov 10, 2025
dd9e9e3
Breaking changes for compatibility with async-kernel v9.
fleming79 Nov 16, 2025
8b067dd
Bump async-kernel min version to 0.9rc1.
fleming79 Nov 18, 2025
944eab1
Added "Programming Language :: Python :: 3.14",
fleming79 Nov 18, 2025
85518a4
import_item was also moved to async_kernel.
fleming79 Nov 18, 2025
5d0ed43
Bump async-kernel version.
Nov 26, 2025
70bb82e
Add described_by to CommandRegistry.
Nov 26, 2025
e1a4c81
Remove patched modules - not required for this branch to work.
Nov 26, 2025
3994778
Bump async-kernel min version to 0.9.1.
Nov 27, 2025
0b45e17
Strip out unrequired features
Nov 27, 2025
42b1f8a
Remove namespace_id from JupyterFrontEnd.
Nov 27, 2025
66f741d
Remove namespace_id from CommandRegistry and simplify.
Nov 27, 2025
581269d
Provide default icon values.
Dec 12, 2025
65d4c63
- Drop concept of page_id (could be added later).
Dec 13, 2025
cec994e
Fix icons - remove duplicate definition and ensure there is only one …
fleming79 Dec 14, 2025
64694b0
Move launcher closing code to the frontend.
fleming79 Dec 14, 2025
f1c582a
Ipylab register on_msg before calling __init__.
fleming79 Dec 14, 2025
d5cb317
Better CommandPalette validation.
fleming79 Dec 14, 2025
066bf2d
Ensure Connection id looks valid.
fleming79 Dec 14, 2025
64d8eb9
Bump async-kernel min version to 0.10.1.
fleming79 Dec 14, 2025
a5bcc7a
Improve type hinting.
Dec 14, 2025
dfbfe41
Make transform_payload non-async and don't wait for connection to be …
fleming79 Dec 14, 2025
b0a6577
Remove advanced and function features from transform.
fleming79 Dec 14, 2025
c09da9f
Remove widget restoration capability (still avaliable in the full ver…
Dec 15, 2025
2b403c0
validate_command_id should wait for command to be ready.
Dec 15, 2025
a587f66
Compatibility with Jupyterlite using jupyterlite_async_kernel.
Jan 5, 2026
d666562
Modify readythedocs.yml
Jan 5, 2026
f10099d
Fix tests.
Jan 5, 2026
152c970
Make jupyterlite path conditional in readme.
Jan 5, 2026
12a88ed
Make it more obvious that a PR is viewable.
Jan 5, 2026
8bac501
Remove the script from the readme, which doesn't render on github.
Jan 6, 2026
6e5ef4f
Bump async-kernel version range to l>=0.12,<0.13
Jan 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .copier-answers.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ project_short_description: Control JupyterLab from Python notebooks
python_name: ipylab
repository: https://github.com/jtpio/ipylab
test: false

2 changes: 1 addition & 1 deletion .github/workflows/binder-on-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ jobs:
})
env:
PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
PR_HEAD_USERREPO: ${{ github.event.pull_request.head.repo.full_name }}
PR_HEAD_USERREPO: ${{ github.event.pull_request.head.repo.full_name }}
36 changes: 16 additions & 20 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ name: Build

on:
push:
branches: main
branches:
- main
pull_request:
branches: '*'
branches:
- '*'

jobs:
build:
Expand All @@ -17,26 +19,20 @@ jobs:
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

- name: Install dependencies
run: python -m pip install -U "jupyterlab>=4.2.0,<5"
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
version: "0.8.22"
python-version: 3.13

- name: Build the extension
run: |
set -eux
jlpm
python -m pip install .[test]

jupyter labextension list
jupyter labextension list 2>&1 | grep -ie "ipylab.*OK"
python -m jupyterlab.browser_check

- name: Package the extension
run: |
set -eux

pip install build
python -m build
pip uninstall -y "ipylab" jupyterlab
uv build
uv run jupyter labextension list
uv run jupyter labextension list 2>&1 | grep -ie "ipylab.*OK"
uv run python -m jupyterlab.browser_check
uv run pytest

- name: Upload extension packages
uses: actions/upload-artifact@v4
Expand All @@ -53,7 +49,7 @@ jobs:
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.13'
architecture: 'x64'
- uses: actions/download-artifact@v4
with:
Expand Down
35 changes: 0 additions & 35 deletions .github/workflows/lint.yml

This file was deleted.

12 changes: 7 additions & 5 deletions .github/workflows/packaging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ name: Packaging

on:
push:
branches: [ main ]
branches:
- main
pull_request:
branches: '*'
branches:
- '*'

env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
Expand Down Expand Up @@ -48,11 +50,11 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu, macos, windows]
python: ['3.8', '3.12']
python: ['3.11', '3.13']
include:
- python: '3.8'
- python: '3.11'
dist: 'ipylab*.tar.gz'
- python: '3.12'
- python: '3.13'
dist: 'ipylab*.whl'
- os: windows
py_cmd: python
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Pre-Commit Check
on:
push:
branches: ['main']
pull_request:
branches:
- '*'
jobs:
pre_commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- uses: jupyterlab/maintainer-tools/.github/actions/pre-commit@v1
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ coverage.xml
# Sphinx documentation
docs/_build/

jupyterlite/
docs/files/

# PyBuilder
target/

Expand Down
58 changes: 58 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
ci:
autoupdate_schedule: monthly
skip:
- prettier
default_language_version:
node: system
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-case-conflict
- id: check-ast
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-toml
- id: check-yaml
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
- id: forbid-new-submodules
- id: end-of-file-fixer
exclude: galata/.*-snapshots
- id: requirements-txt-fixer
- id: check-builtin-literals
- repo: https://gitlab.com/bmares/check-json5
rev: 'v1.0.0'
hooks:
- id: check-json5
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.34.0
hooks:
- id: check-github-workflows
- repo: https://github.com/ComPWA/taplo-pre-commit
rev: v0.9.3
hooks:
- id: taplo-format
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.13.1
hooks:
- id: ruff
types_or: [python, jupyter]
args: ['--fix']
- id: ruff-format
types_or: [python, jupyter]
- repo: https://github.com/codespell-project/codespell
rev: 'v2.4.1'
hooks:
- id: codespell
additional_dependencies:
- tomli

- repo: https://github.com/kynan/nbstripout
rev: '0.8.1'
hooks:
- id: nbstripout
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
**/.venv
node_modules
**/node_modules
**/lib
Expand Down
87 changes: 87 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
// To debug jupyterlab running in a venv or conda env:
// - set up Python env in your workspace as per https://code.visualstudio.com/docs/python/environments
// - add an "envFile" prop to each backend config pointing to .vscode/debug.env
// - configure the .vscode/debug.env file as needed
// https://github.com/jupyterlab/vscode-config-template/tree/main
// https://github.com/jupyterlab/vscode-config-template/issues/1
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Current File all-code",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
},
{
"name": "Python Debugger: Current File: just my code",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
},
{
"name": "Ipylab",
"type": "debugpy",
"request": "launch",
"args": [
"--notebook-dir=examples",
"--no-browser",
"--IdentityProvider.token=''",
"--port=9990"
],
"cwd": "${workspaceFolder}",
"justMyCode": false,
"module": "ipylab",
"presentation": {
"hidden": false
}
},
{
"name": "IPylab frontend with Firefox",
"type": "firefox",
"request": "launch",
"reAttach": true,
"url": "http://localhost:9990",
"webRoot": "${workspaceFolder}",
"pathMappings": [
{
"url": "webpack://ipylab/src",
"path": "${workspaceFolder}/src"
}
],
"presentation": {
"hidden": false
}
},
{
"name": "IPylab frontend with Chrome",
"type": "chrome",
"request": "launch",
"timeout": 180000,
"url": "http://localhost:9990",
// set webroot to the parent dir of your project's top level package.json
"webRoot": "${workspaceFolder}",
"pathMapping": {
"url": "webpack://ipylab/src",
"path": "${workspaceFolder}/src"
},
"presentation": {
"hidden": true
}
}
],
"compounds": [
{
"name": "Debug IPylab with Firefox",
"configurations": ["Ipylab", "IPylab frontend with Firefox"]
},
{
"name": "Debug Ipylab with Chrome",
"configurations": ["Ipylab", "IPylab frontend with Chrome"]
}
]
}
20 changes: 20 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"spellright.language": ["en"],
"spellright.documentTypes": ["markdown", "latex"],
"[toml]": {
"editor.defaultFormatter": "tamasfe.even-better-toml"
},
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"editor.formatOnSave": true,
"python.terminal.activateEnvInCurrentTerminal": true,
"python.createEnvironment.trigger": "prompt",
"python.testing.pytestArgs": ["tests"],
"python.testing.unittestEnabled": false,
"python.testing.pytestEnabled": true,
"python.analysis.diagnosticMode": "workspace"
}
Loading
Loading