airbyte-cdk 7.0.5__py3-none-any.whl → 7.1.0.post4.dev17948197380__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/checks/check_dynamic_stream.py +3 -2
- airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +5 -1
- airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +11 -11
- airbyte_cdk/sources/streams/http/exceptions.py +11 -1
- airbyte_cdk/sources/streams/http/http_client.py +33 -9
- airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +5 -1
- airbyte_cdk/sources/utils/transform.py +1 -6
- airbyte_cdk/utils/datetime_helpers.py +2 -3
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/METADATA +2 -2
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/RECORD +14 -14
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/WHEEL +0 -0
- {airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/entry_points.txt +0 -0
@@ -49,8 +49,9 @@ class CheckDynamicStream(ConnectionChecker):
|
|
49
49
|
for stream in streams[: min(self.stream_count, len(streams))]:
|
50
50
|
stream_is_available, reason = evaluate_availability(stream, logger)
|
51
51
|
if not stream_is_available:
|
52
|
-
|
53
|
-
|
52
|
+
message = f"Stream {stream.name} is not available: {reason}"
|
53
|
+
logger.warning(message)
|
54
|
+
return False, message
|
54
55
|
except Exception as error:
|
55
56
|
error_message = (
|
56
57
|
f"Encountered an error trying to connect to stream {stream.name}. Error: {error}"
|
@@ -177,7 +177,11 @@ class ConfigComponentsResolver(ComponentsResolver):
|
|
177
177
|
)
|
178
178
|
|
179
179
|
path = [path.eval(self.config, **kwargs) for path in resolved_component.field_path]
|
180
|
-
|
180
|
+
# Avoid parsing strings that are meant to be strings
|
181
|
+
if not (isinstance(value, str) and valid_types == (str,)):
|
182
|
+
parsed_value = self._parse_yaml_if_possible(value)
|
183
|
+
else:
|
184
|
+
parsed_value = value
|
181
185
|
updated = dpath.set(updated_config, path, parsed_value)
|
182
186
|
|
183
187
|
if parsed_value and not updated and resolved_component.create_or_update:
|
@@ -31,56 +31,56 @@ DEFAULT_ERROR_MAPPING: Mapping[Union[int, str, Type[Exception]], ErrorResolution
|
|
31
31
|
400: ErrorResolution(
|
32
32
|
response_action=ResponseAction.FAIL,
|
33
33
|
failure_type=FailureType.system_error,
|
34
|
-
error_message="Bad request. Please check your request parameters.",
|
34
|
+
error_message="HTTP Status Code: 400. Error: Bad request. Please check your request parameters.",
|
35
35
|
),
|
36
36
|
401: ErrorResolution(
|
37
37
|
response_action=ResponseAction.FAIL,
|
38
38
|
failure_type=FailureType.config_error,
|
39
|
-
error_message="Unauthorized. Please ensure you are authenticated correctly.",
|
39
|
+
error_message="HTTP Status Code: 401. Error: Unauthorized. Please ensure you are authenticated correctly.",
|
40
40
|
),
|
41
41
|
403: ErrorResolution(
|
42
42
|
response_action=ResponseAction.FAIL,
|
43
43
|
failure_type=FailureType.config_error,
|
44
|
-
error_message="Forbidden. You don't have permission to access this resource.",
|
44
|
+
error_message="HTTP Status Code: 403. Error: Forbidden. You don't have permission to access this resource.",
|
45
45
|
),
|
46
46
|
404: ErrorResolution(
|
47
47
|
response_action=ResponseAction.FAIL,
|
48
48
|
failure_type=FailureType.system_error,
|
49
|
-
error_message="Not found. The requested resource was not found on the server.",
|
49
|
+
error_message="HTTP Status Code: 404. Error: Not found. The requested resource was not found on the server.",
|
50
50
|
),
|
51
51
|
405: ErrorResolution(
|
52
52
|
response_action=ResponseAction.FAIL,
|
53
53
|
failure_type=FailureType.system_error,
|
54
|
-
error_message="Method not allowed. Please check your request method.",
|
54
|
+
error_message="HTTP Status Code: 405. Error: Method not allowed. Please check your request method.",
|
55
55
|
),
|
56
56
|
408: ErrorResolution(
|
57
57
|
response_action=ResponseAction.RETRY,
|
58
58
|
failure_type=FailureType.transient_error,
|
59
|
-
error_message="Request timeout.",
|
59
|
+
error_message="HTTP Status Code: 408. Error: Request timeout.",
|
60
60
|
),
|
61
61
|
429: ErrorResolution(
|
62
62
|
response_action=ResponseAction.RATE_LIMITED,
|
63
63
|
failure_type=FailureType.transient_error,
|
64
|
-
error_message="Too many requests.",
|
64
|
+
error_message="HTTP Status Code: 429. Error: Too many requests.",
|
65
65
|
),
|
66
66
|
500: ErrorResolution(
|
67
67
|
response_action=ResponseAction.RETRY,
|
68
68
|
failure_type=FailureType.transient_error,
|
69
|
-
error_message="Internal server error.",
|
69
|
+
error_message="HTTP Status Code: 500. Error: Internal server error.",
|
70
70
|
),
|
71
71
|
502: ErrorResolution(
|
72
72
|
response_action=ResponseAction.RETRY,
|
73
73
|
failure_type=FailureType.transient_error,
|
74
|
-
error_message="Bad gateway.",
|
74
|
+
error_message="HTTP Status Code: 502. Error: Bad gateway.",
|
75
75
|
),
|
76
76
|
503: ErrorResolution(
|
77
77
|
response_action=ResponseAction.RETRY,
|
78
78
|
failure_type=FailureType.transient_error,
|
79
|
-
error_message="Service unavailable.",
|
79
|
+
error_message="HTTP Status Code: 503. Error: Service unavailable.",
|
80
80
|
),
|
81
81
|
504: ErrorResolution(
|
82
82
|
response_action=ResponseAction.RETRY,
|
83
83
|
failure_type=FailureType.transient_error,
|
84
|
-
error_message="Gateway timeout.",
|
84
|
+
error_message="HTTP Status Code: 504. Error: Gateway timeout.",
|
85
85
|
),
|
86
86
|
}
|
@@ -7,6 +7,8 @@ from typing import Optional, Union
|
|
7
7
|
|
8
8
|
import requests
|
9
9
|
|
10
|
+
from airbyte_cdk.models import FailureType
|
11
|
+
|
10
12
|
|
11
13
|
class BaseBackoffException(requests.exceptions.HTTPError):
|
12
14
|
def __init__(
|
@@ -14,7 +16,9 @@ class BaseBackoffException(requests.exceptions.HTTPError):
|
|
14
16
|
request: requests.PreparedRequest,
|
15
17
|
response: Optional[Union[requests.Response, Exception]],
|
16
18
|
error_message: str = "",
|
19
|
+
failure_type: Optional[FailureType] = None,
|
17
20
|
):
|
21
|
+
self.failure_type = failure_type
|
18
22
|
if isinstance(response, requests.Response):
|
19
23
|
error_message = (
|
20
24
|
error_message
|
@@ -43,6 +47,7 @@ class UserDefinedBackoffException(BaseBackoffException):
|
|
43
47
|
request: requests.PreparedRequest,
|
44
48
|
response: Optional[Union[requests.Response, Exception]],
|
45
49
|
error_message: str = "",
|
50
|
+
failure_type: Optional[FailureType] = None,
|
46
51
|
):
|
47
52
|
"""
|
48
53
|
:param backoff: how long to backoff in seconds
|
@@ -50,7 +55,12 @@ class UserDefinedBackoffException(BaseBackoffException):
|
|
50
55
|
:param response: the response that triggered the backoff exception
|
51
56
|
"""
|
52
57
|
self.backoff = backoff
|
53
|
-
super().__init__(
|
58
|
+
super().__init__(
|
59
|
+
request=request,
|
60
|
+
response=response,
|
61
|
+
error_message=error_message,
|
62
|
+
failure_type=failure_type,
|
63
|
+
)
|
54
64
|
|
55
65
|
|
56
66
|
class DefaultBackoffException(BaseBackoffException):
|
@@ -18,6 +18,7 @@ from airbyte_cdk.models import (
|
|
18
18
|
AirbyteStreamStatus,
|
19
19
|
AirbyteStreamStatusReason,
|
20
20
|
AirbyteStreamStatusReasonType,
|
21
|
+
FailureType,
|
21
22
|
Level,
|
22
23
|
StreamDescriptor,
|
23
24
|
)
|
@@ -35,6 +36,7 @@ from airbyte_cdk.sources.streams.http.error_handlers import (
|
|
35
36
|
ResponseAction,
|
36
37
|
)
|
37
38
|
from airbyte_cdk.sources.streams.http.exceptions import (
|
39
|
+
BaseBackoffException,
|
38
40
|
DefaultBackoffException,
|
39
41
|
RateLimitBackoffException,
|
40
42
|
RequestBodyException,
|
@@ -290,15 +292,25 @@ class HttpClient:
|
|
290
292
|
backoff_handler = http_client_default_backoff_handler(
|
291
293
|
max_tries=max_tries, max_time=max_time
|
292
294
|
)
|
293
|
-
# backoff handlers wrap _send, so it will always return a response
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
295
|
+
# backoff handlers wrap _send, so it will always return a response -- except when all retries are exhausted
|
296
|
+
try:
|
297
|
+
response = backoff_handler(rate_limit_backoff_handler(user_backoff_handler))(
|
298
|
+
request,
|
299
|
+
request_kwargs,
|
300
|
+
log_formatter=log_formatter,
|
301
|
+
exit_on_rate_limit=exit_on_rate_limit,
|
302
|
+
) # type: ignore # mypy can't infer that backoff_handler wraps _send
|
303
|
+
|
304
|
+
return response
|
305
|
+
except BaseBackoffException as e:
|
306
|
+
self._logger.error(f"Retries exhausted with backoff exception.", exc_info=True)
|
307
|
+
raise MessageRepresentationAirbyteTracedErrors(
|
308
|
+
internal_message=f"Exhausted available request attempts. Exception: {e}",
|
309
|
+
message=f"Exhausted available request attempts. Please see logs for more details. Exception: {e}",
|
310
|
+
failure_type=e.failure_type or FailureType.system_error,
|
311
|
+
exception=e,
|
312
|
+
stream_descriptor=StreamDescriptor(name=self._name),
|
313
|
+
)
|
302
314
|
|
303
315
|
def _send(
|
304
316
|
self,
|
@@ -492,6 +504,7 @@ class HttpClient:
|
|
492
504
|
request=request,
|
493
505
|
response=(response if response is not None else exc),
|
494
506
|
error_message=error_message,
|
507
|
+
failure_type=error_resolution.failure_type,
|
495
508
|
)
|
496
509
|
|
497
510
|
elif retry_endlessly:
|
@@ -499,12 +512,14 @@ class HttpClient:
|
|
499
512
|
request=request,
|
500
513
|
response=(response if response is not None else exc),
|
501
514
|
error_message=error_message,
|
515
|
+
failure_type=error_resolution.failure_type,
|
502
516
|
)
|
503
517
|
|
504
518
|
raise DefaultBackoffException(
|
505
519
|
request=request,
|
506
520
|
response=(response if response is not None else exc),
|
507
521
|
error_message=error_message,
|
522
|
+
failure_type=error_resolution.failure_type,
|
508
523
|
)
|
509
524
|
|
510
525
|
elif response:
|
@@ -545,6 +560,15 @@ class HttpClient:
|
|
545
560
|
data=data,
|
546
561
|
)
|
547
562
|
|
563
|
+
env_settings = self._session.merge_environment_settings(
|
564
|
+
url=request.url,
|
565
|
+
proxies=request_kwargs.get("proxies"),
|
566
|
+
stream=request_kwargs.get("stream"),
|
567
|
+
verify=request_kwargs.get("verify"),
|
568
|
+
cert=request_kwargs.get("cert"),
|
569
|
+
)
|
570
|
+
request_kwargs = {**request_kwargs, **env_settings}
|
571
|
+
|
548
572
|
response: requests.Response = self._send_with_retry(
|
549
573
|
request=request,
|
550
574
|
request_kwargs=request_kwargs,
|
@@ -240,7 +240,11 @@ class AbstractOauth2Authenticator(AuthBase):
|
|
240
240
|
except requests.exceptions.RequestException as e:
|
241
241
|
if e.response is not None:
|
242
242
|
if e.response.status_code == 429 or e.response.status_code >= 500:
|
243
|
-
raise DefaultBackoffException(
|
243
|
+
raise DefaultBackoffException(
|
244
|
+
request=e.response.request,
|
245
|
+
response=e.response,
|
246
|
+
failure_type=FailureType.transient_error,
|
247
|
+
)
|
244
248
|
if self._wrap_refresh_token_exception(e):
|
245
249
|
message = "Refresh token is invalid or expired. Please re-authenticate from Sources/<your source>/Settings."
|
246
250
|
raise AirbyteTracedException(
|
@@ -8,6 +8,7 @@ from enum import Flag, auto
|
|
8
8
|
from typing import TYPE_CHECKING, Any, Callable, Dict, Generator, Mapping, Optional, cast
|
9
9
|
|
10
10
|
from jsonschema import Draft7Validator, ValidationError, validators
|
11
|
+
from jsonschema.protocols import Validator
|
11
12
|
from referencing import Registry, Resource
|
12
13
|
from referencing._core import Resolver
|
13
14
|
from referencing.exceptions import Unresolvable
|
@@ -17,12 +18,6 @@ from airbyte_cdk.sources.utils.schema_helpers import expand_refs
|
|
17
18
|
|
18
19
|
from .schema_helpers import get_ref_resolver_registry
|
19
20
|
|
20
|
-
try:
|
21
|
-
from jsonschema.validators import Validator
|
22
|
-
except:
|
23
|
-
from jsonschema import Validator
|
24
|
-
|
25
|
-
|
26
21
|
MAX_NESTING_DEPTH = 3
|
27
22
|
json_to_python_simple = {
|
28
23
|
"string": str,
|
@@ -82,11 +82,10 @@ assert not ab_datetime_try_parse("foo") # Invalid: not parsab
|
|
82
82
|
"""
|
83
83
|
|
84
84
|
from datetime import datetime, timedelta, timezone
|
85
|
-
from typing import Any,
|
85
|
+
from typing import Any, Union, overload
|
86
86
|
|
87
87
|
from dateutil import parser
|
88
|
-
from
|
89
|
-
from whenever import Instant, LocalDateTime, ZonedDateTime
|
88
|
+
from whenever import Instant
|
90
89
|
|
91
90
|
|
92
91
|
class AirbyteDateTime(datetime):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 7.0.
|
3
|
+
Version: 7.1.0.post4.dev17948197380
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -84,7 +84,7 @@ Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
|
|
84
84
|
Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
85
85
|
Requires-Dist: uvicorn (>=0.35.0) ; extra == "manifest-server"
|
86
86
|
Requires-Dist: wcmatch (==10.0)
|
87
|
-
Requires-Dist: whenever (>=0.
|
87
|
+
Requires-Dist: whenever (>=0.7.3,<0.9.0)
|
88
88
|
Requires-Dist: xmltodict (>=0.13,<0.15)
|
89
89
|
Project-URL: Documentation, https://docs.airbyte.io/
|
90
90
|
Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
|
@@ -121,7 +121,7 @@ airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCl
|
|
121
121
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
|
122
122
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=Jzuxlmt1_-_aFC_n0OmP8L1nDOacLzbEVVx3kjdX_W8,3104
|
123
123
|
airbyte_cdk/sources/declarative/checks/__init__.py,sha256=cpoBwEbRNcMi7Rmi5pD63ppUvAOZsAWzasmc57ob9rc,873
|
124
|
-
airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py,sha256=
|
124
|
+
airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py,sha256=72d3oafXAX31dEeneFLBjRMS_3a8B8QISjlFcOlfeoY,2341
|
125
125
|
airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=G7VBOwDdybbpZstFG0hgdy20CJZkgBKILLkQBQzjZ9A,7997
|
126
126
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=HQHK3gO5xXeWYdxDjiXO3xzz5MBOYcQn0Dd6IRW7Vx8,1400
|
127
127
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
@@ -228,7 +228,7 @@ airbyte_cdk/sources/declarative/requesters/request_path.py,sha256=S3MeFvcaQrMbOk
|
|
228
228
|
airbyte_cdk/sources/declarative/requesters/requester.py,sha256=T6tMx_Bx4iT-0YVjY7IzgRil-gaIu9n01b1iwpTh3Ek,5516
|
229
229
|
airbyte_cdk/sources/declarative/resolvers/__init__.py,sha256=xVhOWLQW0wFBTAtRYu3GdFebPqKCDSt1uoP2TiBGrvs,1643
|
230
230
|
airbyte_cdk/sources/declarative/resolvers/components_resolver.py,sha256=rkNatGGhPQhasor95CujY7StmVn5q2UDGAcEzMKueGE,2213
|
231
|
-
airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=
|
231
|
+
airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=KF2wYDVLRf9-iGIg2AvmUVCryUIGgjLOBeljIn78-UA,8619
|
232
232
|
airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=Y3P2tViKhJaOPp7Zl-uiCn5RiHkVEkpBAMi50PVXfoI,4830
|
233
233
|
airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py,sha256=BUmvbsMeIGusZSCd80NiTFcwcosq-uhXHGNheAFs-10,5147
|
234
234
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=LQQspOQS9oyOx9cGnRIz1mq-8DZCBysyDJDPqjy1HvM,449
|
@@ -374,18 +374,18 @@ airbyte_cdk/sources/streams/http/availability_strategy.py,sha256=sovoGFThZr-doMN
|
|
374
374
|
airbyte_cdk/sources/streams/http/error_handlers/__init__.py,sha256=nNO0bnD0ogDlR4AQrI-YmpcM911vWe83b7RJYgvjSYs,666
|
375
375
|
airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py,sha256=7fIkF00wD6bqIXtiG2QAgbje_xiQ5JTs99ibwR8LLXY,1030
|
376
376
|
airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py,sha256=1_1Gi2ImwTbh4SgIKCRh2P4kPaVeAeHc1ib6IrBfqKA,411
|
377
|
-
airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py,sha256
|
377
|
+
airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py,sha256=-gn0YPkoxpQMZuirzUevqNcaLkyILPA04TLtA7W0H18,3732
|
378
378
|
airbyte_cdk/sources/streams/http/error_handlers/error_handler.py,sha256=GuqP7U1eC9RPaiD4y4Mkf17vKcOXo2ENnMB-CUBLsbo,1164
|
379
379
|
airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py,sha256=xC93uB5BJd3iOnAXCrYLJTitWeGZlqzwe55VtsZqNnE,456
|
380
380
|
airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py,sha256=2gqececTxxUqO6aIkVNNXADg48Px5EHUwnXHL9KiPT8,4188
|
381
381
|
airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py,sha256=GW5rkBQLLTj7MEaDdbpG7DHxTQVRrDOg1ehLLxjqiM4,1828
|
382
382
|
airbyte_cdk/sources/streams/http/error_handlers/response_models.py,sha256=xGIVELBFY0TmH9aUq1ikoqJz8oHLr6di2JLvKWVEO-s,2236
|
383
|
-
airbyte_cdk/sources/streams/http/exceptions.py,sha256=
|
383
|
+
airbyte_cdk/sources/streams/http/exceptions.py,sha256=TTUpWq_qLPtdvXqYPpMhtYbFVQ7dGtajDVfjb6KQ8z8,2099
|
384
384
|
airbyte_cdk/sources/streams/http/http.py,sha256=0uariNq8OFnlX7iqOHwBhecxA-Hfd5hSY8_XCEgn3jI,28499
|
385
|
-
airbyte_cdk/sources/streams/http/http_client.py,sha256=
|
385
|
+
airbyte_cdk/sources/streams/http/http_client.py,sha256=Ys-9qCA-jFu1oQNbehCwb3K2GaJcTJp1gtoa1qujK1M,25438
|
386
386
|
airbyte_cdk/sources/streams/http/rate_limiting.py,sha256=IwdjrHKUnU97XO4qONgYRv4YYW51xQ8SJm4WLafXDB8,6351
|
387
387
|
airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py,sha256=RN0D3nOX1xLgwEwKWu6pkGy3XqBFzKSNZ8Lf6umU2eY,413
|
388
|
-
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=
|
388
|
+
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=aWrBmJ8AhUtvtHhHq5JGVZFXjDa7jG8DZePG4gEs9VY,19800
|
389
389
|
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py,sha256=Y3n7J-sk5yGjv_OxtY6Z6k0PEsFZmtIRi-x0KCbaHdA,1010
|
390
390
|
airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=gVLo7nU-ORJd413TZHMJQV4m_vaGnRqhoXGGWehFjDA,19253
|
391
391
|
airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
|
@@ -398,7 +398,7 @@ airbyte_cdk/sources/utils/files_directory.py,sha256=z8Dmr-wkL1sAqdwCST4MBUFAyMHP
|
|
398
398
|
airbyte_cdk/sources/utils/record_helper.py,sha256=7wL-pDYrBpcmZHa8ORtiSOqBZJEZI5hdl2dA1RYiatk,2029
|
399
399
|
airbyte_cdk/sources/utils/schema_helpers.py,sha256=_SCOPalKoMW3SX9J-zK6UsAO0oHsfCyW-F2wQlPJ3PU,9145
|
400
400
|
airbyte_cdk/sources/utils/slice_logger.py,sha256=M1TvcYGMftXR841XdJmeEpKpQqrdOD5X-qsspfAMKMs,2168
|
401
|
-
airbyte_cdk/sources/utils/transform.py,sha256=
|
401
|
+
airbyte_cdk/sources/utils/transform.py,sha256=b45WBpkdhsRDJZa95DnwfTcc5eJHmBBSs1CWP6CHJt8,11914
|
402
402
|
airbyte_cdk/sources/utils/types.py,sha256=41ZQR681t5TUnOScij58d088sb99klH_ZENFcaYro_g,175
|
403
403
|
airbyte_cdk/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
404
404
|
airbyte_cdk/sql/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -444,7 +444,7 @@ airbyte_cdk/utils/analytics_message.py,sha256=bi3uugQ2NjecnwTnz63iD5D1M8ZR8mXPbd
|
|
444
444
|
airbyte_cdk/utils/connector_paths.py,sha256=MXj0RBi3HpuvQTWH6-vc62BZZ3XguHMq0CVIkjhS3qs,8779
|
445
445
|
airbyte_cdk/utils/constants.py,sha256=QzCi7j5SqpI5I06uRvQ8FC73JVJi7rXaRnR3E_gro5c,108
|
446
446
|
airbyte_cdk/utils/datetime_format_inferrer.py,sha256=Ne2cpk7Tx3eZDEW2Q3O7jnNOY9g-w-AUMt3Ltvwg1tY,3989
|
447
|
-
airbyte_cdk/utils/datetime_helpers.py,sha256=
|
447
|
+
airbyte_cdk/utils/datetime_helpers.py,sha256=b3jKNpz4HPwWXCeBoyYKVbuqFvnp4in1Vy1bMK8R9dI,17675
|
448
448
|
airbyte_cdk/utils/docker.py,sha256=ub6xurQHw6qIhzgDO3V9sXOG1jkZyDGbOSSDjcazEHo,17989
|
449
449
|
airbyte_cdk/utils/event_timing.py,sha256=aiuFmPU80buLlNdKq4fDTEqqhEIelHPF6AalFGwY8as,2557
|
450
450
|
airbyte_cdk/utils/is_cloud_environment.py,sha256=DayV32Irh-SdnJ0MnjvstwCJ66_l5oEsd8l85rZtHoc,574
|
@@ -457,9 +457,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
457
457
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=9YDJmnIGFsT51CVQf2tSSvTapGimITjEFGbUTSZAGTI,963
|
458
458
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
459
459
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
460
|
-
airbyte_cdk-7.0.
|
461
|
-
airbyte_cdk-7.0.
|
462
|
-
airbyte_cdk-7.0.
|
463
|
-
airbyte_cdk-7.0.
|
464
|
-
airbyte_cdk-7.0.
|
465
|
-
airbyte_cdk-7.0.
|
460
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
461
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
462
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/METADATA,sha256=VULius3VshBwf1xPeMXPGLJg16zHu5-XG0xHIBQBfVc,6819
|
463
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
464
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
|
465
|
+
airbyte_cdk-7.1.0.post4.dev17948197380.dist-info/RECORD,,
|
{airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/LICENSE.txt
RENAMED
File without changes
|
{airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/LICENSE_SHORT
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-7.0.5.dist-info → airbyte_cdk-7.1.0.post4.dev17948197380.dist-info}/entry_points.txt
RENAMED
File without changes
|