Metadata-Version: 2.4
Name: bokeh_sampledata
Version: 2026.1
Summary: Sample datasets for Bokeh examples
Author: Bokeh Team
Author-email: info@bokeh.org
License-Expression: BSD-3-Clause
Project-URL: homepage, https://bokeh.org
Project-URL: documentation, https://docs.bokeh.org
Project-URL: repository, https://github.com/bokeh/bokeh_sampledata
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
License-File: licenses/CC-BY-2.0.txt
License-File: licenses/CC-BY-3.0-IGO.txt
License-File: licenses/CC-BY-3.0.txt
License-File: licenses/CC-BY-4.0.txt
License-File: licenses/CC-BY-SA-3.0.txt
License-File: licenses/CC0-1.0.txt
License-File: licenses/Font-Awesome.txt
License-File: licenses/LicenseRef-Intel-OpenCV.txt
License-File: licenses/LicenseRef-Stanford-GraphBase.txt
License-File: licenses/MIT.txt
License-File: licenses/OGL-UK-2.0.txt
License-File: licenses/README.md
License-File: licenses/datasets.json
License-File: licenses/geographic-boundaries.txt
License-File: licenses/text-sources.json
Requires-Dist: icalendar
Requires-Dist: pandas>=2.2.3
Requires-Dist: numpy>=1.26.4
Requires-Dist: shapely>=2.0
Requires-Dist: tzdata
Dynamic: license-file

# bokeh_sampledata

This package contains sample datasets for use with Bokeh examples.

## Changes in 2026.1

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.

## Development and packaging

Use [Pixi](https://pixi.sh) >=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.

```sh
pixi run --locked setup
pixi run --locked test
pixi run --locked check
pixi run --locked pre-commit run --all-files
```

The 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:

```sh
pixi run --locked -e test-py310 test
pixi run --locked -e test-py310-minimum test
pixi run --locked -e build build-py
```

`build-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](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.

## Releases

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:

```sh
git tag 2026.0
git push origin 2026.0
```

The environment approval is the final step before uploading the tested artifacts.

## License maintenance

The software license is in [LICENSE.txt](LICENSE.txt). Dataset notices and
provenance are collected in [licenses/](licenses/README.md).
Update [the file inventory](licenses/datasets.json) 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.
