airbyte-cdk 6.13.1.dev4100__py3-none-any.whl → 6.13.1.dev4103__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/entrypoint.py +13 -1
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py +24 -51
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +72 -1
- airbyte_cdk/sources/declarative/extractors/__init__.py +2 -0
- airbyte_cdk/sources/declarative/extractors/record_selector.py +5 -7
- airbyte_cdk/sources/declarative/extractors/type_transformer.py +55 -0
- airbyte_cdk/sources/declarative/interpolation/macros.py +21 -0
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +40 -1
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +43 -12
- airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +52 -35
- airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +10 -7
- airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +9 -4
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +11 -6
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +13 -11
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +14 -13
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +6 -7
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +10 -7
- airbyte_cdk/sources/declarative/retrievers/async_retriever.py +1 -4
- airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +71 -64
- airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -4
- airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +61 -0
- airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +5 -17
- airbyte_cdk/sources/file_based/file_based_source.py +4 -4
- airbyte_cdk/sources/file_based/file_based_stream_reader.py +5 -5
- {airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/RECORD +29 -27
- {airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/entry_points.txt +0 -0
@@ -6,18 +6,7 @@ import json
|
|
6
6
|
from dataclasses import InitVar, dataclass, field
|
7
7
|
from functools import partial
|
8
8
|
from itertools import islice
|
9
|
-
from typing import
|
10
|
-
Any,
|
11
|
-
Callable,
|
12
|
-
Iterable,
|
13
|
-
List,
|
14
|
-
Mapping,
|
15
|
-
MutableMapping,
|
16
|
-
Optional,
|
17
|
-
Set,
|
18
|
-
Tuple,
|
19
|
-
Union,
|
20
|
-
)
|
9
|
+
from typing import Any, Callable, Iterable, List, Mapping, Optional, Set, Tuple, Union
|
21
10
|
|
22
11
|
import requests
|
23
12
|
|
@@ -90,9 +79,6 @@ class SimpleRetriever(Retriever):
|
|
90
79
|
|
91
80
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
92
81
|
self._paginator = self.paginator or NoPagination(parameters=parameters)
|
93
|
-
self._last_response: Optional[requests.Response] = None
|
94
|
-
self._last_page_size: int = 0
|
95
|
-
self._last_record: Optional[Record] = None
|
96
82
|
self._parameters = parameters
|
97
83
|
self._name = (
|
98
84
|
InterpolatedString(self._name, parameters=parameters)
|
@@ -100,10 +86,6 @@ class SimpleRetriever(Retriever):
|
|
100
86
|
else self._name
|
101
87
|
)
|
102
88
|
|
103
|
-
# This mapping is used during a resumable full refresh syncs to indicate whether a partition has started syncing
|
104
|
-
# records. Partitions serve as the key and map to True if they already began processing records
|
105
|
-
self._partition_started: MutableMapping[Any, bool] = dict()
|
106
|
-
|
107
89
|
@property # type: ignore
|
108
90
|
def name(self) -> str:
|
109
91
|
"""
|
@@ -251,17 +233,13 @@ class SimpleRetriever(Retriever):
|
|
251
233
|
raise ValueError("Request body json cannot be a string")
|
252
234
|
return body_json
|
253
235
|
|
254
|
-
def _paginator_path(
|
255
|
-
self,
|
256
|
-
) -> Optional[str]:
|
236
|
+
def _paginator_path(self, next_page_token: Optional[Mapping[str, Any]] = None) -> Optional[str]:
|
257
237
|
"""
|
258
238
|
If the paginator points to a path, follow it, else return nothing so the requester is used.
|
259
|
-
:param stream_state:
|
260
|
-
:param stream_slice:
|
261
239
|
:param next_page_token:
|
262
240
|
:return:
|
263
241
|
"""
|
264
|
-
return self._paginator.path()
|
242
|
+
return self._paginator.path(next_page_token=next_page_token)
|
265
243
|
|
266
244
|
def _parse_response(
|
267
245
|
self,
|
@@ -272,22 +250,15 @@ class SimpleRetriever(Retriever):
|
|
272
250
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
273
251
|
) -> Iterable[Record]:
|
274
252
|
if not response:
|
275
|
-
self._last_response = None
|
276
253
|
yield from []
|
277
254
|
else:
|
278
|
-
self.
|
279
|
-
record_generator = self.record_selector.select_records(
|
255
|
+
yield from self.record_selector.select_records(
|
280
256
|
response=response,
|
281
257
|
stream_state=stream_state,
|
282
258
|
records_schema=records_schema,
|
283
259
|
stream_slice=stream_slice,
|
284
260
|
next_page_token=next_page_token,
|
285
261
|
)
|
286
|
-
self._last_page_size = 0
|
287
|
-
for record in record_generator:
|
288
|
-
self._last_page_size += 1
|
289
|
-
self._last_record = record
|
290
|
-
yield record
|
291
262
|
|
292
263
|
@property # type: ignore
|
293
264
|
def primary_key(self) -> Optional[Union[str, List[str], List[List[str]]]]:
|
@@ -299,7 +270,13 @@ class SimpleRetriever(Retriever):
|
|
299
270
|
if not isinstance(value, property):
|
300
271
|
self._primary_key = value
|
301
272
|
|
302
|
-
def _next_page_token(
|
273
|
+
def _next_page_token(
|
274
|
+
self,
|
275
|
+
response: requests.Response,
|
276
|
+
last_page_size: int,
|
277
|
+
last_record: Optional[Record],
|
278
|
+
last_page_token_value: Optional[Any],
|
279
|
+
) -> Optional[Mapping[str, Any]]:
|
303
280
|
"""
|
304
281
|
Specifies a pagination strategy.
|
305
282
|
|
@@ -307,7 +284,12 @@ class SimpleRetriever(Retriever):
|
|
307
284
|
|
308
285
|
:return: The token for the next page from the input response object. Returning None means there are no more pages to read in this response.
|
309
286
|
"""
|
310
|
-
return self._paginator.next_page_token(
|
287
|
+
return self._paginator.next_page_token(
|
288
|
+
response=response,
|
289
|
+
last_page_size=last_page_size,
|
290
|
+
last_record=last_record,
|
291
|
+
last_page_token_value=last_page_token_value,
|
292
|
+
)
|
311
293
|
|
312
294
|
def _fetch_next_page(
|
313
295
|
self,
|
@@ -316,7 +298,7 @@ class SimpleRetriever(Retriever):
|
|
316
298
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
317
299
|
) -> Optional[requests.Response]:
|
318
300
|
return self.requester.send_request(
|
319
|
-
path=self._paginator_path(),
|
301
|
+
path=self._paginator_path(next_page_token=next_page_token),
|
320
302
|
stream_state=stream_state,
|
321
303
|
stream_slice=stream_slice,
|
322
304
|
next_page_token=next_page_token,
|
@@ -345,20 +327,37 @@ class SimpleRetriever(Retriever):
|
|
345
327
|
# This logic is similar to _read_pages in the HttpStream class. When making changes here, consider making changes there as well.
|
346
328
|
def _read_pages(
|
347
329
|
self,
|
348
|
-
records_generator_fn: Callable[[Optional[requests.Response]], Iterable[
|
330
|
+
records_generator_fn: Callable[[Optional[requests.Response]], Iterable[Record]],
|
349
331
|
stream_state: Mapping[str, Any],
|
350
332
|
stream_slice: StreamSlice,
|
351
|
-
) -> Iterable[
|
333
|
+
) -> Iterable[Record]:
|
352
334
|
pagination_complete = False
|
353
|
-
|
335
|
+
initial_token = self._paginator.get_initial_token()
|
336
|
+
next_page_token: Optional[Mapping[str, Any]] = (
|
337
|
+
{"next_page_token": initial_token} if initial_token else None
|
338
|
+
)
|
354
339
|
while not pagination_complete:
|
355
340
|
response = self._fetch_next_page(stream_state, stream_slice, next_page_token)
|
356
|
-
|
341
|
+
|
342
|
+
last_page_size = 0
|
343
|
+
last_record: Optional[Record] = None
|
344
|
+
for record in records_generator_fn(response):
|
345
|
+
last_page_size += 1
|
346
|
+
last_record = record
|
347
|
+
yield record
|
357
348
|
|
358
349
|
if not response:
|
359
350
|
pagination_complete = True
|
360
351
|
else:
|
361
|
-
|
352
|
+
last_page_token_value = (
|
353
|
+
next_page_token.get("next_page_token") if next_page_token else None
|
354
|
+
)
|
355
|
+
next_page_token = self._next_page_token(
|
356
|
+
response=response,
|
357
|
+
last_page_size=last_page_size,
|
358
|
+
last_record=last_record,
|
359
|
+
last_page_token_value=last_page_token_value,
|
360
|
+
)
|
362
361
|
if not next_page_token:
|
363
362
|
pagination_complete = True
|
364
363
|
|
@@ -367,19 +366,38 @@ class SimpleRetriever(Retriever):
|
|
367
366
|
|
368
367
|
def _read_single_page(
|
369
368
|
self,
|
370
|
-
records_generator_fn: Callable[[Optional[requests.Response]], Iterable[
|
369
|
+
records_generator_fn: Callable[[Optional[requests.Response]], Iterable[Record]],
|
371
370
|
stream_state: Mapping[str, Any],
|
372
371
|
stream_slice: StreamSlice,
|
373
372
|
) -> Iterable[StreamData]:
|
374
|
-
|
375
|
-
|
373
|
+
initial_token = stream_state.get("next_page_token")
|
374
|
+
if initial_token is None:
|
375
|
+
initial_token = self._paginator.get_initial_token()
|
376
|
+
next_page_token: Optional[Mapping[str, Any]] = (
|
377
|
+
{"next_page_token": initial_token} if initial_token else None
|
378
|
+
)
|
379
|
+
|
380
|
+
response = self._fetch_next_page(stream_state, stream_slice, next_page_token)
|
381
|
+
|
382
|
+
last_page_size = 0
|
383
|
+
last_record: Optional[Record] = None
|
384
|
+
for record in records_generator_fn(response):
|
385
|
+
last_page_size += 1
|
386
|
+
last_record = record
|
387
|
+
yield record
|
376
388
|
|
377
389
|
if not response:
|
378
|
-
next_page_token
|
390
|
+
next_page_token = {FULL_REFRESH_SYNC_COMPLETE_KEY: True}
|
379
391
|
else:
|
380
|
-
|
381
|
-
|
382
|
-
|
392
|
+
last_page_token_value = (
|
393
|
+
next_page_token.get("next_page_token") if next_page_token else None
|
394
|
+
)
|
395
|
+
next_page_token = self._next_page_token(
|
396
|
+
response=response,
|
397
|
+
last_page_size=last_page_size,
|
398
|
+
last_record=last_record,
|
399
|
+
last_page_token_value=last_page_token_value,
|
400
|
+
) or {FULL_REFRESH_SYNC_COMPLETE_KEY: True}
|
383
401
|
|
384
402
|
if self.cursor:
|
385
403
|
self.cursor.close_slice(
|
@@ -414,25 +432,14 @@ class SimpleRetriever(Retriever):
|
|
414
432
|
if self.cursor and isinstance(self.cursor, ResumableFullRefreshCursor):
|
415
433
|
stream_state = self.state
|
416
434
|
|
417
|
-
# Before syncing the RFR stream, we check if the job's prior attempt was successful and don't need to
|
418
|
-
# The platform deletes stream state for full refresh streams before starting a
|
419
|
-
# this value existing for the initial attempt
|
435
|
+
# Before syncing the RFR stream, we check if the job's prior attempt was successful and don't need to
|
436
|
+
# fetch more records. The platform deletes stream state for full refresh streams before starting a
|
437
|
+
# new job, so we don't need to worry about this value existing for the initial attempt
|
420
438
|
if stream_state.get(FULL_REFRESH_SYNC_COMPLETE_KEY):
|
421
439
|
return
|
422
|
-
cursor_value = stream_state.get("next_page_token")
|
423
|
-
|
424
|
-
# The first attempt to read a page for the current partition should reset the paginator to the current
|
425
|
-
# cursor state which is initially assigned to the incoming state from the platform
|
426
|
-
partition_key = self._to_partition_key(_slice.partition)
|
427
|
-
if partition_key not in self._partition_started:
|
428
|
-
self._partition_started[partition_key] = True
|
429
|
-
self._paginator.reset(reset_value=cursor_value)
|
430
440
|
|
431
441
|
yield from self._read_single_page(record_generator, stream_state, _slice)
|
432
442
|
else:
|
433
|
-
# Fixing paginator types has a long tail of dependencies
|
434
|
-
self._paginator.reset()
|
435
|
-
|
436
443
|
for stream_data in self._read_pages(record_generator, self.state, _slice):
|
437
444
|
current_record = self._extract_record(stream_data, _slice)
|
438
445
|
if self.cursor and current_record:
|
@@ -518,7 +525,7 @@ class SimpleRetriever(Retriever):
|
|
518
525
|
stream_state: Mapping[str, Any],
|
519
526
|
records_schema: Mapping[str, Any],
|
520
527
|
stream_slice: Optional[StreamSlice],
|
521
|
-
) -> Iterable[
|
528
|
+
) -> Iterable[Record]:
|
522
529
|
yield from self._parse_response(
|
523
530
|
response,
|
524
531
|
stream_slice=stream_slice,
|
@@ -562,7 +569,7 @@ class SimpleRetrieverTestReadDecorator(SimpleRetriever):
|
|
562
569
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
563
570
|
) -> Optional[requests.Response]:
|
564
571
|
return self.requester.send_request(
|
565
|
-
path=self._paginator_path(),
|
572
|
+
path=self._paginator_path(next_page_token=next_page_token),
|
566
573
|
stream_state=stream_state,
|
567
574
|
stream_slice=stream_slice,
|
568
575
|
next_page_token=next_page_token,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
2
|
|
3
|
-
from typing import Any,
|
3
|
+
from typing import Any, Iterable, Mapping, Optional
|
4
4
|
|
5
5
|
from airbyte_cdk.sources.declarative.retrievers import Retriever
|
6
6
|
from airbyte_cdk.sources.message import MessageRepository
|
@@ -16,7 +16,7 @@ class DeclarativePartitionFactory:
|
|
16
16
|
self,
|
17
17
|
stream_name: str,
|
18
18
|
json_schema: Mapping[str, Any],
|
19
|
-
|
19
|
+
retriever: Retriever,
|
20
20
|
message_repository: MessageRepository,
|
21
21
|
) -> None:
|
22
22
|
"""
|
@@ -26,14 +26,14 @@ class DeclarativePartitionFactory:
|
|
26
26
|
"""
|
27
27
|
self._stream_name = stream_name
|
28
28
|
self._json_schema = json_schema
|
29
|
-
self.
|
29
|
+
self._retriever = retriever
|
30
30
|
self._message_repository = message_repository
|
31
31
|
|
32
32
|
def create(self, stream_slice: StreamSlice) -> Partition:
|
33
33
|
return DeclarativePartition(
|
34
34
|
self._stream_name,
|
35
35
|
self._json_schema,
|
36
|
-
self.
|
36
|
+
self._retriever,
|
37
37
|
self._message_repository,
|
38
38
|
stream_slice,
|
39
39
|
)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
from dataclasses import InitVar, dataclass
|
6
|
+
from typing import Any, Dict, Mapping, Optional
|
7
|
+
|
8
|
+
from airbyte_cdk import InterpolatedString
|
9
|
+
from airbyte_cdk.sources.declarative.transformations import RecordTransformation
|
10
|
+
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
11
|
+
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class KeysReplaceTransformation(RecordTransformation):
|
15
|
+
"""
|
16
|
+
Transformation that applies keys names replacement.
|
17
|
+
|
18
|
+
Example usage:
|
19
|
+
- type: KeysReplace
|
20
|
+
old: " "
|
21
|
+
new: "_"
|
22
|
+
Result:
|
23
|
+
from: {"created time": ..., "customer id": ..., "user id": ...}
|
24
|
+
to: {"created_time": ..., "customer_id": ..., "user_id": ...}
|
25
|
+
"""
|
26
|
+
|
27
|
+
old: str
|
28
|
+
new: str
|
29
|
+
parameters: InitVar[Mapping[str, Any]]
|
30
|
+
|
31
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
32
|
+
self._old = InterpolatedString.create(self.old, parameters=parameters)
|
33
|
+
self._new = InterpolatedString.create(self.new, parameters=parameters)
|
34
|
+
|
35
|
+
def transform(
|
36
|
+
self,
|
37
|
+
record: Dict[str, Any],
|
38
|
+
config: Optional[Config] = None,
|
39
|
+
stream_state: Optional[StreamState] = None,
|
40
|
+
stream_slice: Optional[StreamSlice] = None,
|
41
|
+
) -> None:
|
42
|
+
if config is None:
|
43
|
+
config = {}
|
44
|
+
|
45
|
+
kwargs = {"record": record, "stream_state": stream_state, "stream_slice": stream_slice}
|
46
|
+
old_key = str(self._old.eval(config, **kwargs))
|
47
|
+
new_key = str(self._new.eval(config, **kwargs))
|
48
|
+
|
49
|
+
def _transform(data: Dict[str, Any]) -> Dict[str, Any]:
|
50
|
+
result = {}
|
51
|
+
for key, value in data.items():
|
52
|
+
updated_key = key.replace(old_key, new_key)
|
53
|
+
if isinstance(value, dict):
|
54
|
+
result[updated_key] = _transform(value)
|
55
|
+
else:
|
56
|
+
result[updated_key] = value
|
57
|
+
return result
|
58
|
+
|
59
|
+
transformed_record = _transform(record)
|
60
|
+
record.clear()
|
61
|
+
record.update(transformed_record)
|
@@ -14,13 +14,6 @@ from airbyte_cdk.sources.file_based.config.file_based_stream_config import FileB
|
|
14
14
|
from airbyte_cdk.sources.utils import schema_helpers
|
15
15
|
|
16
16
|
|
17
|
-
class DeliveryOptions(BaseModel):
|
18
|
-
preserve_subdirectories_directories: bool = Field(
|
19
|
-
True,
|
20
|
-
description="Flag indicating we should preserve subdirectories directories",
|
21
|
-
)
|
22
|
-
|
23
|
-
|
24
17
|
class DeliverRecords(BaseModel):
|
25
18
|
class Config(OneOfOptionConfig):
|
26
19
|
title = "Replicate Records"
|
@@ -37,10 +30,11 @@ class DeliverRawFiles(BaseModel):
|
|
37
30
|
discriminator = "delivery_type"
|
38
31
|
|
39
32
|
delivery_type: Literal["use_file_transfer"] = Field("use_file_transfer", const=True)
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
33
|
+
|
34
|
+
preserve_subdirectories_directories: bool = Field(
|
35
|
+
title="Preserve Subdirectories in File Paths",
|
36
|
+
description="If enabled replicate source folder structure",
|
37
|
+
default=True,
|
44
38
|
)
|
45
39
|
|
46
40
|
|
@@ -77,12 +71,6 @@ class AbstractFileBasedSpec(BaseModel):
|
|
77
71
|
airbyte_hidden=True,
|
78
72
|
)
|
79
73
|
|
80
|
-
delivery_options: Optional[DeliveryOptions] = Field(
|
81
|
-
title="Delivery Options",
|
82
|
-
type="object",
|
83
|
-
order=8,
|
84
|
-
)
|
85
|
-
|
86
74
|
@classmethod
|
87
75
|
@abstractmethod
|
88
76
|
def documentation_url(cls) -> AnyUrl:
|
@@ -393,9 +393,9 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
393
393
|
def _preserve_subdirectories_directories(parsed_config: AbstractFileBasedSpec) -> bool:
|
394
394
|
# fall back to preserve subdirectories if config is not present or incomplete
|
395
395
|
if (
|
396
|
-
|
397
|
-
and parsed_config.
|
398
|
-
and
|
396
|
+
FileBasedSource._use_file_transfer(parsed_config)
|
397
|
+
and hasattr(parsed_config.delivery_method, "preserve_subdirectories_directories")
|
398
|
+
and parsed_config.delivery_method.preserve_subdirectories_directories is not None
|
399
399
|
):
|
400
|
-
return parsed_config.
|
400
|
+
return parsed_config.delivery_method.preserve_subdirectories_directories
|
401
401
|
return True
|
@@ -138,12 +138,12 @@ class AbstractFileBasedStreamReader(ABC):
|
|
138
138
|
def preserve_subdirectories_directories(self) -> bool:
|
139
139
|
# fall back to preserve subdirectories if config is not present or incomplete
|
140
140
|
if (
|
141
|
-
self.
|
142
|
-
and
|
143
|
-
and self.config.
|
144
|
-
and
|
141
|
+
self.use_file_transfer()
|
142
|
+
and self.config
|
143
|
+
and hasattr(self.config.delivery_method, "preserve_subdirectories_directories")
|
144
|
+
and self.config.delivery_method.preserve_subdirectories_directories is not None
|
145
145
|
):
|
146
|
-
return self.config.
|
146
|
+
return self.config.delivery_method.preserve_subdirectories_directories
|
147
147
|
return True
|
148
148
|
|
149
149
|
@abstractmethod
|
@@ -22,7 +22,7 @@ airbyte_cdk/destinations/vector_db_based/indexer.py,sha256=beiSi2Uu67EoTr7yQSaCJ
|
|
22
22
|
airbyte_cdk/destinations/vector_db_based/test_utils.py,sha256=MkqLiOJ5QyKbV4rNiJhe-BHM7FD-ADHQ4bQGf4c5lRY,1932
|
23
23
|
airbyte_cdk/destinations/vector_db_based/utils.py,sha256=FOyEo8Lc-fY8UyhpCivhZtIqBRyxf3cUt6anmK03fUY,1127
|
24
24
|
airbyte_cdk/destinations/vector_db_based/writer.py,sha256=nZ00xPiohElJmYktEZZIhr0m5EDETCHGhg0Lb2S7A20,5095
|
25
|
-
airbyte_cdk/entrypoint.py,sha256=
|
25
|
+
airbyte_cdk/entrypoint.py,sha256=xFLY2PV8mKXUaeBAknczbK6plrs4_B1WdWA6K3iaRJI,18555
|
26
26
|
airbyte_cdk/exception_handler.py,sha256=D_doVl3Dt60ASXlJsfviOCswxGyKF2q0RL6rif3fNks,2013
|
27
27
|
airbyte_cdk/logger.py,sha256=qi4UGuSYQQGaFaTVJlMD9lLppwqLXt1XBhwSXo-Q5IA,3660
|
28
28
|
airbyte_cdk/models/__init__.py,sha256=MOTiuML2wShBaMSIwikdjyye2uUWBjo4J1QFSbnoiM4,2075
|
@@ -62,11 +62,11 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=dAA-UhmMj0WLXCkRQr
|
|
62
62
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
63
63
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
64
64
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
65
|
-
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=
|
65
|
+
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=tSTCSmyMCu1qoGsne1Ooz3c1da-8EDZk6Suiy2gIq9Q,22475
|
66
66
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=l9LG7Qm6e5r_qgqfVKnx3mXYtg1I9MmMjomVIPfU4XA,177
|
67
67
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=SX9JjdesN1edN2WVUVMzU_ptqp2QB1OnsnjZ4mwcX7w,2579
|
68
68
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
69
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
69
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=inomzf30NXQINy4c21hwL0Cya4Ee-YNy20h9P-D42rk,132996
|
70
70
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
71
71
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=JRyNeOIpsFu4ztVZsN6sncqUEIqIE-bUkD2TPgbMgk0,10375
|
72
72
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=edGj4fGxznBk4xzRQyCA1rGfbpqe7z-RE0K3kQQWbgA,858
|
@@ -77,13 +77,14 @@ airbyte_cdk/sources/declarative/decoders/noop_decoder.py,sha256=iZh0yKY_JzgBnJWi
|
|
77
77
|
airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py,sha256=ZVBZhAOl0I0MymXN5CKTC-kIXG4GuUQAEyn0XpUDuSE,1081
|
78
78
|
airbyte_cdk/sources/declarative/decoders/xml_decoder.py,sha256=EU-7t-5vIGRHZ14h-f0GUE4V5-eTM9Flux-A8xgI1Rc,3117
|
79
79
|
airbyte_cdk/sources/declarative/exceptions.py,sha256=kTPUA4I2NV4J6HDz-mKPGMrfuc592akJnOyYx38l_QM,176
|
80
|
-
airbyte_cdk/sources/declarative/extractors/__init__.py,sha256=
|
80
|
+
airbyte_cdk/sources/declarative/extractors/__init__.py,sha256=RmV-IkO1YLj0PSOrrqC9AV1gO8-90t8UTDVfJGshN9E,754
|
81
81
|
airbyte_cdk/sources/declarative/extractors/dpath_extractor.py,sha256=wR4Ol4MG2lt5UlqXF5EU_k7qa5cN4_-luu3PJ1PlO3A,3131
|
82
82
|
airbyte_cdk/sources/declarative/extractors/http_selector.py,sha256=2zWZ4ewTqQC8VwkjS0xD_u350Km3SiYP7hpOOgiLg5o,1169
|
83
83
|
airbyte_cdk/sources/declarative/extractors/record_extractor.py,sha256=XJELMjahAsaomlvQgN2zrNO0DJX0G0fr9r682gUz7Pg,691
|
84
84
|
airbyte_cdk/sources/declarative/extractors/record_filter.py,sha256=OJ9xmhNWNwwzxYOeIrDy1GINb1zH9MBy6suC5tm2LSk,3545
|
85
|
-
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=
|
85
|
+
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=tjNwcURmlyD-TGCScXvW95ThNKyPGcx2SiWbG1-H-sc,6552
|
86
86
|
airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=LhqGDfX06_dDYLKsIVnwQ_nAWCln-v8PV7Wgt_QVeTI,6533
|
87
|
+
airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
|
87
88
|
airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=huRz3KQJSUFmJCg5GPE9TckEBsB5TMsCa_THhJAhPVI,1037
|
88
89
|
airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=_UzUnSIUsDbRgbFTXgSyZEFb4ws-KdhdQPWO8mFbV7U,22028
|
89
90
|
airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
|
@@ -99,18 +100,18 @@ airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py,sha
|
|
99
100
|
airbyte_cdk/sources/declarative/interpolation/interpolated_string.py,sha256=LYEZnZ_hB7rvBSZxG9s0RSrzsOkDWbBY0_P6qu5lEfc,3212
|
100
101
|
airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=-V5UddGm69UKEB6o_O1EIES9kfY8FV_X4Ji8w1yOuSA,981
|
101
102
|
airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=BtsY_jtT4MihFqeQgc05HXj3Ndt-e2ESQgGwbg3Sdxc,6430
|
102
|
-
airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=
|
103
|
+
airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=Y5AWYxbJTUtJ_Jm7DV9qrZDiymFR9LST7fBt4piT2-U,4585
|
103
104
|
airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=wX_dQ401siuwh3zHgSHRnSN1vIojI4Nufg3BwzZAzk0,16239
|
104
105
|
airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
106
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
106
107
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
107
108
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
108
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256
|
109
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=-V0knL97aS3sxEEmQclzFo_v8j3syD4vpoQKD0DoaEY,93092
|
109
110
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
110
111
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
111
112
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=CXwTfD3wSQq3okcqwigpprbHhSURUokh4GK2OmOyKC8,9132
|
112
113
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
113
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
114
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=hrFO0Xcx7Z_pzT-0farwQwZ-Wxp0AZX1SD-qPn7GVto,109244
|
114
115
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=HJ-Syp3p7RpyR_OK0X_a2kSyISfu3W-PKrRI16iY0a8,957
|
115
116
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=n82J15S8bjeMZ5uROu--P3hnbQoxkY5v7RPHYx7g7ro,2929
|
116
117
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
@@ -135,15 +136,15 @@ airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.p
|
|
135
136
|
airbyte_cdk/sources/declarative/requesters/http_job_repository.py,sha256=o0520AmHMb7SAoeokVNwoOzuZzIAT6ryx9uFYGSOrs0,8664
|
136
137
|
airbyte_cdk/sources/declarative/requesters/http_requester.py,sha256=RqYPkgJFAWfcZBTc-JBcGHPm4JL1ZQOhs9GKU4MP2eE,14723
|
137
138
|
airbyte_cdk/sources/declarative/requesters/paginators/__init__.py,sha256=uArbKs9JKNCt7t9tZoeWwjDpyI1HoPp29FNW0JzvaEM,644
|
138
|
-
airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py,sha256=
|
139
|
-
airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py,sha256
|
140
|
-
airbyte_cdk/sources/declarative/requesters/paginators/paginator.py,sha256=
|
139
|
+
airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py,sha256=FnSl3qPvv5wD6ieAI2Ic5c4dqBk-3fRe4tCaWzq3YwM,11840
|
140
|
+
airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py,sha256=j6j9QRPaTbKQ2N661RFVKthhkWiodEp6ut0tKeEd0Ng,2019
|
141
|
+
airbyte_cdk/sources/declarative/requesters/paginators/paginator.py,sha256=OlN-y0PEOMzlUNUh3pzonoTpIJpGwkP4ibFengvpLVU,2230
|
141
142
|
airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py,sha256=2gly8fuZpDNwtu1Qg6oE2jBLGqQRdzSLJdnpk_iDV6I,767
|
142
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py,sha256=
|
143
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py,sha256=
|
144
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py,sha256=
|
145
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=
|
146
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256
|
143
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py,sha256=yLzzK5YIRTkXd2Z-BS__AZXuTd6HXjJIxq05K-lQoxI,3898
|
144
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py,sha256=WvGt_DTFcAgTR-NHrlrR7B71yG-L6jmfW-Gwm9iYzjY,3624
|
145
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py,sha256=Z2i6a-oKMmOTxHxsTVSnyaShkJ3u8xZw1xIJdx2yxss,2731
|
146
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=ZBshGQNr5Bb_V8dqnWRISqdXFcjm1CKIXnlfbRhNl8g,1308
|
147
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256=LoKXdUbSgHEtSwtA8DFrnX6SpQbRVVwreY8NguTKTcI,2229
|
147
148
|
airbyte_cdk/sources/declarative/requesters/request_option.py,sha256=_qmv8CLQQ3fERt6BuMZeRu6tZXscPoeARx1VJdWMQ_M,1055
|
148
149
|
airbyte_cdk/sources/declarative/requesters/request_options/__init__.py,sha256=WCwpKqM4wKqy-DHJaCHbKAlFqRVOqMi9K5qonxIfi_Y,809
|
149
150
|
airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py,sha256=FLkg0uzC9bc-zFnALWr0FLYpKsz8iK2xQsd4UOyeW08,3706
|
@@ -159,9 +160,9 @@ airbyte_cdk/sources/declarative/resolvers/components_resolver.py,sha256=KPjKc0yb
|
|
159
160
|
airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=dz4iJV9liD_LzY_Mn4XmAStoUll60R3MIGWV4aN3pgg,5223
|
160
161
|
airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=AiojNs8wItJFrENZBFUaDvau3sgwudO6Wkra36upSPo,4639
|
161
162
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=ix9m1dkR69DcXCXUKC5RK_ZZM7ojTLBQ4IkWQTfmfCk,456
|
162
|
-
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=
|
163
|
+
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=kX9ltelK2xLIBWDJBK2ucrvVe5tc5xmhdbVbgsjvlxY,3696
|
163
164
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
164
|
-
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=
|
165
|
+
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=jxQ_9xcVD07r9PKhofitAqMkdX1k8ZNyy50qz5NwkFs,24540
|
165
166
|
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=HztgVVaZdil5UfgUZcv_Hyy84r89_EKRwyO2hoewNVg,749
|
166
167
|
airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=KTACrIE23a83wsm3Rd9Eb4K6-20lrGqYxTHNp9yxsso,1820
|
167
168
|
airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=H6A3NQ6kPPM-cUNPmdvDPc9xNzR1rQNrK95GbgCW334,8822
|
@@ -171,11 +172,12 @@ airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLn
|
|
171
172
|
airbyte_cdk/sources/declarative/spec/__init__.py,sha256=H0UwoRhgucbKBIzg85AXrifybVmfpwWpPdy22vZKVuo,141
|
172
173
|
airbyte_cdk/sources/declarative/spec/spec.py,sha256=ODSNUgkDOhnLQnwLjgSaME6R3kNeywjROvbNrWEnsgU,1876
|
173
174
|
airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=sI9vhc95RwJYOnA0VKjcbtKgFcmAbWjhdWBXFbAijOs,176
|
174
|
-
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=
|
175
|
+
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=RW1Q44ml-VWeMl4lNcV6EfyzrzCZkjj-hd0Omx_n_n4,3405
|
175
176
|
airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
|
176
177
|
airbyte_cdk/sources/declarative/transformations/__init__.py,sha256=CPJ8TlMpiUmvG3624VYu_NfTzxwKcfBjM2Q2wJ7fkSA,919
|
177
178
|
airbyte_cdk/sources/declarative/transformations/add_fields.py,sha256=r4YdAuAk2bQtNWJMztIIy2CC-NglD9NeK1s1TeO9wkw,5027
|
178
179
|
airbyte_cdk/sources/declarative/transformations/flatten_fields.py,sha256=ti9fLVk-EpMeDY7ImduvQq1YGounLYmH9dHzp7MIRxk,1703
|
180
|
+
airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py,sha256=vbIn6ump-Ut6g20yMub7PFoPBhOKVtrHSAUdcOUdLfw,1999
|
179
181
|
airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py,sha256=RTs5KX4V3hM7A6QN1WlGF21YccTIyNH6qQI9IMb__hw,670
|
180
182
|
airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py,sha256=43zwe6_F5ba5C4eY0RgXxPz7ndPKZfXGChHepFn-2lk,2263
|
181
183
|
airbyte_cdk/sources/declarative/transformations/remove_fields.py,sha256=EwUP0SZ2p4GRJ6Q8CUzlz9dcUeEidEFDlI2IBye2tlc,2745
|
@@ -193,7 +195,7 @@ airbyte_cdk/sources/file_based/availability_strategy/__init__.py,sha256=ddKQfUmk
|
|
193
195
|
airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py,sha256=01Nd4b7ERAbp-OZo_8rrAzFXWPTMwr02SnWiN17nx8Q,2363
|
194
196
|
airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py,sha256=j9T5TimfWFUz7nqsaj-83G3xWmDpsmeSbDnaUNmz0UM,5849
|
195
197
|
airbyte_cdk/sources/file_based/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
196
|
-
airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py,sha256=
|
198
|
+
airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py,sha256=gigLToFfWcRhE2ppPFyojW2S1boMc5dtrO4w7BZjaks,6662
|
197
199
|
airbyte_cdk/sources/file_based/config/avro_format.py,sha256=NxTF96ewzn6HuhgodsY7Rpb-ybr1ZEWW5d4Vid64g5A,716
|
198
200
|
airbyte_cdk/sources/file_based/config/csv_format.py,sha256=NWekkyT8dTwiVK0mwa_krQD4FJPHSDfILo8kPAg3-Vs,8006
|
199
201
|
airbyte_cdk/sources/file_based/config/excel_format.py,sha256=9qAmTsT6SoVzNfNv0oBVkVCmiyqQuVAbfRKajjoa7Js,378
|
@@ -205,8 +207,8 @@ airbyte_cdk/sources/file_based/discovery_policy/__init__.py,sha256=gl3ey6mZbyfra
|
|
205
207
|
airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py,sha256=dCfXX529Rd5rtopg4VeEgTPJjFtqjtjzPq6LCw18Wt0,605
|
206
208
|
airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py,sha256=-xujTidtrq6HC00WKbjQh1CZdT5LMuzkp5BLjqDmfTY,1007
|
207
209
|
airbyte_cdk/sources/file_based/exceptions.py,sha256=KfOgQgssBKgsv3h5po2IG1DhZcH664Zf_fx96mBlPSg,6761
|
208
|
-
airbyte_cdk/sources/file_based/file_based_source.py,sha256=
|
209
|
-
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=
|
210
|
+
airbyte_cdk/sources/file_based/file_based_source.py,sha256=0rKW1XQjj6Up-e_y5ls5b9k7dWAASQHkuWy7RaDxs9Y,17303
|
211
|
+
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=oyncQrFQT72QoG6-0EtGaN3Woob8XG_mOBfHRMxXDZ4,6905
|
210
212
|
airbyte_cdk/sources/file_based/file_types/__init__.py,sha256=blCLn0-2LC-ZdgcNyDEhqM2RiUvEjEBh-G4-t32ZtuM,1268
|
211
213
|
airbyte_cdk/sources/file_based/file_types/avro_parser.py,sha256=XNx-JC-sgzH9u3nOJ2M59FxBXvtig8LN6BIkeDOavZA,10858
|
212
214
|
airbyte_cdk/sources/file_based/file_types/csv_parser.py,sha256=QlCXB-ry3np67Q_VerQEPoWDOTcPTB6Go4ydZxY9ae4,20445
|
@@ -340,8 +342,8 @@ airbyte_cdk/utils/slice_hasher.py,sha256=-pHexlNYoWYPnXNH-M7HEbjmeJe9Zk7SJijdQ7d
|
|
340
342
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
341
343
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
342
344
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
343
|
-
airbyte_cdk-6.13.1.
|
344
|
-
airbyte_cdk-6.13.1.
|
345
|
-
airbyte_cdk-6.13.1.
|
346
|
-
airbyte_cdk-6.13.1.
|
347
|
-
airbyte_cdk-6.13.1.
|
345
|
+
airbyte_cdk-6.13.1.dev4103.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
346
|
+
airbyte_cdk-6.13.1.dev4103.dist-info/METADATA,sha256=7w66i7NG1CTwTQ04m4ojAQhBZCjtIWCrnFUfe2SnCoY,5996
|
347
|
+
airbyte_cdk-6.13.1.dev4103.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
348
|
+
airbyte_cdk-6.13.1.dev4103.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
349
|
+
airbyte_cdk-6.13.1.dev4103.dist-info/RECORD,,
|
File without changes
|
File without changes
|
{airbyte_cdk-6.13.1.dev4100.dist-info → airbyte_cdk-6.13.1.dev4103.dist-info}/entry_points.txt
RENAMED
File without changes
|