Skip to content

Releases: exasol/python-toolbox

5.0.0

23 Jan 13:00
8fd9166

Choose a tag to compare

5.0.0 - 2026-01-23

Summary

In this major release, attention needs to be given to the following:

  • gh-pages.yml changes
    • See GitHub upload-pages-artifact v4
  • default Poetry version changed from 2.1.2 to 2.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:

  1. Run the nox sessions docs:build
  2. Use this command to see what dotfiles are created:
    ls -a .hmtl-documentation/ | grep "^\."
  3. If there are other critical dotfiles, consider converting them. Otherwise, create
    an issue in the python-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-version when 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 the poetry-version via the noxconfig.py::PROJECT_CONFIG
    by changing dependency_manager_version. If you do this, please create an issue to
    update to 2.3.0 at 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:prepare to 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_dict are used to render the following values in
      the templates
      • dependency_manager_version - used for poetry-version in the workflows.
        The default it 2.3.0.
      • minimum_python_version - used for python-version in the workflows whenever
        python-version for actions that are run once. The default is the minimum value
        in your project's defined python_versions
      • os_version - used for the GitHub runner in the workflows. The default is
        ubuntu-24.04

Refactoring

  • #624: Updated GitHub python-environment action and all code to use Poetry >= 2.3.0
  • #662: Update GitHub actions
    • checkout from v5 to v6 - using Node.js 24
    • upload-pages-artifact from v3 to v4 - breaking change
    • download-artifactfrom v6 to v7 - using Node.js 24
    • upload-artifact from v5 to v6 - using Node.js 24
  • #667: Added deprecation warnings to tbx workflow x endpoints 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.2 to 1.9.3
  • Updated dependency black:25.11.0 to 25.12.0
  • Updated dependency coverage:7.12.0 to 7.13.1
  • Updated dependency furo:2025.9.25 to 2025.12.19
  • Updated dependency import-linter:2.7 to 2.9
  • Updated dependency mypy:1.19.0 to 1.19.1
  • Updated dependency pre-commit:4.5.0 to 4.5.1
  • Updated dependency pysonar:1.2.1.3951 to 1.3.0.4086
  • Updated dependency pytest:9.0.1 to 9.0.2
  • Added dependency pyyaml:6.0.3
  • Updated dependency ruff:0.14.8 to 0.14.13
  • Updated dependency shibuya:2025.11.10 to 2026.1.9
  • Updated dependency sphinx-design:0.6.1 to 0.7.0
  • Updated dependency sphinx-toolbox:4.0.0 to 4.1.2
  • Updated dependency typer:0.20.0 to 0.21.1

dev

  • Added dependency types-pyyaml:6.0.12.20250915

4.0.1

09 Jan 10:54
4b1640d

Choose a tag to compare

4.0.1 - 2026-01-08

Bugfixes

  • #645: Fixed GitHub security-issues action

4.0.0

09 Dec 14:23
076da8c

Choose a tag to compare

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:

  • root is now root_path
  • source is now covered by project_name and source_code_path, which uses root_path and project_name
  • doc is now documentation_path
  • version_file is now version_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:fix more aptly to format:fix and project:format to format:check
  • #604: Updated BaseConfig.exasol_versions to ("7.1.30", "8.29.13", "2025.1.8")

Feature

  • #614: Replaced path_filters with BaseConfig.add_to_excluded_python_paths and BaseConfig.excluded_python_paths
  • #626: Replaced plugins with BaseConfig.plugins_for_nox_sessions
  • #621: Moved path specifications into BaseConfig
    • root is now root_path, which must be specified by the project
    • source is now covered by project_name, which must be specified by the project,
      and source_code_path, which uses root_path and project_name
    • doc is now documentation_path and no longer needs to be specified
    • version_file is now version_filepath and no longer needs to be specified

Dependency Updates

main

  • Updated dependency bandit:1.9.1 to 1.9.2
  • Updated dependency mypy:1.18.2 to 1.19.0
  • Updated dependency pre-commit:4.4.0 to 4.5.0
  • Updated dependency pydantic:2.12.4 to 2.12.5
  • Updated dependency pylint:4.0.3 to 4.0.4
  • Updated dependency ruff:0.14.5 to 0.14.8

3.0.0

21 Nov 10:05
b1fa4ae

