airbyte-cdk 6.25.2__py3-none-any.whl → 6.26.0.dev0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +14 -0
- airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +18 -35
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +7 -1
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +25 -4
- airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +2 -6
- airbyte_cdk/sources/declarative/schema/__init__.py +2 -0
- airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +49 -4
- {airbyte_cdk-6.25.2.dist-info → airbyte_cdk-6.26.0.dev0.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.25.2.dist-info → airbyte_cdk-6.26.0.dev0.dist-info}/RECORD +12 -12
- {airbyte_cdk-6.25.2.dist-info → airbyte_cdk-6.26.0.dev0.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.25.2.dist-info → airbyte_cdk-6.26.0.dev0.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.25.2.dist-info → airbyte_cdk-6.26.0.dev0.dist-info}/entry_points.txt +0 -0
@@ -1800,6 +1800,19 @@ definitions:
|
|
1800
1800
|
$parameters:
|
1801
1801
|
type: object
|
1802
1802
|
additionalProperties: true
|
1803
|
+
ComplexFieldType:
|
1804
|
+
title: Schema Field Type
|
1805
|
+
description: (This component is experimental. Use at your own risk.) Represents a complex field type.
|
1806
|
+
type: object
|
1807
|
+
required:
|
1808
|
+
- field_type
|
1809
|
+
properties:
|
1810
|
+
field_type:
|
1811
|
+
type: string
|
1812
|
+
items:
|
1813
|
+
anyOf:
|
1814
|
+
- type: string
|
1815
|
+
- "$ref": "#/definitions/ComplexFieldType"
|
1803
1816
|
TypesMap:
|
1804
1817
|
title: Types Map
|
1805
1818
|
description: (This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
|
@@ -1814,6 +1827,7 @@ definitions:
|
|
1814
1827
|
- type: array
|
1815
1828
|
items:
|
1816
1829
|
type: string
|
1830
|
+
- "$ref": "#/definitions/ComplexFieldType"
|
1817
1831
|
current_type:
|
1818
1832
|
anyOf:
|
1819
1833
|
- type: string
|
@@ -222,8 +222,6 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
222
222
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
223
223
|
) -> Mapping[str, Any]:
|
224
224
|
if stream_slice:
|
225
|
-
if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
|
226
|
-
self._create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
|
227
225
|
return self._partition_router.get_request_params( # type: ignore # this always returns a mapping
|
228
226
|
stream_state=stream_state,
|
229
227
|
stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
|
@@ -246,8 +244,6 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
246
244
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
247
245
|
) -> Mapping[str, Any]:
|
248
246
|
if stream_slice:
|
249
|
-
if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
|
250
|
-
self._create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
|
251
247
|
return self._partition_router.get_request_headers( # type: ignore # this always returns a mapping
|
252
248
|
stream_state=stream_state,
|
253
249
|
stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
|
@@ -270,8 +266,6 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
270
266
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
271
267
|
) -> Union[Mapping[str, Any], str]:
|
272
268
|
if stream_slice:
|
273
|
-
if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
|
274
|
-
self._create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
|
275
269
|
return self._partition_router.get_request_body_data( # type: ignore # this always returns a mapping
|
276
270
|
stream_state=stream_state,
|
277
271
|
stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
|
@@ -294,8 +288,6 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
294
288
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
295
289
|
) -> Mapping[str, Any]:
|
296
290
|
if stream_slice:
|
297
|
-
if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
|
298
|
-
self._create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
|
299
291
|
return self._partition_router.get_request_body_json( # type: ignore # this always returns a mapping
|
300
292
|
stream_state=stream_state,
|
301
293
|
stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
|
@@ -311,6 +303,21 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
311
303
|
raise ValueError("A partition needs to be provided in order to get request body json")
|
312
304
|
|
313
305
|
def should_be_synced(self, record: Record) -> bool:
|
306
|
+
if (
|
307
|
+
record.associated_slice
|
308
|
+
and self._to_partition_key(record.associated_slice.partition)
|
309
|
+
not in self._cursor_per_partition
|
310
|
+
):
|
311
|
+
partition_state = (
|
312
|
+
self._state_to_migrate_from
|
313
|
+
if self._state_to_migrate_from
|
314
|
+
else self._NO_CURSOR_STATE
|
315
|
+
)
|
316
|
+
cursor = self._create_cursor(partition_state)
|
317
|
+
|
318
|
+
self._cursor_per_partition[
|
319
|
+
self._to_partition_key(record.associated_slice.partition)
|
320
|
+
] = cursor
|
314
321
|
return self._get_cursor(record).should_be_synced(
|
315
322
|
self._convert_record_to_cursor_record(record)
|
316
323
|
)
|
@@ -349,32 +356,8 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
349
356
|
)
|
350
357
|
partition_key = self._to_partition_key(record.associated_slice.partition)
|
351
358
|
if partition_key not in self._cursor_per_partition:
|
352
|
-
|
359
|
+
raise ValueError(
|
360
|
+
"Invalid state as stream slices that are emitted should refer to an existing cursor"
|
361
|
+
)
|
353
362
|
cursor = self._cursor_per_partition[partition_key]
|
354
363
|
return cursor
|
355
|
-
|
356
|
-
def _create_cursor_for_partition(self, partition_key: str) -> None:
|
357
|
-
"""
|
358
|
-
Dynamically creates and initializes a cursor for the specified partition.
|
359
|
-
|
360
|
-
This method is required for `ConcurrentPerPartitionCursor`. For concurrent cursors,
|
361
|
-
stream_slices is executed only for the concurrent cursor, so cursors per partition
|
362
|
-
are not created for the declarative cursor. This method ensures that a cursor is available
|
363
|
-
to create requests for the specified partition. The cursor is initialized
|
364
|
-
with the per-partition state if present in the initial state, or with the global state
|
365
|
-
adjusted by the lookback window, or with the state to migrate from.
|
366
|
-
|
367
|
-
Note:
|
368
|
-
This is a temporary workaround and should be removed once the declarative cursor
|
369
|
-
is decoupled from the concurrent cursor implementation.
|
370
|
-
|
371
|
-
Args:
|
372
|
-
partition_key (str): The unique identifier for the partition for which the cursor
|
373
|
-
needs to be created.
|
374
|
-
"""
|
375
|
-
partition_state = (
|
376
|
-
self._state_to_migrate_from if self._state_to_migrate_from else self._NO_CURSOR_STATE
|
377
|
-
)
|
378
|
-
cursor = self._create_cursor(partition_state)
|
379
|
-
|
380
|
-
self._cursor_per_partition[partition_key] = cursor
|
@@ -736,8 +736,13 @@ class HttpResponseFilter(BaseModel):
|
|
736
736
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
737
737
|
|
738
738
|
|
739
|
+
class ComplexFieldType(BaseModel):
|
740
|
+
field_type: str
|
741
|
+
items: Optional[Union[str, ComplexFieldType]] = None
|
742
|
+
|
743
|
+
|
739
744
|
class TypesMap(BaseModel):
|
740
|
-
target_type: Union[str, List[str]]
|
745
|
+
target_type: Union[str, List[str], ComplexFieldType]
|
741
746
|
current_type: Union[str, List[str]]
|
742
747
|
condition: Optional[str] = None
|
743
748
|
|
@@ -2260,6 +2265,7 @@ class DynamicDeclarativeStream(BaseModel):
|
|
2260
2265
|
)
|
2261
2266
|
|
2262
2267
|
|
2268
|
+
ComplexFieldType.update_forward_refs()
|
2263
2269
|
CompositeErrorHandler.update_forward_refs()
|
2264
2270
|
DeclarativeSource1.update_forward_refs()
|
2265
2271
|
DeclarativeSource2.update_forward_refs()
|
@@ -133,6 +133,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
133
133
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
134
134
|
CheckStream as CheckStreamModel,
|
135
135
|
)
|
136
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
137
|
+
ComplexFieldType as ComplexFieldTypeModel,
|
138
|
+
)
|
136
139
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
137
140
|
ComponentMappingDefinition as ComponentMappingDefinitionModel,
|
138
141
|
)
|
@@ -429,6 +432,7 @@ from airbyte_cdk.sources.declarative.retrievers import (
|
|
429
432
|
SimpleRetrieverTestReadDecorator,
|
430
433
|
)
|
431
434
|
from airbyte_cdk.sources.declarative.schema import (
|
435
|
+
ComplexFieldType,
|
432
436
|
DefaultSchemaLoader,
|
433
437
|
DynamicSchemaLoader,
|
434
438
|
InlineSchemaLoader,
|
@@ -572,6 +576,7 @@ class ModelToComponentFactory:
|
|
572
576
|
DynamicSchemaLoaderModel: self.create_dynamic_schema_loader,
|
573
577
|
SchemaTypeIdentifierModel: self.create_schema_type_identifier,
|
574
578
|
TypesMapModel: self.create_types_map,
|
579
|
+
ComplexFieldTypeModel: self.create_complex_field_type,
|
575
580
|
JwtAuthenticatorModel: self.create_jwt_authenticator,
|
576
581
|
LegacyToPerPartitionStateMigrationModel: self.create_legacy_to_per_partition_state_migration,
|
577
582
|
ListPartitionRouterModel: self.create_list_partition_router,
|
@@ -1894,10 +1899,26 @@ class ModelToComponentFactory:
|
|
1894
1899
|
) -> InlineSchemaLoader:
|
1895
1900
|
return InlineSchemaLoader(schema=model.schema_ or {}, parameters={})
|
1896
1901
|
|
1897
|
-
|
1898
|
-
|
1902
|
+
def create_complex_field_type(
|
1903
|
+
self, model: ComplexFieldTypeModel, config: Config, **kwargs: Any
|
1904
|
+
) -> ComplexFieldType:
|
1905
|
+
items = (
|
1906
|
+
self._create_component_from_model(model=model.items, config=config)
|
1907
|
+
if isinstance(model.items, ComplexFieldTypeModel)
|
1908
|
+
else model.items
|
1909
|
+
)
|
1910
|
+
|
1911
|
+
return ComplexFieldType(field_type=model.field_type, items=items)
|
1912
|
+
|
1913
|
+
def create_types_map(self, model: TypesMapModel, config: Config, **kwargs: Any) -> TypesMap:
|
1914
|
+
target_type = (
|
1915
|
+
self._create_component_from_model(model=model.target_type, config=config)
|
1916
|
+
if isinstance(model.target_type, ComplexFieldTypeModel)
|
1917
|
+
else model.target_type
|
1918
|
+
)
|
1919
|
+
|
1899
1920
|
return TypesMap(
|
1900
|
-
target_type=
|
1921
|
+
target_type=target_type,
|
1901
1922
|
current_type=model.current_type,
|
1902
1923
|
condition=model.condition if model.condition is not None else "True",
|
1903
1924
|
)
|
@@ -2386,7 +2407,7 @@ class ModelToComponentFactory:
|
|
2386
2407
|
if (
|
2387
2408
|
not isinstance(stream_slicer, DatetimeBasedCursor)
|
2388
2409
|
or type(stream_slicer) is not DatetimeBasedCursor
|
2389
|
-
):
|
2410
|
+
) and not isinstance(stream_slicer, PerPartitionWithGlobalCursor):
|
2390
2411
|
# Many of the custom component implementations of DatetimeBasedCursor override get_request_params() (or other methods).
|
2391
2412
|
# Because we're decoupling RequestOptionsProvider from the Cursor, custom components will eventually need to reimplement
|
2392
2413
|
# their own RequestOptionsProvider. However, right now the existing StreamSlicer/Cursor still can act as the SimpleRetriever's
|
@@ -296,12 +296,8 @@ class SubstreamPartitionRouter(PartitionRouter):
|
|
296
296
|
|
297
297
|
if not parent_state and incremental_dependency:
|
298
298
|
# Attempt to retrieve child state
|
299
|
-
|
300
|
-
substream_state =
|
301
|
-
# Filter out per partition state. Because we pass the state to the parent stream in the format {cursor_field: substream_state}
|
302
|
-
if isinstance(substream_state, (list, dict)):
|
303
|
-
substream_state = {}
|
304
|
-
|
299
|
+
substream_state = list(stream_state.values())
|
300
|
+
substream_state = substream_state[0] if substream_state else {} # type: ignore [assignment] # Incorrect type for assignment
|
305
301
|
parent_state = {}
|
306
302
|
|
307
303
|
# Copy child state to parent streams with incremental dependencies
|
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
from airbyte_cdk.sources.declarative.schema.default_schema_loader import DefaultSchemaLoader
|
6
6
|
from airbyte_cdk.sources.declarative.schema.dynamic_schema_loader import (
|
7
|
+
ComplexFieldType,
|
7
8
|
DynamicSchemaLoader,
|
8
9
|
SchemaTypeIdentifier,
|
9
10
|
TypesMap,
|
@@ -18,6 +19,7 @@ __all__ = [
|
|
18
19
|
"SchemaLoader",
|
19
20
|
"InlineSchemaLoader",
|
20
21
|
"DynamicSchemaLoader",
|
22
|
+
"ComplexFieldType",
|
21
23
|
"TypesMap",
|
22
24
|
"SchemaTypeIdentifier",
|
23
25
|
]
|
@@ -18,7 +18,7 @@ from airbyte_cdk.sources.declarative.transformations import RecordTransformation
|
|
18
18
|
from airbyte_cdk.sources.source import ExperimentalClassWarning
|
19
19
|
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
20
20
|
|
21
|
-
AIRBYTE_DATA_TYPES: Mapping[str,
|
21
|
+
AIRBYTE_DATA_TYPES: Mapping[str, MutableMapping[str, Any]] = {
|
22
22
|
"string": {"type": ["null", "string"]},
|
23
23
|
"boolean": {"type": ["null", "boolean"]},
|
24
24
|
"date": {"type": ["null", "string"], "format": "date"},
|
@@ -45,6 +45,25 @@ AIRBYTE_DATA_TYPES: Mapping[str, Mapping[str, Any]] = {
|
|
45
45
|
}
|
46
46
|
|
47
47
|
|
48
|
+
@deprecated("This class is experimental. Use at your own risk.", category=ExperimentalClassWarning)
|
49
|
+
@dataclass(frozen=True)
|
50
|
+
class ComplexFieldType:
|
51
|
+
"""
|
52
|
+
Identifies complex field type
|
53
|
+
"""
|
54
|
+
|
55
|
+
field_type: str
|
56
|
+
items: Optional[Union[str, "ComplexFieldType"]] = None
|
57
|
+
|
58
|
+
def __post_init__(self) -> None:
|
59
|
+
"""
|
60
|
+
Enforces that `items` is only used when `field_type` is a array
|
61
|
+
"""
|
62
|
+
# `items_type` is valid only for array target types
|
63
|
+
if self.items and self.field_type != "array":
|
64
|
+
raise ValueError("'items' can only be used when 'field_type' is an array.")
|
65
|
+
|
66
|
+
|
48
67
|
@deprecated("This class is experimental. Use at your own risk.", category=ExperimentalClassWarning)
|
49
68
|
@dataclass(frozen=True)
|
50
69
|
class TypesMap:
|
@@ -52,7 +71,7 @@ class TypesMap:
|
|
52
71
|
Represents a mapping between a current type and its corresponding target type.
|
53
72
|
"""
|
54
73
|
|
55
|
-
target_type: Union[List[str], str]
|
74
|
+
target_type: Union[List[str], str, ComplexFieldType]
|
56
75
|
current_type: Union[List[str], str]
|
57
76
|
condition: Optional[str]
|
58
77
|
|
@@ -188,18 +207,44 @@ class DynamicSchemaLoader(SchemaLoader):
|
|
188
207
|
first_type = self._get_airbyte_type(mapped_field_type[0])
|
189
208
|
second_type = self._get_airbyte_type(mapped_field_type[1])
|
190
209
|
return {"oneOf": [first_type, second_type]}
|
210
|
+
|
191
211
|
elif isinstance(mapped_field_type, str):
|
192
212
|
return self._get_airbyte_type(mapped_field_type)
|
213
|
+
|
214
|
+
elif isinstance(mapped_field_type, ComplexFieldType):
|
215
|
+
return self._resolve_complex_type(mapped_field_type)
|
216
|
+
|
193
217
|
else:
|
194
218
|
raise ValueError(
|
195
219
|
f"Invalid data type. Available string or two items list of string. Got {mapped_field_type}."
|
196
220
|
)
|
197
221
|
|
222
|
+
def _resolve_complex_type(self, complex_type: ComplexFieldType) -> Mapping[str, Any]:
|
223
|
+
types = [complex_type]
|
224
|
+
resolved_type: MutableMapping[str, Any] = {}
|
225
|
+
|
226
|
+
while types:
|
227
|
+
current_type = types.pop()
|
228
|
+
if not current_type.items:
|
229
|
+
resolved_type = self._get_airbyte_type(current_type.field_type)
|
230
|
+
else:
|
231
|
+
field_type = self._get_airbyte_type(current_type.field_type)
|
232
|
+
|
233
|
+
if isinstance(current_type.items, str):
|
234
|
+
items_type = current_type.items
|
235
|
+
else:
|
236
|
+
types.append(current_type.items)
|
237
|
+
continue # Skip the following lines until the stack is resolved
|
238
|
+
field_type["items"] = self._get_airbyte_type(items_type)
|
239
|
+
resolved_type = field_type
|
240
|
+
|
241
|
+
return resolved_type
|
242
|
+
|
198
243
|
def _replace_type_if_not_valid(
|
199
244
|
self,
|
200
245
|
field_type: Union[List[str], str],
|
201
246
|
raw_schema: MutableMapping[str, Any],
|
202
|
-
) -> Union[List[str], str]:
|
247
|
+
) -> Union[List[str], str, ComplexFieldType]:
|
203
248
|
"""
|
204
249
|
Replaces a field type if it matches a type mapping in `types_map`.
|
205
250
|
"""
|
@@ -216,7 +261,7 @@ class DynamicSchemaLoader(SchemaLoader):
|
|
216
261
|
return field_type
|
217
262
|
|
218
263
|
@staticmethod
|
219
|
-
def _get_airbyte_type(field_type: str) ->
|
264
|
+
def _get_airbyte_type(field_type: str) -> MutableMapping[str, Any]:
|
220
265
|
"""
|
221
266
|
Maps a field type to its corresponding Airbyte type definition.
|
222
267
|
"""
|
@@ -67,7 +67,7 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=wbfk5udu
|
|
67
67
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=l9LG7Qm6e5r_qgqfVKnx3mXYtg1I9MmMjomVIPfU4XA,177
|
68
68
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=SX9JjdesN1edN2WVUVMzU_ptqp2QB1OnsnjZ4mwcX7w,2579
|
69
69
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
70
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
70
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=yHOfjvrxDVnQmMi-mrdM27Y0Uqk4fYMmp9Rwdbq6-7s,139662
|
71
71
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
72
72
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=JRyNeOIpsFu4ztVZsN6sncqUEIqIE-bUkD2TPgbMgk0,10375
|
73
73
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=KSpQetKGqPCv-38QgcVJ5kzM5nzbFldTSsYDCS3Xf0Y,1035
|
@@ -92,7 +92,7 @@ airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha25
|
|
92
92
|
airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=_UzUnSIUsDbRgbFTXgSyZEFb4ws-KdhdQPWO8mFbV7U,22028
|
93
93
|
airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
|
94
94
|
airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py,sha256=9HO-QbL9akvjq2NP7l498RwLA4iQZlBMQW1tZbt34I8,15943
|
95
|
-
airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py,sha256=
|
95
|
+
airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py,sha256=_FSJjAwL4Zu-i2CngnhTtx8j-NPVSBKj5LwDSPta3Cg,16305
|
96
96
|
airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py,sha256=2YBOA2NnwAeIKlIhSwUB_W-FaGnPcmrG_liY7b4mV2Y,8365
|
97
97
|
airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py,sha256=10LFv1QPM-agVKl6eaANmEBOfd7gZgBrkoTcMggsieQ,4809
|
98
98
|
airbyte_cdk/sources/declarative/interpolation/__init__.py,sha256=tjUJkn3B-iZ-p7RP2c3dVZejrGiQeooGmS5ibWTuUL4,437
|
@@ -109,20 +109,20 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
109
109
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
110
110
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
111
111
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
112
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
112
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=68JPw6bLHnTh7zGN3CC8B6b9NI4hxvSPOyLyY8TVRqk,98059
|
113
113
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
114
114
|
airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=958MMX6_ZOJUlDDdNr9Krosgi2bCKGx2Z765M2Woz18,5505
|
115
115
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
116
116
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=CXwTfD3wSQq3okcqwigpprbHhSURUokh4GK2OmOyKC8,9132
|
117
117
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
118
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
118
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=mf0Iwq0VtetpC2HYq93_hZUOuFhWUB7aPjacC6RarYk,122981
|
119
119
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=HJ-Syp3p7RpyR_OK0X_a2kSyISfu3W-PKrRI16iY0a8,957
|
120
120
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=n82J15S8bjeMZ5uROu--P3hnbQoxkY5v7RPHYx7g7ro,2929
|
121
121
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
122
122
|
airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py,sha256=t7pRdFWfFWJtQQG19c9PVeMODyO2BknRTakpM5U9N-8,4844
|
123
123
|
airbyte_cdk/sources/declarative/partition_routers/partition_router.py,sha256=YyEIzdmLd1FjbVP3QbQ2VFCLW_P-OGbVh6VpZShp54k,2218
|
124
124
|
airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py,sha256=SKzKjSyfccq4dxGIh-J6ejrgkCHzaiTIazmbmeQiRD4,1942
|
125
|
-
airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py,sha256=
|
125
|
+
airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py,sha256=5bgXoJfBg_6i53krQMptAGb50XB5XoVfqQxKQhlLtBA,15383
|
126
126
|
airbyte_cdk/sources/declarative/requesters/README.md,sha256=eL1I4iLkxaw7hJi9S9d18_XcRl-R8lUSjqBVJJzvXmg,2656
|
127
127
|
airbyte_cdk/sources/declarative/requesters/__init__.py,sha256=d7a3OoHbqaJDyyPli3nqqJ2yAW_SLX6XDaBAKOwvpxw,364
|
128
128
|
airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py,sha256=SkEDcJxlT1683rNx93K9whoS0OyUukkuOfToGtgpF58,776
|
@@ -168,9 +168,9 @@ airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=ix9m1dkR69DcXCXUKC
|
|
168
168
|
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=kX9ltelK2xLIBWDJBK2ucrvVe5tc5xmhdbVbgsjvlxY,3696
|
169
169
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
170
170
|
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=kgnhVQxRlFqJs2-rDu2-QH-p-GzQU3nKmSp6_aq8u0s,24550
|
171
|
-
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=
|
171
|
+
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
|
172
172
|
airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=KTACrIE23a83wsm3Rd9Eb4K6-20lrGqYxTHNp9yxsso,1820
|
173
|
-
airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=
|
173
|
+
airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=QG0ApZFFPVZyG8ZsdVJ5vx1vrPb7QTUdBJY8VJIaPlQ,11022
|
174
174
|
airbyte_cdk/sources/declarative/schema/inline_schema_loader.py,sha256=bVETE10hRsatRJq3R3BeyRR0wIoK3gcP1gcpVRQ_P5U,464
|
175
175
|
airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py,sha256=5Wl-fqW-pVf_dxJ4yGHMAFfC4JjKHYJhqFJT1xA57F4,4177
|
176
176
|
airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLnrDLxf1PJKdUqvQq2RVnAOAzNSY,379
|
@@ -350,8 +350,8 @@ airbyte_cdk/utils/slice_hasher.py,sha256=-pHexlNYoWYPnXNH-M7HEbjmeJe9Zk7SJijdQ7d
|
|
350
350
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
351
351
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
352
352
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
353
|
-
airbyte_cdk-6.
|
354
|
-
airbyte_cdk-6.
|
355
|
-
airbyte_cdk-6.
|
356
|
-
airbyte_cdk-6.
|
357
|
-
airbyte_cdk-6.
|
353
|
+
airbyte_cdk-6.26.0.dev0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
354
|
+
airbyte_cdk-6.26.0.dev0.dist-info/METADATA,sha256=g4Da91E4C4Ye-yiU-Rmg7E52t4O0pHx_w4KVJ2meuBc,6001
|
355
|
+
airbyte_cdk-6.26.0.dev0.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
356
|
+
airbyte_cdk-6.26.0.dev0.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
357
|
+
airbyte_cdk-6.26.0.dev0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|