airbyte-cdk 6.44.0__py3-none-any.whl → 6.45.0.dev4100__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/connector_builder/connector_builder_handler.py +6 -45
- airbyte_cdk/connector_builder/main.py +2 -5
- airbyte_cdk/models/__init__.py +1 -0
- airbyte_cdk/models/airbyte_protocol.py +1 -3
- airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +1 -1
- airbyte_cdk/sources/declarative/async_job/job.py +0 -6
- airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +18 -18
- airbyte_cdk/sources/declarative/async_job/job_tracker.py +6 -22
- airbyte_cdk/sources/declarative/checks/__init__.py +2 -5
- airbyte_cdk/sources/declarative/checks/check_stream.py +11 -113
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py +8 -0
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +49 -93
- airbyte_cdk/sources/declarative/extractors/record_selector.py +6 -1
- airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +1 -2
- airbyte_cdk/sources/declarative/interpolation/macros.py +4 -8
- airbyte_cdk/sources/declarative/manifest_declarative_source.py +2 -23
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +42 -68
- airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +4 -16
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +42 -83
- airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -4
- airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +1 -5
- airbyte_cdk/sources/declarative/retrievers/file_uploader.py +89 -0
- airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +9 -4
- airbyte_cdk/sources/declarative/transformations/add_fields.py +1 -3
- airbyte_cdk/sources/file_based/file_based_stream_reader.py +9 -9
- airbyte_cdk/sources/file_based/file_record_data.py +24 -0
- airbyte_cdk/sources/file_based/file_types/file_transfer.py +8 -15
- airbyte_cdk/sources/file_based/schema_helpers.py +11 -1
- airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -1
- airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +16 -31
- airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +1 -3
- airbyte_cdk/sources/streams/concurrent/default_stream.py +3 -0
- airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -4
- airbyte_cdk/sources/types.py +11 -2
- airbyte_cdk/sources/utils/files_directory.py +15 -0
- airbyte_cdk/sources/utils/record_helper.py +8 -8
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/RECORD +42 -41
- airbyte_cdk/models/file_transfer_record_message.py +0 -13
- airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -150
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.44.0.dist-info → airbyte_cdk-6.45.0.dev4100.dist-info}/entry_points.txt +0 -0
@@ -61,9 +61,7 @@ class PermissionsFileBasedStream(DefaultFileBasedStream):
|
|
61
61
|
permissions_record = self.transform_record(
|
62
62
|
permissions_record, file, file_datetime_string
|
63
63
|
)
|
64
|
-
yield stream_data_to_airbyte_message(
|
65
|
-
self.name, permissions_record, is_file_transfer_message=False
|
66
|
-
)
|
64
|
+
yield stream_data_to_airbyte_message(self.name, permissions_record)
|
67
65
|
except Exception as e:
|
68
66
|
self.logger.error(f"Failed to retrieve permissions for file {file.uri}: {str(e)}")
|
69
67
|
yield AirbyteMessage(
|
@@ -29,6 +29,7 @@ class DefaultStream(AbstractStream):
|
|
29
29
|
logger: Logger,
|
30
30
|
cursor: Cursor,
|
31
31
|
namespace: Optional[str] = None,
|
32
|
+
supports_file_transfer: bool = False,
|
32
33
|
) -> None:
|
33
34
|
self._stream_partition_generator = partition_generator
|
34
35
|
self._name = name
|
@@ -39,6 +40,7 @@ class DefaultStream(AbstractStream):
|
|
39
40
|
self._logger = logger
|
40
41
|
self._cursor = cursor
|
41
42
|
self._namespace = namespace
|
43
|
+
self._supports_file_transfer = supports_file_transfer
|
42
44
|
|
43
45
|
def generate_partitions(self) -> Iterable[Partition]:
|
44
46
|
yield from self._stream_partition_generator.generate()
|
@@ -68,6 +70,7 @@ class DefaultStream(AbstractStream):
|
|
68
70
|
json_schema=dict(self._json_schema),
|
69
71
|
supported_sync_modes=[SyncMode.full_refresh],
|
70
72
|
is_resumable=False,
|
73
|
+
is_file_based=self._supports_file_transfer,
|
71
74
|
)
|
72
75
|
|
73
76
|
if self._namespace:
|
@@ -71,10 +71,6 @@ class AbstractStreamStateConverter(ABC):
|
|
71
71
|
for stream_slice in state.get("slices", []):
|
72
72
|
stream_slice[self.START_KEY] = self._from_state_message(stream_slice[self.START_KEY])
|
73
73
|
stream_slice[self.END_KEY] = self._from_state_message(stream_slice[self.END_KEY])
|
74
|
-
if self.MOST_RECENT_RECORD_KEY in stream_slice:
|
75
|
-
stream_slice[self.MOST_RECENT_RECORD_KEY] = self._from_state_message(
|
76
|
-
stream_slice[self.MOST_RECENT_RECORD_KEY]
|
77
|
-
)
|
78
74
|
return state
|
79
75
|
|
80
76
|
def serialize(
|
airbyte_cdk/sources/types.py
CHANGED
@@ -6,6 +6,7 @@ from __future__ import annotations
|
|
6
6
|
|
7
7
|
from typing import Any, ItemsView, Iterator, KeysView, List, Mapping, Optional, ValuesView
|
8
8
|
|
9
|
+
from airbyte_cdk.models import AirbyteRecordMessageFileReference
|
9
10
|
from airbyte_cdk.utils.slice_hasher import SliceHasher
|
10
11
|
|
11
12
|
# A FieldPointer designates a path to a field inside a mapping. For example, retrieving ["k1", "k1.2"] in the object {"k1" :{"k1.2":
|
@@ -23,12 +24,12 @@ class Record(Mapping[str, Any]):
|
|
23
24
|
data: Mapping[str, Any],
|
24
25
|
stream_name: str,
|
25
26
|
associated_slice: Optional[StreamSlice] = None,
|
26
|
-
|
27
|
+
file_reference: Optional[AirbyteRecordMessageFileReference] = None,
|
27
28
|
):
|
28
29
|
self._data = data
|
29
30
|
self._associated_slice = associated_slice
|
30
31
|
self.stream_name = stream_name
|
31
|
-
self.
|
32
|
+
self._file_reference = file_reference
|
32
33
|
|
33
34
|
@property
|
34
35
|
def data(self) -> Mapping[str, Any]:
|
@@ -38,6 +39,14 @@ class Record(Mapping[str, Any]):
|
|
38
39
|
def associated_slice(self) -> Optional[StreamSlice]:
|
39
40
|
return self._associated_slice
|
40
41
|
|
42
|
+
@property
|
43
|
+
def file_reference(self) -> AirbyteRecordMessageFileReference:
|
44
|
+
return self._file_reference
|
45
|
+
|
46
|
+
@file_reference.setter
|
47
|
+
def file_reference(self, value: AirbyteRecordMessageFileReference) -> None:
|
48
|
+
self._file_reference = value
|
49
|
+
|
41
50
|
def __repr__(self) -> str:
|
42
51
|
return repr(self._data)
|
43
52
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
import os
|
5
|
+
|
6
|
+
AIRBYTE_STAGING_DIRECTORY = os.getenv("AIRBYTE_STAGING_DIRECTORY", "/staging/files")
|
7
|
+
DEFAULT_LOCAL_DIRECTORY = "/tmp/airbyte-file-transfer"
|
8
|
+
|
9
|
+
|
10
|
+
def get_files_directory() -> str:
|
11
|
+
return (
|
12
|
+
AIRBYTE_STAGING_DIRECTORY
|
13
|
+
if os.path.exists(AIRBYTE_STAGING_DIRECTORY)
|
14
|
+
else DEFAULT_LOCAL_DIRECTORY
|
15
|
+
)
|
@@ -9,10 +9,10 @@ from airbyte_cdk.models import (
|
|
9
9
|
AirbyteLogMessage,
|
10
10
|
AirbyteMessage,
|
11
11
|
AirbyteRecordMessage,
|
12
|
+
AirbyteRecordMessageFileReference,
|
12
13
|
AirbyteTraceMessage,
|
13
14
|
)
|
14
15
|
from airbyte_cdk.models import Type as MessageType
|
15
|
-
from airbyte_cdk.models.file_transfer_record_message import AirbyteFileTransferRecordMessage
|
16
16
|
from airbyte_cdk.sources.streams.core import StreamData
|
17
17
|
from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer
|
18
18
|
|
@@ -22,7 +22,7 @@ def stream_data_to_airbyte_message(
|
|
22
22
|
data_or_message: StreamData,
|
23
23
|
transformer: TypeTransformer = TypeTransformer(TransformConfig.NoTransform),
|
24
24
|
schema: Optional[Mapping[str, Any]] = None,
|
25
|
-
|
25
|
+
file_reference: Optional[AirbyteRecordMessageFileReference] = None,
|
26
26
|
) -> AirbyteMessage:
|
27
27
|
if schema is None:
|
28
28
|
schema = {}
|
@@ -36,12 +36,12 @@ def stream_data_to_airbyte_message(
|
|
36
36
|
# taken unless configured. See
|
37
37
|
# docs/connector-development/cdk-python/schemas.md for details.
|
38
38
|
transformer.transform(data, schema)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
39
|
+
message = AirbyteRecordMessage(
|
40
|
+
stream=stream_name,
|
41
|
+
data=data,
|
42
|
+
emitted_at=now_millis,
|
43
|
+
file_reference=file_reference,
|
44
|
+
)
|
45
45
|
return AirbyteMessage(type=MessageType.RECORD, record=message)
|
46
46
|
case AirbyteTraceMessage():
|
47
47
|
return AirbyteMessage(type=MessageType.TRACE, trace=data_or_message)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.45.0.dev4100
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -22,7 +22,7 @@ Provides-Extra: sql
|
|
22
22
|
Provides-Extra: vector-db-based
|
23
23
|
Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
|
24
24
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
25
|
-
Requires-Dist: airbyte-protocol-models-dataclasses (
|
25
|
+
Requires-Dist: airbyte-protocol-models-dataclasses (==0.14.4.dev1743719077)
|
26
26
|
Requires-Dist: anyascii (>=0.3.2,<0.4.0)
|
27
27
|
Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
|
28
28
|
Requires-Dist: backoff
|
@@ -7,8 +7,8 @@ airbyte_cdk/config_observation.py,sha256=7SSPxtN0nXPkm4euGNcTTr1iLbwUL01jy-24V1H
|
|
7
7
|
airbyte_cdk/connector.py,sha256=bO23kdGRkl8XKFytOgrrWFc_VagteTHVEF6IsbizVkM,4224
|
8
8
|
airbyte_cdk/connector_builder/README.md,sha256=Hw3wvVewuHG9-QgsAq1jDiKuLlStDxKBz52ftyNRnBw,1665
|
9
9
|
airbyte_cdk/connector_builder/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
10
|
-
airbyte_cdk/connector_builder/connector_builder_handler.py,sha256=
|
11
|
-
airbyte_cdk/connector_builder/main.py,sha256=
|
10
|
+
airbyte_cdk/connector_builder/connector_builder_handler.py,sha256=BntqkP63RBPvGCtB3CrLLtYplfSlBR42kwXyyk4YGas,4268
|
11
|
+
airbyte_cdk/connector_builder/main.py,sha256=ubAPE0Oo5gjZOa-KMtLLJQkc8_inUpFR3sIb2DEh2No,3722
|
12
12
|
airbyte_cdk/connector_builder/models.py,sha256=9pIZ98LW_d6fRS39VdnUOf3cxGt4TkC5MJ0_OrzcCRk,1578
|
13
13
|
airbyte_cdk/connector_builder/test_reader/__init__.py,sha256=iTwBMoI9vaJotEgpqZbFjlxRcbxXYypSVJ9YxeHk7wc,120
|
14
14
|
airbyte_cdk/connector_builder/test_reader/helpers.py,sha256=Iczn-_iczS2CaIAunWwyFcX0uLTra8Wh9JVfzm1Gfxo,26765
|
@@ -29,16 +29,15 @@ airbyte_cdk/destinations/vector_db_based/writer.py,sha256=nZ00xPiohElJmYktEZZIhr
|
|
29
29
|
airbyte_cdk/entrypoint.py,sha256=NRJv5BNZRSUEVTmNBa9N7ih6fW5sg4DwL0nkB9kI99Y,18570
|
30
30
|
airbyte_cdk/exception_handler.py,sha256=D_doVl3Dt60ASXlJsfviOCswxGyKF2q0RL6rif3fNks,2013
|
31
31
|
airbyte_cdk/logger.py,sha256=1cURbvawbunCAV178q-XhTHcbAQZTSf07WhU7U9AXWU,3744
|
32
|
-
airbyte_cdk/models/__init__.py,sha256=
|
33
|
-
airbyte_cdk/models/airbyte_protocol.py,sha256=
|
32
|
+
airbyte_cdk/models/__init__.py,sha256=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
|
33
|
+
airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
|
34
34
|
airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=s6SaFB2CMrG_7jTQGn_fhFbQ1FUxhCxf5kq2RWGHMVI,1749
|
35
|
-
airbyte_cdk/models/file_transfer_record_message.py,sha256=J-E-43KOmUFdpsjeKlEfNnnZRSB-Gb5AGZjonR25Drc,323
|
36
35
|
airbyte_cdk/models/well_known_types.py,sha256=EquepbisGPuCSrs_D7YVVnMR9-ShhUr21wnFz3COiJs,156
|
37
36
|
airbyte_cdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
37
|
airbyte_cdk/sources/__init__.py,sha256=45J83QsFH3Wky3sVapZWg4C58R_i1thm61M06t2c1AQ,1156
|
39
38
|
airbyte_cdk/sources/abstract_source.py,sha256=50vxEBRByiNhT4WJkiFvgM-C6PWqKSJgvuNC_aeg2cw,15547
|
40
39
|
airbyte_cdk/sources/concurrent_source/__init__.py,sha256=3D_RJsxQfiLboSCDdNei1Iv-msRp3DXsas6E9kl7dXc,386
|
41
|
-
airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py,sha256=
|
40
|
+
airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py,sha256=P_GA5QayzehCf0ksUbEbGoNixBnauzsepv-0ICzhH4w,12691
|
42
41
|
airbyte_cdk/sources/concurrent_source/concurrent_source.py,sha256=Bq54JBp8HUz7lGhladoX-dpyscX77Kxbs32bLwWdjdI,7737
|
43
42
|
airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py,sha256=f9PIRPWn2tXu0-bxVeYHL2vYdqCzZ_kgpHg5_Ep-cfQ,6103
|
44
43
|
airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py,sha256=z1t-rAZBsqVidv2fpUlPHE9JgyXsITuGk4AMu96mXSQ,696
|
@@ -48,9 +47,9 @@ airbyte_cdk/sources/config.py,sha256=wtwFF_7G_S2KB0IE2W5LBs7RO5e7EbgCAMzJpTcYTKo
|
|
48
47
|
airbyte_cdk/sources/connector_state_manager.py,sha256=hw3TJJWl3UJKSDsH-PypFQU7mD0ifffh1Noz-t_THr8,7486
|
49
48
|
airbyte_cdk/sources/declarative/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
50
49
|
airbyte_cdk/sources/declarative/async_job/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
-
airbyte_cdk/sources/declarative/async_job/job.py,sha256=
|
52
|
-
airbyte_cdk/sources/declarative/async_job/job_orchestrator.py,sha256=
|
53
|
-
airbyte_cdk/sources/declarative/async_job/job_tracker.py,sha256=
|
50
|
+
airbyte_cdk/sources/declarative/async_job/job.py,sha256=V4Z6NohXwTlOavDbD-tUUQxOr7Lzpb_r4tRC64AfvDE,1702
|
51
|
+
airbyte_cdk/sources/declarative/async_job/job_orchestrator.py,sha256=4uNdRLAx6PA5ESrvsxg9sYwQBDwRCIBh58E9byqfl3k,22207
|
52
|
+
airbyte_cdk/sources/declarative/async_job/job_tracker.py,sha256=oAaqKxj5dGKeF5wkqiOZbu5gW6JvtaROxirDU2KqT1o,2565
|
54
53
|
airbyte_cdk/sources/declarative/async_job/repository.py,sha256=2OkWiZp5IKTOi_SIpP1U-Rw3gH36LBy_a8CgXoENTtg,1044
|
55
54
|
airbyte_cdk/sources/declarative/async_job/status.py,sha256=mkExR-uOAO1ckUnclaUOa74l2N9CdhLbVFM6KDoBgBM,715
|
56
55
|
airbyte_cdk/sources/declarative/async_job/timer.py,sha256=Fb8P72CQ7jIzJyzMSSNuBf2vt8bmrg9SrfmNxKwph2A,1242
|
@@ -61,17 +60,17 @@ airbyte_cdk/sources/declarative/auth/oauth.py,sha256=SUfib1oSzlyRRnOSg8Bui73mfyr
|
|
61
60
|
airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
|
62
61
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
|
63
62
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=Jzuxlmt1_-_aFC_n0OmP8L1nDOacLzbEVVx3kjdX_W8,3104
|
64
|
-
airbyte_cdk/sources/declarative/checks/__init__.py,sha256=
|
63
|
+
airbyte_cdk/sources/declarative/checks/__init__.py,sha256=nsVV5Bo0E_tBNd8A4Xdsdb-75PpcLo5RQu2RQ_Gv-ME,806
|
65
64
|
airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py,sha256=HUktywjI8pqOeED08UGqponUSwxs2TOAECTowlWlrRE,2138
|
66
|
-
airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=
|
65
|
+
airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=dAA-UhmMj0WLXCkRQrilWCfJmncBzXCZ18ptRNip3XA,2139
|
67
66
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
68
67
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
69
68
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
70
|
-
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=
|
69
|
+
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=nqqcSe2FeycTpYz3KsFomeOzRWxGYc2G5YfFNQrMKlI,28113
|
71
70
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
72
71
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
|
73
72
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
74
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
73
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=ODfyOdphT_qp0Ql8KwvgON1GrzFOADMe-xJNfBRGzIY,152174
|
75
74
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
76
75
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
|
77
76
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
|
@@ -89,11 +88,11 @@ airbyte_cdk/sources/declarative/extractors/dpath_extractor.py,sha256=wR4Ol4MG2lt
|
|
89
88
|
airbyte_cdk/sources/declarative/extractors/http_selector.py,sha256=2zWZ4ewTqQC8VwkjS0xD_u350Km3SiYP7hpOOgiLg5o,1169
|
90
89
|
airbyte_cdk/sources/declarative/extractors/record_extractor.py,sha256=XJELMjahAsaomlvQgN2zrNO0DJX0G0fr9r682gUz7Pg,691
|
91
90
|
airbyte_cdk/sources/declarative/extractors/record_filter.py,sha256=yTdEkyDUSW2KbFkEwJJMlS963C955LgCCOVfTmmScpQ,3367
|
92
|
-
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=
|
91
|
+
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=Xg4e0exJ5Tq8I346uD2-HjpCsAUFLgPPcNKa0UoHjV8,7178
|
93
92
|
airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=WJyA2OYIEgFpVP5Y3o0tIj69AV6IKkn9B16MeXaEItI,6513
|
94
93
|
airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
|
95
94
|
airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=U1oZKtBaEC6IACmvziY9Wzg7Z8EgF4ZuR7NwvjlB_Sk,1255
|
96
|
-
airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=
|
95
|
+
airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=MT5JbdEbnPzk3VWZGGvThe4opoX5dHhSXFrnTRYC6dg,22210
|
97
96
|
airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=Rbe6lJLTtZ5en33MwZiB9-H9-AwDMNHgwBZs8EqhYqk,22172
|
98
97
|
airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
|
99
98
|
airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py,sha256=2tsE6FgXzemf4fZZ4uGtd8QpRBl9GJ2CRqSNJE5p0EI,16077
|
@@ -108,27 +107,26 @@ airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py,sha
|
|
108
107
|
airbyte_cdk/sources/declarative/interpolation/interpolated_string.py,sha256=CQkHqGlfa87G6VYMtBAQWin7ECKpfMdrDcg0JO5_rhc,3212
|
109
108
|
airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=9IoeuWam3L6GyN10L6U8xNWXmkt9cnahSDNkez1OmFY,982
|
110
109
|
airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=UQeuS4Vpyp4hlOn-R3tRyeBX0e9IoV6jQ6gH-Jz8lY0,7182
|
111
|
-
airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=
|
112
|
-
airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=
|
110
|
+
airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=HQKHKnjE17zKoPn27ZpTpugRZZQSaof4GVzUUZaV2eE,5081
|
111
|
+
airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=bgrVP227hsiPJO6QeZy0v1kmdjrjQM63dlDTaI0pAC8,18300
|
113
112
|
airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
114
113
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
115
114
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
116
115
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
117
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
116
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=rAOYVb4D4pkCarblFPrvu92R_uMTXjpiWShWFjW-RT4,108201
|
118
117
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
119
118
|
airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
|
120
119
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
121
|
-
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=
|
120
|
+
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=CXwTfD3wSQq3okcqwigpprbHhSURUokh4GK2OmOyKC8,9132
|
122
121
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
123
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
124
|
-
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=
|
122
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=FYMeJInXJQY4mHuitT9JOB6DJhAXowp5WTbX0vYLCP8,148882
|
123
|
+
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=HJ-Syp3p7RpyR_OK0X_a2kSyISfu3W-PKrRI16iY0a8,957
|
125
124
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
|
126
125
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
127
|
-
airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py,sha256=-W1CAg2NayCMDNj7QLWn7Nqipaz7av9sLjbMnyMGUek,6271
|
128
126
|
airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py,sha256=tmGGpMoOBmaMfhVZq53AEWxoHm2lmNVi6hA2_IVEnAA,4882
|
129
127
|
airbyte_cdk/sources/declarative/partition_routers/partition_router.py,sha256=YyEIzdmLd1FjbVP3QbQ2VFCLW_P-OGbVh6VpZShp54k,2218
|
130
128
|
airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py,sha256=SKzKjSyfccq4dxGIh-J6ejrgkCHzaiTIazmbmeQiRD4,1942
|
131
|
-
airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py,sha256=
|
129
|
+
airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py,sha256=C15zFH0r4uHZ7otsrm46lHy93uT0vJn1VGs7maFHOHA,19800
|
132
130
|
airbyte_cdk/sources/declarative/requesters/README.md,sha256=DQll2qsIzzTiiP35kJp16ONpr7cFeUQNgPfhl5krB24,2675
|
133
131
|
airbyte_cdk/sources/declarative/requesters/__init__.py,sha256=d7a3OoHbqaJDyyPli3nqqJ2yAW_SLX6XDaBAKOwvpxw,364
|
134
132
|
airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py,sha256=SkEDcJxlT1683rNx93K9whoS0OyUukkuOfToGtgpF58,776
|
@@ -172,6 +170,7 @@ airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=d
|
|
172
170
|
airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=AiojNs8wItJFrENZBFUaDvau3sgwudO6Wkra36upSPo,4639
|
173
171
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=nQepwG_RfW53sgwvK5dLPqfCx0VjsQ83nYoPjBMAaLM,527
|
174
172
|
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=6oZtnCHm9NdDvjTSrVwPQOXGSdETSIR7eWH2vFjM7jI,4855
|
173
|
+
airbyte_cdk/sources/declarative/retrievers/file_uploader.py,sha256=5hNGned-ATe4siXg_oJxcGbn6qwYViCZ1buN1i1DPe0,3348
|
175
174
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
176
175
|
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=p6O4FYS7zzPq6uQT2NVnughUjI66tePaXVlyhCAyyv0,27746
|
177
176
|
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
|
@@ -183,10 +182,10 @@ airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLn
|
|
183
182
|
airbyte_cdk/sources/declarative/spec/__init__.py,sha256=H0UwoRhgucbKBIzg85AXrifybVmfpwWpPdy22vZKVuo,141
|
184
183
|
airbyte_cdk/sources/declarative/spec/spec.py,sha256=ODSNUgkDOhnLQnwLjgSaME6R3kNeywjROvbNrWEnsgU,1876
|
185
184
|
airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=sI9vhc95RwJYOnA0VKjcbtKgFcmAbWjhdWBXFbAijOs,176
|
186
|
-
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=
|
185
|
+
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=cjKGm4r438dd1GxrFHJ4aYrdzG2bkncnwaWxAwlXR3M,3585
|
187
186
|
airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
|
188
187
|
airbyte_cdk/sources/declarative/transformations/__init__.py,sha256=CPJ8TlMpiUmvG3624VYu_NfTzxwKcfBjM2Q2wJ7fkSA,919
|
189
|
-
airbyte_cdk/sources/declarative/transformations/add_fields.py,sha256=
|
188
|
+
airbyte_cdk/sources/declarative/transformations/add_fields.py,sha256=vxLh0ekB0i_m8GYFpSad9T4S7eRxxtqZaigHLGVoltA,5366
|
190
189
|
airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py,sha256=I8oXPAOFhBV1mW_ufMn8Ii7oMbtect0sfLcpBNrKzzw,2374
|
191
190
|
airbyte_cdk/sources/declarative/transformations/flatten_fields.py,sha256=yT3owG6rMKaRX-LJ_T-jSTnh1B5NoAHyH4YZN9yOvE8,1758
|
192
191
|
airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py,sha256=vbIn6ump-Ut6g20yMub7PFoPBhOKVtrHSAUdcOUdLfw,1999
|
@@ -217,25 +216,26 @@ airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py,sha2
|
|
217
216
|
airbyte_cdk/sources/file_based/exceptions.py,sha256=WP0qkG6fpWoBpOyyicgp5YNE393VWyegq5qSy0v4QtM,7362
|
218
217
|
airbyte_cdk/sources/file_based/file_based_source.py,sha256=bIsut7ivHcl7YPO9cygDn0to23MRLu1Sym7jSr0Iy9A,20051
|
219
218
|
airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py,sha256=4e7FXqQ9hueacexC0SyrZyjF8oREYHza8pKF9CgKbD8,5050
|
220
|
-
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=
|
219
|
+
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=K19ejtmWLWt-q6ANXGy_VW6eMzVvkbkIaBVoOK3ahA8,6906
|
220
|
+
airbyte_cdk/sources/file_based/file_record_data.py,sha256=HXduy_owayUhgmbuswOl5UnszWPUAkRiNhDJgZVCVZI,471
|
221
221
|
airbyte_cdk/sources/file_based/file_types/__init__.py,sha256=blCLn0-2LC-ZdgcNyDEhqM2RiUvEjEBh-G4-t32ZtuM,1268
|
222
222
|
airbyte_cdk/sources/file_based/file_types/avro_parser.py,sha256=XNx-JC-sgzH9u3nOJ2M59FxBXvtig8LN6BIkeDOavZA,10858
|
223
223
|
airbyte_cdk/sources/file_based/file_types/csv_parser.py,sha256=QlCXB-ry3np67Q_VerQEPoWDOTcPTB6Go4ydZxY9ae4,20445
|
224
224
|
airbyte_cdk/sources/file_based/file_types/excel_parser.py,sha256=BeplCq0hmojELU6bZCvvpRLpQ9us81TqbGYwrhd3INo,7188
|
225
|
-
airbyte_cdk/sources/file_based/file_types/file_transfer.py,sha256=
|
225
|
+
airbyte_cdk/sources/file_based/file_types/file_transfer.py,sha256=5l2Jo6bp6neDmgM427PrZMZeqU0hCIZVWnzUZ_7BT10,1100
|
226
226
|
airbyte_cdk/sources/file_based/file_types/file_type_parser.py,sha256=JgpH21PrbRqwK92BJklZWvh2TndA6xZ-eP1LPMo44oQ,2832
|
227
227
|
airbyte_cdk/sources/file_based/file_types/jsonl_parser.py,sha256=GwyNyxmST4RX-XpXy7xVH0D-znYWWBmGv_pVAu95oHQ,5886
|
228
228
|
airbyte_cdk/sources/file_based/file_types/parquet_parser.py,sha256=XenFg5sJ-UBnIkSmsiNJRou11NO0zZXx-RXgPHMT2NA,10487
|
229
229
|
airbyte_cdk/sources/file_based/file_types/unstructured_parser.py,sha256=2TYOQl62FQPCa8otLbkDIk_j01EP3oWaKSfXGhCjCHg,19492
|
230
230
|
airbyte_cdk/sources/file_based/remote_file.py,sha256=yqRz93vPe8PBXLIMJ5W5u2JRlZRhg6sBrAjn3pPjJ8A,315
|
231
|
-
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=
|
231
|
+
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=9rmjlTSehwr7SeTFxQK_TaUTVZqBHHEzq0D6Cg5UTZQ,9924
|
232
232
|
airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py,sha256=FkByIyEy56x2_awYnxGPqGaOp7zAzpAoRkPZHKySI9M,536
|
233
233
|
airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py,sha256=kjvX7nOmUALYd7HuZHilUzgJPZ-MnZ08mtvuBnt2tQ0,618
|
234
234
|
airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py,sha256=vjTlmYT_nqzY3DbT5xem7X-bwgA9RyXHoKFqiMO2URk,1728
|
235
235
|
airbyte_cdk/sources/file_based/stream/__init__.py,sha256=q_zmeOHHg0JK5j1YNSOIsyXGz-wlTl_0E8z5GKVAcVM,543
|
236
236
|
airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py,sha256=9pQh3BHYcxm8CRC8XawfmBxL8O9HggpWwCCbX_ncINE,7509
|
237
237
|
airbyte_cdk/sources/file_based/stream/concurrent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
238
|
-
airbyte_cdk/sources/file_based/stream/concurrent/adapters.py,sha256=
|
238
|
+
airbyte_cdk/sources/file_based/stream/concurrent/adapters.py,sha256=2a9-wSbES-Ehh17WR0WHRuEhUAdhRm7gSl0Ztixzrwo,13851
|
239
239
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py,sha256=Rx7TwjH8B7e0eee83Tlqxv1bWn-BVXOmlUAH7auM1uM,344
|
240
240
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py,sha256=5dYZMLBEbvCyrCT89lCYdm2FdrLPLuxjdpQSVGP5o0w,1856
|
241
241
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py,sha256=gRTL-9I3ejjQOpLKd6ixe9rB3kGlubCdhUt9ri6AdAI,14880
|
@@ -243,9 +243,9 @@ airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_c
|
|
243
243
|
airbyte_cdk/sources/file_based/stream/cursor/__init__.py,sha256=MhFB5hOo8sjwvCh8gangaymdg3EJWYt_72brFOZt068,191
|
244
244
|
airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py,sha256=om-x3gZFPgWDpi15S9RxZmR36VHnk8sytgN6LlBQhAw,1934
|
245
245
|
airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py,sha256=VGV7xLyBribuBMVrXtO1xqkWJD86bl7yhXtjnwLMohM,7051
|
246
|
-
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=
|
246
|
+
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=0Z0yjMLAtDRINecu-XvijQyunz_F_BbGuTZu2cpYmYs,17463
|
247
247
|
airbyte_cdk/sources/file_based/stream/identities_stream.py,sha256=FZH83Geoy3K3nwUk2VVNJERFcXUTnl-4XljjucUM23s,1893
|
248
|
-
airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py,sha256=
|
248
|
+
airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py,sha256=6KxqdD3-VvwxDTk7TtZ0M32fga4CI3qZ9IKdAkySpx0,3844
|
249
249
|
airbyte_cdk/sources/file_based/types.py,sha256=INxG7OPnkdUP69oYNKMAbwhvV1AGvLRHs1J6pIia2FI,218
|
250
250
|
airbyte_cdk/sources/http_config.py,sha256=OBZeuyFilm6NlDlBhFQvHhTWabEvZww6OHDIlZujIS0,730
|
251
251
|
airbyte_cdk/sources/http_logger.py,sha256=H93kPAujHhPmXNX0JSFG3D-SL6yEFA5PtKot9Hu3TYA,1690
|
@@ -271,7 +271,7 @@ airbyte_cdk/sources/streams/concurrent/availability_strategy.py,sha256=4La5v2Uff
|
|
271
271
|
airbyte_cdk/sources/streams/concurrent/clamping.py,sha256=i26GVyui2ScEXSP-IP_61K2HaTp1-6lTlYHsZVYpuZA,3240
|
272
272
|
airbyte_cdk/sources/streams/concurrent/cursor.py,sha256=LFXbKBEMtNSVz_kZs9qydS9fPvzTU5wdgXRagRRJeHo,21388
|
273
273
|
airbyte_cdk/sources/streams/concurrent/cursor_types.py,sha256=ZyWLPpeLX1qXcP5MwS-wxK11IBMsnVPCw9zx8gA2_Ro,843
|
274
|
-
airbyte_cdk/sources/streams/concurrent/default_stream.py,sha256=
|
274
|
+
airbyte_cdk/sources/streams/concurrent/default_stream.py,sha256=3SBjFa1z955pSE_2qt1C7mAky-RKjOZeQDePbZkWYYs,3371
|
275
275
|
airbyte_cdk/sources/streams/concurrent/exceptions.py,sha256=JOZ446MCLpmF26r9KfS6OO_6rGjcjgJNZdcw6jccjEI,468
|
276
276
|
airbyte_cdk/sources/streams/concurrent/helpers.py,sha256=S6AW8TgIASCZ2UuUcQLE8OzgYUHWt2-KPOvNPwnQf-Q,1596
|
277
277
|
airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py,sha256=2t64b_z9cEPmlHZnjSiMTO8PEtEdiAJDG0JcYOtUqAE,3363
|
@@ -282,7 +282,7 @@ airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py,sha256=
|
|
282
282
|
airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py,sha256=nbdkkHoN0NFeSs7YUFfzY1Lg5Jrt8fWY_ln3YrhY-Ko,544
|
283
283
|
airbyte_cdk/sources/streams/concurrent/partitions/types.py,sha256=frPVvHtY7vLxpGEbMQzNvF1Y52ZVyct9f1DDhGoRjwY,1166
|
284
284
|
airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
285
|
-
airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py,sha256=
|
285
|
+
airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py,sha256=JCRanZBAC8a0pPuzHCHiJ1irHgFkDd83l2K5jA1xRkU,6853
|
286
286
|
airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py,sha256=x8MLm1pTMfLNHvMF3P1ixYkYt_xjpbaIwnvhY_ofdBo,8076
|
287
287
|
airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py,sha256=bC6L82nsErXcFSPlxcdp4SneJ7qFuqCelP3-8svEh5E,3054
|
288
288
|
airbyte_cdk/sources/streams/core.py,sha256=jiYW6w8cjNjzXMd8U8Gt-02fYYU7b0ciXSSSnGvFRak,32219
|
@@ -308,10 +308,11 @@ airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=C2j2uVfi9d
|
|
308
308
|
airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
|
309
309
|
airbyte_cdk/sources/streams/permissions/identities_stream.py,sha256=9O9k6k18Xm3Zsiw_vnI_jsHXfMCQiek6V-jMkJJLxn8,2621
|
310
310
|
airbyte_cdk/sources/streams/utils/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
311
|
-
airbyte_cdk/sources/types.py,sha256=
|
311
|
+
airbyte_cdk/sources/types.py,sha256=1oerHQpidFrIluUhWsM3-4Xst4wwUDqzkgtgZY0jjZU,5485
|
312
312
|
airbyte_cdk/sources/utils/__init__.py,sha256=TTN6VUxVy6Is8BhYQZR5pxJGQh8yH4duXh4O1TiMiEY,118
|
313
313
|
airbyte_cdk/sources/utils/casing.py,sha256=QC-gV1O4e8DR4-bhdXieUPKm_JamzslVyfABLYYRSXA,256
|
314
|
-
airbyte_cdk/sources/utils/
|
314
|
+
airbyte_cdk/sources/utils/files_directory.py,sha256=z8Dmr-wkL1sAqdwCST4MBUFAyMHPD2cJIzVdAuCynp8,391
|
315
|
+
airbyte_cdk/sources/utils/record_helper.py,sha256=7wL-pDYrBpcmZHa8ORtiSOqBZJEZI5hdl2dA1RYiatk,2029
|
315
316
|
airbyte_cdk/sources/utils/schema_helpers.py,sha256=bR3I70-e11S6B8r6VK-pthQXtcYrXojgXFvuK7lRrpg,8545
|
316
317
|
airbyte_cdk/sources/utils/slice_logger.py,sha256=qWWeFLAvigFz0b4O1_O3QDM1cy8PqZAMMgVPR2hEeb8,1778
|
317
318
|
airbyte_cdk/sources/utils/transform.py,sha256=0LOvIJg1vmg_70AiAVe-YHMr-LHrqEuxg9cm1BnYPDM,11725
|
@@ -359,9 +360,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
359
360
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
360
361
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
361
362
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
362
|
-
airbyte_cdk-6.
|
363
|
-
airbyte_cdk-6.
|
364
|
-
airbyte_cdk-6.
|
365
|
-
airbyte_cdk-6.
|
366
|
-
airbyte_cdk-6.
|
367
|
-
airbyte_cdk-6.
|
363
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
364
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
365
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/METADATA,sha256=76QoD2QmXEsG_pl2jSBzdCfwXFPPfSHMVZjXs98qkSg,6089
|
366
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
367
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
368
|
+
airbyte_cdk-6.45.0.dev4100.dist-info/RECORD,,
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
-
|
3
|
-
from dataclasses import dataclass
|
4
|
-
from typing import Any, Dict, Optional
|
5
|
-
|
6
|
-
|
7
|
-
@dataclass
|
8
|
-
class AirbyteFileTransferRecordMessage:
|
9
|
-
stream: str
|
10
|
-
file: Dict[str, Any]
|
11
|
-
emitted_at: int
|
12
|
-
namespace: Optional[str] = None
|
13
|
-
data: Optional[Dict[str, Any]] = None
|
@@ -1,150 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
|
-
#
|
4
|
-
|
5
|
-
from dataclasses import dataclass
|
6
|
-
from typing import Any, Iterable, Mapping, Optional
|
7
|
-
|
8
|
-
from airbyte_cdk.sources.declarative.partition_routers.partition_router import PartitionRouter
|
9
|
-
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
10
|
-
|
11
|
-
|
12
|
-
@dataclass
|
13
|
-
class GroupingPartitionRouter(PartitionRouter):
|
14
|
-
"""
|
15
|
-
A partition router that groups partitions from an underlying partition router into batches of a specified size.
|
16
|
-
This is useful for APIs that support filtering by multiple partition keys in a single request.
|
17
|
-
|
18
|
-
Attributes:
|
19
|
-
group_size (int): The number of partitions to include in each group.
|
20
|
-
underlying_partition_router (PartitionRouter): The partition router whose output will be grouped.
|
21
|
-
deduplicate (bool): If True, ensures unique partitions within each group by removing duplicates based on the partition key.
|
22
|
-
config (Config): The connector configuration.
|
23
|
-
parameters (Mapping[str, Any]): Additional parameters for interpolation and configuration.
|
24
|
-
"""
|
25
|
-
|
26
|
-
group_size: int
|
27
|
-
underlying_partition_router: PartitionRouter
|
28
|
-
config: Config
|
29
|
-
deduplicate: bool = True
|
30
|
-
|
31
|
-
def __post_init__(self) -> None:
|
32
|
-
self._state: Optional[Mapping[str, StreamState]] = {}
|
33
|
-
|
34
|
-
def stream_slices(self) -> Iterable[StreamSlice]:
|
35
|
-
"""
|
36
|
-
Lazily groups partitions from the underlying partition router into batches of size `group_size`.
|
37
|
-
|
38
|
-
This method processes partitions one at a time from the underlying router, maintaining a batch buffer.
|
39
|
-
When the buffer reaches `group_size` or the underlying router is exhausted, it yields a grouped slice.
|
40
|
-
If deduplication is enabled, it tracks seen partition keys to ensure uniqueness within the current batch.
|
41
|
-
|
42
|
-
Yields:
|
43
|
-
Iterable[StreamSlice]: An iterable of StreamSlice objects, where each slice contains a batch of partition values.
|
44
|
-
"""
|
45
|
-
batch = []
|
46
|
-
seen_keys = set()
|
47
|
-
|
48
|
-
# Iterate over partitions lazily from the underlying router
|
49
|
-
for partition in self.underlying_partition_router.stream_slices():
|
50
|
-
# Extract the partition key (assuming single key-value pair, e.g., {"board_ids": value})
|
51
|
-
partition_keys = list(partition.partition.keys())
|
52
|
-
# skip parent_slice as it is part of SubstreamPartitionRouter partition
|
53
|
-
if "parent_slice" in partition_keys:
|
54
|
-
partition_keys.remove("parent_slice")
|
55
|
-
if len(partition_keys) != 1:
|
56
|
-
raise ValueError(
|
57
|
-
f"GroupingPartitionRouter expects a single partition key-value pair. Got {partition.partition}"
|
58
|
-
)
|
59
|
-
key = partition.partition[partition_keys[0]]
|
60
|
-
|
61
|
-
# Skip duplicates if deduplication is enabled
|
62
|
-
if self.deduplicate and key in seen_keys:
|
63
|
-
continue
|
64
|
-
|
65
|
-
# Add partition to the batch
|
66
|
-
batch.append(partition)
|
67
|
-
if self.deduplicate:
|
68
|
-
seen_keys.add(key)
|
69
|
-
|
70
|
-
# Yield the batch when it reaches the group_size
|
71
|
-
if len(batch) == self.group_size:
|
72
|
-
self._state = self.underlying_partition_router.get_stream_state()
|
73
|
-
yield self._create_grouped_slice(batch)
|
74
|
-
batch = [] # Reset the batch
|
75
|
-
|
76
|
-
self._state = self.underlying_partition_router.get_stream_state()
|
77
|
-
# Yield any remaining partitions if the batch isn't empty
|
78
|
-
if batch:
|
79
|
-
yield self._create_grouped_slice(batch)
|
80
|
-
|
81
|
-
def _create_grouped_slice(self, batch: list[StreamSlice]) -> StreamSlice:
|
82
|
-
"""
|
83
|
-
Creates a grouped StreamSlice from a batch of partitions, aggregating extra fields into a dictionary with list values.
|
84
|
-
|
85
|
-
Args:
|
86
|
-
batch (list[StreamSlice]): A list of StreamSlice objects to group.
|
87
|
-
|
88
|
-
Returns:
|
89
|
-
StreamSlice: A single StreamSlice with combined partition and extra field values.
|
90
|
-
"""
|
91
|
-
# Combine partition values into a single dict with lists
|
92
|
-
grouped_partition = {
|
93
|
-
key: [p.partition.get(key) for p in batch] for key in batch[0].partition.keys()
|
94
|
-
}
|
95
|
-
|
96
|
-
# Aggregate extra fields into a dict with list values
|
97
|
-
extra_fields_dict = (
|
98
|
-
{
|
99
|
-
key: [p.extra_fields.get(key) for p in batch]
|
100
|
-
for key in set().union(*(p.extra_fields.keys() for p in batch if p.extra_fields))
|
101
|
-
}
|
102
|
-
if any(p.extra_fields for p in batch)
|
103
|
-
else {}
|
104
|
-
)
|
105
|
-
return StreamSlice(
|
106
|
-
partition=grouped_partition,
|
107
|
-
cursor_slice={}, # Cursor is managed by the underlying router or incremental sync
|
108
|
-
extra_fields=extra_fields_dict,
|
109
|
-
)
|
110
|
-
|
111
|
-
def get_request_params(
|
112
|
-
self,
|
113
|
-
stream_state: Optional[StreamState] = None,
|
114
|
-
stream_slice: Optional[StreamSlice] = None,
|
115
|
-
next_page_token: Optional[Mapping[str, Any]] = None,
|
116
|
-
) -> Mapping[str, Any]:
|
117
|
-
return {}
|
118
|
-
|
119
|
-
def get_request_headers(
|
120
|
-
self,
|
121
|
-
stream_state: Optional[StreamState] = None,
|
122
|
-
stream_slice: Optional[StreamSlice] = None,
|
123
|
-
next_page_token: Optional[Mapping[str, Any]] = None,
|
124
|
-
) -> Mapping[str, Any]:
|
125
|
-
return {}
|
126
|
-
|
127
|
-
def get_request_body_data(
|
128
|
-
self,
|
129
|
-
stream_state: Optional[StreamState] = None,
|
130
|
-
stream_slice: Optional[StreamSlice] = None,
|
131
|
-
next_page_token: Optional[Mapping[str, Any]] = None,
|
132
|
-
) -> Mapping[str, Any]:
|
133
|
-
return {}
|
134
|
-
|
135
|
-
def get_request_body_json(
|
136
|
-
self,
|
137
|
-
stream_state: Optional[StreamState] = None,
|
138
|
-
stream_slice: Optional[StreamSlice] = None,
|
139
|
-
next_page_token: Optional[Mapping[str, Any]] = None,
|
140
|
-
) -> Mapping[str, Any]:
|
141
|
-
return {}
|
142
|
-
|
143
|
-
def set_initial_state(self, stream_state: StreamState) -> None:
|
144
|
-
"""Delegate state initialization to the underlying partition router."""
|
145
|
-
self.underlying_partition_router.set_initial_state(stream_state)
|
146
|
-
self._state = self.underlying_partition_router.get_stream_state()
|
147
|
-
|
148
|
-
def get_stream_state(self) -> Optional[Mapping[str, StreamState]]:
|
149
|
-
"""Delegate state retrieval to the underlying partition router."""
|
150
|
-
return self._state
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|