Skip to content

Commit

Permalink
Feat/anywidget no minify integrate (#339)
Browse files Browse the repository at this point in the history
Released 0.8.1
Changes build system to anywidget
Changes packaging to uv
Now supports jupyterlab 3.6
Close to supporting marimo
  • Loading branch information
paddymul authored Dec 30, 2024
1 parent 6f25e20 commit 2618922
Show file tree
Hide file tree
Showing 147 changed files with 28,337 additions and 23,783 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ on:
push:
branches: main
pull_request:
branches: "*"
branches: "none-never"


jobs:
build:
Expand Down
129 changes: 129 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: CI
# copied from anywidget, adpated to buckaroo
# and https://github.com/manzt/quak/tree/main
on:
push:
branches:
- main

pull_request:
branches: "*"

workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
LintPython:
name: Python / Lint
runs-on: macos-14
steps:
- uses: actions/checkout@v4
# Disable jupyter-builder build hook because not needed for linting/formatting, and requires pnpm
# - run: |
# sed -i '' 's/\[tool.hatch.build.hooks.\(.*\)\]/\[_tool.hatch.build.hooks.\1\]/' pyproject.toml
- uses: astral-sh/setup-uv@v4
with:
version: "0.5.x"
- run: |
uv run ruff check
# uv run ruff format # changes too many files
# buckaroo isn't currently setup for mypy

# TypecheckPython:
# name: Python / Typecheck
# runs-on: macos-14
# steps:
# - uses: actions/checkout@v4
# # Disable jupyter-builder build hook because not needed for typechecking, and requires pnpm
# - run: |
# sed -i '' 's/\[tool.hatch.build.hooks.\(.*\)\]/\[_tool.hatch.build.hooks.\1\]/' pyproject.toml
# - uses: astral-sh/setup-uv@v4
# with:
# version: "0.5.x"
# - run: uv run mypy

TestPython:
name: Python / Test
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
# - "3.8" #other conflicts
- "3.9"
#- "3.10"
#- "3.11"
#- "3.12"
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
run_install: true
- uses: astral-sh/setup-uv@v4
with:
version: "0.5.x"
- name: Run tests
run: uv run --with pytest-cov pytest ./tests/unit --color=yes --cov anywidget --cov-report xml
env:
UV_PYTHON: ${{ matrix.python-version }}
- uses: codecov/codecov-action@v5
UITestPython:
#needs: [TestPython]
name: Playwright UI Test
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
# - "3.8" #other conflicts
- "3.9"
#- "3.10"
#- "3.11"
#- "3.12"
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
run_install: true
- uses: astral-sh/setup-uv@v4
with:
version: "0.5.x"
- name: Run tests
run: |
uv run playwright install chromium
SOLARA_TEST_RUNNERS=jupyter_lab uv run pytest tests/ui/ --video=retain-on-failure
#run: uv run --with pytest-cov pytest ./tests/ui --color=yes --cov anywidget --cov-report xml
env:
UV_PYTHON: ${{ matrix.python-version }}

# LintJavaScript:
# name: JavaScript / Lint
# runs-on: macos-14
# steps:
# - uses: actions/checkout@v4
# - uses: biomejs/setup-biome@v2
# with:
# version: latest
# - run: biome ci .

# TypecheckJavaScript:
# name: JavaScript / Typecheck
# runs-on: macos-14
# steps:
# - uses: actions/checkout@v4
# - uses: pnpm/action-setup@v4
# with:
# run_install: true
# - run: pnpm typecheck

# TestJavaScript:
# name: JavaScript / Test
# runs-on: macos-14
# steps:
# - uses: actions/checkout@v4
# - uses: pnpm/action-setup@v4
# with:
# run_install: true
# - run: pnpm test
2 changes: 1 addition & 1 deletion .github/workflows/deploy-ghpage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
- main
pull_request:
branches:
- '*'
- 'none-never'

jobs:
build:
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Changelog

## 0.8.0 2024-12-27
This is a big release that changes the JS build flow to be based on anywidget. Anywidget should provide greater compatability with other notebook like environments such as Google Colab, VS Code notebooks, and marimo.

It also moves the js code to `packages/buckaroo_js_core` This is a regular react js component library built with vite. This should make it easier for JS devs to understand buckaroo.

None of the end user experience should change with this release.

8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,14 @@ npm run dev
```


### UV Instuctions
``sh
cd buckaroo
uv venv
uv sync -q

``

## Contributions

We :heart: contributions.
Expand Down
4 changes: 0 additions & 4 deletions babel.config.js

This file was deleted.

5 changes: 0 additions & 5 deletions buckaroo.json

This file was deleted.

47 changes: 2 additions & 45 deletions buckaroo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,56 +5,13 @@
from .widget_utils import is_in_ipython, enable, disable, determine_jupter_env


def _jupyter_nbextension_paths():
"""Called by Jupyter Notebook Server to detect if it is a valid nbextension and
to install the widget
Returns
=======
section: The section of the Jupyter Notebook Server to change.
Must be 'notebook' for widget extensions
src: Source directory name to copy files from. Webpack outputs generated files
into this directory and Jupyter Notebook copies from this directory during
widget installation
dest: Destination directory name to install widget files to. Jupyter Notebook copies
from `src` directory into <jupyter path>/nbextensions/<dest> directory
during widget installation
require: Path to importable AMD Javascript module inside the
<jupyter path>/nbextensions/<dest> directory
"""
return [{
'section': 'notebook',
'src': 'nbextension',
'dest': "buckaroo",
'require': 'buckaroo/extension'
}]


def _jupyter_labextension_paths():
"""Called by Jupyter Lab Server to detect if it is a valid labextension and
to install the widget
Returns
=======
src: Source directory name to copy files from. Webpack outputs generated files
into this directory and Jupyter Lab copies from this directory during
widget installation
dest: Destination directory name to install widget files to. Jupyter Lab copies
from `src` directory into <jupyter path>/labextensions/<dest> directory
during widget installation
"""
return [{
'src': 'labextension',
'dest': "buckaroo"
}]




def is_notebook_compatible():
jupyter_env = determine_jupter_env()
if jupyter_env == "jupyter-notebook":
try:
import notebook
return notebook.version_info[0] >= 7
return notebook.version_info[0] >= 6
except:
pass
return False
Expand All @@ -64,7 +21,7 @@ def is_notebook_compatible():
def warn_on_incompatible():
if not is_notebook_compatible():
import notebook
print("Buckaroo is compatible with jupyter notebook > 7, or jupyterlab >3.6.0")
print("Buckaroo is compatible with jupyter notebook > 6, or jupyterlab >3.6.0")
print("You seem to be executing this in jupyter notebook version %r" % str(notebook.__version__))
print("You can upgrade to notebook 7 by running 'pip install --upgrade notebook'")
print("Or you can try running jupyter lab with 'jupyter lab'")
Expand Down
11 changes: 0 additions & 11 deletions buckaroo/_frontend.py

This file was deleted.

Empty file added buckaroo/auto_clean/__init__.py
Empty file.
Loading

0 comments on commit 2618922

Please sign in to comment.