Skip to content

Commit 0afea4a

Browse files
authored
fix: override configure method in ManifestDeclarativeSource to set transformed config in entrypoint (#611)
1 parent bfa4fb7 commit 0afea4a

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

airbyte_cdk/sources/declarative/manifest_declarative_source.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,10 @@ def _migrate_and_transform_config(
238238
self._spec_component.transform_config(mutable_config)
239239
return mutable_config
240240

241+
def configure(self, config: Mapping[str, Any], temp_dir: str) -> Mapping[str, Any]:
242+
config = self._config or config
243+
return super().configure(config, temp_dir)
244+
241245
def _migrate_manifest(self) -> None:
242246
"""
243247
This method is used to migrate the manifest. It should be called after the manifest has been validated.

unit_tests/sources/declarative/test_manifest_declarative_source.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2594,7 +2594,7 @@ def test_given_already_migrated_config_no_control_message_is_emitted(migration_m
25942594

25952595

25962596
def test_given_transformations_config_is_transformed():
2597-
input_config = {"planet": "Coruscant"}
2597+
input_config = {"planet": "CRSC"}
25982598

25992599
manifest = {
26002600
"version": "0.34.2",
@@ -2629,11 +2629,26 @@ def test_given_transformations_config_is_transformed():
26292629
"connection_specification": {},
26302630
"config_normalization_rules": {
26312631
"transformations": [
2632+
{
2633+
"type": "ConfigAddFields",
2634+
"fields": [
2635+
{
2636+
"type": "AddedFieldDefinition",
2637+
"path": ["population"],
2638+
"value": "{{ config['planet'] }}",
2639+
}
2640+
],
2641+
},
26322642
{
26332643
"type": "ConfigRemapField",
26342644
"map": {"CRSC": "Coruscant"},
26352645
"field_path": ["planet"],
2636-
}
2646+
},
2647+
{
2648+
"type": "ConfigRemapField",
2649+
"map": {"CRSC": 3_000_000_000_000},
2650+
"field_path": ["population"],
2651+
},
26372652
],
26382653
},
26392654
},
@@ -2644,7 +2659,12 @@ def test_given_transformations_config_is_transformed():
26442659
config=input_config,
26452660
)
26462661

2647-
assert source._config == {"planet": "Coruscant"}
2662+
source.write_config = Mock(return_value=None)
2663+
2664+
config = source.configure(input_config, "/fake/temp/dir")
2665+
2666+
assert config != input_config
2667+
assert config == {"planet": "Coruscant", "population": 3_000_000_000_000}
26482668

26492669

26502670
def test_given_valid_config_streams_validates_config_and_does_not_raise():

0 commit comments

Comments
 (0)