airbyte-cdk 6.45.4.post72.dev14497997772__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/sources/declarative/auth/oauth.py +2 -2
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py +6 -2
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +3 -1
- 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/test/{declarative/utils/job_runner.py → standard_tests/_job_runner.py} +1 -1
- airbyte_cdk/test/standard_tests/connector_base.py +2 -2
- airbyte_cdk/test/standard_tests/declarative_sources.py +2 -2
- airbyte_cdk/test/{declarative → standard_tests}/models/__init__.py +1 -1
- airbyte_cdk/test/standard_tests/source_base.py +4 -4
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/RECORD +17 -19
- airbyte_cdk/test/declarative/__init__.py +0 -6
- airbyte_cdk/test/declarative/utils/__init__.py +0 -0
- /airbyte_cdk/test/{declarative → standard_tests}/models/scenario.py +0 -0
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/entry_points.txt +0 -0
@@ -239,8 +239,8 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
239
239
|
def _has_access_token_been_initialized(self) -> bool:
|
240
240
|
return self._access_token is not None
|
241
241
|
|
242
|
-
def set_token_expiry_date(self, value:
|
243
|
-
self._token_expiry_date =
|
242
|
+
def set_token_expiry_date(self, value: AirbyteDateTime) -> None:
|
243
|
+
self._token_expiry_date = value
|
244
244
|
|
245
245
|
def get_assertion_name(self) -> str:
|
246
246
|
return self.assertion_name
|
@@ -19,7 +19,10 @@ from airbyte_cdk.sources.declarative.extractors import RecordSelector
|
|
19
19
|
from airbyte_cdk.sources.declarative.extractors.record_filter import (
|
20
20
|
ClientSideIncrementalRecordFilterDecorator,
|
21
21
|
)
|
22
|
-
from airbyte_cdk.sources.declarative.incremental import
|
22
|
+
from airbyte_cdk.sources.declarative.incremental import (
|
23
|
+
ConcurrentPerPartitionCursor,
|
24
|
+
GlobalSubstreamCursor,
|
25
|
+
)
|
23
26
|
from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
|
24
27
|
from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
|
25
28
|
PerPartitionWithGlobalCursor,
|
@@ -361,7 +364,8 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
361
364
|
== DatetimeBasedCursorModel.__name__
|
362
365
|
and hasattr(declarative_stream.retriever, "stream_slicer")
|
363
366
|
and isinstance(
|
364
|
-
declarative_stream.retriever.stream_slicer,
|
367
|
+
declarative_stream.retriever.stream_slicer,
|
368
|
+
(GlobalSubstreamCursor, PerPartitionWithGlobalCursor),
|
365
369
|
)
|
366
370
|
):
|
367
371
|
stream_state = self._connector_state_manager.get_stream_state(
|
@@ -1439,7 +1439,9 @@ class ModelToComponentFactory:
|
|
1439
1439
|
stream_state = self.apply_stream_state_migrations(stream_state_migrations, stream_state)
|
1440
1440
|
|
1441
1441
|
# Per-partition state doesn't make sense for GroupingPartitionRouter, so force the global state
|
1442
|
-
use_global_cursor = isinstance(
|
1442
|
+
use_global_cursor = isinstance(
|
1443
|
+
partition_router, GroupingPartitionRouter
|
1444
|
+
) or component_definition.get("global_substream_cursor", False)
|
1443
1445
|
|
1444
1446
|
# Return the concurrent cursor and state converter
|
1445
1447
|
return ConcurrentPerPartitionCursor(
|
@@ -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
|
|
@@ -18,10 +18,10 @@ from airbyte_cdk.models import (
|
|
18
18
|
Type,
|
19
19
|
)
|
20
20
|
from airbyte_cdk.test import entrypoint_wrapper
|
21
|
-
from airbyte_cdk.test.
|
21
|
+
from airbyte_cdk.test.standard_tests._job_runner import IConnector, run_test_job
|
22
|
+
from airbyte_cdk.test.standard_tests.models import (
|
22
23
|
ConnectorTestScenario,
|
23
24
|
)
|
24
|
-
from airbyte_cdk.test.declarative.utils.job_runner import IConnector, run_test_job
|
25
25
|
|
26
26
|
ACCEPTANCE_TEST_CONFIG = "acceptance-test-config.yml"
|
27
27
|
MANIFEST_YAML = "manifest.yaml"
|
@@ -9,9 +9,9 @@ from boltons.typeutils import classproperty
|
|
9
9
|
from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
|
10
10
|
ConcurrentDeclarativeSource,
|
11
11
|
)
|
12
|
-
from airbyte_cdk.test.
|
13
|
-
from airbyte_cdk.test.declarative.utils.job_runner import IConnector
|
12
|
+
from airbyte_cdk.test.standard_tests._job_runner import IConnector
|
14
13
|
from airbyte_cdk.test.standard_tests.connector_base import MANIFEST_YAML
|
14
|
+
from airbyte_cdk.test.standard_tests.models import ConnectorTestScenario
|
15
15
|
from airbyte_cdk.test.standard_tests.source_base import SourceTestSuiteBase
|
16
16
|
|
17
17
|
|
@@ -13,13 +13,13 @@ from airbyte_cdk.models import (
|
|
13
13
|
Type,
|
14
14
|
)
|
15
15
|
from airbyte_cdk.test import entrypoint_wrapper
|
16
|
-
from airbyte_cdk.test.
|
17
|
-
ConnectorTestScenario,
|
18
|
-
)
|
19
|
-
from airbyte_cdk.test.declarative.utils.job_runner import run_test_job
|
16
|
+
from airbyte_cdk.test.standard_tests._job_runner import run_test_job
|
20
17
|
from airbyte_cdk.test.standard_tests.connector_base import (
|
21
18
|
ConnectorTestSuiteBase,
|
22
19
|
)
|
20
|
+
from airbyte_cdk.test.standard_tests.models import (
|
21
|
+
ConnectorTestScenario,
|
22
|
+
)
|
23
23
|
|
24
24
|
|
25
25
|
class SourceTestSuiteBase(ConnectorTestSuiteBase):
|
@@ -57,7 +57,7 @@ airbyte_cdk/sources/declarative/async_job/timer.py,sha256=Fb8P72CQ7jIzJyzMSSNuBf
|
|
57
57
|
airbyte_cdk/sources/declarative/auth/__init__.py,sha256=e2CRrcBWGhz3sQu3Oh34d1riEIwXipGS8hrSB1pu0Oo,284
|
58
58
|
airbyte_cdk/sources/declarative/auth/declarative_authenticator.py,sha256=nf-OmRUHYG4ORBwyb5CANzuHEssE-oNmL-Lccn41Td8,1099
|
59
59
|
airbyte_cdk/sources/declarative/auth/jwt.py,sha256=SICqNsN2Cn_EgKadIgWuZpQxuMHyzrMZD_2-Uwy10rY,8539
|
60
|
-
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=
|
60
|
+
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=Uxh3EpIV0noe23e1j8efoegjk1d5B7xyVAFSaFtbwoQ,14127
|
61
61
|
airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
|
62
62
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
|
63
63
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=Jzuxlmt1_-_aFC_n0OmP8L1nDOacLzbEVVx3kjdX_W8,3104
|
@@ -67,7 +67,7 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=QeExVmpSYjr_CnghHu
|
|
67
67
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
68
68
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
69
69
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
70
|
-
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=
|
70
|
+
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=6zvkIWIfpSrCy4jr-_UFIp5SW3LgubrBfUsDeqhjcj4,27773
|
71
71
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
72
72
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
|
73
73
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
@@ -120,7 +120,7 @@ airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511
|
|
120
120
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
121
121
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=4C15MKV-zOrMVQAm4FyohDsrJUBCSpMv5tZw0SK3aeI,9685
|
122
122
|
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=
|
123
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=JZpU1iy0x0q95tyPVLRKhUxVnh68p_Ysm6_8JcUgNJo,160312
|
124
124
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
|
125
125
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
|
126
126
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
@@ -309,9 +309,9 @@ airbyte_cdk/sources/streams/http/http.py,sha256=0uariNq8OFnlX7iqOHwBhecxA-Hfd5hS
|
|
309
309
|
airbyte_cdk/sources/streams/http/http_client.py,sha256=tDE0ROtxjGMVphvsw8INvGMtZ97hIF-v47pZ3jIyiwc,23011
|
310
310
|
airbyte_cdk/sources/streams/http/rate_limiting.py,sha256=IwdjrHKUnU97XO4qONgYRv4YYW51xQ8SJm4WLafXDB8,6351
|
311
311
|
airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py,sha256=RN0D3nOX1xLgwEwKWu6pkGy3XqBFzKSNZ8Lf6umU2eY,413
|
312
|
-
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
|
313
313
|
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py,sha256=Y3n7J-sk5yGjv_OxtY6Z6k0PEsFZmtIRi-x0KCbaHdA,1010
|
314
|
-
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
|
315
315
|
airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
|
316
316
|
airbyte_cdk/sources/streams/permissions/identities_stream.py,sha256=9O9k6k18Xm3Zsiw_vnI_jsHXfMCQiek6V-jMkJJLxn8,2621
|
317
317
|
airbyte_cdk/sources/streams/utils/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
@@ -336,11 +336,6 @@ airbyte_cdk/sql/shared/sql_processor.py,sha256=1CwfC3fp9dWnHBpKtly7vGduf9ho_Mahi
|
|
336
336
|
airbyte_cdk/sql/types.py,sha256=XEIhRAo_ASd0kVLBkdLf5bHiRhNple-IJrC9TibcDdY,5880
|
337
337
|
airbyte_cdk/test/__init__.py,sha256=f_XdkOg4_63QT2k3BbKY34209lppwgw-svzfZstQEq4,199
|
338
338
|
airbyte_cdk/test/catalog_builder.py,sha256=-y05Cz1x0Dlk6oE9LSKhCozssV2gYBNtMdV5YYOPOtk,3015
|
339
|
-
airbyte_cdk/test/declarative/__init__.py,sha256=IpPLFCCWnlpp_eTGKK_2WGRFfenbnolxYLmkQSZMO3U,205
|
340
|
-
airbyte_cdk/test/declarative/models/__init__.py,sha256=rXoywbDd-oqEhRQLuaEQIDxykMeawHjzzeN3XIpGQN8,132
|
341
|
-
airbyte_cdk/test/declarative/models/scenario.py,sha256=loOfIeKWbzhqyY3JiLU-sE7RKDAsvz3SLpI9APeTPiw,2378
|
342
|
-
airbyte_cdk/test/declarative/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
343
|
-
airbyte_cdk/test/declarative/utils/job_runner.py,sha256=WFE5HS4I_nR4P3jUl8GJx_8YpE2QUONxZwXlbT8CtUo,5817
|
344
339
|
airbyte_cdk/test/entrypoint_wrapper.py,sha256=TyUmVJyIuGelAv6y8Wy_BnwqIRw_drjfZWKlroljCuQ,9951
|
345
340
|
airbyte_cdk/test/mock_http/__init__.py,sha256=jE5kC6CQ0OXkTqKhciDnNVZHesBFVIA2YvkdFGwva7k,322
|
346
341
|
airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBETmP6hTEyc,1446
|
@@ -349,11 +344,14 @@ airbyte_cdk/test/mock_http/request.py,sha256=tdB8cqk2vLgCDTOKffBKsM06llYs4ZecgtH
|
|
349
344
|
airbyte_cdk/test/mock_http/response.py,sha256=s4-cQQqTtmeej0pQDWqmG0vUWpHS-93lIWMpW3zSVyU,662
|
350
345
|
airbyte_cdk/test/mock_http/response_builder.py,sha256=debPx_lRYBaQVSwCoKLa0F8KFk3h0qG7bWxFBATa0cc,7958
|
351
346
|
airbyte_cdk/test/standard_tests/__init__.py,sha256=YS2bghoGmQ-4GNIbe6RuEmvV-V1kpM1OyxTpebrs0Ig,1338
|
352
|
-
airbyte_cdk/test/standard_tests/
|
353
|
-
airbyte_cdk/test/standard_tests/
|
347
|
+
airbyte_cdk/test/standard_tests/_job_runner.py,sha256=d2JkwxJilYIJNmyVH946YMn8x1pnP3JaNT865V8vZzQ,5820
|
348
|
+
airbyte_cdk/test/standard_tests/connector_base.py,sha256=HGdDqLq8cCdBJ5T2s92PdN5miD2Vs_HczWOUbojAebY,5618
|
349
|
+
airbyte_cdk/test/standard_tests/declarative_sources.py,sha256=2L0PMBC7U7BxkwAAjlgvdqr_4K1PIwNxN7xNoSpoZg4,3176
|
354
350
|
airbyte_cdk/test/standard_tests/destination_base.py,sha256=MARZip2mdo_PzGvzf2VBTAfrP4tbjrJYgeJUApnAArA,731
|
351
|
+
airbyte_cdk/test/standard_tests/models/__init__.py,sha256=bS25WlzQwPNxpU5DHtUDZo1DuXd0LkEv9qesNhY1jkY,135
|
352
|
+
airbyte_cdk/test/standard_tests/models/scenario.py,sha256=loOfIeKWbzhqyY3JiLU-sE7RKDAsvz3SLpI9APeTPiw,2378
|
355
353
|
airbyte_cdk/test/standard_tests/pytest_hooks.py,sha256=4OMy2jNQThS8y7Tyj8MiMy2-SWjoefD4lGo-zQmCUfU,1886
|
356
|
-
airbyte_cdk/test/standard_tests/source_base.py,sha256=
|
354
|
+
airbyte_cdk/test/standard_tests/source_base.py,sha256=B30Jduz5n7Z8oM3y9RF6B5upTZN3am6rFod6mqgIizo,5235
|
357
355
|
airbyte_cdk/test/state_builder.py,sha256=kLPql9lNzUJaBg5YYRLJlY_Hy5JLHJDVyKPMZMoYM44,946
|
358
356
|
airbyte_cdk/test/utils/__init__.py,sha256=Hu-1XT2KDoYjDF7-_ziDwv5bY3PueGjANOCbzeOegDg,57
|
359
357
|
airbyte_cdk/test/utils/data.py,sha256=CkCR1_-rujWNmPXFR1IXTMwx1rAl06wAyIKWpDcN02w,820
|
@@ -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,,
|
File without changes
|
File without changes
|
{airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE.txt
RENAMED
File without changes
|
{airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/LICENSE_SHORT
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.45.4.post72.dev14497997772.dist-info → airbyte_cdk-6.45.5.dist-info}/entry_points.txt
RENAMED
File without changes
|