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.
@@ -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
- self._create_cursor_for_partition(partition_key)
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
- @staticmethod
1898
- def create_types_map(model: TypesMapModel, **kwargs: Any) -> TypesMap:
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=model.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
- substream_state_values = list(stream_state.values())
300
- substream_state = substream_state_values[0] if substream_state_values else {}
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, Mapping[str, Any]] = {
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) -> Mapping[str, Any]:
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
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-cdk
3
- Version: 6.25.2
3
+ Version: 6.26.0.dev0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  License: MIT
6
6
  Keywords: airbyte,connector-development-kit,cdk
@@ -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=40Ts1-r0UnF3AhAj9pXE2pf6Y8WBqRAksjTaBiCuxq0,139243
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=9IAJTCiRUXvhFFz-IhZtYh_KfAjLHqthsYf2jErQRls,17728
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=9SHqGpoMDIysyFLzkZoAehbsroHQKYPctIwXmSqO4Zw,97888
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=a96vNwEc3J8S99KGtSt2G147leh8GADfkTrejVCBXzs,122064
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=pPb0blnNx598bk47Khgs0cvwhN02SWSmg7lnJKb9K6Q,15577
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=HztgVVaZdil5UfgUZcv_Hyy84r89_EKRwyO2hoewNVg,749
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=sa99VqU1U45fgZL2qEdw8ueX1tPTPfGxibQ-ZFePjSM,9361
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.25.2.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
354
- airbyte_cdk-6.25.2.dist-info/METADATA,sha256=jJuIhUilYLyPxI5j1LJTO-NF3FOpbR0d8mrjXMiXkE8,5996
355
- airbyte_cdk-6.25.2.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
356
- airbyte_cdk-6.25.2.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
357
- airbyte_cdk-6.25.2.dist-info/RECORD,,
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,,