Releases: exasol/python-toolbox
5.0.0
5.0.0 - 2026-01-23
Summary
In this major release, attention needs to be given to the following:
gh-pages.ymlchanges- See GitHub
upload-pages-artifactv4
- See GitHub
- default Poetry version changed from
2.1.2to2.3.0- See Poetry Update
GitHub upload-pages-artifact v4
In v4, the developers of upload-pages-artifact dropped support for uploading
dotfiles. This means that the gh-pages.yml has been modified such that it
converts the generated .html-documentation to html-documentation. It was also checked
which files are created by the nox session docs:build. It was found that in many cases
that the only dotfiles produced are .buildinfo and .doctrees, which do not need
to be uploaded for the GitHub pages to work. To verify that your project will not be
adversely affected by these changes, please:
- Run the nox sessions
docs:build - Use this command to see what dotfiles are created:
ls -a .hmtl-documentation/ | grep "^\."
- If there are other critical dotfiles, consider converting them. Otherwise, create
an issue in thepython-toolbox.
Poetry Update
The default behavior for .github/actions/python-environment/action.yml has changed.
In previous versions, the default value for poetry-version was 2.1.2, and it is now 2.3.0.
-
For migrating to
2.3.0, see
from Poetry 2.1.x to 2.3.0. -
Depending on its poetry version, a repository relying on the default behavior of said
action may run into breaking changes. This can easily be resolved with explicitly setting the
poetry-versionwhen calling the GitHub action. It is, however, recommended whenever
possible to update the poetry version of the affected repository. Since this major release,
you can, if needed, alter thepoetry-versionvia thenoxconfig.py::PROJECT_CONFIG
by changingdependency_manager_version. If you do this, please create an issue to
update to2.3.0at your earliest convenience.
Documentation
- #648: Moved sonar setup instructions in the User guide
Features
- #649: Restricted noxconfig usage throughout exasol.toolbox to only exasol.toolbox.nox.*
- #647: Added summary to changelog template
- #657: Updated
release:prepareto modify cookiecutter template exasol-toolbox version range - #665: Added SECURITY.md to the cookiecutter template
- #667: Switched GitHub workflow templates to be controlled by PROJECT_CONFIG:
- The values in
BaseConfig.github_template_dictare used to render the following values in
the templatesdependency_manager_version- used forpoetry-versionin the workflows.
The default it2.3.0.minimum_python_version- used forpython-versionin the workflows whenever
python-versionfor actions that are run once. The default is the minimum value
in your project's definedpython_versionsos_version- used for the GitHub runner in the workflows. The default is
ubuntu-24.04
- The values in
Refactoring
- #624: Updated GitHub python-environment action and all code to use Poetry >= 2.3.0
- #662: Update GitHub actions
- #667: Added deprecation warnings to
tbx workflow xendpoints as some are unneeded
(will be removed) and others need updates (will be moved to a nox session) - #669: Updated PTB GitHub workflows
Dependency Updates
main
- Updated dependency
bandit:1.9.2to1.9.3 - Updated dependency
black:25.11.0to25.12.0 - Updated dependency
coverage:7.12.0to7.13.1 - Updated dependency
furo:2025.9.25to2025.12.19 - Updated dependency
import-linter:2.7to2.9 - Updated dependency
mypy:1.19.0to1.19.1 - Updated dependency
pre-commit:4.5.0to4.5.1 - Updated dependency
pysonar:1.2.1.3951to1.3.0.4086 - Updated dependency
pytest:9.0.1to9.0.2 - Added dependency
pyyaml:6.0.3 - Updated dependency
ruff:0.14.8to0.14.13 - Updated dependency
shibuya:2025.11.10to2026.1.9 - Updated dependency
sphinx-design:0.6.1to0.7.0 - Updated dependency
sphinx-toolbox:4.0.0to4.1.2 - Updated dependency
typer:0.20.0to0.21.1
dev
- Added dependency
types-pyyaml:6.0.12.20250915
4.0.1
4.0.0
4.0.0 - 2025-12-09
Summary
This major release removes project:fix and project:format
and replaces them with format:fix and format:check.
The BaseConfig has been extended to handle the commonly provided paths:
rootis nowroot_pathsourceis now covered byproject_nameandsource_code_path, which usesroot_pathandproject_namedocis nowdocumentation_pathversion_fileis nowversion_filepath
If your project was previously defining these values, your before would look like:
from __future__ import annotations
from pathlib import Path
from typing import Iterable
from exasol.toolbox.config import BaseConfig
class Config(BaseConfig):
root: Path = Path(__file__).parent
doc: Path = Path(__file__).parent / "doc"
source: Path = Path("exasol/{{cookiecutter.package_name}}")
version_file: Path = (
Path(__file__).parent
/ "exasol"
/ "{{cookiecutter.package_name}}"
/ "version.py"
)
plugins: Iterable[object] = ()
PROJECT_CONFIG = Config()With this major release, you should modify your project's noxconfig.py to look like:
from __future__ import annotations
from pathlib import Path
from exasol.toolbox.config import BaseConfig
"""
A class `Config` only needs to be defined if:
- you have custom attributes to pass to your project-defined nox sessions
- you need to override a convention in the PTB.
These values do NOT need to be defined if your project follows the convention
expected from the PTB:
- documentation_path
- source_code_path
- version_filepath
If your values differ, you can override these properties with the needed values when
you define `class Config(BaseConfig)`. We highly recommend that you create an issue
to remove this override in the future by aligning your project's structure with
that expected by the PTB.
If you have additional Paths that used one of these values (i.e. `root_path`), then
you can define your own property in `class Config(BaseConfig)`, which accesses the
class values
"""
class Config(BaseConfig):
custom_field: str = "custom_field"
# For most projects, the PROJECT_CONFIG would look like:
PROJECT_CONFIG = BaseConfig(
project_name="{{cookiecutter.package_name}}",
root_path=Path(__file__).parent,
)Refactoring
- #606: Renamed nox session
project:fixmore aptly toformat:fixandproject:formattoformat:check - #604: Updated
BaseConfig.exasol_versionsto("7.1.30", "8.29.13", "2025.1.8")
Feature
- #614: Replaced
path_filterswithBaseConfig.add_to_excluded_python_pathsandBaseConfig.excluded_python_paths - #626: Replaced
pluginswithBaseConfig.plugins_for_nox_sessions - #621: Moved path specifications into
BaseConfigrootis nowroot_path, which must be specified by the projectsourceis now covered byproject_name, which must be specified by the project,
andsource_code_path, which usesroot_pathandproject_namedocis nowdocumentation_pathand no longer needs to be specifiedversion_fileis nowversion_filepathand no longer needs to be specified
Dependency Updates
main
- Updated dependency
bandit:1.9.1to1.9.2 - Updated dependency
mypy:1.18.2to1.19.0 - Updated dependency
pre-commit:4.4.0to4.5.0 - Updated dependency
pydantic:2.12.4to2.12.5 - Updated dependency
pylint:4.0.3to4.0.4 - Updated dependency
ruff:0.14.5to0.14.8
3.0.0
3.0.0 - 2025-11-21
Summary
This is a major release with potentially breaking changes as nox session project:fix has been modified and potentially can create many unexpected changes.
This release adds ruff to Nox sessions project:format and project:fix to check for and remove unused imports.
As ruff potentially can also apply many other changes, we recommend updating the pyproject.toml file in your project as specified here: Formatting Code Configuration.
Additionally, isort has been updated from ^6.0.0 to ^7.0.0. In 7.x, isort has provided fixes for Python 3.14.
Documentation
- #589: Corrected configuration for Sonar documentation for host.url
- #535: Added more information about Sonar's usage of
exclusions - #596: Corrected and added more information regarding
pyupgrade
Features
- #595: Created class
ResolvedVulnerabilitiesto track resolved vulnerabilities between versions - #544: Modified nox sessions
project:fixandproject:formatto use ruff to remove unused imports
Refactoring
- #596: Added newline after header in versioned changelog
Dependency Updates
main
- Updated dependency
bandit:1.8.6to1.9.1 - Updated dependency
black:25.9.0to25.11.0 - Updated dependency
coverage:7.11.0to7.12.0 - Updated dependency
import-linter:2.5.2to2.7 - Updated dependency
isort:6.1.0to7.0.0 - Updated dependency
nox:2025.10.16to2025.11.12 - Updated dependency
pre-commit:4.3.0to4.4.0 - Updated dependency
pydantic:2.12.3to2.12.4 - Updated dependency
pylint:4.0.2to4.0.3 - Updated dependency
pytest:8.4.2to9.0.1 - Updated dependency
pyupgrade:3.21.0to3.21.2 - Added dependency
ruff:0.14.5 - Updated dependency
shibuya:2025.11.4to2025.11.10
2.0.0
2.0.0 - 2025-11-04
With this release, all projects using the PTB must have their project Config inherit from BaseConfig (introduced in 1.10.0). Otherwise, the workflows using these attributes will raise an exception indicating that this manual action is needed.
As Python 3.9 reached its EOL on 2025-10-31, the PTB no longer supports Python 3.9, and it has added support for 3.14. For projects that were still using Python 3.9, it is anticipated that there will be larger formatting change due to the arguments to pyupgrade changing.
Refactoring
- #590:
- Dropped support for Python 3.9 and added support for Python 3.14
- Enforced that the
PROJECT_CONFIGdefined innoxconfig.pymust be derived fromBaseConfig.- Replaced
MINIMUM_PYTHON_VERSIONwhich acted as a back-up value for the nox sessionartifacts:copy
withBaseConfig.minimum_python_version_ - Replaced
_PYTHON_VERSIONSwhich acted as a back-up value for the nox sessionsmatrix:pythonandmatrix:all
withBaseConfig.python_versions_ - Replaced
__EXASOL_VERSIONSwhich acted as a back-up value for the nox sessionsmatrix:exasolandmatrix:all
withBaseConfig.python_versions_ - Moved
pyupgrade_argsfrom being defined per PROJECT_CONFIG to a calculated property
BaseConfig.pyupgrade_argument_
- Replaced
Dependency Updates
main
- Updated dependency
pysonar:1.2.0.2419to1.2.1.3951 - Updated dependency
shibuya:2025.10.21to2025.11.4
1.13.0
1.13.0 - 2025-10-31
Summary
This releases fixes Nox session release:prepare for multi-project repositories and
fixes the python-environment GitHub action to also use the working-directory
and pyproject.toml setting the cache variables.
Bugfixes
- #580: Fixed Nox session
release:preparefor multi-project repositories - #586: Fixed
python-environmentGitHub action to useworking-directoryfor setup of cache variables - #559: Added SHA of
pyproject.tomlto determine cache key inpython-environmentGitHub action
Features
- #485: Improved nox task
release:trigger
1.12.0
1.12.0 - 2025-10-29
Security
- #581: Resolved CVE-2024-12797 for cryptography by dropping support for Python versions 3.9.0 and 3.9.1 and updating the lock file
1.11.0
1.11.0 - 2025-10-29
With the addition of the nox session package:check, it's recommended to
switch a README.md to README.rst. The underlying package twine which is used
in that check performs more checks for rst files.
Feature
- #494: Created check of built packages with nox session
package:check
Refactoring
- #578: Updated GitHub actions which now use node 24:
Security
- #578: Resolved CVE-2024-12797 for cryptography and CVE-2025-8869 for pip by updating the lock file
Dependency Updates
main
- Updated dependency
black:25.1.0to25.9.0 - Updated dependency
coverage:7.10.6to7.11.0 - Updated dependency
furo:2025.7.19to2025.9.25 - Updated dependency
import-linter:2.4to2.5.2 - Updated dependency
isort:6.0.1to6.1.0 - Updated dependency
mypy:1.17.1to1.18.2 - Updated dependency
nox:2025.5.1to2025.10.16 - Updated dependency
pip-licenses:5.0.0to5.5.0 - Updated dependency
pydantic:2.11.7to2.12.3 - Updated dependency
pylint:3.3.8to4.0.2 - Updated dependency
pysonar:1.1.0.2035to1.2.0.2419 - Updated dependency
pytest:8.4.1to8.4.2 - Updated dependency
pyupgrade:3.20.0to3.21.0 - Updated dependency
shibuya:2025.8.16to2025.10.21 - Added dependency
twine:6.2.0 - Updated dependency
typer:0.17.3to0.20.0
1.10.0
1.10.0 - 2025-10-10
New BaseConfig class and improved Setup Python Github Action.
BaseConfig class for PTB attributes
The BaseConfig class was introduced in this version. This class is used to consolidate
the attributes needed for the PTB's functionalities into an inherited object which can
be expanded upon as needed. At this point, the BaseConfig class includes
python_versions, exasol_versions, and create_major_version_tags. Users of
the PTB should update their noxconfig.py to start using this feature.
# noxconfig.py
from exasol.toolbox.config import BaseConfig
# existing Config should inherit from BaseConfig
class Config(BaseConfig):
# if present, remove any attributes already in the BaseConfig from the added attributes
...
# if no overlapping attributes with `BaseConfig` were present in `Config`, then this is unmodified.
PROJECT_CONFIG = Config()
# if no overlapping attributes with `BaseConfig` were present in `Config`, then this should be modified.
PROJECT_CONFIG = Config(python_versions=(...), exasol_versions=(...), create_major_version_tags=True)Feature
- #465: Created BaseConfig class to better synchronize attributes needed for the PTB's
growing functionalities
Internal:
- Call poetry install always in setup python actions
Dependency Updates
main
- Updated dependency
coverage:7.10.3to7.10.6 - Updated dependency
import-linter:2.3to2.4 - Updated dependency
shibuya:2025.7.24to2025.8.16 - Added dependency
sphinx-toolbox:4.0.0 - Updated dependency
typer:0.16.0to0.17.3
1.9.0
1.9.0 - 2025-08-28
This release fixes stability problems with the Github action python-environment. Optionally, the nox task release:trigger now creates an additional tag with pattern v<MajorVersion>.