Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
17f44ac
Add documentation build folder to .gitignore
ahsimb Mar 26, 2024
7875564
Merge remote-tracking branch 'origin/main'
ahsimb May 14, 2024
31cca39
Merge remote-tracking branch 'origin/main'
ahsimb May 16, 2024
a78e714
Merge remote-tracking branch 'origin/main'
ahsimb May 23, 2024
381181f
Merge remote-tracking branch 'origin/main'
ahsimb May 28, 2024
062aee7
Merge remote-tracking branch 'origin/main'
ahsimb Jun 7, 2024
1cb349f
Merge remote-tracking branch 'origin/main'
ahsimb Jun 11, 2024
ee5bd0e
Merge remote-tracking branch 'origin/main'
ahsimb Jun 12, 2024
8c40fad
Merge remote-tracking branch 'origin/main'
ahsimb Jun 12, 2024
4584c96
Merge remote-tracking branch 'origin/main'
ahsimb Jun 13, 2024
8e2bc62
Merge remote-tracking branch 'origin/main'
ahsimb Jun 25, 2024
0ca19e9
Merge remote-tracking branch 'origin/main'
ahsimb Jun 25, 2024
2e86c75
Merge remote-tracking branch 'origin/main'
ahsimb Jun 26, 2024
6746ead
Merge remote-tracking branch 'origin/main'
ahsimb Jun 26, 2024
a6e9e66
Merge remote-tracking branch 'origin/main'
ahsimb Aug 8, 2024
ccba19f
Merge remote-tracking branch 'origin/main'
ahsimb Aug 12, 2024
fb4107d
Merge remote-tracking branch 'origin/main'
ahsimb Aug 14, 2024
8f0bc20
Merge remote-tracking branch 'origin/main'
ahsimb Aug 14, 2024
5c7c13d
Merge remote-tracking branch 'origin/main'
ahsimb Sep 18, 2024
14bab30
Merge remote-tracking branch 'origin/main'
ahsimb Sep 19, 2024
d41ce67
Merge remote-tracking branch 'origin/main'
ahsimb Sep 20, 2024
75dd021
Merge remote-tracking branch 'origin/main'
ahsimb Sep 24, 2024
813f223
Merge remote-tracking branch 'origin/main'
ahsimb Oct 2, 2024
5f2791b
Merge remote-tracking branch 'origin/main'
ahsimb Oct 2, 2024
fb33e33
Merge remote-tracking branch 'origin/main'
ahsimb Oct 2, 2024
4ce824f
Merge remote-tracking branch 'origin/main'
ahsimb Oct 4, 2024
797cbfe
Merge remote-tracking branch 'origin/main'
ahsimb Oct 7, 2024
ee3cc30
Merge remote-tracking branch 'origin/main'
ahsimb Oct 7, 2024
e3e4e93
Merge remote-tracking branch 'origin/main'
ahsimb Oct 14, 2024
898f06c
Merge remote-tracking branch 'origin/main'
ahsimb Oct 14, 2024
c76ef87
Merge remote-tracking branch 'origin/main'
ahsimb Oct 14, 2024
6de88a0
Merge remote-tracking branch 'origin/main'
ahsimb Oct 25, 2024
bcf2f78
Merge remote-tracking branch 'origin/main'
ahsimb Feb 12, 2025
2f5c203
Merge remote-tracking branch 'origin/main'
ahsimb Oct 30, 2025
1a24257
Merge remote-tracking branch 'origin/main'
ahsimb Jun 16, 2026
0762772
Merge remote-tracking branch 'origin/main'
ahsimb Jun 22, 2026
06d0496
Merge remote-tracking branch 'origin/main'
ahsimb Jun 24, 2026
fd32726
Added support for Python3.14
ahsimb Jun 25, 2026
b318fd6
Merge remote-tracking branch 'origin/main' into dependency/163-python…
ahsimb Jun 25, 2026
ed3d938
Merged changes from main
ahsimb Jun 25, 2026
2f69477
Merge remote-tracking branch 'origin/main' into dependency/163-python…
ahsimb Jul 28, 2026
e6ba663
Prepared release 1.0.0
ahsimb Jul 28, 2026
b9996c3
Fixed the change
ahsimb Jul 28, 2026
77a55e3
Fixed cli options bug
ahsimb Jul 28, 2026
110b6fb
Fixed Sonar findings
ahsimb Jul 28, 2026
2a83081
Fixed std_options.py
ahsimb Jul 28, 2026
34b00c0
Reverted change in std_options.py
ahsimb Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/checks.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .github/workflows/fast-tests.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions doc/changes/changelog.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions doc/changes/changes_1.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 1.0.0 - 2026-07-29

