Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 9 additions & 7 deletions .github/workflows/merge-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ jobs:
permissions:
contents: read

saas-tests:
name: SaaS
needs: [ run-slow-tests ]
uses: ./.github/workflows/tests-saas.yml
secrets: inherit
permissions:
contents: read
# Deactivated because SaaS Tests are broken because of breaking API changes in SaaS Rest API
# See https://github.com/exasol/notebook-connector/issues/251
# saas-tests:
# name: SaaS
# needs: [ run-slow-tests ]
# uses: ./.github/workflows/tests-saas.yml
# secrets: inherit
# permissions:
# contents: read

large-runner-tests:
name: Large Runner
Expand Down
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.

24 changes: 24 additions & 0 deletions doc/changes/changes_2.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 2.0.0 - 2025-09-02

This release disables the certificate check for the importer when starting a docker db using the ITDE (this is a temporary fix until the notebook connector has been updated to pyexasol >=1.0.0). Also, the installation of AI models has been refactored which resulted in breaking API changes. The used Script-Language-Container version was updated to 10.0.0. Otherwise, there were internal improvements.


## Refactorings

- #244: Updated PTB to 1.9.0
- #247: Start ITDE with disabled certificate check for importer
- #242: Refactoring of install_model
- #246: Use SLC 10.0.0

## Features

- #250: Added export function which does not copy container file to export directory

## Bugs

- #252: Fixed db parameter etlCheckCertsDefault

## Dependency Updates

### `dev`
* Updated dependency `exasol-toolbox:1.7.4` to `1.9.0`
6 changes: 0 additions & 6 deletions doc/changes/unreleased.md
Original file line number Diff line number Diff line change
@@ -1,7 +1 @@
# Unreleased

## Refactorings

- #244: Updated PTB to 1.9.0
- #247: Start ITDE with disabled certificate check for importer
- #242: Refactoring of install_model
2 changes: 1 addition & 1 deletion exasol/nb_connector/itde_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ def bring_itde_up(conf: Secrets, env_info: Optional[EnvironmentInfo] = None) ->

docker_runtime = None
docker_environment_variable: tuple[str, ...] = ()
additional_db_parameter: tuple[str, ...] = ("-etlCheckCertsDefault=1",)
additional_db_parameter: tuple[str, ...] = ("-etlCheckCertsDefault=0",)
if accelerator == Accelerator.nvidia.value:
docker_runtime = "nvidia"
docker_environment_variable = ("NVIDIA_VISIBLE_DEVICES=all",)
Expand Down
4 changes: 2 additions & 2 deletions exasol/nb_connector/slc/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
FLAVORS_PATH_IN_SLC_REPO = Path("flavors")
"""Path to flavors within the script-languages-release repository"""

SLC_RELEASE_TAG = "9.7.0"
SLC_RELEASE_TAG = "10.0.0"
"""
Using the SLC_RELEASE 9.7.0 because we are limited to slc-tool 3.*. (see pyproject.toml)
Using the SLC_RELEASE 10.0.0 because we are limited to slc-tool 3.*. (see pyproject.toml)
Check the developer guide (./doc/developer-guide.md) for more information.
"""

Expand Down
14 changes: 13 additions & 1 deletion exasol/nb_connector/slc/script_language_container.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ def custom_conda_file(self) -> Path:
"""
return self.custom_packages_dir / "conda_packages"

def export(self):
def export(self) -> None:
"""
Exports the current SLC to the export directory.
"""
Expand All @@ -176,6 +176,18 @@ def export(self):
compression_strategy=self.compression_strategy,
)

def export_no_copy(self) -> None:
"""
Exports the current SLC to the internal output directory only, without copying to the export directory.
"""
with current_directory(self.checkout_dir):
exaslct_api.export(
flavor_path=(str(self._flavor_path_rel),),
output_directory=str(self.workspace.output_path),
release_name=self.language_alias,
compression_strategy=self.compression_strategy,
)

def deploy(self):
"""
Deploys the current script-languages-container to the database and
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "exasol-notebook-connector"
version = "1.0.0"
version = "2.0.0"
requires-python = ">=3.10,<3.13"
description = "Components, tools, APIs, and configurations in order to connect Jupyter notebooks to Exasol and various other systems."
packages = [{ include = "exasol" }, ]
Expand Down
2 changes: 1 addition & 1 deletion test/integration/gpu/itest_slct_manager_with_gpu.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def sample_slc(secrets_module: Secrets) -> ScriptLanguageContainer:

