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
23 changes: 0 additions & 23 deletions .github/workflows/check_version.yaml

This file was deleted.

1 change: 1 addition & 0 deletions doc/changes/changelog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Changes

* [unreleased](unreleased.md)
* [2.0.0](changes_2.0.0)
* [1.1.0](changes_1.1.0.md)
* [1.0.0](changes_1.0.0.md)
* [0.21.0](changes_0.21.0.md)
Expand Down
11 changes: 11 additions & 0 deletions doc/changes/changes_2.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 2.0.0 - 2025-02-04

Code name: Fixed Language Definition Model

## Summary

This release has a small fix for the Language Definition Model and increases it's schema version to 2.

## Refactorings

- #266: Fix SLCParameter and LanguageDefinition
5 changes: 3 additions & 2 deletions exasol/slc/internal/tasks/upload/language_def_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def _parse_builtin_language_definition(url: str) -> BuiltInLanguageDefinitionURL


def _build_udf_client_abs_path_from_fragments(
fragment_parts: Tuple[str, ...]
fragment_parts: Tuple[str, ...],
) -> UdfClientBucketPath:
if len(fragment_parts) < 4:
raise ValueError(
Expand Down Expand Up @@ -101,8 +101,9 @@ def parse_language_definition(
if parsed_url.hostname:
raise ValueError(f"Invalid language definition: '{lang_def}'")
slc_parameters = [
SLCParameter(key=key, value=value)
SLCParameter(key=key, value=v)
for key, value in parse_qs(parsed_url.query).items()
for v in value
Comment on lines +104 to +106
Copy link
Collaborator Author

@tomuben tomuben Feb 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parse_qs returns a diction of type Dict[str: List[str]].

]
try:
udf_client_path = _parse_udf_client_path(parsed_url.fragment)
Expand Down
3 changes: 1 addition & 2 deletions exasol/slc/models/language_definition_common.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import datetime
from enum import Enum
from pathlib import PurePosixPath
from typing import List

from pydantic import BaseModel

Expand All @@ -18,7 +17,7 @@ class SLCParameter(BaseModel):
"""

key: str
value: List[str]
value: str


class UdfClientRelativePath(BaseModel):
Expand Down
2 changes: 1 addition & 1 deletion exasol/slc/models/language_definition_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class LanguageDefinitionURL:
udf_client_path: Union[UdfClientBucketPath, UdfClientRelativePath]

def __str__(self) -> str:
query_params = {p.key: v for p in self.parameters for v in p.value}
query_params = [(p.key, p.value) for p in self.parameters]
query_string = urlencode(query_params)
url = urlunparse(
ParseResult(
Expand Down
3 changes: 1 addition & 2 deletions exasol/slc/models/language_definition_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
UdfClientRelativePath,
)

LANGUAGE_DEFINITON_SCHEMA_VERSION = 1
LANGUAGE_DEFINITON_SCHEMA_VERSION = 2


class LanguageDefinition(BaseModel):
Expand All @@ -20,7 +20,6 @@ class LanguageDefinition(BaseModel):

protocol: str
aliases: List[str]
language: SLCLanguage
parameters: List[SLCParameter]
udf_client_path: UdfClientRelativePath
deprecation: Optional[DeprecationInfo]
Expand Down
4 changes: 2 additions & 2 deletions exasol/slc/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# * or "poetry run version-check <path/version.py> --fix"
# Do not edit this file manually!
# If you need to change the version, do so in the project.toml, e.g. by using `poetry version X.Y.Z`.
MAJOR = 1
MINOR = 1
MAJOR = 2
MINOR = 0
PATCH = 0
VERSION = f"{MAJOR}.{MINOR}.{PATCH}"
__version__ = VERSION
89 changes: 45 additions & 44 deletions poetry.lock

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

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "exasol-script-languages-container-tool"
version = "1.1.0"
version = "2.0.0"
description = "Script Languages Container Tool"

license = "MIT"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
{
"schema_version": 1,
"schema_version": 2,
"language_definitions": [
{
"protocol": "localzmq+protobuf",
"aliases": ["JAVA"],
"language": "java",
"parameters": [],
"parameters": [{"key": "lang", "value": "java"}],
"udf_client_path": {
"executable": "/exaudf/exaudfclient"
},
Expand Down
11 changes: 5 additions & 6 deletions test/test_docker_api_language_def_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from exasol.slc.models.language_definition_common import (
DeprecationInfo,
SLCLanguage,
SLCParameter,
UdfClientRelativePath,
)
from exasol.slc.models.language_definition_model import (
Expand Down Expand Up @@ -128,16 +129,15 @@ def test_docker_build(self) -> None:
self.assertEqual(
model,
LanguageDefinitionsModel(
schema_version=1,
schema_version=2,
language_definitions=[
LanguageDefinition(
protocol="localzmq+protobuf",
aliases=["JAVA"],
language=SLCLanguage.Java,
parameters=[SLCParameter(key="lang", value="java")],
udf_client_path=UdfClientRelativePath(
executable=PurePosixPath("/exaudf/exaudfclient")
),
parameters=[],
deprecation=DeprecationInfo(
deprecation_date=datetime.datetime(2024, 10, 31),
default_changed_to="Java 17",
Expand Down Expand Up @@ -223,16 +223,15 @@ def test_docker_build_without_deprecation_info(self):
self.assertEqual(
model,
LanguageDefinitionsModel(
schema_version=1,
schema_version=2,
language_definitions=[
LanguageDefinition(
protocol="localzmq+protobuf",
aliases=["JAVA"],
language=SLCLanguage.Java,
parameters=[SLCParameter(key="lang", value="java")],
udf_client_path=UdfClientRelativePath(
executable=PurePosixPath("/exaudf/exaudfclient")
),
parameters=[],
deprecation=None,
)
],
Expand Down
6 changes: 3 additions & 3 deletions test/test_lang_definitions_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def test_without_custom_alias_without_builtin(self):
"some_path/my_release/exaudf/exaudfclient_py3"
),
),
parameters=[SLCParameter(key="lang", value=["python"])],
parameters=[SLCParameter(key="lang", value="python")],
),
)
],
Expand Down Expand Up @@ -98,7 +98,7 @@ def test_without_custom_alias_with_builtin(self):
"some_path/my_release/exaudf/exaudfclient_py3"
),
),
parameters=[SLCParameter(key="lang", value=["python"])],
parameters=[SLCParameter(key="lang", value="python")],
),
),
LanguageDefinitionComponents(
Expand Down Expand Up @@ -154,7 +154,7 @@ def test_with_custom_alias_with_builtin(self):
"some_path/my_release/exaudf/exaudfclient_py3"
),
),
parameters=[SLCParameter(key="lang", value=["python"])],
parameters=[SLCParameter(key="lang", value="python")],
),
),
LanguageDefinitionComponents(
Expand Down
Loading
Loading