## Summary

Added support for Python 3.14

## Dependencies

* #163: Added support for Python 3.14

## Dependency Updates

### `dev`

* Updated dependency `pytest-exasol-backend:1.4.1` to `1.5.0`

## Refactoring

* #152: Re-enabled `check-workflows` in `checks.yml` and updated to `exasol-toolbox` 10.0.0
4 changes: 0 additions & 4 deletions doc/changes/unreleased.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# Unreleased

## Summary

## Refactoring

* #152: Re-enabled `check-workflows` in `checks.yml` and updated to `exasol-toolbox` 10.0.0
2 changes: 1 addition & 1 deletion noxconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
PROJECT_CONFIG = BaseConfig(
root_path=Path(__file__).parent,
project_name="python_extension_common",
python_versions=("3.10", "3.11", "3.12", "3.13"),
python_versions=("3.10", "3.11", "3.12", "3.13", "3.14"),
)
70 changes: 57 additions & 13 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[project]
name = "exasol-python-extension-common"
version = "0.16.0"
version = "1.0.0"
description = "A collection of common utilities for Exasol extensions."
authors = [{ name = "Mikhail Beck", email = "mikhail.beck@exasol.com" }]
requires-python = ">=3.10,<3.14"
requires-python = ">=3.10,<3.15"
readme = "README.md"
license = "MIT"
classifiers = [
Expand All @@ -12,6 +12,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
]
dependencies = [
"pyexasol>=0.25.0, <3",
Expand Down
24 changes: 24 additions & 0 deletions test/integration/cli/test_language_container_deployer_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import pytest
from click.testing import CliRunner

from exasol.python_extension_common.cli import std_options
from exasol.python_extension_common.cli.language_container_deployer_cli import (
LanguageContainerDeployerCli,
)
Expand All @@ -29,6 +30,29 @@
CONTAINER_NAME_ARG = "container_name"


@pytest.fixture(autouse=True)
def _patch_get_cli_arg_for_dash_prefixed_values(monkeypatch):
"""
SaaS database ids are randomly generated and may themselves start with "-"
(e.g. "--dI0m90RUKefql382tsWA"). `get_cli_arg` joins an option and its
value with a space, which click's parser can mistake for a new option
when the value itself looks like one. This is patched here, rather than
in `get_cli_arg` itself, to avoid changing that function's behavior for
its other, non-test callers. See
https://github.com/exasol/python-extension-common/issues/168
"""
original_get_cli_arg = std_options.get_cli_arg

def patched_get_cli_arg(std_param, param_value):
if isinstance(param_value, bool) or not str(param_value).startswith("-"):
return original_get_cli_arg(std_param, param_value)
option_name = std_param if isinstance(std_param, str) else std_param.name
option_name = option_name.replace("_", "-")
return f'--{option_name}="{param_value}"'

monkeypatch.setattr(std_options, "get_cli_arg", patched_get_cli_arg)


@pytest.fixture(scope="session")
def onprem_cli_args(
backend_aware_onprem_database, exasol_config, bucketfs_config, language_alias
Expand Down
11 changes: 3 additions & 8 deletions test/unit/cli/test_std_options.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import os

import click
import pytest
from click.testing import CliRunner
Expand Down Expand Up @@ -145,7 +143,7 @@ def func(**kwargs):
runner.invoke(cmd, args=f"--version {version}", catch_exceptions=False, standalone_mode=False)


def test_hidden_opt_with_envar():
def test_hidden_opt_with_envar(monkeypatch):
"""
This test checks the mechanism of providing a value of a confidential parameter
via an environment variable.
Expand All @@ -161,11 +159,8 @@ def func(**kwargs):
opt = create_std_option(std_param, type=str, hide_input=True)
cmd = click.Command("do_something", params=[opt], callback=func)
runner = CliRunner()
os.environ[envar_name] = param_value
try:
runner.invoke(cmd)
finally:
os.environ.pop(envar_name)
monkeypatch.setenv(envar_name, param_value)
runner.invoke(cmd)


@pytest.mark.parametrize(
Expand Down