@pytest.fixture
def custom_packages() -> list[tuple[str, str]]:
return [("numba[cuda]", "0.61.2")]
return [("numba", "0.61.2")]


@pytest.mark.dependency(name="append_custom_packages")
Expand Down
33 changes: 26 additions & 7 deletions test/integration/ordinary/itest_slc.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,31 @@ def custom_packages() -> list[tuple[str, str, str]]:
return [("xgboost", "2.0.3", "xgboost"), ("scikit-learn", "1.5.0", "sklearn")]


@pytest.mark.dependency(name="export_slc")
def _check_exported_slc_exists(expected_suffix: str, expected_path: Path) -> None:
tar = [f for f in expected_path.glob(f"*.{expected_suffix}")]
assert len(tar) == 1
assert tar[0].is_file()
tar_sum = [f for f in expected_path.glob(f"*.{expected_suffix}.sha512sum")]
assert len(tar_sum) == 1
assert tar_sum[0].is_file()


@pytest.mark.dependency(name="export_slc_no_copy")
def test_export_slc_no_copy(
sample_slc: ScriptLanguageContainer, compression_strategy: CompressionStrategy
):
sample_slc.export_no_copy()
export_path = sample_slc.workspace.export_path
expected_suffix = (
"tar" if compression_strategy == CompressionStrategy.NONE else "tar.gz"
)
assert not export_path.exists()

internal_export_path = sample_slc.workspace.output_path / "cache" / "exports"
_check_exported_slc_exists(expected_suffix, internal_export_path)


@pytest.mark.dependency(name="export_slc", depends=["export_slc_no_copy"])
def test_export_slc(
sample_slc: ScriptLanguageContainer, compression_strategy: CompressionStrategy
):
Expand All @@ -105,12 +129,7 @@ def test_export_slc(
"tar" if compression_strategy == CompressionStrategy.NONE else "tar.gz"
)
assert export_path.exists()
tar = [f for f in export_path.glob(f"*.{expected_suffix}")]
assert len(tar) == 1
assert tar[0].is_file()
tar_sum = [f for f in export_path.glob(f"*.{expected_suffix}.sha512sum")]
assert len(tar_sum) == 1
assert tar_sum[0].is_file()
_check_exported_slc_exists(expected_suffix, export_path)


def slc_docker_tag_prefix(slc: ScriptLanguageContainer) -> str:
Expand Down
6 changes: 3 additions & 3 deletions test/unit/test_itde_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def test_bring_itde_up(mock_spawn_env, secrets, env_info, db_image_version):
docker_db_image_version=db_image_version,
docker_runtime=None,
docker_environment_variable=(),
additional_db_parameter=("-etlCheckCertsDefault=1",),
additional_db_parameter=("-etlCheckCertsDefault=0",),
log_level=logging.getLevelName(logging.INFO),
)
]
Expand All @@ -98,13 +98,13 @@ def test_bring_itde_up(mock_spawn_env, secrets, env_info, db_image_version):
@pytest.mark.parametrize(
"accelerator, expected_docker_runtime, expected_docker_environment_variable, expected_additional_db_parameter",
[
(Accelerator.none.value, None, (), ("-etlCheckCertsDefault=1",)),
(Accelerator.none.value, None, (), ("-etlCheckCertsDefault=0",)),
(
Accelerator.nvidia.value,
"nvidia",
("NVIDIA_VISIBLE_DEVICES=all",),
(
"-etlCheckCertsDefault=1",
"-etlCheckCertsDefault=0",
"-enableAcceleratorDeviceDetection=1",
),
),
Expand Down
2 changes: 1 addition & 1 deletion version.py

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