Skip to content

Commit e2e6081

Browse files
committed
ensure liimits are set
1 parent 1280582 commit e2e6081

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

airbyte_cdk/manifest_runner/command_processor/utils.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Mapping
1+
from typing import Any, Mapping, Optional
22

33
from airbyte_cdk.models import (
44
AirbyteStream,
@@ -55,7 +55,10 @@ def should_normalize_manifest(manifest: Mapping[str, Any]) -> bool:
5555

5656

5757
def build_source(
58-
manifest: Mapping[str, Any], config: Mapping[str, Any]
58+
manifest: Mapping[str, Any],
59+
config: Mapping[str, Any],
60+
page_limit: Optional[int] = None,
61+
slice_limit: Optional[int] = None,
5962
) -> ManifestDeclarativeSource:
6063
return ManifestDeclarativeSource(
6164
source_config=manifest,
@@ -65,8 +68,8 @@ def build_source(
6568
emit_connector_builder_messages=True,
6669
component_factory=ModelToComponentFactory(
6770
emit_connector_builder_messages=True,
68-
limit_pages_fetched_per_slice=None, # TODO
69-
limit_slices_fetched=None, # TODO
71+
limit_pages_fetched_per_slice=page_limit,
72+
limit_slices_fetched=slice_limit,
7073
disable_retries=True,
7174
disable_cache=True,
7275
),

airbyte_cdk/manifest_runner/routers/manifest.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import hashlib
22
from dataclasses import asdict
3-
from typing import Any, Dict, List, Mapping
3+
from typing import Any, Dict, List, Mapping, Optional
44

55
import jsonschema
66
from fastapi import APIRouter, Depends, HTTPException
@@ -32,11 +32,14 @@
3232

3333

3434
def safe_build_source(
35-
manifest_dict: Mapping[str, Any], config_dict: Mapping[str, Any]
35+
manifest_dict: Mapping[str, Any],
36+
config_dict: Mapping[str, Any],
37+
page_limit: Optional[int] = None,
38+
slice_limit: Optional[int] = None,
3639
) -> ManifestDeclarativeSource:
3740
"""Wrapper around build_source that converts ValidationError to HTTPException."""
3841
try:
39-
return build_source(manifest_dict, config_dict)
42+
return build_source(manifest_dict, config_dict, page_limit, slice_limit)
4043
except jsonschema.exceptions.ValidationError as e:
4144
raise HTTPException(status_code=400, detail=f"Invalid manifest: {e.message}")
4245

@@ -55,7 +58,9 @@ def test_read(request: StreamTestReadRequest) -> StreamRead:
5558
"""
5659
config_dict = request.config.model_dump()
5760

58-
source = safe_build_source(request.manifest.model_dump(), config_dict)
61+
source = safe_build_source(
62+
request.manifest.model_dump(), config_dict, request.page_limit, request.slice_limit
63+
)
5964
catalog = build_catalog(request.stream_name)
6065
state = [AirbyteStateMessageSerializer.load(state) for state in request.state]
6166

0 commit comments

Comments
 (0)