airbytehq / airbytehq/PyAirbyte

DeclarativeExecutor passing down empty configs

Đang mở
#868 1 bình luận 2 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
344
Fork
77
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
35

Mô tả

## 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.