This release is a pre-release and may not be stable for production use.
Travertine tries to solve the problem of generating price tables fast enough for our xhg2 project. This Rust runtime is not a replacement of the Python runtime because there are still types of procedures which are not implemented in Rust.
Preparing a release
Releases are cut from main and published by the CI: pushing a tag whose name is exactly the version builds the manylinux wheels (CPython 3.10 to 3.14) and uploads them to PyPI. Nothing is ever published from a developer’s machine.
Make sure main is green: make lint, make typecheck, make test and make docs/build.
Complete the changelog in docs/source/history.rst. The topmost section is headed Unreleased. Release X.Y.0 while the version is being prepared; on the final release replace Unreleased with the date, as in 2025-08-23. Release 0.49.0. Pre-releases leave the heading alone.
Bump the version:
in pyproject.toml always, using the PEP 440 spelling (0.50.0a1, 0.50.0rc1, 0.50.0); and
in Cargo.toml only on the final release. Cargo has no spelling for our pre-release versions, so the crate keeps the previous number until then.
Refresh the locks afterwards so that their travertine entries match: make lock for uv.lock, and cargo check (or make test-rust) for Cargo.lock.
Commit those files alone, with the message Pre-release X.Y.ZaN or Release X.Y.Z.
Tag that commit with an annotated tag named exactly as the version, with no v prefix:
git tag -a 0.50.0a1 -m 'Pre-release 0.50.0a1'
Push the commit and the tag to the gitlab remote (gitlab.merchise.org):
git push gitlab main git push gitlab 0.50.0a1
The tag’s pipeline runs build wheels and then publish Python extensions in PyPI, which uploads them with uv publish.
The next change to land after a release is the one that opens the new Unreleased. Release X.Y.0 section in the changelog.
CI variables needed to publish the wheels
The publish Python extensions in PyPI job only knows about two variables, which it hands to uv publish as UV_PUBLISH_USERNAME and UV_PUBLISH_PASSWORD:
- PYPI_USERNAME
The literal __token__: PyPI no longer accepts a password, only API tokens, and the token is passed as the password of that user.
- PYPI_PASSWORD
The PyPI API token itself, pypi- prefix included. Mask it.
Both are defined in the project settings of gitlab.merchise.org (Settings > CI/CD > Variables); the job runs with GIT_STRATEGY: none, so nothing else in the repository can supply them. Check them before tagging:
The token must not have expired – PyPI tokens do expire, and the failure only shows up at the end of the pipeline, once the wheels are already built.
If either variable is protected, the tag must be protected as well (Settings > Repository > Protected tags), otherwise the variable is simply empty in the tag’s pipeline and the upload fails with a 403.
If either variable is scoped to an environment, the scope must be pypi, which is the environment the publish job declares.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file travertine-0.50.0a3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: travertine-0.50.0a3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 9.7 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a55d16c991f6a80e8e2799233258bb4ffab780436fba830c2557670dade2fc58
|
|
| MD5 |
5de31968a64c9c918eecd5714b17ee96
|
|
| BLAKE2b-256 |
7a86c5b15324c2e636e93f5150871796906a9ef476cbc8fbe4bda9bdd1cc57ac
|
File details
Details for the file travertine-0.50.0a3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: travertine-0.50.0a3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 9.7 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70e230d10aad7b6e1ba73f1eb187e08cfe55631c7bc4e38e41faab40bff2dea9
|
|
| MD5 |
195d49c3dc85b20a84d21ff8556ae50b
|
|
| BLAKE2b-256 |
8ce01d4857664c72e1c119a0e46ac082cd9df5eabd4eeaea5d8fd5ba4185438c
|
File details
Details for the file travertine-0.50.0a3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: travertine-0.50.0a3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 9.7 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
065a57a5e3f28a0aaa1d4cfd2754c6887341e6c18418286615bc62190145baa8
|
|
| MD5 |
bdd656f3d2f47b72912879f8e3365177
|
|
| BLAKE2b-256 |
5d29174a1a140f1afb9f6c1492bf6a013a1ed6471dc8a07e6f5741d4d483cc9d
|
File details
Details for the file travertine-0.50.0a3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: travertine-0.50.0a3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 9.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ddac4b8f366b0c8c42988fe8f2c89fc01847f7d86c644b04819254a268b4fdb4
|
|
| MD5 |
be94b9618fb8c63ab513b446ff2ef753
|
|
| BLAKE2b-256 |
f9d3a3437c4e013ed74c4ff177778b53ca901b92cb7db980f0a252e5fd3caac2
|
File details
Details for the file travertine-0.50.0a3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: travertine-0.50.0a3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 9.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ad9ccbf07b89a9e086b7423e379c263889ebeb662aebeabf031b05b21ff089c
|
|
| MD5 |
23370f6af8785ce8cf873b4b756681ff
|
|
| BLAKE2b-256 |
c4928e4451926ea6365c46bb67f432543d64abea09bf34ad4dc2adcf722828bc
|