Choose a tag to compare

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 ResolvedVulnerabilities to track resolved vulnerabilities between versions
  • #544: Modified nox sessions project:fix and project:format to use ruff to remove unused imports

Refactoring

  • #596: Added newline after header in versioned changelog

Dependency Updates

main

  • Updated dependency bandit:1.8.6 to 1.9.1
  • Updated dependency black:25.9.0 to 25.11.0
  • Updated dependency coverage:7.11.0 to 7.12.0
  • Updated dependency import-linter:2.5.2 to 2.7
  • Updated dependency isort:6.1.0 to 7.0.0
  • Updated dependency nox:2025.10.16 to 2025.11.12
  • Updated dependency pre-commit:4.3.0 to 4.4.0
  • Updated dependency pydantic:2.12.3 to 2.12.4
  • Updated dependency pylint:4.0.2 to 4.0.3
  • Updated dependency pytest:8.4.2 to 9.0.1
  • Updated dependency pyupgrade:3.21.0 to 3.21.2
  • Added dependency ruff:0.14.5
  • Updated dependency shibuya:2025.11.4 to 2025.11.10

2.0.0

04 Nov 14:52
2c35dad

Choose a tag to compare

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_CONFIG defined in noxconfig.py must be derived from BaseConfig.
      • Replaced MINIMUM_PYTHON_VERSION which acted as a back-up value for the nox session artifacts:copy
        with BaseConfig.minimum_python_version_
      • Replaced _PYTHON_VERSIONS which acted as a back-up value for the nox sessions matrix:python and matrix:all
        with BaseConfig.python_versions_
      • Replaced __EXASOL_VERSIONS which acted as a back-up value for the nox sessions matrix:exasol and matrix:all
        with BaseConfig.python_versions_
      • Moved pyupgrade_args from being defined per PROJECT_CONFIG to a calculated property
        BaseConfig.pyupgrade_argument_

Dependency Updates

main

  • Updated dependency pysonar:1.2.0.2419 to 1.2.1.3951
  • Updated dependency shibuya:2025.10.21 to 2025.11.4

1.13.0

31 Oct 13:35
d6a7971

Choose a tag to compare

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:prepare for multi-project repositories
  • #586: Fixed python-environment GitHub action to use working-directory for setup of cache variables
  • #559: Added SHA of pyproject.toml to determine cache key in python-environment GitHub action

Features

  • #485: Improved nox task release:trigger

1.12.0

29 Oct 12:40
7946592

Choose a tag to compare

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

29 Oct 09:16
bb05fd4

Choose a tag to compare

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:
    • actions/checkout to v5
    • actions/download-artifact to v6
    • actions/upload-artifact to v5

Security

Dependency Updates

main

  • Updated dependency black:25.1.0 to 25.9.0
  • Updated dependency coverage:7.10.6 to 7.11.0
  • Updated dependency furo:2025.7.19 to 2025.9.25
  • Updated dependency import-linter:2.4 to 2.5.2
  • Updated dependency isort:6.0.1 to 6.1.0
  • Updated dependency mypy:1.17.1 to 1.18.2
  • Updated dependency nox:2025.5.1 to 2025.10.16
  • Updated dependency pip-licenses:5.0.0 to 5.5.0
  • Updated dependency pydantic:2.11.7 to 2.12.3
  • Updated dependency pylint:3.3.8 to 4.0.2
  • Updated dependency pysonar:1.1.0.2035 to 1.2.0.2419
  • Updated dependency pytest:8.4.1 to 8.4.2
  • Updated dependency pyupgrade:3.20.0 to 3.21.0
  • Updated dependency shibuya:2025.8.16 to 2025.10.21
  • Added dependency twine:6.2.0
  • Updated dependency typer:0.17.3 to 0.20.0

1.10.0

10 Oct 12:12
cca9bd2

Choose a tag to compare

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.3 to 7.10.6
  • Updated dependency import-linter:2.3 to 2.4
  • Updated dependency shibuya:2025.7.24 to 2025.8.16
  • Added dependency sphinx-toolbox:4.0.0
  • Updated dependency typer:0.16.0 to 0.17.3

1.9.0

28 Aug 12:50
9c3a592

Choose a tag to compare

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>.

Refactorings

  • #530: Nox task release:trigger also creates v* tag
  • #553: Use Local copy of poetry installer in Github actions python-environment