Skip to content

Commit eaf016a

Browse files
devin-ai-integration[bot]bot_apk
andcommitted
fix: scope None guard to only optional status fields (skipped)
The generic None check could silently skip a required field that was accidentally None. Now only fields in _OPTIONAL_ASYNC_STATUS_FIELDS (currently just 'skipped') are allowed to be None. Required fields (running, completed, failed, timeout) raise ValueError if None. Co-Authored-By: bot_apk <apk@cognition.ai>
1 parent e747af9 commit eaf016a

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3680,6 +3680,8 @@ def _get_state_delegating_stream_model(
36803680
else model.full_refresh_stream
36813681
)
36823682

3683+
_OPTIONAL_ASYNC_STATUS_FIELDS = {"skipped"}
3684+
36833685
def _create_async_job_status_mapping(
36843686
self, model: AsyncJobStatusMapModel, config: Config, **kwargs: Any
36853687
) -> Mapping[str, AsyncJobStatus]:
@@ -3690,8 +3692,12 @@ def _create_async_job_status_mapping(
36903692
continue
36913693

36923694
if api_statuses is None:
3693-
# Optional fields like 'skipped' may be None when not provided
3694-
continue
3695+
if cdk_status in self._OPTIONAL_ASYNC_STATUS_FIELDS:
3696+
continue
3697+
raise ValueError(
3698+
f"Required CDK status '{cdk_status}' has no API statuses mapped. "
3699+
f"Please provide at least an empty list for required status fields."
3700+
)
36953701

36963702
for status in api_statuses:
36973703
if status in api_status_to_cdk_status:

0 commit comments

Comments
 (0)