This document describes the versioning policy, release cadence, and step-by-step
release process for wkls.
wkls follows Semantic Versioning (SemVer):
- Patch (
1.0.x): metadata refreshes from new Overture Maps releases, bug fixes. No code changes required by users. - Minor (
1.x.0): new features such as geometry formats or helper methods. Additive and non-breaking. - Major (
x.0.0): breaking changes to the public API (chainable syntax, geometry accessors, utility methods). We don't anticipate these frequently.
The wkls API is stable: the chainable syntax (wkls.us.ca.sanfrancisco),
geometry accessors (.wkt(), .wkb()), and utility methods will not change
without a major version bump.
However, place names come from Overture Maps Foundation data and may change
between releases. For example, if Overture renames "City of New York" to
"New York", the accessor changes from wkls.us.ny.cityofnewyork to
wkls.us.ny.newyork. This is a data-level change outside our control, not an
API change.
If you need deterministic behavior, pin your wkls version:
wkls==1.0.3
Note that pinned versions may reference Overture releases that have been removed
from S3 (Overture retains only the 2 most recent releases). In practice, the
geometry fetch uses the latest available Overture release by default, so this
is rarely an issue unless you've also pinned the Overture version via
wkls.configure(overture_version="...").
Overture Maps releases new data approximately monthly (~21st of each month)
and retains only the 2 most recent releases on S3. wkls should release
a metadata refresh every 2 months to keep the bundled metadata within
Overture's retention window.
- Metadata refresh releases (patch): regenerate
overture.zstd18.parquet, bump the patch version, tag and release. Even if there are zero code changes. - Feature releases (minor): bundle with the next metadata refresh, or release independently if the feature is ready.
- Bug fix releases (patch): release as needed, no fixed schedule.
Regenerate the metadata parquet from the latest Overture release:
uv run python scripts/generate_metadata.pyRun the test suite — count-based assertions in tests/test_us.py may need
updating to reflect changes in the new Overture data:
uv run pytest tests/ -vuv version --bump patch # or minor, majorgit add .
git commit -m "chore: release v1.0.1"
git tag v1.0.1
git push origin main --tagsPushing the tag triggers two GitHub Actions workflows:
release.yaml: creates a GitHub Release with auto-generated release notespypi-publish.yaml: runs the test suite, validates that the tag matchespyproject.toml, builds the package, and publishes to PyPI via OIDC trusted publishing
Check that both workflows complete successfully:
We use Conventional Commits for commit messages. This makes the auto-generated release notes readable.