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.
Files changed (32) hide show
  1. airbyte_cdk/models/__init__.py +0 -1
  2. airbyte_cdk/models/airbyte_protocol.py +3 -1
  3. airbyte_cdk/models/file_transfer_record_message.py +13 -0
  4. airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +1 -1
  5. airbyte_cdk/sources/declarative/auth/oauth.py +2 -2
  6. airbyte_cdk/sources/declarative/concurrent_declarative_source.py +6 -10
  7. airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -36
  8. airbyte_cdk/sources/declarative/extractors/record_selector.py +1 -6
  9. airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -31
  10. airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +4 -40
  11. airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -9
  12. airbyte_cdk/sources/file_based/file_based_stream_reader.py +16 -38
  13. airbyte_cdk/sources/file_based/file_types/file_transfer.py +15 -8
  14. airbyte_cdk/sources/file_based/schema_helpers.py +1 -11
  15. airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +12 -3
  16. airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +38 -15
  17. airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +3 -1
  18. airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -3
  19. airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +28 -11
  20. airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +4 -27
  21. airbyte_cdk/sources/types.py +2 -11
  22. airbyte_cdk/sources/utils/record_helper.py +8 -8
  23. airbyte_cdk/test/mock_http/response_builder.py +0 -8
  24. {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/METADATA +2 -2
  25. {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/RECORD +29 -31
  26. airbyte_cdk/sources/declarative/retrievers/file_uploader.py +0 -89
  27. airbyte_cdk/sources/file_based/file_record_data.py +0 -23
  28. airbyte_cdk/sources/utils/files_directory.py +0 -15
  29. {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE.txt +0 -0
  30. {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE_SHORT +0 -0
  31. {airbyte_cdk-6.45.4.post52.dev14501809740.dist-info → airbyte_cdk-6.45.5.dist-info}/WHEEL +0 -0
  32. {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, AirbyteStream, FailureType, Level
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
- for file_record_data, file_reference in self._file_transfer.upload(
155
- file=file, stream_reader=self.stream_reader, logger=self.logger
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.config.input_schema:
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(self.name, permissions_record)
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, Union[str, int]]:
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
- Return the expiration datetime of the refresh token
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]) -> 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
- str: The extracted token_expiry_date.
325
+ The extracted token_expiry_date or None if not found.
320
326
  """
321
- return self._find_and_get_value_from_response(response_data, self.get_expires_in_name())
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 speficied `{key_name}` in the response."
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: Union[str, int]) -> None:
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: Union[str, int]) -> None:
124
- self._token_expiry_date = self._parse_token_expiration_date(value)
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(new_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, str, str]: # type: ignore[override]
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
 
@@ -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
- file_reference: Optional[AirbyteRecordMessageFileReference] = None,
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._file_reference = file_reference
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
- file_reference: Optional[AirbyteRecordMessageFileReference] = None,
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
- message = AirbyteRecordMessage(
40
- stream=stream_name,
41
- data=data,
42
- emitted_at=now_millis,
43
- file_reference=file_reference,
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],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.45.4.post52.dev14501809740
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.15,<0.16)
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=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
33
- airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
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=P_GA5QayzehCf0ksUbEbGoNixBnauzsepv-0ICzhH4w,12691
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=SUfib1oSzlyRRnOSg8Bui73mfyrcyr9OssdchbKdu4s,14162
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=nqqcSe2FeycTpYz3KsFomeOzRWxGYc2G5YfFNQrMKlI,28113
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=Vs1Pa_o1oOS7hlL412PDwNruIfvHsv9u4ttF47VDMYY,160754
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=Xg4e0exJ5Tq8I346uD2-HjpCsAUFLgPPcNKa0UoHjV8,7178
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=x4oO-U4Ftfqi0jnOEw4lKU60Cb2x5eDiHSapesNr5iw,114266
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=B1GYSWiqaSfdpBF5rYMJLBHVhrK8iG4SK4fi4JNrSSo,161737
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=cjKGm4r438dd1GxrFHJ4aYrdzG2bkncnwaWxAwlXR3M,3585
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=rwz8AhEIqYB9gBF7uW9eR--eUiHOntzuwLH8jFHNacE,7854
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=5l2Jo6bp6neDmgM427PrZMZeqU0hCIZVWnzUZ_7BT10,1100
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=dKXAOTmMI3YmC5u7PeHC9AaZmlL6ft7CYSFQKCg0sXw,9911
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=1AIuAOHa_M6zN9l0eAWBHwhKl4fdP4-KlUMOMzTv11U,13525
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=gzSN4cLywwzo_U1OdFS3Of_-4DRkUcX_j7Mv30MrxQs,17154
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=6KxqdD3-VvwxDTk7TtZ0M32fga4CI3qZ9IKdAkySpx0,3844
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=3SBjFa1z955pSE_2qt1C7mAky-RKjOZeQDePbZkWYYs,3371
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=XLVbJNSSnjECQKq7mMxYp1Pi5kbpAp2VmGq0fwMuDRc,18825
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=C2j2uVfi9d-3KgHO3NGxIiFdfASjHOtsd6g_LWPYOAs,20311
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=1oerHQpidFrIluUhWsM3-4Xst4wwUDqzkgtgZY0jjZU,5485
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/files_directory.py,sha256=z8Dmr-wkL1sAqdwCST4MBUFAyMHPD2cJIzVdAuCynp8,391
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=F-v7ebftqGj7YVIMLKdodmU9U8Dq8aIyllWGo2NGwHc,8331
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.4.post52.dev14501809740.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
381
- airbyte_cdk-6.45.4.post52.dev14501809740.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
382
- airbyte_cdk-6.45.4.post52.dev14501809740.dist-info/METADATA,sha256=9cuLBc-rxsJNzSc8PL35IWCMiNG86gGfz5PVmewlN9g,6135
383
- airbyte_cdk-6.45.4.post52.dev14501809740.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
384
- airbyte_cdk-6.45.4.post52.dev14501809740.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
385
- airbyte_cdk-6.45.4.post52.dev14501809740.dist-info/RECORD,,
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,,