Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
438c40d
style, but ordering messed up
mathematicalmichael Dec 9, 2023
b944a6b
custom changes
mathematicalmichael Dec 9, 2023
b41ee34
bugfix: refreshing page causes column re-ordering
mathematicalmichael Dec 9, 2023
a038024
Modernize build for 2026, add restore columns button, fix categorical…
mathematicalmichael Feb 2, 2026
13b80aa
Merge viz-updates: vertical labels, large number fixes
mathematicalmichael Feb 2, 2026
52f8c02
bump version
mathematicalmichael Feb 2, 2026
0dae340
bold axis labels w some added margin + restore columns dragged off sc…
mathematicalmichael Feb 2, 2026
0f51f48
switch to pyproject.toml
mathematicalmichael Feb 2, 2026
c98edb7
bump ts deps: crit vulns
mathematicalmichael Feb 2, 2026
bd39fa2
context menu (click/rightclick on axis) no longer goes past page boun…
mathematicalmichael Feb 2, 2026
248dafa
inline search/show dropdown
mathematicalmichael Feb 2, 2026
3d688d5
documentation updates + separation of dist / npm-dist
mathematicalmichael Feb 2, 2026
76c1156
fix streamlit test
mathematicalmichael Feb 2, 2026
0e78a0e
typechecking and Makefile for convenience
mathematicalmichael Feb 2, 2026
3432fb2
type checking!
mathematicalmichael Feb 2, 2026
6536e3f
ci and docs
mathematicalmichael Feb 2, 2026
4559fda
bump versions, add release to pypi
mathematicalmichael Feb 2, 2026
861ebfd
fix build script (npm-dist properly separated from dist now)
mathematicalmichael Feb 2, 2026
c9b231e
make hiplot-mm perform the functionality of hiplot-render
mathematicalmichael Feb 2, 2026
f8b8331
typo
mathematicalmichael Feb 2, 2026
745f3e1
trying blacksmith for CI
mathematicalmichael Feb 2, 2026
0cf8dad
actually fix safari issues!
mathematicalmichael Feb 3, 2026
e910f48
unify rotation
mathematicalmichael Feb 3, 2026
ff9ac26
better label behavior in mobile safari
mathematicalmichael Feb 3, 2026
0b87a58
hovering no longer disappears label on desktop safari
mathematicalmichael Feb 3, 2026
789f2fd
Revert "trying blacksmith for CI"
mathematicalmichael Feb 3, 2026
6ebfbb2
also test python 3.14
mathematicalmichael Feb 3, 2026
c96bb6d
better desktop safari, worse mobile
mathematicalmichael Feb 3, 2026
94f5d67
working svg labels
mathematicalmichael Feb 3, 2026
9261639
fix right clicking issues on mobile
mathematicalmichael Feb 3, 2026
cfa96e5
hide axis and invert added to menu
mathematicalmichael Feb 3, 2026
9a51c6d
bump version
mathematicalmichael Feb 3, 2026
997a575
bump to 0.0.3rc4
mathematicalmichael Feb 3, 2026
bdb1b8f
fix label positioning with some more headroom
mathematicalmichael Feb 3, 2026
d45d5ce
prep official release 0.0.3
mathematicalmichael Feb 3, 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
11 changes: 11 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"permissions": {
"allow": [
"Bash(npm run build:*)",
"mcp__plugin_playwright_playwright__browser_drag",
"Bash(bun run build:*)",
"Bash(pip uninstall:*)",
"Bash(bunx playwright test:*)"
]
}
}
149 changes: 149 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
name: CI

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

jobs:
build-js:
name: Build JavaScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Build production bundle
run: bun run build

- name: Upload JS bundle
uses: actions/upload-artifact@v6
with:
name: js-bundle
path: hiplot/static/built/
retention-days: 7

typecheck-pytest:
name: ${{ format('Type Check & Tests (Python {0})', matrix.python-version) }}
needs: build-js
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.11', '3.12', '3.14']
steps:
- uses: actions/checkout@v4

- name: Download JS bundle
uses: actions/download-artifact@v4
with:
name: js-bundle
path: hiplot/static/built/

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync --all-extras

- name: Run ty
run: make check

- name: Run pytest
run: make test

- name: Test CLI commands
run: |
uv sync
uv run --extra server hiplot --help
uv run hiplot-render --help
# new alias for hiplot-render: hiplot-mm
uv run hiplot-mm --help

package-verify:
name: Verify Package Build
needs: build-js
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download JS bundle
uses: actions/download-artifact@v4
with:
name: js-bundle
path: hiplot/static/built/

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Set up Python
run: uv python install 3.12

- name: Build package
run: uv build

