airbyte-cdk 6.45.4.post52.dev14501809740__py3-none-any.whl → 6.45.5__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/models/__init__.py +0 -1
- airbyte_cdk/models/airbyte_protocol.py +3 -1
- airbyte_cdk/models/file_transfer_record_message.py +13 -0
- airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +1 -1
- airbyte_cdk/sources/declarative/auth/oauth.py +2 -2
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py +6 -10
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -36
- airbyte_cdk/sources/declarative/extractors/record_selector.py +1 -6
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -31
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +4 -40
- airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -9
- airbyte_cdk/sources/file_based/file_based_stream_reader.py +16 -38
- airbyte_cdk/sources/file_based/file_types/file_transfer.py +15 -8
- airbyte_cdk/sources/file_based/schema_helpers.py +1 -11
- airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +12 -3
- airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +38 -15
- airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +3 -1
- airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -3
- airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +28 -11
- airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +4 -27
- airbyte_cdk/sources/types.py +2 -11
- airbyte_cdk/sources/utils/record_helper.py +8 -8
- airbyte_cdk/test/mock_http/response_builder.py +0 -8
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/RECORD +29 -31
- airbyte_cdk/sources/declarative/retrievers/file_uploader.py +0 -89
- airbyte_cdk/sources/file_based/file_record_data.py +0 -23
- airbyte_cdk/sources/utils/files_directory.py +0 -15
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/entry_points.txt +0 -0
@@ -11,7 +11,7 @@ from functools import cache
|
|
11
11
|
from os import path
|
12
12
|
from typing import Any, Dict, Iterable, List, Mapping, MutableMapping, Optional, Set, Tuple, Union
|
13
13
|
|
14
|
-
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage,
|
14
|
+
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, FailureType, Level
|
15
15
|
from airbyte_cdk.models import Type as MessageType
|
16
16
|
from airbyte_cdk.sources.file_based.config.file_based_stream_config import PrimaryKeyType
|
17
17
|
from airbyte_cdk.sources.file_based.exceptions import (
|
@@ -56,7 +56,6 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
56
56
|
airbyte_columns = [ab_last_mod_col, ab_file_name_col]
|
57
57
|
use_file_transfer = False
|
58
58
|
preserve_directory_structure = True
|
59
|
-
_file_transfer = FileTransfer()
|
60
59
|
|
61
60
|
def __init__(self, **kwargs: Any):
|
62
61
|
if self.FILE_TRANSFER_KW in kwargs:
|
@@ -94,6 +93,21 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
94
93
|
self.config
|
95
94
|
)
|
96
95
|
|
96
|
+
def _filter_schema_invalid_properties(
|
97
|
+
self, configured_catalog_json_schema: Dict[str, Any]
|
98
|
+
) -> Dict[str, Any]:
|
99
|
+
if self.use_file_transfer:
|
100
|
+
return {
|
101
|
+
"type": "object",
|
102
|
+
"properties": {
|
103
|
+
"file_path": {"type": "string"},
|
104
|
+
"file_size": {"type": "string"},
|
105
|
+
self.ab_file_name_col: {"type": "string"},
|
106
|
+
},
|
107
|
+
}
|
108
|
+
else:
|
109
|
+
return super()._filter_schema_invalid_properties(configured_catalog_json_schema)
|
110
|
+
|
97
111
|
def _duplicated_files_names(
|
98
112
|
self, slices: List[dict[str, List[RemoteFile]]]
|
99
113
|
) -> List[dict[str, List[str]]]:
|
@@ -131,6 +145,14 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
131
145
|
record[self.ab_file_name_col] = file.uri
|
132
146
|
return record
|
133
147
|
|
148
|
+
def transform_record_for_file_transfer(
|
149
|
+
self, record: dict[str, Any], file: RemoteFile
|
150
|
+
) -> dict[str, Any]:
|
151
|
+
# timstamp() returns a float representing the number of seconds since the unix epoch
|
152
|
+
record[self.modified] = int(file.last_modified.timestamp()) * 1000
|
153
|
+
record[self.source_file_url] = file.uri
|
154
|
+
return record
|
155
|
+
|
134
156
|
def read_records_from_slice(self, stream_slice: StreamSlice) -> Iterable[AirbyteMessage]:
|
135
157
|
"""
|
136
158
|
Yield all records from all remote files in `list_files_for_this_sync`.
|
@@ -151,13 +173,19 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
151
173
|
|
152
174
|
try:
|
153
175
|
if self.use_file_transfer:
|
154
|
-
|
155
|
-
|
176
|
+
self.logger.info(f"{self.name}: {file} file-based syncing")
|
177
|
+
# todo: complete here the code to not rely on local parser
|
178
|
+
file_transfer = FileTransfer()
|
179
|
+
for record in file_transfer.get_file(
|
180
|
+
self.config, file, self.stream_reader, self.logger
|
156
181
|
):
|
182
|
+
line_no += 1
|
183
|
+
if not self.record_passes_validation_policy(record):
|
184
|
+
n_skipped += 1
|
185
|
+
continue
|
186
|
+
record = self.transform_record_for_file_transfer(record, file)
|
157
187
|
yield stream_data_to_airbyte_message(
|
158
|
-
self.name,
|
159
|
-
file_record_data.dict(exclude_none=True),
|
160
|
-
file_reference=file_reference,
|
188
|
+
self.name, record, is_file_transfer_message=True
|
161
189
|
)
|
162
190
|
else:
|
163
191
|
for record in parser.parse_records(
|
@@ -231,8 +259,6 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
231
259
|
|
232
260
|
@cache
|
233
261
|
def get_json_schema(self) -> JsonSchema:
|
234
|
-
if self.use_file_transfer:
|
235
|
-
return file_transfer_schema
|
236
262
|
extra_fields = {
|
237
263
|
self.ab_last_mod_col: {"type": "string"},
|
238
264
|
self.ab_file_name_col: {"type": "string"},
|
@@ -256,7 +282,9 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
256
282
|
return {"type": "object", "properties": {**extra_fields, **schema["properties"]}}
|
257
283
|
|
258
284
|
def _get_raw_json_schema(self) -> JsonSchema:
|
259
|
-
if self.
|
285
|
+
if self.use_file_transfer:
|
286
|
+
return file_transfer_schema
|
287
|
+
elif self.config.input_schema:
|
260
288
|
return self.config.get_input_schema() # type: ignore
|
261
289
|
elif self.config.schemaless:
|
262
290
|
return schemaless_schema
|
@@ -313,11 +341,6 @@ class DefaultFileBasedStream(AbstractFileBasedStream, IncrementalMixin):
|
|
313
341
|
self.config.globs or [], self.config.legacy_prefix, self.logger
|
314
342
|
)
|
315
343
|
|
316
|
-
def as_airbyte_stream(self) -> AirbyteStream:
|
317
|
-
file_stream = super().as_airbyte_stream()
|
318
|
-
file_stream.is_file_based = self.use_file_transfer
|
319
|
-
return file_stream
|
320
|
-
|
321
344
|
def infer_schema(self, files: List[RemoteFile]) -> Mapping[str, Any]:
|
322
345
|
loop = asyncio.get_event_loop()
|
323
346
|
schema = loop.run_until_complete(self._infer_schema(files))
|
@@ -61,7 +61,9 @@ 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(
|
64
|
+
yield stream_data_to_airbyte_message(
|
65
|
+
self.name, permissions_record, is_file_transfer_message=False
|
66
|
+
)
|
65
67
|
except Exception as e:
|
66
68
|
self.logger.error(f"Failed to retrieve permissions for file {file.uri}: {str(e)}")
|
67
69
|
yield AirbyteMessage(
|
@@ -29,7 +29,6 @@ class DefaultStream(AbstractStream):
|
|
29
29
|
logger: Logger,
|
30
30
|
cursor: Cursor,
|
31
31
|
namespace: Optional[str] = None,
|
32
|
-
supports_file_transfer: bool = False,
|
33
32
|
) -> None:
|
34
33
|
self._stream_partition_generator = partition_generator
|
35
34
|
self._name = name
|
@@ -40,7 +39,6 @@ class DefaultStream(AbstractStream):
|
|
40
39
|
self._logger = logger
|
41
40
|
self._cursor = cursor
|
42
41
|
self._namespace = namespace
|
43
|
-
self._supports_file_transfer = supports_file_transfer
|
44
42
|
|
45
43
|
def generate_partitions(self) -> Iterable[Partition]:
|
46
44
|
yield from self._stream_partition_generator.generate()
|
@@ -70,7 +68,6 @@ class DefaultStream(AbstractStream):
|
|
70
68
|
json_schema=dict(self._json_schema),
|
71
69
|
supported_sync_modes=[SyncMode.full_refresh],
|
72
70
|
is_resumable=False,
|
73
|
-
is_file_based=self._supports_file_transfer,
|
74
71
|
)
|
75
72
|
|
76
73
|
if self._namespace:
|
@@ -130,7 +130,7 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
130
130
|
headers = self.get_refresh_request_headers()
|
131
131
|
return headers if headers else None
|
132
132
|
|
133
|
-
def refresh_access_token(self) -> Tuple[str,
|
133
|
+
def refresh_access_token(self) -> Tuple[str, AirbyteDateTime]:
|
134
134
|
"""
|
135
135
|
Returns the refresh token and its expiration datetime
|
136
136
|
|
@@ -148,6 +148,14 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
148
148
|
# PRIVATE METHODS
|
149
149
|
# ----------------
|
150
150
|
|
151
|
+
def _default_token_expiry_date(self) -> AirbyteDateTime:
|
152
|
+
"""
|
153
|
+
Returns the default token expiry date
|
154
|
+
"""
|
155
|
+
# 1 hour was chosen as a middle ground to avoid unnecessary frequent refreshes and token expiration
|
156
|
+
default_token_expiry_duration_hours = 1 # 1 hour
|
157
|
+
return ab_datetime_now() + timedelta(hours=default_token_expiry_duration_hours)
|
158
|
+
|
151
159
|
def _wrap_refresh_token_exception(
|
152
160
|
self, exception: requests.exceptions.RequestException
|
153
161
|
) -> bool:
|
@@ -257,14 +265,10 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
257
265
|
|
258
266
|
def _parse_token_expiration_date(self, value: Union[str, int]) -> AirbyteDateTime:
|
259
267
|
"""
|
260
|
-
|
268
|
+
Parse a string or integer token expiration date into a datetime object
|
261
269
|
|
262
270
|
:return: expiration datetime
|
263
271
|
"""
|
264
|
-
if not value and not self.token_has_expired():
|
265
|
-
# No expiry token was provided but the previous one is not expired so it's fine
|
266
|
-
return self.get_token_expiry_date()
|
267
|
-
|
268
272
|
if self.token_expiry_is_time_of_expiration:
|
269
273
|
if not self.token_expiry_date_format:
|
270
274
|
raise ValueError(
|
@@ -308,17 +312,30 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
308
312
|
"""
|
309
313
|
return self._find_and_get_value_from_response(response_data, self.get_refresh_token_name())
|
310
314
|
|
311
|
-
def _extract_token_expiry_date(self, response_data: Mapping[str, Any]) ->
|
315
|
+
def _extract_token_expiry_date(self, response_data: Mapping[str, Any]) -> AirbyteDateTime:
|
312
316
|
"""
|
313
317
|
Extracts the token_expiry_date, like `expires_in` or `expires_at`, etc from the given response data.
|
314
318
|
|
319
|
+
If the token_expiry_date is not found, it will return an existing token expiry date if set, or a default token expiry date.
|
320
|
+
|
315
321
|
Args:
|
316
322
|
response_data (Mapping[str, Any]): The response data from which to extract the token_expiry_date.
|
317
323
|
|
318
324
|
Returns:
|
319
|
-
|
325
|
+
The extracted token_expiry_date or None if not found.
|
320
326
|
"""
|
321
|
-
|
327
|
+
expires_in = self._find_and_get_value_from_response(
|
328
|
+
response_data, self.get_expires_in_name()
|
329
|
+
)
|
330
|
+
if expires_in is not None:
|
331
|
+
return self._parse_token_expiration_date(expires_in)
|
332
|
+
|
333
|
+
# expires_in is None
|
334
|
+
existing_expiry_date = self.get_token_expiry_date()
|
335
|
+
if existing_expiry_date and not self.token_has_expired():
|
336
|
+
return existing_expiry_date
|
337
|
+
|
338
|
+
return self._default_token_expiry_date()
|
322
339
|
|
323
340
|
def _find_and_get_value_from_response(
|
324
341
|
self,
|
@@ -344,7 +361,7 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
344
361
|
"""
|
345
362
|
if current_depth > max_depth:
|
346
363
|
# this is needed to avoid an inf loop, possible with a very deep nesting observed.
|
347
|
-
message = f"The maximum level of recursion is reached. Couldn't find the
|
364
|
+
message = f"The maximum level of recursion is reached. Couldn't find the specified `{key_name}` in the response."
|
348
365
|
raise ResponseKeysMaxRecurtionReached(
|
349
366
|
internal_message=message, message=message, failure_type=FailureType.config_error
|
350
367
|
)
|
@@ -441,7 +458,7 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
441
458
|
"""Expiration date of the access token"""
|
442
459
|
|
443
460
|
@abstractmethod
|
444
|
-
def set_token_expiry_date(self, value:
|
461
|
+
def set_token_expiry_date(self, value: AirbyteDateTime) -> None:
|
445
462
|
"""Setter for access token expiration date"""
|
446
463
|
|
447
464
|
@abstractmethod
|
@@ -120,8 +120,8 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
|
|
120
120
|
def get_token_expiry_date(self) -> AirbyteDateTime:
|
121
121
|
return self._token_expiry_date
|
122
122
|
|
123
|
-
def set_token_expiry_date(self, value:
|
124
|
-
self._token_expiry_date =
|
123
|
+
def set_token_expiry_date(self, value: AirbyteDateTime) -> None:
|
124
|
+
self._token_expiry_date = value
|
125
125
|
|
126
126
|
@property
|
127
127
|
def token_expiry_is_time_of_expiration(self) -> bool:
|
@@ -316,26 +316,6 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
|
|
316
316
|
"""Returns True if the token is expired"""
|
317
317
|
return ab_datetime_now() > self.get_token_expiry_date()
|
318
318
|
|
319
|
-
@staticmethod
|
320
|
-
def get_new_token_expiry_date(
|
321
|
-
access_token_expires_in: str,
|
322
|
-
token_expiry_date_format: str | None = None,
|
323
|
-
) -> AirbyteDateTime:
|
324
|
-
"""
|
325
|
-
Calculate the new token expiry date based on the provided expiration duration or format.
|
326
|
-
|
327
|
-
Args:
|
328
|
-
access_token_expires_in (str): The duration (in seconds) until the access token expires, or the expiry date in a specific format.
|
329
|
-
token_expiry_date_format (str | None, optional): The format of the expiry date if provided. Defaults to None.
|
330
|
-
|
331
|
-
Returns:
|
332
|
-
AirbyteDateTime: The calculated expiry date of the access token.
|
333
|
-
"""
|
334
|
-
if token_expiry_date_format:
|
335
|
-
return ab_datetime_parse(access_token_expires_in)
|
336
|
-
else:
|
337
|
-
return ab_datetime_now() + timedelta(seconds=int(access_token_expires_in))
|
338
|
-
|
339
319
|
def get_access_token(self) -> str:
|
340
320
|
"""Retrieve new access and refresh token if the access token has expired.
|
341
321
|
The new refresh token is persisted with the set_refresh_token function
|
@@ -346,16 +326,13 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
|
|
346
326
|
new_access_token, access_token_expires_in, new_refresh_token = (
|
347
327
|
self.refresh_access_token()
|
348
328
|
)
|
349
|
-
new_token_expiry_date: AirbyteDateTime = self.get_new_token_expiry_date(
|
350
|
-
access_token_expires_in, self._token_expiry_date_format
|
351
|
-
)
|
352
329
|
self.access_token = new_access_token
|
353
330
|
self.set_refresh_token(new_refresh_token)
|
354
|
-
self.set_token_expiry_date(
|
331
|
+
self.set_token_expiry_date(access_token_expires_in)
|
355
332
|
self._emit_control_message()
|
356
333
|
return self.access_token
|
357
334
|
|
358
|
-
def refresh_access_token(self) -> Tuple[str,
|
335
|
+
def refresh_access_token(self) -> Tuple[str, AirbyteDateTime, str]: # type: ignore[override]
|
359
336
|
"""
|
360
337
|
Refreshes the access token by making a handled request and extracting the necessary token information.
|
361
338
|
|
airbyte_cdk/sources/types.py
CHANGED
@@ -6,7 +6,6 @@ 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
|
10
9
|
from airbyte_cdk.utils.slice_hasher import SliceHasher
|
11
10
|
|
12
11
|
# A FieldPointer designates a path to a field inside a mapping. For example, retrieving ["k1", "k1.2"] in the object {"k1" :{"k1.2":
|
@@ -24,12 +23,12 @@ class Record(Mapping[str, Any]):
|
|
24
23
|
data: Mapping[str, Any],
|
25
24
|
stream_name: str,
|
26
25
|
associated_slice: Optional[StreamSlice] = None,
|
27
|
-
|
26
|
+
is_file_transfer_message: bool = False,
|
28
27
|
):
|
29
28
|
self._data = data
|
30
29
|
self._associated_slice = associated_slice
|
31
30
|
self.stream_name = stream_name
|
32
|
-
self.
|
31
|
+
self.is_file_transfer_message = is_file_transfer_message
|
33
32
|
|
34
33
|
@property
|
35
34
|
def data(self) -> Mapping[str, Any]:
|
@@ -39,14 +38,6 @@ class Record(Mapping[str, Any]):
|
|
39
38
|
def associated_slice(self) -> Optional[StreamSlice]:
|
40
39
|
return self._associated_slice
|
41
40
|
|
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
|
-
|
50
41
|
def __repr__(self) -> str:
|
51
42
|
return repr(self._data)
|
52
43
|
|
@@ -9,10 +9,10 @@ from airbyte_cdk.models import (
|
|
9
9
|
AirbyteLogMessage,
|
10
10
|
AirbyteMessage,
|
11
11
|
AirbyteRecordMessage,
|
12
|
-
AirbyteRecordMessageFileReference,
|
13
12
|
AirbyteTraceMessage,
|
14
13
|
)
|
15
14
|
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
|
+
is_file_transfer_message: bool = False,
|
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
|
+
if is_file_transfer_message:
|
40
|
+
message = AirbyteFileTransferRecordMessage(
|
41
|
+
stream=stream_name, file=data, emitted_at=now_millis, data={}
|
42
|
+
)
|
43
|
+
else:
|
44
|
+
message = AirbyteRecordMessage(stream=stream_name, data=data, emitted_at=now_millis)
|
45
45
|
return AirbyteMessage(type=MessageType.RECORD, record=message)
|
46
46
|
case AirbyteTraceMessage():
|
47
47
|
return AirbyteMessage(type=MessageType.TRACE, trace=data_or_message)
|
@@ -198,14 +198,6 @@ def find_template(resource: str, execution_folder: str) -> Dict[str, Any]:
|
|
198
198
|
return json.load(template_file) # type: ignore # we assume the dev correctly set up the resource file
|
199
199
|
|
200
200
|
|
201
|
-
def find_binary_response(resource: str, execution_folder: str) -> bytes:
|
202
|
-
response_filepath = str(
|
203
|
-
get_unit_test_folder(execution_folder) / "resource" / "http" / "response" / f"{resource}"
|
204
|
-
)
|
205
|
-
with open(response_filepath, "rb") as response_file:
|
206
|
-
return response_file.read() # type: ignore # we assume the dev correctly set up the resource file
|
207
|
-
|
208
|
-
|
209
201
|
def create_record_builder(
|
210
202
|
response_template: Dict[str, Any],
|
211
203
|
records_path: Union[FieldPath, NestedPath],
|
{airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/METADATA
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.45.
|
3
|
+
Version: 6.45.5
|
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 (>=0.
|
25
|
+
Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
|
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
|
@@ -29,15 +29,16 @@ 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=MOTiuML2wShBaMSIwikdjyye2uUWBjo4J1QFSbnoiM4,2075
|
33
|
+
airbyte_cdk/models/airbyte_protocol.py,sha256=MCmLir67-hF12YM5OKzeGbWrlxr7ChG_OQSE1xG8EIU,3748
|
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
|
35
36
|
airbyte_cdk/models/well_known_types.py,sha256=EquepbisGPuCSrs_D7YVVnMR9-ShhUr21wnFz3COiJs,156
|
36
37
|
airbyte_cdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
38
|
airbyte_cdk/sources/__init__.py,sha256=45J83QsFH3Wky3sVapZWg4C58R_i1thm61M06t2c1AQ,1156
|
38
39
|
airbyte_cdk/sources/abstract_source.py,sha256=50vxEBRByiNhT4WJkiFvgM-C6PWqKSJgvuNC_aeg2cw,15547
|
39
40
|
airbyte_cdk/sources/concurrent_source/__init__.py,sha256=3D_RJsxQfiLboSCDdNei1Iv-msRp3DXsas6E9kl7dXc,386
|
40
|
-
airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py,sha256=
|
41
|
+
airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py,sha256=dbDBNcNNg2IZU5pZb3HfZeILU7X5_EhYGSbNqq3JD4I,12711
|
41
42
|
airbyte_cdk/sources/concurrent_source/concurrent_source.py,sha256=P8B6EcLKaSstfAD9kDZsTJ0q8vRmdFrxLt-zOA5_By0,7737
|
42
43
|
airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py,sha256=f9PIRPWn2tXu0-bxVeYHL2vYdqCzZ_kgpHg5_Ep-cfQ,6103
|
43
44
|
airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py,sha256=z1t-rAZBsqVidv2fpUlPHE9JgyXsITuGk4AMu96mXSQ,696
|
@@ -56,7 +57,7 @@ airbyte_cdk/sources/declarative/async_job/timer.py,sha256=Fb8P72CQ7jIzJyzMSSNuBf
|
|
56
57
|
airbyte_cdk/sources/declarative/auth/__init__.py,sha256=e2CRrcBWGhz3sQu3Oh34d1riEIwXipGS8hrSB1pu0Oo,284
|
57
58
|
airbyte_cdk/sources/declarative/auth/declarative_authenticator.py,sha256=nf-OmRUHYG4ORBwyb5CANzuHEssE-oNmL-Lccn41Td8,1099
|
58
59
|
airbyte_cdk/sources/declarative/auth/jwt.py,sha256=SICqNsN2Cn_EgKadIgWuZpQxuMHyzrMZD_2-Uwy10rY,8539
|
59
|
-
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=
|
60
|
+
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=Uxh3EpIV0noe23e1j8efoegjk1d5B7xyVAFSaFtbwoQ,14127
|
60
61
|
airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
|
61
62
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
|
62
63
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=Jzuxlmt1_-_aFC_n0OmP8L1nDOacLzbEVVx3kjdX_W8,3104
|
@@ -66,11 +67,11 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=QeExVmpSYjr_CnghHu
|
|
66
67
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
67
68
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
68
69
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
69
|
-
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=
|
70
|
+
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=6zvkIWIfpSrCy4jr-_UFIp5SW3LgubrBfUsDeqhjcj4,27773
|
70
71
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
71
72
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
|
72
73
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
73
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
74
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=GKYtd8sQfL5_g4y02QEv0sTQrUFU1HypExKFG6YwB2E,159019
|
74
75
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
75
76
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
|
76
77
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
|
@@ -88,7 +89,7 @@ airbyte_cdk/sources/declarative/extractors/dpath_extractor.py,sha256=wR4Ol4MG2lt
|
|
88
89
|
airbyte_cdk/sources/declarative/extractors/http_selector.py,sha256=2zWZ4ewTqQC8VwkjS0xD_u350Km3SiYP7hpOOgiLg5o,1169
|
89
90
|
airbyte_cdk/sources/declarative/extractors/record_extractor.py,sha256=XJELMjahAsaomlvQgN2zrNO0DJX0G0fr9r682gUz7Pg,691
|
90
91
|
airbyte_cdk/sources/declarative/extractors/record_filter.py,sha256=yTdEkyDUSW2KbFkEwJJMlS963C955LgCCOVfTmmScpQ,3367
|
91
|
-
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=
|
92
|
+
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=HCqx7IyENM_aRF4it2zJN26_vDu6WeP8XgCxQWHUvcY,6934
|
92
93
|
airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=WJyA2OYIEgFpVP5Y3o0tIj69AV6IKkn9B16MeXaEItI,6513
|
93
94
|
airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
|
94
95
|
airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=U1oZKtBaEC6IACmvziY9Wzg7Z8EgF4ZuR7NwvjlB_Sk,1255
|
@@ -113,13 +114,13 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
113
114
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
114
115
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
115
116
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
116
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
117
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=04XDbonpVe1O3ek_TuRk96qfhQ0bcXeN7RQjysNGvAk,112782
|
117
118
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
118
119
|
airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
|
119
120
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
120
121
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=4C15MKV-zOrMVQAm4FyohDsrJUBCSpMv5tZw0SK3aeI,9685
|
121
122
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
122
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
123
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=JZpU1iy0x0q95tyPVLRKhUxVnh68p_Ysm6_8JcUgNJo,160312
|
123
124
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
|
124
125
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
|
125
126
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
@@ -178,7 +179,6 @@ airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=d
|
|
178
179
|
airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=AiojNs8wItJFrENZBFUaDvau3sgwudO6Wkra36upSPo,4639
|
179
180
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=nQepwG_RfW53sgwvK5dLPqfCx0VjsQ83nYoPjBMAaLM,527
|
180
181
|
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=6oZtnCHm9NdDvjTSrVwPQOXGSdETSIR7eWH2vFjM7jI,4855
|
181
|
-
airbyte_cdk/sources/declarative/retrievers/file_uploader.py,sha256=Om8vaDHix_1EXxEDVpRP57R94KmBmzJJLWtgxDJ5P8E,3363
|
182
182
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
183
183
|
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=cI3UEWSIuGNzzIlf8I_7Vf_3fX_tQwIwPrnmrY7MEh4,31146
|
184
184
|
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
|
@@ -190,7 +190,7 @@ airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLn
|
|
190
190
|
airbyte_cdk/sources/declarative/spec/__init__.py,sha256=H0UwoRhgucbKBIzg85AXrifybVmfpwWpPdy22vZKVuo,141
|
191
191
|
airbyte_cdk/sources/declarative/spec/spec.py,sha256=ODSNUgkDOhnLQnwLjgSaME6R3kNeywjROvbNrWEnsgU,1876
|
192
192
|
airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=sI9vhc95RwJYOnA0VKjcbtKgFcmAbWjhdWBXFbAijOs,176
|
193
|
-
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=
|
193
|
+
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=RW1Q44ml-VWeMl4lNcV6EfyzrzCZkjj-hd0Omx_n_n4,3405
|
194
194
|
airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
|
195
195
|
airbyte_cdk/sources/declarative/transformations/__init__.py,sha256=CPJ8TlMpiUmvG3624VYu_NfTzxwKcfBjM2Q2wJ7fkSA,919
|
196
196
|
airbyte_cdk/sources/declarative/transformations/add_fields.py,sha256=Eg1jQtRObgzxbtySTQs5uEZIjEklsoHFxYSPf78x6Ng,5420
|
@@ -224,26 +224,25 @@ airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py,sha2
|
|
224
224
|
airbyte_cdk/sources/file_based/exceptions.py,sha256=WP0qkG6fpWoBpOyyicgp5YNE393VWyegq5qSy0v4QtM,7362
|
225
225
|
airbyte_cdk/sources/file_based/file_based_source.py,sha256=Xg8OYWnGc-OcVBglvS08uwAWGWHBhEqsBnyODIkOK-4,20051
|
226
226
|
airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py,sha256=4e7FXqQ9hueacexC0SyrZyjF8oREYHza8pKF9CgKbD8,5050
|
227
|
-
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=
|
228
|
-
airbyte_cdk/sources/file_based/file_record_data.py,sha256=GtCHwIagI24EsZbAh_qffBtGuLSJQulRxoA3KgoqUSA,452
|
227
|
+
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=0cmppYO3pZlFiJrs5oorF4JXv4ErhOeEMrdLG7P-Gdk,6742
|
229
228
|
airbyte_cdk/sources/file_based/file_types/__init__.py,sha256=blCLn0-2LC-ZdgcNyDEhqM2RiUvEjEBh-G4-t32ZtuM,1268
|
230
229
|
airbyte_cdk/sources/file_based/file_types/avro_parser.py,sha256=USEYqiICXBWpDV443VtNOCmUA-GINzY_Zah74_5w3qQ,10860
|
231
230
|
airbyte_cdk/sources/file_based/file_types/csv_parser.py,sha256=QlCXB-ry3np67Q_VerQEPoWDOTcPTB6Go4ydZxY9ae4,20445
|
232
231
|
airbyte_cdk/sources/file_based/file_types/excel_parser.py,sha256=BeplCq0hmojELU6bZCvvpRLpQ9us81TqbGYwrhd3INo,7188
|
233
|
-
airbyte_cdk/sources/file_based/file_types/file_transfer.py,sha256=
|
232
|
+
airbyte_cdk/sources/file_based/file_types/file_transfer.py,sha256=HyGRihJxcb_lEsffKhfF3eylLBDy51_PXSwGUFEJ5bA,1265
|
234
233
|
airbyte_cdk/sources/file_based/file_types/file_type_parser.py,sha256=JgpH21PrbRqwK92BJklZWvh2TndA6xZ-eP1LPMo44oQ,2832
|
235
234
|
airbyte_cdk/sources/file_based/file_types/jsonl_parser.py,sha256=GwyNyxmST4RX-XpXy7xVH0D-znYWWBmGv_pVAu95oHQ,5886
|
236
235
|
airbyte_cdk/sources/file_based/file_types/parquet_parser.py,sha256=XenFg5sJ-UBnIkSmsiNJRou11NO0zZXx-RXgPHMT2NA,10487
|
237
236
|
airbyte_cdk/sources/file_based/file_types/unstructured_parser.py,sha256=2TYOQl62FQPCa8otLbkDIk_j01EP3oWaKSfXGhCjCHg,19492
|
238
237
|
airbyte_cdk/sources/file_based/remote_file.py,sha256=yqRz93vPe8PBXLIMJ5W5u2JRlZRhg6sBrAjn3pPjJ8A,315
|
239
|
-
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=
|
238
|
+
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=Cf8FH1bDFP0qCDDfEYir_WjP4exXUnikz8hZ40y1Ek0,9601
|
240
239
|
airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py,sha256=FkByIyEy56x2_awYnxGPqGaOp7zAzpAoRkPZHKySI9M,536
|
241
240
|
airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py,sha256=kjvX7nOmUALYd7HuZHilUzgJPZ-MnZ08mtvuBnt2tQ0,618
|
242
241
|
airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py,sha256=vjTlmYT_nqzY3DbT5xem7X-bwgA9RyXHoKFqiMO2URk,1728
|
243
242
|
airbyte_cdk/sources/file_based/stream/__init__.py,sha256=q_zmeOHHg0JK5j1YNSOIsyXGz-wlTl_0E8z5GKVAcVM,543
|
244
243
|
airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py,sha256=9pQh3BHYcxm8CRC8XawfmBxL8O9HggpWwCCbX_ncINE,7509
|
245
244
|
airbyte_cdk/sources/file_based/stream/concurrent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
246
|
-
airbyte_cdk/sources/file_based/stream/concurrent/adapters.py,sha256=
|
245
|
+
airbyte_cdk/sources/file_based/stream/concurrent/adapters.py,sha256=EwWuoCsQRNaoizxbb2-BYVwRYOxr57exw3q3M6zVv1E,13931
|
247
246
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py,sha256=Rx7TwjH8B7e0eee83Tlqxv1bWn-BVXOmlUAH7auM1uM,344
|
248
247
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py,sha256=5dYZMLBEbvCyrCT89lCYdm2FdrLPLuxjdpQSVGP5o0w,1856
|
249
248
|
airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py,sha256=gRTL-9I3ejjQOpLKd6ixe9rB3kGlubCdhUt9ri6AdAI,14880
|
@@ -251,9 +250,9 @@ airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_c
|
|
251
250
|
airbyte_cdk/sources/file_based/stream/cursor/__init__.py,sha256=MhFB5hOo8sjwvCh8gangaymdg3EJWYt_72brFOZt068,191
|
252
251
|
airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py,sha256=om-x3gZFPgWDpi15S9RxZmR36VHnk8sytgN6LlBQhAw,1934
|
253
252
|
airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py,sha256=VGV7xLyBribuBMVrXtO1xqkWJD86bl7yhXtjnwLMohM,7051
|
254
|
-
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=
|
253
|
+
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=jyJLu2BUCYWKqrqD0ZUFxnrD0qybny7KbzKznxjIIpM,18199
|
255
254
|
airbyte_cdk/sources/file_based/stream/identities_stream.py,sha256=FZH83Geoy3K3nwUk2VVNJERFcXUTnl-4XljjucUM23s,1893
|
256
|
-
airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py,sha256=
|
255
|
+
airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py,sha256=ke82qgm7snOlQTDx94Lqsc0cDkHWi3OJDTrPxffpFqc,3914
|
257
256
|
airbyte_cdk/sources/file_based/types.py,sha256=INxG7OPnkdUP69oYNKMAbwhvV1AGvLRHs1J6pIia2FI,218
|
258
257
|
airbyte_cdk/sources/http_config.py,sha256=OBZeuyFilm6NlDlBhFQvHhTWabEvZww6OHDIlZujIS0,730
|
259
258
|
airbyte_cdk/sources/http_logger.py,sha256=H93kPAujHhPmXNX0JSFG3D-SL6yEFA5PtKot9Hu3TYA,1690
|
@@ -279,7 +278,7 @@ airbyte_cdk/sources/streams/concurrent/availability_strategy.py,sha256=4La5v2Uff
|
|
279
278
|
airbyte_cdk/sources/streams/concurrent/clamping.py,sha256=i26GVyui2ScEXSP-IP_61K2HaTp1-6lTlYHsZVYpuZA,3240
|
280
279
|
airbyte_cdk/sources/streams/concurrent/cursor.py,sha256=LFXbKBEMtNSVz_kZs9qydS9fPvzTU5wdgXRagRRJeHo,21388
|
281
280
|
airbyte_cdk/sources/streams/concurrent/cursor_types.py,sha256=ZyWLPpeLX1qXcP5MwS-wxK11IBMsnVPCw9zx8gA2_Ro,843
|
282
|
-
airbyte_cdk/sources/streams/concurrent/default_stream.py,sha256=
|
281
|
+
airbyte_cdk/sources/streams/concurrent/default_stream.py,sha256=K3rLMpYhS7nnmvwQ52lqBy7DQdFMJpvvT7sgBg_ckA8,3207
|
283
282
|
airbyte_cdk/sources/streams/concurrent/exceptions.py,sha256=JOZ446MCLpmF26r9KfS6OO_6rGjcjgJNZdcw6jccjEI,468
|
284
283
|
airbyte_cdk/sources/streams/concurrent/helpers.py,sha256=S6AW8TgIASCZ2UuUcQLE8OzgYUHWt2-KPOvNPwnQf-Q,1596
|
285
284
|
airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py,sha256=2t64b_z9cEPmlHZnjSiMTO8PEtEdiAJDG0JcYOtUqAE,3363
|
@@ -310,17 +309,16 @@ airbyte_cdk/sources/streams/http/http.py,sha256=0uariNq8OFnlX7iqOHwBhecxA-Hfd5hS
|
|
310
309
|
airbyte_cdk/sources/streams/http/http_client.py,sha256=tDE0ROtxjGMVphvsw8INvGMtZ97hIF-v47pZ3jIyiwc,23011
|
311
310
|
airbyte_cdk/sources/streams/http/rate_limiting.py,sha256=IwdjrHKUnU97XO4qONgYRv4YYW51xQ8SJm4WLafXDB8,6351
|
312
311
|
airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py,sha256=RN0D3nOX1xLgwEwKWu6pkGy3XqBFzKSNZ8Lf6umU2eY,413
|
313
|
-
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=
|
312
|
+
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=2vLa1zMWxIfaj5iLi404Y2YCgC0uDhRCJCvXDwcFBys,19569
|
314
313
|
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py,sha256=Y3n7J-sk5yGjv_OxtY6Z6k0PEsFZmtIRi-x0KCbaHdA,1010
|
315
|
-
airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=
|
314
|
+
airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=gVLo7nU-ORJd413TZHMJQV4m_vaGnRqhoXGGWehFjDA,19253
|
316
315
|
airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
|
317
316
|
airbyte_cdk/sources/streams/permissions/identities_stream.py,sha256=9O9k6k18Xm3Zsiw_vnI_jsHXfMCQiek6V-jMkJJLxn8,2621
|
318
317
|
airbyte_cdk/sources/streams/utils/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
319
|
-
airbyte_cdk/sources/types.py,sha256=
|
318
|
+
airbyte_cdk/sources/types.py,sha256=x5Rkfpottg46qgr1-g_O4kN6v0Fd0sWHttdYsftyo7w,5148
|
320
319
|
airbyte_cdk/sources/utils/__init__.py,sha256=TTN6VUxVy6Is8BhYQZR5pxJGQh8yH4duXh4O1TiMiEY,118
|
321
320
|
airbyte_cdk/sources/utils/casing.py,sha256=QC-gV1O4e8DR4-bhdXieUPKm_JamzslVyfABLYYRSXA,256
|
322
|
-
airbyte_cdk/sources/utils/
|
323
|
-
airbyte_cdk/sources/utils/record_helper.py,sha256=7wL-pDYrBpcmZHa8ORtiSOqBZJEZI5hdl2dA1RYiatk,2029
|
321
|
+
airbyte_cdk/sources/utils/record_helper.py,sha256=jeB0mucudzna7Zvj-pCBbwFrbLJ36SlAWZTh5O4Fb9Y,2168
|
324
322
|
airbyte_cdk/sources/utils/schema_helpers.py,sha256=bR3I70-e11S6B8r6VK-pthQXtcYrXojgXFvuK7lRrpg,8545
|
325
323
|
airbyte_cdk/sources/utils/slice_logger.py,sha256=qWWeFLAvigFz0b4O1_O3QDM1cy8PqZAMMgVPR2hEeb8,1778
|
326
324
|
airbyte_cdk/sources/utils/transform.py,sha256=0LOvIJg1vmg_70AiAVe-YHMr-LHrqEuxg9cm1BnYPDM,11725
|
@@ -344,7 +342,7 @@ airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBET
|
|
344
342
|
airbyte_cdk/test/mock_http/mocker.py,sha256=XgsjMtVoeMpRELPyALgrkHFauH9H5irxrz1Kcxh2yFY,8013
|
345
343
|
airbyte_cdk/test/mock_http/request.py,sha256=tdB8cqk2vLgCDTOKffBKsM06llYs4ZecgtH6DKyx6yY,4112
|
346
344
|
airbyte_cdk/test/mock_http/response.py,sha256=s4-cQQqTtmeej0pQDWqmG0vUWpHS-93lIWMpW3zSVyU,662
|
347
|
-
airbyte_cdk/test/mock_http/response_builder.py,sha256=
|
345
|
+
airbyte_cdk/test/mock_http/response_builder.py,sha256=debPx_lRYBaQVSwCoKLa0F8KFk3h0qG7bWxFBATa0cc,7958
|
348
346
|
airbyte_cdk/test/standard_tests/__init__.py,sha256=YS2bghoGmQ-4GNIbe6RuEmvV-V1kpM1OyxTpebrs0Ig,1338
|
349
347
|
airbyte_cdk/test/standard_tests/_job_runner.py,sha256=d2JkwxJilYIJNmyVH946YMn8x1pnP3JaNT865V8vZzQ,5820
|
350
348
|
airbyte_cdk/test/standard_tests/connector_base.py,sha256=HGdDqLq8cCdBJ5T2s92PdN5miD2Vs_HczWOUbojAebY,5618
|
@@ -377,9 +375,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
377
375
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
378
376
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
379
377
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
380
|
-
airbyte_cdk-6.45.
|
381
|
-
airbyte_cdk-6.45.
|
382
|
-
airbyte_cdk-6.45.
|
383
|
-
airbyte_cdk-6.45.
|
384
|
-
airbyte_cdk-6.45.
|
385
|
-
airbyte_cdk-6.45.
|
378
|
+
airbyte_cdk-6.45.5.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
379
|
+
airbyte_cdk-6.45.5.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
380
|
+
airbyte_cdk-6.45.5.dist-info/METADATA,sha256=Yx9K_oEn6WPdgAKJx7ObyeMQRTXpF8JYps2DLKjkdwM,6113
|
381
|
+
airbyte_cdk-6.45.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
382
|
+
airbyte_cdk-6.45.5.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
383
|
+
airbyte_cdk-6.45.5.dist-info/RECORD,,
|