This package contains sample datasets for use with Bokeh examples.
The world_countries dataset has been removed, including its API and bundled
country boundary data. Country borders encode choices about disputed territories
that this sample-data package is not equipped to maintain. Applications that
used bokeh_sampledata.world_countries must obtain boundary data from a provider
whose boundary policy suits their needs.
Use Pixi >=0.76.1 from the repository root. Commit pixi.toml
and pixi.lock together when changing dependencies. Environments are locked for
Linux x86-64, macOS Intel/Apple Silicon, and Windows x86-64.
pixi run --locked setup
pixi run --locked test
pixi run --locked check
pixi run --locked pre-commit run --all-filesThe default environment uses Python 3.12 and includes geometry, checks, generation,
and build tools. test-py310, test-py311, test-py312, test-py313,
test-py314, and test-py315 provide explicit test environments.
test-py310-minimum pins NumPy 1.26.4 and pandas 2.2.3 to verify the declared runtime floors on Python
3.10. For example:
pixi run --locked -e test-py310 test
pixi run --locked -e test-py310-minimum test
pixi run --locked -e build build-pybuild-py creates a wheel and sdist in dist/ using the isolated build
environment. It does not publish packages. Conda-forge distribution is handled
downstream, with no conda packaging recipe maintained in this repository.
Boundary storage and regeneration instructions are in tools/README.md. User-facing API, compatibility, and provenance documentation lives in the public module/function docstrings, which are included in the main Bokeh documentation.
CI runs locked test environments on Linux, macOS, and Windows for Python
3.10–3.15, the minimum-dependency environment on Linux, plus repository checks
and package builds on Linux. The package job runs the unit suite against an
installed wheel in a separate environment. To reproduce that check after
build-py, run pixi run --locked -e wheel-test test-wheel.
Python 3.10 remains the package minimum. NumPy is declared directly because the package uses its arrays. Runtime requirements are mirrored in the Pixi manifest, including Shapely as a standard runtime dependency.
pixi run --locked dependency-check checks that runtime requirements agree
between the Python metadata and Pixi manifest. Ruff handles both linting and
import sorting.
check also runs actionlint on GitHub Actions workflows. The same check runs
from pre-commit when a workflow changes. Hooks check for merge conflict markers,
case-conflicting filenames, broken symlinks, private keys, and large additions
outside the dataset directory, alongside formatting.
Install the hooks locally with pixi run --locked pre-commit install.
Hooks use isolated pre-commit environments and also run on pre-commit.ci without
Pixi. Hook revisions are pinned to commit hashes and local hook tools use exact
versions. Update remote hooks with pre-commit autoupdate --freeze.
Type checking uses both Mypy (strict mode) and Pyright (standard mode), targeting
Python 3.10 across src, tests, and tools. Run both with
pixi run --locked typecheck, or individually with typecheck-mypy and
typecheck-pyright. Both also run through check and the CI quality job, using
the locked Pixi environment rather than pre-commit environments.
Pushing a version tag runs .github/workflows/release.yml. The workflow
checks out the tagged commit, builds the sdist and a wheel from that sdist,
checks that their versions match the tag, and tests the installed wheel.
A separate job publishes those same distributions to PyPI using trusted
publishing through the pypi GitHub environment. No PyPI API token is needed.
Tags follow the existing year-based version format, for example 2026.0.
Prerelease tags such as 2026.0a1, 2026.0b1, and 2026.0rc1 use the same
workflow and publish prerelease versions to PyPI. Development and local versions
are rejected. A GitHub Release is not required.
After the intended commit has passed CI, create and push its tag:
git tag 2026.0
git push origin 2026.0The environment approval is the final step before uploading the tested artifacts.
The software license is in LICENSE.txt. Dataset notices and provenance are collected in licenses/. Update the file inventory when adding or replacing data, including original source evidence, attribution, applicable terms, and changes made to the source. Keep legal texts verbatim. Existing license declarations are accepted unless contrary evidence is found. Record explicit terms for new datasets before including them.