- name: Verify wheel install
run: |
uv venv test-wheel
VIRTUAL_ENV=test-wheel uv pip install dist/*.whl
test-wheel/bin/python -c "import hiplot as hip; hip.Experiment"
test-wheel/bin/python -c "import hiplot as hip; print(hip.__version__)"
test-wheel/bin/hiplot-render demo --format html > /dev/null

- name: Verify sdist install
run: |
uv venv test-sdist
VIRTUAL_ENV=test-sdist uv pip install dist/*.tar.gz
test-sdist/bin/python -c "import hiplot as hip; hip.Experiment"
test-sdist/bin/hiplot-render demo --format html > /dev/null

- name: Upload package artifacts
uses: actions/upload-artifact@v6
with:
name: python-package
path: dist/
retention-days: 7

windows-test:
name: Windows Tests
needs: build-js
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- name: Download JS bundle
uses: actions/download-artifact@v4
with:
name: js-bundle
path: hiplot/static/built/

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Set up Python
run: uv python install 3.12

- name: Install dependencies
run: uv sync --all-extras

- name: Run pytest
run: uv run pytest hiplot

- name: Test CLI commands
run: |
uv sync
uv run --extra server hiplot --help
uv run hiplot-render --help
# new alias for hiplot-render: hiplot-mm
uv run hiplot-mm --help
112 changes: 112 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Documentation

on:
push:
branches: [main]
workflow_dispatch:

# Allow only one concurrent deployment
concurrency:
group: pages
cancel-in-progress: true

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

jobs:
build-js:
name: Build JavaScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Build production bundle
run: bun run build

- name: Upload JS bundle
uses: actions/upload-artifact@v6
with:
name: js-bundle
path: hiplot/static/built/
retention-days: 1

build-docs:
name: Build Documentation
needs: build-js
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download JS bundle
uses: actions/download-artifact@v4
with:
name: js-bundle
path: hiplot/static/built/

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Set up Python
run: uv python install 3.12

- name: Install dependencies
run: uv sync --all-extras

- name: Generate HiPlot demos
run: |
mkdir -p docs/_static/demo/
PAGES=$(uv run python -c "import hiplot.fetchers; print('\n'.join(list(hiplot.fetchers.README_DEMOS.keys())))")
for p in $PAGES; do
echo "Generating demo: $p"
uv run hiplot-render --format html $p > docs/_static/demo/$p.html
done

- name: Generate data demos
run: |
DATA_PATH="assets/data"
for p in $(ls $DATA_PATH); do
echo "Generating demo: $p"
uv run hiplot-render --format html $DATA_PATH/$p > docs/_static/demo/$p.html
done

- name: Generate HiPlot upload page
run: |
uv run python -c "from pathlib import Path; import hiplot; Path('docs/_static/hiplot_upload.html').write_text(hiplot.render.make_experiment_standalone_page({'dataProviderName': 'upload'}))"
cp -r hiplot/static docs/_static/static
cp hiplot/static/built/hiplot.bundle.js docs/_static/hiplot.bundle.js

- name: Build Sphinx docs
run: |
cd docs/
uv run make html

- name: Upload docs artifact
uses: actions/upload-pages-artifact@v4
with:
path: docs/_build/html

deploy:
name: Deploy to GitHub Pages
needs: build-docs
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Setup Pages
uses: actions/configure-pages@v5

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
59 changes: 59 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Release to PyPI

on:
release:
types: [published]

jobs:
build-js:
name: Build JavaScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies
run: bun install

- name: Build production bundle
run: bun run build

- name: Upload JS bundle
uses: actions/upload-artifact@v6
with:
name: js-bundle
path: hiplot/static/built/
retention-days: 1

publish:
name: Publish to PyPI
needs: build-js
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- name: Download JS bundle
uses: actions/download-artifact@v4
with:
name: js-bundle
path: hiplot/static/built/

- name: Install uv
uses: astral-sh/setup-uv@v7

- name: Set up Python
run: uv python install 3.12

- name: Build package
run: uv build

- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ env/
build/
develop-eggs/
dist/
npm-dist/
downloads/
eggs/
.eggs/
Expand Down Expand Up @@ -116,3 +117,10 @@ docs/build
hiplot/static/built
src/**/*css.d.ts
*.code-workspace


npm-build
npm-package
.playwright-mcp
test_data/
test-results
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include LICENSE README.md
include pyproject.toml
include requirements/*.txt
include hiplot/static/*
include hiplot/static/built/*
Expand Down
20 changes: 20 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
install:
bun install
uv sync --all-extras

clean:
rm -rf node_modules .venv

build:
bun run build
uv build

test:
uv run pytest hiplot --durations=10

check:
# uv run mypy --strict --implicit-reexport hiplot
uv run ty check

dev:
uv run hiplot --port 8765 --host 0.0.0.0
Loading