Skip to content

Commit a9c1eb8

Browse files
removed custom option in KeyTransformation
1 parent b94c05a commit a9c1eb8

File tree

5 files changed

+17
-80
lines changed

5 files changed

+17
-80
lines changed

airbyte_cdk/sources/declarative/declarative_component_schema.yaml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2328,12 +2328,6 @@ definitions:
23282328
type: string
23292329
examples:
23302330
- _flattened
2331-
custom:
2332-
title: Custom Transformation for keys
2333-
description: Custom transformation. Can be used with {{ key }} as a original value for key name. If not provided original keys remain unchanged.
2334-
type: string
2335-
examples:
2336-
- flattened_{{ key }}
23372331
DpathFlattenFields:
23382332
title: Dpath Flatten Fields
23392333
description: A transformation that flatten field values to the to top of the record.

airbyte_cdk/sources/declarative/models/declarative_component_schema.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -896,14 +896,6 @@ class KeyTransformation(BaseModel):
896896
],
897897
title="Key Suffix",
898898
)
899-
custom: Optional[Union[str, None]] = Field(
900-
None,
901-
description="Custom transformation. Can be used with {{ key }} as a original value for key name. If not provided original keys remain unchanged.",
902-
examples=[
903-
"flattened_{{ key }}",
904-
],
905-
title="Custom Transformation for keys",
906-
)
907899

908900

909901
class DpathFlattenFields(BaseModel):

airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ def create_dpath_flatten_fields(
795795
KeyTransformation(
796796
prefix=model.key_transformation.prefix,
797797
suffix=model.key_transformation.suffix,
798-
custom=model.key_transformation.custom,
798+
parameters=model.parameters or {},
799799
)
800800
if model.key_transformation is not None
801801
else None

airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
99

1010

11-
@dataclass(frozen=True)
11+
@dataclass
1212
class KeyTransformation:
13+
parameters: InitVar[Mapping[str, Any]]
1314
prefix: Union[InterpolatedString, str, None] = None
1415
suffix: Union[InterpolatedString, str, None] = None
15-
custom: Union[InterpolatedString, str, None] = None
16+
17+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
18+
self.prefix = InterpolatedString.create(self.prefix, parameters=parameters)
19+
self.suffix = InterpolatedString.create(self.suffix, parameters=parameters)
1620

1721

1822
@dataclass
@@ -32,7 +36,7 @@ class DpathFlattenFields(RecordTransformation):
3236
parameters: InitVar[Mapping[str, Any]]
3337
delete_origin_value: bool = False
3438
replace_record: bool = False
35-
key_transformation: Union[KeyTransformation, None] = None
39+
key_transformation: Optional[KeyTransformation] = None
3640

3741
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
3842
self._parameters = parameters
@@ -48,25 +52,13 @@ def __post_init__(self, parameters: Mapping[str, Any]) -> None:
4852
def _apply_key_transformation(self, extracted: Mapping[str, Any]) -> Mapping[str, Any]:
4953
if self.key_transformation:
5054
if self.key_transformation.prefix:
51-
prefix = InterpolatedString.create(
52-
self.key_transformation.prefix, parameters=self._parameters
53-
).eval(config=self.config)
54-
extracted = {f"{prefix}{key}": value for key, value in extracted.items()}
55+
if prefix := self.key_transformation.prefix.eval(config=self.config):
56+
extracted = {f"{prefix}{key}": value for key, value in extracted.items()}
5557

5658
if self.key_transformation.suffix:
57-
suffix = InterpolatedString.create(
58-
self.key_transformation.suffix, parameters=self._parameters
59-
).eval(config=self.config)
60-
extracted = {f"{key}{suffix}": value for key, value in extracted.items()}
61-
62-
if self.key_transformation.custom:
63-
updated_extracted = {}
64-
for key, value in extracted.items():
65-
updated_key = InterpolatedString.create(
66-
self.key_transformation.custom, parameters=self._parameters
67-
).eval(key=key, config=self.config)
68-
updated_extracted[updated_key] = value
69-
extracted = updated_extracted
59+
if suffix := self.key_transformation.suffix.eval(config=self.config):
60+
extracted = {f"{key}{suffix}": value for key, value in extracted.items()}
61+
7062
return extracted
7163

7264
def transform(

unit_tests/sources/declarative/transformations/test_dpath_flatten_fields.py

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
_DO_NOT_REPLACE_WITH_VALUE = False
1313
_NO_KEY_PREFIX = None
1414
_NO_KEY_SUFFIX = None
15-
_NO_CUSTOM_TRANSFORMATION = None
1615
_NO_KEY_TRANSFORMATIONS = None
1716

1817

@@ -147,43 +146,13 @@
147146
{"field3": _ANY_VALUE},
148147
id="flatten by dpath, delete_origin_value do not affect to replace_record",
149148
),
150-
pytest.param(
151-
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
152-
{},
153-
["field2"],
154-
_DO_NOT_DELETE_ORIGIN_VALUE,
155-
_DO_NOT_REPLACE_WITH_VALUE,
156-
(_NO_KEY_PREFIX, _NO_KEY_SUFFIX, "field2_{{ key }}"),
157-
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}, "field2_field3": _ANY_VALUE},
158-
id="flatten by dpath, not delete origin value, add keys custom transformation",
159-
),
160-
pytest.param(
161-
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
162-
{},
163-
["field2"],
164-
_DELETE_ORIGIN_VALUE,
165-
_DO_NOT_REPLACE_WITH_VALUE,
166-
(_NO_KEY_PREFIX, _NO_KEY_SUFFIX, "field2_{{ key }}"),
167-
{"field1": _ANY_VALUE, "field2_field3": _ANY_VALUE},
168-
id="flatten by dpath, delete origin value, add keys custom transformation",
169-
),
170149
pytest.param(
171150
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
172151
{},
173152
["field2"],
174153
_DO_NOT_DELETE_ORIGIN_VALUE,
175154
_REPLACE_WITH_VALUE,
176-
(_NO_KEY_PREFIX, _NO_KEY_SUFFIX, "field2_{{ key }}"),
177-
{"field2_field3": _ANY_VALUE},
178-
id="flatten by dpath, not delete origin value, replace record, add keys custom transformation",
179-
),
180-
pytest.param(
181-
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
182-
{},
183-
["field2"],
184-
_DO_NOT_DELETE_ORIGIN_VALUE,
185-
_REPLACE_WITH_VALUE,
186-
("prefix_", _NO_KEY_SUFFIX, _NO_CUSTOM_TRANSFORMATION),
155+
("prefix_", _NO_KEY_SUFFIX),
187156
{"prefix_field3": _ANY_VALUE},
188157
id="flatten by dpath, not delete origin value, replace record, add keys prefix",
189158
),
@@ -193,7 +162,7 @@
193162
["field2"],
194163
_DO_NOT_DELETE_ORIGIN_VALUE,
195164
_REPLACE_WITH_VALUE,
196-
(_NO_KEY_PREFIX, "_suffix", _NO_CUSTOM_TRANSFORMATION),
165+
(_NO_KEY_PREFIX, "_suffix"),
197166
{"field3_suffix": _ANY_VALUE},
198167
id="flatten by dpath, not delete origin value, replace record, add keys suffix",
199168
),
@@ -203,20 +172,10 @@
203172
["field2"],
204173
_DO_NOT_DELETE_ORIGIN_VALUE,
205174
_REPLACE_WITH_VALUE,
206-
("prefix_", "_suffix", _NO_CUSTOM_TRANSFORMATION),
175+
("prefix_", "_suffix"),
207176
{"prefix_field3_suffix": _ANY_VALUE},
208177
id="flatten by dpath, not delete origin value, replace record, add keys prefix and suffix",
209178
),
210-
pytest.param(
211-
{"field1": _ANY_VALUE, "field2": {"field3": _ANY_VALUE}},
212-
{},
213-
["field2"],
214-
_DO_NOT_DELETE_ORIGIN_VALUE,
215-
_REPLACE_WITH_VALUE,
216-
("prefix_", "_suffix", "{{ key|upper }}"),
217-
{"PREFIX_FIELD3_SUFFIX": _ANY_VALUE},
218-
id="flatten by dpath, not delete origin value, replace record, add keys prefix and suffix with custom to upper case",
219-
),
220179
],
221180
)
222181
def test_dpath_flatten_lists(
@@ -229,7 +188,7 @@ def test_dpath_flatten_lists(
229188
expected_record,
230189
):
231190
if key_transformation:
232-
key_transformation = KeyTransformation(*key_transformation)
191+
key_transformation = KeyTransformation({}, *key_transformation)
233192

234193
flattener = DpathFlattenFields(
235194
field_path=field_path,

0 commit comments

Comments
 (0)