airbytehq / airbytehq/PyAirbyte
DeclarativeExecutor passing down empty configs
- 主要语言
- Python
- 星标
- 344
- 派生
- 77
- 平均合并
- 1 天 11 小时
- 30 天内合并 PR
- 35
描述
## Steps to reproduce
```
import airbyte as ab
source = ab.get_source(
"example-test",
config={"hello": "world"},
source_manifest=Path(os.getcwd()) / "mymanifest.yaml",
streams="*"
)
source.check()
```
### Effects
The YAML is built with {{ config['hello'] }} as an empty string.
## Root cause
https://github.com/airbytehq/PyAirbyte/blob/7eb746bda4a5e72b4643b6af7692d6a736080e60/airbyte/_executors/declarative.py#L125
`self.declarative_source` is accessing `self._config_dict` that is always empty, apart from `components_py`. Since the arg parsing is performed later in the `execute()` before calling the `source_entrypoint.run(args)`
```
def declarative_source(self) -> ConcurrentDeclarativeSource:
"""Get the declarative source object.
Notes:
1. Since Sep 2025, the declarative source class used is `ConcurrentDeclarativeSource`.
2. The `ConcurrentDeclarativeSource` object sometimes doesn't want to be read from twice,
likely due to threads being already shut down after a successful read.
3. Rather than cache the source object, we recreate it each time we need it, to
avoid any issues with re-using the same object.
"""
return ConcurrentDeclarativeSource(
config=self._config_dict,
source_config=self._manifest_dict,
)
```
## Proposed fix
Promote config_dict in the initialization params of DeclarativeExecutor and use it instead of initializing it as an empty dict.
贡献指南
评估
这个 Issue 还没有评估数据。