@@ -2391,8 +2391,8 @@ def test_valid_manifest(self):
23912391
23922392 streams = source .streams ({})
23932393 assert len (streams ) == 2
2394- assert isinstance (streams [0 ], DeclarativeStream )
2395- assert isinstance (streams [1 ], DeclarativeStream )
2394+ assert isinstance (streams [0 ], DefaultStream )
2395+ assert isinstance (streams [1 ], DefaultStream )
23962396 assert (
23972397 source .resolved_manifest ["description" ]
23982398 == "This is a sample source connector that is very valid."
@@ -2992,140 +2992,6 @@ def test_source_with_no_external_spec_and_no_in_yaml_spec_fails(self):
29922992 with pytest .raises (FileNotFoundError ):
29932993 source .spec (logger )
29942994
2995- @patch ("airbyte_cdk.sources.concurrent_source.concurrent_source.ConcurrentSource.read" )
2996- def test_given_debug_when_read_then_set_log_level (self , declarative_source_read ):
2997- any_valid_manifest = {
2998- "version" : "0.29.3" ,
2999- "definitions" : {
3000- "schema_loader" : {
3001- "type" : "InlineSchemaLoader" ,
3002- "schema" : {
3003- "type" : "object" ,
3004- "properties" : {"id" : {"type" : "string" }},
3005- },
3006- },
3007- "retriever" : {
3008- "paginator" : {
3009- "type" : "DefaultPaginator" ,
3010- "page_size" : 10 ,
3011- "page_size_option" : {
3012- "type" : "RequestOption" ,
3013- "inject_into" : "request_parameter" ,
3014- "field_name" : "page_size" ,
3015- },
3016- "page_token_option" : {"type" : "RequestPath" },
3017- "pagination_strategy" : {
3018- "type" : "CursorPagination" ,
3019- "cursor_value" : "{{ response._metadata.next }}" ,
3020- },
3021- },
3022- "requester" : {
3023- "path" : "/v3/marketing/lists" ,
3024- "authenticator" : {
3025- "type" : "BearerAuthenticator" ,
3026- "api_token" : "{{ config.apikey }}" ,
3027- },
3028- "request_parameters" : {"page_size" : "10" },
3029- },
3030- "record_selector" : {"extractor" : {"field_path" : ["result" ]}},
3031- },
3032- },
3033- "streams" : [
3034- {
3035- "type" : "DeclarativeStream" ,
3036- "$parameters" : {
3037- "name" : "lists" ,
3038- "primary_key" : "id" ,
3039- "url_base" : "https://api.sendgrid.com" ,
3040- },
3041- "schema_loader" : {
3042- "type" : "InlineSchemaLoader" ,
3043- "schema" : {
3044- "type" : "object" ,
3045- "properties" : {"id" : {"type" : "string" }},
3046- },
3047- },
3048- "retriever" : {
3049- "paginator" : {
3050- "type" : "DefaultPaginator" ,
3051- "page_size" : 10 ,
3052- "page_size_option" : {
3053- "type" : "RequestOption" ,
3054- "inject_into" : "request_parameter" ,
3055- "field_name" : "page_size" ,
3056- },
3057- "page_token_option" : {"type" : "RequestPath" },
3058- "pagination_strategy" : {
3059- "type" : "CursorPagination" ,
3060- "cursor_value" : "{{ response._metadata.next }}" ,
3061- "page_size" : 10 ,
3062- },
3063- },
3064- "requester" : {
3065- "path" : "/v3/marketing/lists" ,
3066- "authenticator" : {
3067- "type" : "BearerAuthenticator" ,
3068- "api_token" : "{{ config.apikey }}" ,
3069- },
3070- "request_parameters" : {"page_size" : "{{ 10 }}" },
3071- },
3072- "record_selector" : {"extractor" : {"field_path" : ["result" ]}},
3073- },
3074- },
3075- {
3076- "type" : "DeclarativeStream" ,
3077- "$parameters" : {
3078- "name" : "stream_with_custom_requester" ,
3079- "primary_key" : "id" ,
3080- "url_base" : "https://api.sendgrid.com" ,
3081- },
3082- "schema_loader" : {
3083- "type" : "InlineSchemaLoader" ,
3084- "schema" : {
3085- "type" : "object" ,
3086- "properties" : {"id" : {"type" : "string" }},
3087- },
3088- },
3089- "retriever" : {
3090- "paginator" : {
3091- "type" : "DefaultPaginator" ,
3092- "page_size" : 10 ,
3093- "page_size_option" : {
3094- "type" : "RequestOption" ,
3095- "inject_into" : "request_parameter" ,
3096- "field_name" : "page_size" ,
3097- },
3098- "page_token_option" : {"type" : "RequestPath" },
3099- "pagination_strategy" : {
3100- "type" : "CursorPagination" ,
3101- "cursor_value" : "{{ response._metadata.next }}" ,
3102- "page_size" : 10 ,
3103- },
3104- },
3105- "requester" : {
3106- "type" : "CustomRequester" ,
3107- "class_name" : "unit_tests.sources.declarative.external_component.SampleCustomComponent" ,
3108- "path" : "/v3/marketing/lists" ,
3109- "custom_request_parameters" : {"page_size" : 10 },
3110- },
3111- "record_selector" : {"extractor" : {"field_path" : ["result" ]}},
3112- },
3113- },
3114- ],
3115- "check" : {"type" : "CheckStream" , "stream_names" : ["lists" ]},
3116- }
3117-
3118- catalog = create_catalog ("lists" )
3119-
3120- source = ConcurrentDeclarativeSource (
3121- source_config = any_valid_manifest , config = {}, catalog = catalog , state = None , debug = True
3122- )
3123-
3124- debug_logger = logging .getLogger ("logger.debug" )
3125- list (source .read (debug_logger , {}, catalog , None ))
3126-
3127- assert debug_logger .isEnabledFor (logging .DEBUG )
3128-
31292995 @pytest .mark .parametrize (
31302996 "is_sandbox, expected_stream_count" ,
31312997 [
@@ -3280,13 +3146,13 @@ def test_conditional_streams_manifest(self, is_sandbox, expected_stream_count):
32803146
32813147 actual_streams = source .streams (config = config )
32823148 assert len (actual_streams ) == expected_stream_count
3283- assert isinstance (actual_streams [0 ], DeclarativeStream )
3149+ assert isinstance (actual_streams [0 ], DefaultStream )
32843150 assert actual_streams [0 ].name == "students"
32853151
32863152 if is_sandbox :
3287- assert isinstance (actual_streams [1 ], DeclarativeStream )
3153+ assert isinstance (actual_streams [1 ], DefaultStream )
32883154 assert actual_streams [1 ].name == "classrooms"
3289- assert isinstance (actual_streams [2 ], DeclarativeStream )
3155+ assert isinstance (actual_streams [2 ], DefaultStream )
32903156 assert actual_streams [2 ].name == "clubs"
32913157
32923158 assert (
@@ -4161,24 +4027,37 @@ def test_only_parent_streams_use_cache():
41614027 assert len (streams ) == 3
41624028
41634029 # Main stream with caching (parent for substream `applications_interviews`)
4164- assert streams [0 ].name == "applications"
4165- assert streams [0 ].retriever .requester .use_cache
4030+ stream_0 = streams [0 ]
4031+ assert stream_0 .name == "applications"
4032+ assert isinstance (stream_0 , DefaultStream )
4033+ assert stream_0 ._stream_partition_generator ._partition_factory ._retriever .requester .use_cache
41664034
41674035 # Substream
4168- assert streams [1 ].name == "applications_interviews"
4169- assert not streams [1 ].retriever .requester .use_cache
4036+ stream_1 = streams [1 ]
4037+ assert stream_1 .name == "applications_interviews"
4038+ assert isinstance (stream_1 , DefaultStream )
4039+ assert (
4040+ not stream_1 ._stream_partition_generator ._partition_factory ._retriever .requester .use_cache
4041+ )
41704042
41714043 # Parent stream created for substream
4172- assert streams [1 ].retriever .stream_slicer .parent_stream_configs [0 ].stream .name == "applications"
41734044 assert (
4174- streams [1 ]
4175- .retriever .stream_slicer .parent_stream_configs [0 ]
4176- .stream .retriever .requester .use_cache
4045+ stream_1 ._stream_partition_generator ._partition_factory ._retriever .stream_slicer .parent_stream_configs [
4046+ 0
4047+ ].stream .name
4048+ == "applications"
41774049 )
4050+ assert stream_1 ._stream_partition_generator ._partition_factory ._retriever .stream_slicer .parent_stream_configs [
4051+ 0
4052+ ].stream .retriever .requester .use_cache
41784053
41794054 # Main stream without caching
4180- assert streams [2 ].name == "jobs"
4181- assert not streams [2 ].retriever .requester .use_cache
4055+ stream_2 = streams [2 ]
4056+ assert stream_2 .name == "jobs"
4057+ assert isinstance (stream_2 , DefaultStream )
4058+ assert (
4059+ not stream_2 ._stream_partition_generator ._partition_factory ._retriever .requester .use_cache
4060+ )
41824061
41834062
41844063def _run_read (manifest : Mapping [str , Any ], stream_name : str ) -> List [AirbyteMessage ]:
0 commit comments