Release v6.0.0
The Vega-Altair team is pleased to announce the release of version 6.0.0. Firstly, we are grateful for the many returning contributors (@franzhaas, @dangotbanned, @dsmedia, @joelostblom, @tempdata73, @mattijn, @jonmmease, @eitanlees, @kurtmckee, @MarcoGorelli), and a special shoutout to all the new contributors (@JasonnnW3000, @edmundmiller, @jannisko, @stanmart, @star1327p, @baldwint, @daizutabi, @azjps, @joaopalmeiro, @bobot). You are all awesome!
In short what is included with the version 6 release of Altair.
- we now compile against Vega-Lite version 6 (to be specific, version 6.1.0) and provide support for Python 3.14.
- we have a new datasets module,
altair.datasets, lazily access to datasets from https://github.com/vega/vega-datasets. - we are now thread-safe, altair specifications should be stable after re-running.
- we improved docs and included new examples, eg. this faceted choropleth of habitat species across geographical counties https://altair-viz.github.io/gallery/maps_faceted_species.html.
- we improved the typing experiences.
- we migrated to
uvas part of the infrastructure modernization and now have automated weekly builds.
We test all changes thoroughly, but nevertheless, if you encounter any issue or like to start a discussion. Please feel free!
Full details are available in the complete changelog below.
Breaking
- feat: Bump
vega-lite>=6by @franzhaas in #3831
Enhancements
- feat: Show python types in
ValidationErrormessages by @dangotbanned in #3735 - feat: Update
vega-liteto5.21.0by @dangotbanned in #3761 - feat: Show
user_rowsinMaxRowsErrormessage by @dangotbanned in #3768 - feat: Allow numpy scalars in altair expressions by @stanmart in #3827
- feat: adds altair.datasets by @mattijn in #3848
- feat: preserve the empty property for the three operators (&, |, ~) by @mattijn in #3853
- feat: hashing of parameter and view names by @mattijn in #3851
- feat: Allow opening the editor without validating the spec by @joelostblom in #3869
- feat: require minimal vegafusion 2 and revert #3857 by @mattijn in #3885
- feat: add warning for deduplications by @mattijn in #3902
Bug Fixes
- fix(typing): Resolve LSP violation for
ChartType.databy @dangotbanned in #3740 - fix: Replace circular import in
schemapi.pyby @dangotbanned in #3751 - fix: Include
*(Datum|Value)inSchemaValidationErrorby @dangotbanned in #3750 - fix: Resolve multiple
sphinxwarnings by @dangotbanned in #3787 - fix(typing): overload in
eval_blockincorrectly showedTrueas the default forstrictby @MarcoGorelli in #3855 - fix: import TypedDict from typing from python 3.15 by @mattijn in #3877
- fix: update typing_extensions dependency for Python < 3.15 by @daizutabi in #3881
- fix: Make
.changedproperty optional inJupyterChart#3868 by @azjps in #3871 - fix(types): Change the height and width types of
alt.Chart()frominttofloatby @joaopalmeiro in #3888 - fix: Repair vega export by @bobot in #3889
Documentation
- docs: Update LICENSE, fix copyright license year by @JasonnnW3000 in #3726
- docs: Add altair-upset link by @edmundmiller in #3786
- docs(example): Adds Confidence Interval Ellipses by @dangotbanned in #3747
- docs: Resolve
geopandas.read_file(...)warnings by @dangotbanned in #3795 - docs: bump
pyscript==2025.2.2by @dangotbanned in #3797 - docs: fix broken links by @jannisko in #3802
- docs(example): Add Faceted map using Species Habitat dataset by @dsmedia in #3809
- docs: Add documentation for initial interval selection date ranges by @dsmedia in #3815
- docs: Update the waterfall_chart.py colors by @eitanlees in #3830
- docs: Clarify how
orderandonin the param section by @joelostblom in #3629 - docs: Improved docs on Transforms by @tempdata73 in #2655
- docs: More clearly illustrate parameter compositions by @joelostblom in #3628
- docs: new dataset source, from vega_dataset to altair.dataset by @mattijn in #3859
- docs: Correct some typos by @star1327p in #3904
- docs: improve docs how to return chart as html by @mattijn in #3849
- docs: Update the Lightning Viz link by @star1327p in #3839
- docs: Iris to penguins by @baldwint in #2231
- docs: docbuild warnings by @mattijn in #3850
- docs: Make the Code of Conduct link clickable by @star1327p in #3852
- docs: note within geoshape mark page to spatial data section by @mattijn in #3892
- docs: Remove whitespace after '*' so that text is rendered italic. by @thomascamminady in #3882
- docs: fix broken external reference URLs in examples by @dsmedia in #3898
Other Changes
- chore: Bump version to 5.6.0dev by @jonmmease in #3700
- ci: Temporal examples in
vegafusionby @dangotbanned in #3702 - refactor(ruff): Apply
TC006fixes by @dangotbanned in #3706 - chore: fix
ruff,mypywarnings by @dangotbanned in #3717 - ci: Switch from
hatch,piptouvin GitHub Actions by @dangotbanned in #3719 - ci(typing): Add bundled stubs to
pyright.ignoreby @dangotbanned in #3724 - ci: bump astral-sh/setup-uv from 4 to 5 in the github-actions group by @dependabot[bot] in #3727
- chore(ruff): Fix ruff warnings by @dangotbanned in #3736
- chore(typing): fix
mypy>=1.14.0warnings by @dangotbanned in #3739 - chore(ruff): Fix
UP006warnings during codegen by @dangotbanned in #3746 - refactor: Centralize
Vegaproject versioning by @dangotbanned in #3720 - ci: Unpin
pillow, allow>=10.0.0by @dangotbanned in #3764 - chore(ruff): Update to
0.9.0by @dangotbanned in #3766 - chore(ruff): Fix
0.9.2lints by @dangotbanned in #3771 - chore: Add
needs-triageto new bug reports by @dangotbanned in #3769 - test: Make
skip_requires_pyarrowcompatible w/pytest.paramby @dangotbanned in #3772 - build: Migrate from
hatchtouvby @dangotbanned in #3723 - ci(typing): Disable
mypy[annotation-unchecked]on examples by @dangotbanned in #3775 - ci(uv): Remove dynamic version from
uv.lockby @dangotbanned in #3776 - ci(uv): bump
mypy==1.15.0by @dangotbanned in #3790 - ci: bump
narwhals>=1.25.1by @dangotbanned in #3792 - ci(uv): bump
ruff==0.9.5by @dangotbanned in #3799 - ci: bump
narwhals>=1.26.0by @dangotbanned in #3800 - ci: bump
narwhals>=1.27.1by @dangotbanned in #3807 - chore: Remove deprecated
nw.from_native(..., strict=True)by @dangotbanned in #3811 - chore(typing): Follow-up fix
_from_array_likeby @dangotbanned in #3812 - ci(ruff): move
excludetoextend-excludeby @dangotbanned in #3813 - chore: Add numfocus sponsor link by @joelostblom in #3814
- chore: Use organization-wide FUNDING.yml by @joelostblom in #3816
- chore: Bump
vega-embed==7by @franzhaas in #3829 - chore: Run
typosandcodespellagainst the codebase by @kurtmckee in #3840 - ci: bump astral-sh/setup-uv from 5 to 6 in the github-actions group by @dependabot[bot] in #3834
- ci: fix outdated
ipython[kernel]dependency by @dangotbanned in #3861 - test: update test_datasets.py by @mattijn in #3857
- ci: add nightly builds system by @mattijn in #3858
- ci: fix mypy unused-ignore in tests by @mattijn in #3867
- ci: bump the github-actions group with 2 updates by @dependabot[bot] in #3866
- ci: use github raw and skip jsdelivr by @mattijn in #3875
- ci: bump actions/setup-python from 5 to 6 in the github-actions group by @dependabot[bot] in #3878
- ci: simplify nightly builds and do it weekly by @mattijn in #3887
- ci: improve weekly workflow version generation to resolve PEP 440 compliance error by @mattijn in #3897
- ci: bump astral-sh/setup-uv from 6 to 7 in the github-actions group by @dependabot[bot] in #3900
- ci: Test with minimum Narwhals version, bump minimum typing-extensions to 4.12.0 by @MarcoGorelli in #3899
- ci: improve body of weekly build by @mattijn in #3901
- ci: include python 3.14 rc3 to the GitHub action matrix by @mattijn in #3876
- ci: extra workflow to test free-threaded python by @mattijn in #3907
- ci: add pypi development release to weekly build by @mattijn in #3910
- ci: make sure artifact in weekly build contains data by @mattijn in #3911
- chore: v6 release branch by @mattijn in #3912
New Contributors
- @JasonnnW3000 made their first contribution in #3726
- @edmundmiller made their first contribution in #3786
- @jannisko made their first contribution in #3802
- @stanmart made their first contribution in #3827
- @star1327p made their first contribution in #3839
- @baldwint made their first contribution in #2231
- @daizutabi made their first contribution in #3881
- @azjps made their first contribution in #3871
- @joaopalmeiro made their first contribution in #3888
- @bobot made their first contribution in #3889
Full Changelog: v5.5.0...v6.0.0