Add Python v3.14 and drop Python v3.9 support
### Python 3.14 pre-releases - [x] Set up v3.14 test job - (Optional) With `allow_failure: true`, to allow tests to fail ### Python 3.14 stable release - [x] Handle deprecation warning and breaking features: - [ ] When distributing Silkaj v0.20 with `py-substrate-sdk`, its dependency `py-ed25519-zebra-bindings` and `py-bip39-bindings` do not provide Py3.14 `musl` wheels for Alpine. Just an issue for the CI using Alpine Linux images. [py-bip39#24](https://github.com/JAMdotTech/py-bip39/issues/24) - [ ] Switch back to Debian-based images?: docker/python3/poetry#11+ - [x] `py-sr25519` missing 3.14 wheels. I could circumvent the issue locally by setting the environment variable mentioned in [the ticket #22](https://github.com/JAMdotTech/py-sr25519/issues/22), [PR!25](https://github.com/JAMdotTech/py-sr25519/pull/25). But this is not a long term solution. A solution has to be found. - [x] When dropping Py3.9 support, click gets bump from v8.1.8 to v8.3.0, because click v8.2.0 only have supports from Py3.10. click [v8.2.0](https://click.palletsprojects.com/en/stable/changes/#version-8-2-0) comes with some changes on `prompt()` which makes g1_monetary_license and auth tests failing. I have been confronted to this issue earlier on my local environment. I got click v8.3.0 installed as a transitive dependency of `rich-click` and due to a locking topic. - [x] Follow-up issue not directly related to Python version support. [`mkdocs serve` doesn’t reload](https://github.com/squidfunk/mkdocs-material/issues/8478), [`mkdocs` ticket](https://github.com/mkdocs/mkdocs/issues/4032), [pin `click` version in `mkdocs`](https://github.com/mkdocs/mkdocs/pull/4058), [fix on `click` side](https://github.com/pallets/click/issues/3084), [PR](https://github.com/pallets/click/pull/3152). I can pin `click` to v8.2.1, let’s see when click will release this fix. - with click v8.3.2, and `poetry run mkdocs serve --livereload` it works. - (Optional) Remove `allow_failure: true`, now on the tests should pass ### Drop Python 3.9 support - [x] Delete test job for v3.9 from `.gitlab-ci.yml` - [x] `pyproject.toml`: Bump minimum versions: - [x] `tools.poetry.dependency.python` - [x] Bump `tools.ruff.target-version` and apply Ruff changes - [x] v0.20 branch - [x] v0.12 branch ### Post - [x] Open follow-up v3.10/3.15 ticket: #508+ ### References - Expected to be release the [October 7th 2025](https://devguide.python.org/versions/). - docker/python3/poetry#12+
issue