airbyte-cdk 6.13.1.dev4109__py3-none-any.whl → 6.14.0__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/entrypoint.py +1 -13
- airbyte_cdk/sources/declarative/auth/oauth.py +0 -26
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py +51 -24
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +20 -128
- airbyte_cdk/sources/declarative/extractors/__init__.py +0 -2
- airbyte_cdk/sources/declarative/extractors/record_selector.py +7 -5
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +11 -97
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +14 -71
- airbyte_cdk/sources/declarative/requesters/http_job_repository.py +4 -33
- airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +35 -52
- airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +7 -10
- airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +4 -9
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +6 -11
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +13 -13
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +13 -14
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +7 -6
- airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +10 -10
- airbyte_cdk/sources/declarative/retrievers/async_retriever.py +4 -1
- airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +64 -71
- airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -4
- airbyte_cdk/sources/declarative/transformations/flatten_fields.py +1 -3
- airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -11
- airbyte_cdk/sources/file_based/exceptions.py +0 -34
- airbyte_cdk/sources/file_based/file_based_source.py +5 -28
- airbyte_cdk/sources/file_based/file_based_stream_reader.py +4 -18
- airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +2 -25
- airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +2 -30
- airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +4 -20
- airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +4 -34
- airbyte_cdk/sources/types.py +0 -3
- {airbyte_cdk-6.13.1.dev4109.dist-info → airbyte_cdk-6.14.0.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.13.1.dev4109.dist-info → airbyte_cdk-6.14.0.dist-info}/RECORD +35 -38
- {airbyte_cdk-6.13.1.dev4109.dist-info → airbyte_cdk-6.14.0.dist-info}/WHEEL +1 -1
- airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -55
- airbyte_cdk/sources/declarative/requesters/README.md +0 -57
- airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -61
- {airbyte_cdk-6.13.1.dev4109.dist-info → airbyte_cdk-6.14.0.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.13.1.dev4109.dist-info → airbyte_cdk-6.14.0.dist-info}/entry_points.txt +0 -0
@@ -30,16 +30,12 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
|
|
30
30
|
client_id: str,
|
31
31
|
client_secret: str,
|
32
32
|
refresh_token: str,
|
33
|
-
client_id_name: str = "client_id",
|
34
|
-
client_secret_name: str = "client_secret",
|
35
|
-
refresh_token_name: str = "refresh_token",
|
36
33
|
scopes: List[str] | None = None,
|
37
34
|
token_expiry_date: pendulum.DateTime | None = None,
|
38
35
|
token_expiry_date_format: str | None = None,
|
39
36
|
access_token_name: str = "access_token",
|
40
37
|
expires_in_name: str = "expires_in",
|
41
38
|
refresh_request_body: Mapping[str, Any] | None = None,
|
42
|
-
grant_type_name: str = "grant_type",
|
43
39
|
grant_type: str = "refresh_token",
|
44
40
|
token_expiry_is_time_of_expiration: bool = False,
|
45
41
|
refresh_token_error_status_codes: Tuple[int, ...] = (),
|
@@ -47,17 +43,13 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
|
|
47
43
|
refresh_token_error_values: Tuple[str, ...] = (),
|
48
44
|
):
|
49
45
|
self._token_refresh_endpoint = token_refresh_endpoint
|
50
|
-
self._client_secret_name = client_secret_name
|
51
46
|
self._client_secret = client_secret
|
52
|
-
self._client_id_name = client_id_name
|
53
47
|
self._client_id = client_id
|
54
|
-
self._refresh_token_name = refresh_token_name
|
55
48
|
self._refresh_token = refresh_token
|
56
49
|
self._scopes = scopes
|
57
50
|
self._access_token_name = access_token_name
|
58
51
|
self._expires_in_name = expires_in_name
|
59
52
|
self._refresh_request_body = refresh_request_body
|
60
|
-
self._grant_type_name = grant_type_name
|
61
53
|
self._grant_type = grant_type
|
62
54
|
|
63
55
|
self._token_expiry_date = token_expiry_date or pendulum.now().subtract(days=1) # type: ignore [no-untyped-call]
|
@@ -71,21 +63,12 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
|
|
71
63
|
def get_token_refresh_endpoint(self) -> str:
|
72
64
|
return self._token_refresh_endpoint
|
73
65
|
|
74
|
-
def get_client_id_name(self) -> str:
|
75
|
-
return self._client_id_name
|
76
|
-
|
77
66
|
def get_client_id(self) -> str:
|
78
67
|
return self._client_id
|
79
68
|
|
80
|
-
def get_client_secret_name(self) -> str:
|
81
|
-
return self._client_secret_name
|
82
|
-
|
83
69
|
def get_client_secret(self) -> str:
|
84
70
|
return self._client_secret
|
85
71
|
|
86
|
-
def get_refresh_token_name(self) -> str:
|
87
|
-
return self._refresh_token_name
|
88
|
-
|
89
72
|
def get_refresh_token(self) -> str:
|
90
73
|
return self._refresh_token
|
91
74
|
|
@@ -101,9 +84,6 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
|
|
101
84
|
def get_refresh_request_body(self) -> Mapping[str, Any]:
|
102
85
|
return self._refresh_request_body # type: ignore [return-value]
|
103
86
|
|
104
|
-
def get_grant_type_name(self) -> str:
|
105
|
-
return self._grant_type_name
|
106
|
-
|
107
87
|
def get_grant_type(self) -> str:
|
108
88
|
return self._grant_type
|
109
89
|
|
@@ -149,11 +129,8 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
|
|
149
129
|
expires_in_name: str = "expires_in",
|
150
130
|
refresh_token_name: str = "refresh_token",
|
151
131
|
refresh_request_body: Mapping[str, Any] | None = None,
|
152
|
-
grant_type_name: str = "grant_type",
|
153
132
|
grant_type: str = "refresh_token",
|
154
|
-
client_id_name: str = "client_id",
|
155
133
|
client_id: Optional[str] = None,
|
156
|
-
client_secret_name: str = "client_secret",
|
157
134
|
client_secret: Optional[str] = None,
|
158
135
|
access_token_config_path: Sequence[str] = ("credentials", "access_token"),
|
159
136
|
refresh_token_config_path: Sequence[str] = ("credentials", "refresh_token"),
|
@@ -197,30 +174,23 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
|
|
197
174
|
("credentials", "client_secret"),
|
198
175
|
)
|
199
176
|
)
|
200
|
-
self._client_id_name = client_id_name
|
201
|
-
self._client_secret_name = client_secret_name
|
202
177
|
self._access_token_config_path = access_token_config_path
|
203
178
|
self._refresh_token_config_path = refresh_token_config_path
|
204
179
|
self._token_expiry_date_config_path = token_expiry_date_config_path
|
205
180
|
self._token_expiry_date_format = token_expiry_date_format
|
206
181
|
self._refresh_token_name = refresh_token_name
|
207
|
-
self._grant_type_name = grant_type_name
|
208
182
|
self._connector_config = connector_config
|
209
183
|
self.__message_repository = message_repository
|
210
184
|
super().__init__(
|
211
|
-
token_refresh_endpoint
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
client_secret=self.get_client_secret(),
|
216
|
-
refresh_token=self.get_refresh_token(),
|
217
|
-
refresh_token_name=self._refresh_token_name,
|
185
|
+
token_refresh_endpoint,
|
186
|
+
self.get_client_id(),
|
187
|
+
self.get_client_secret(),
|
188
|
+
self.get_refresh_token(),
|
218
189
|
scopes=scopes,
|
219
190
|
token_expiry_date=self.get_token_expiry_date(),
|
220
191
|
access_token_name=access_token_name,
|
221
192
|
expires_in_name=expires_in_name,
|
222
193
|
refresh_request_body=refresh_request_body,
|
223
|
-
grant_type_name=self._grant_type_name,
|
224
194
|
grant_type=grant_type,
|
225
195
|
token_expiry_date_format=token_expiry_date_format,
|
226
196
|
token_expiry_is_time_of_expiration=token_expiry_is_time_of_expiration,
|
airbyte_cdk/sources/types.py
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.14.0
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
|
+
Home-page: https://airbyte.com
|
5
6
|
License: MIT
|
6
7
|
Keywords: airbyte,connector-development-kit,cdk
|
7
8
|
Author: Airbyte
|
@@ -68,7 +69,6 @@ Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
|
68
69
|
Requires-Dist: wcmatch (==10.0)
|
69
70
|
Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
|
70
71
|
Project-URL: Documentation, https://docs.airbyte.io/
|
71
|
-
Project-URL: Homepage, https://airbyte.com
|
72
72
|
Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
|
73
73
|
Description-Content-Type: text/markdown
|
74
74
|
|
@@ -22,7 +22,7 @@ airbyte_cdk/destinations/vector_db_based/indexer.py,sha256=beiSi2Uu67EoTr7yQSaCJ
|
|
22
22
|
airbyte_cdk/destinations/vector_db_based/test_utils.py,sha256=MkqLiOJ5QyKbV4rNiJhe-BHM7FD-ADHQ4bQGf4c5lRY,1932
|
23
23
|
airbyte_cdk/destinations/vector_db_based/utils.py,sha256=FOyEo8Lc-fY8UyhpCivhZtIqBRyxf3cUt6anmK03fUY,1127
|
24
24
|
airbyte_cdk/destinations/vector_db_based/writer.py,sha256=nZ00xPiohElJmYktEZZIhr0m5EDETCHGhg0Lb2S7A20,5095
|
25
|
-
airbyte_cdk/entrypoint.py,sha256=
|
25
|
+
airbyte_cdk/entrypoint.py,sha256=LZFX0bgtSs3TBzTWcDN52KHZDS-YrYPbnk5vwERGpEc,17984
|
26
26
|
airbyte_cdk/exception_handler.py,sha256=D_doVl3Dt60ASXlJsfviOCswxGyKF2q0RL6rif3fNks,2013
|
27
27
|
airbyte_cdk/logger.py,sha256=qi4UGuSYQQGaFaTVJlMD9lLppwqLXt1XBhwSXo-Q5IA,3660
|
28
28
|
airbyte_cdk/models/__init__.py,sha256=MOTiuML2wShBaMSIwikdjyye2uUWBjo4J1QFSbnoiM4,2075
|
@@ -53,7 +53,7 @@ airbyte_cdk/sources/declarative/async_job/timer.py,sha256=Fb8P72CQ7jIzJyzMSSNuBf
|
|
53
53
|
airbyte_cdk/sources/declarative/auth/__init__.py,sha256=e2CRrcBWGhz3sQu3Oh34d1riEIwXipGS8hrSB1pu0Oo,284
|
54
54
|
airbyte_cdk/sources/declarative/auth/declarative_authenticator.py,sha256=nf-OmRUHYG4ORBwyb5CANzuHEssE-oNmL-Lccn41Td8,1099
|
55
55
|
airbyte_cdk/sources/declarative/auth/jwt.py,sha256=7r5q1zOekjw8kEmEk1oUyovzVt3cbD6BuFnRILeLZi8,8250
|
56
|
-
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=
|
56
|
+
airbyte_cdk/sources/declarative/auth/oauth.py,sha256=Yr0ljFjln9FIWudQohXARyKEo6-4ACG840pZoi6JVrE,9165
|
57
57
|
airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
|
58
58
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=r4u3WXyVa7WmiSZ9-eZXlrUI-pS0D4YWJnwjLzwV-Fk,11210
|
59
59
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=9oq3dcBPAPwXSfkISjhA05dMhIzxaDQTmwOydBrnsMk,3028
|
@@ -62,11 +62,11 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=dAA-UhmMj0WLXCkRQr
|
|
62
62
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
63
63
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
64
64
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
65
|
-
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=
|
65
|
+
airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=PxP4p2686wsf1gjsumGKnh2o2Jjnrqg8QLGijEIrp-A,23412
|
66
66
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=l9LG7Qm6e5r_qgqfVKnx3mXYtg1I9MmMjomVIPfU4XA,177
|
67
67
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=SX9JjdesN1edN2WVUVMzU_ptqp2QB1OnsnjZ4mwcX7w,2579
|
68
68
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
69
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
69
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=w1WkfTgZN8znoC1X2XQCv6RhHdTxAO9O0pmFzQRL52k,130843
|
70
70
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
71
71
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=JRyNeOIpsFu4ztVZsN6sncqUEIqIE-bUkD2TPgbMgk0,10375
|
72
72
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=edGj4fGxznBk4xzRQyCA1rGfbpqe7z-RE0K3kQQWbgA,858
|
@@ -77,14 +77,13 @@ airbyte_cdk/sources/declarative/decoders/noop_decoder.py,sha256=iZh0yKY_JzgBnJWi
|
|
77
77
|
airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py,sha256=ZVBZhAOl0I0MymXN5CKTC-kIXG4GuUQAEyn0XpUDuSE,1081
|
78
78
|
airbyte_cdk/sources/declarative/decoders/xml_decoder.py,sha256=EU-7t-5vIGRHZ14h-f0GUE4V5-eTM9Flux-A8xgI1Rc,3117
|
79
79
|
airbyte_cdk/sources/declarative/exceptions.py,sha256=kTPUA4I2NV4J6HDz-mKPGMrfuc592akJnOyYx38l_QM,176
|
80
|
-
airbyte_cdk/sources/declarative/extractors/__init__.py,sha256=
|
80
|
+
airbyte_cdk/sources/declarative/extractors/__init__.py,sha256=J1WeMqtvGq7TwW7Ajc46S5jLcv22ptqmSuUXqUB9YG0,643
|
81
81
|
airbyte_cdk/sources/declarative/extractors/dpath_extractor.py,sha256=wR4Ol4MG2lt5UlqXF5EU_k7qa5cN4_-luu3PJ1PlO3A,3131
|
82
82
|
airbyte_cdk/sources/declarative/extractors/http_selector.py,sha256=2zWZ4ewTqQC8VwkjS0xD_u350Km3SiYP7hpOOgiLg5o,1169
|
83
83
|
airbyte_cdk/sources/declarative/extractors/record_extractor.py,sha256=XJELMjahAsaomlvQgN2zrNO0DJX0G0fr9r682gUz7Pg,691
|
84
84
|
airbyte_cdk/sources/declarative/extractors/record_filter.py,sha256=OJ9xmhNWNwwzxYOeIrDy1GINb1zH9MBy6suC5tm2LSk,3545
|
85
|
-
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=
|
85
|
+
airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=AkXPOWyp741cpYLBl9AbmVmOQmQ2BzZ2XjgsMEB6gGc,6583
|
86
86
|
airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=LhqGDfX06_dDYLKsIVnwQ_nAWCln-v8PV7Wgt_QVeTI,6533
|
87
|
-
airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
|
88
87
|
airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=huRz3KQJSUFmJCg5GPE9TckEBsB5TMsCa_THhJAhPVI,1037
|
89
88
|
airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=_UzUnSIUsDbRgbFTXgSyZEFb4ws-KdhdQPWO8mFbV7U,22028
|
90
89
|
airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
|
@@ -106,12 +105,12 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
106
105
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
107
106
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
108
107
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
109
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
108
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=1EdKXjEKoXVs7BuF4H9mBMSbVsDIy5uAv1Txboict7Q,91733
|
110
109
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
111
110
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
112
111
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=CXwTfD3wSQq3okcqwigpprbHhSURUokh4GK2OmOyKC8,9132
|
113
112
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
114
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
113
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=NYTa2KqBHq-JU2oKp0J79WADw8JgR2lgQS_unTB0bl4,107945
|
115
114
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=HJ-Syp3p7RpyR_OK0X_a2kSyISfu3W-PKrRI16iY0a8,957
|
116
115
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=n82J15S8bjeMZ5uROu--P3hnbQoxkY5v7RPHYx7g7ro,2929
|
117
116
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
@@ -119,7 +118,6 @@ airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py,sha25
|
|
119
118
|
airbyte_cdk/sources/declarative/partition_routers/partition_router.py,sha256=YyEIzdmLd1FjbVP3QbQ2VFCLW_P-OGbVh6VpZShp54k,2218
|
120
119
|
airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py,sha256=SKzKjSyfccq4dxGIh-J6ejrgkCHzaiTIazmbmeQiRD4,1942
|
121
120
|
airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py,sha256=5bgXoJfBg_6i53krQMptAGb50XB5XoVfqQxKQhlLtBA,15383
|
122
|
-
airbyte_cdk/sources/declarative/requesters/README.md,sha256=WabtHlwHg_J34aL1Kwm8vboYqBaSgsFjq10qR-P2sx8,2658
|
123
121
|
airbyte_cdk/sources/declarative/requesters/__init__.py,sha256=d7a3OoHbqaJDyyPli3nqqJ2yAW_SLX6XDaBAKOwvpxw,364
|
124
122
|
airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py,sha256=SkEDcJxlT1683rNx93K9whoS0OyUukkuOfToGtgpF58,776
|
125
123
|
airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py,sha256=1WZdpFmWL6W_Dko0qjflTaKIWeqt8jHT-D6HcujIp3s,884
|
@@ -134,18 +132,18 @@ airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.
|
|
134
132
|
airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py,sha256=q0YkeYUUWO6iErUy0vjqiOkhg8_9d5YcCmtlpXAJJ9E,1314
|
135
133
|
airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py,sha256=Tan66odx8VHzfdyyXMQkXz2pJYksllGqvxmpoajgcK4,669
|
136
134
|
airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py,sha256=vhWsEKNTYEzZ4gerhHqnDNKu4wGIP485NAzpSQ5DRZg,7941
|
137
|
-
airbyte_cdk/sources/declarative/requesters/http_job_repository.py,sha256=
|
135
|
+
airbyte_cdk/sources/declarative/requesters/http_job_repository.py,sha256=o0520AmHMb7SAoeokVNwoOzuZzIAT6ryx9uFYGSOrs0,8664
|
138
136
|
airbyte_cdk/sources/declarative/requesters/http_requester.py,sha256=RqYPkgJFAWfcZBTc-JBcGHPm4JL1ZQOhs9GKU4MP2eE,14723
|
139
137
|
airbyte_cdk/sources/declarative/requesters/paginators/__init__.py,sha256=uArbKs9JKNCt7t9tZoeWwjDpyI1HoPp29FNW0JzvaEM,644
|
140
|
-
airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py,sha256=
|
141
|
-
airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py,sha256
|
142
|
-
airbyte_cdk/sources/declarative/requesters/paginators/paginator.py,sha256=
|
138
|
+
airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py,sha256=LxTq1hieznRWlYlfODdZbMDUml-g6NyBkdwVI2mCNMM,10910
|
139
|
+
airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py,sha256=-P-QOlefFhEe99bsB2y3yTvA8c8kCCbfBaTS6qPvF6I,1927
|
140
|
+
airbyte_cdk/sources/declarative/requesters/paginators/paginator.py,sha256=ZgyvH7DOrASQ5K__J5SRAXH3REUW2n3yPHnFW9xq4NU,1972
|
143
141
|
airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py,sha256=2gly8fuZpDNwtu1Qg6oE2jBLGqQRdzSLJdnpk_iDV6I,767
|
144
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py,sha256=
|
145
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py,sha256=
|
146
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py,sha256=
|
147
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=
|
148
|
-
airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256=
|
142
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py,sha256=vFzpNv8BdgXrYO5qhi2_Un4x4y-EAQWxinZtEPWz5KI,3654
|
143
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py,sha256=TKG4Mp1t8MfmFJDeHtXmxCp_ibRK03J5O04N5HVtBvE,3430
|
144
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py,sha256=kQGpfr-dOwarxTIf2S4sHVulBzm8zSwQXBM7rOhkafA,2491
|
145
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=ABpO4t0UUziBZnyml8UT_NhlF6loekhQji57TpKnaiY,1290
|
146
|
+
airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256=2b005ulACvHgIL8ktTWwposu4umowyu0iGV2mGOb_Tg,2290
|
149
147
|
airbyte_cdk/sources/declarative/requesters/request_option.py,sha256=_qmv8CLQQ3fERt6BuMZeRu6tZXscPoeARx1VJdWMQ_M,1055
|
150
148
|
airbyte_cdk/sources/declarative/requesters/request_options/__init__.py,sha256=WCwpKqM4wKqy-DHJaCHbKAlFqRVOqMi9K5qonxIfi_Y,809
|
151
149
|
airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py,sha256=FLkg0uzC9bc-zFnALWr0FLYpKsz8iK2xQsd4UOyeW08,3706
|
@@ -161,9 +159,9 @@ airbyte_cdk/sources/declarative/resolvers/components_resolver.py,sha256=KPjKc0yb
|
|
161
159
|
airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=dz4iJV9liD_LzY_Mn4XmAStoUll60R3MIGWV4aN3pgg,5223
|
162
160
|
airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=AiojNs8wItJFrENZBFUaDvau3sgwudO6Wkra36upSPo,4639
|
163
161
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=ix9m1dkR69DcXCXUKC5RK_ZZM7ojTLBQ4IkWQTfmfCk,456
|
164
|
-
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=
|
162
|
+
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=_-d3MvHh-4r46i4wjQikD4ZygKA7TvuDu2i04qqULEg,3731
|
165
163
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
166
|
-
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=
|
164
|
+
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=N4swGw5mfuTXJ2R7AKX18CHzizsr69pXwt5uSHLPi48,24172
|
167
165
|
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=HztgVVaZdil5UfgUZcv_Hyy84r89_EKRwyO2hoewNVg,749
|
168
166
|
airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=KTACrIE23a83wsm3Rd9Eb4K6-20lrGqYxTHNp9yxsso,1820
|
169
167
|
airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=H6A3NQ6kPPM-cUNPmdvDPc9xNzR1rQNrK95GbgCW334,8822
|
@@ -173,12 +171,11 @@ airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLn
|
|
173
171
|
airbyte_cdk/sources/declarative/spec/__init__.py,sha256=H0UwoRhgucbKBIzg85AXrifybVmfpwWpPdy22vZKVuo,141
|
174
172
|
airbyte_cdk/sources/declarative/spec/spec.py,sha256=ODSNUgkDOhnLQnwLjgSaME6R3kNeywjROvbNrWEnsgU,1876
|
175
173
|
airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=sI9vhc95RwJYOnA0VKjcbtKgFcmAbWjhdWBXFbAijOs,176
|
176
|
-
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=
|
174
|
+
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=E7feZ5xkHwFHODq8FSjwdGe291RZoCMCRHT1rWnQ1lI,3463
|
177
175
|
airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
|
178
176
|
airbyte_cdk/sources/declarative/transformations/__init__.py,sha256=CPJ8TlMpiUmvG3624VYu_NfTzxwKcfBjM2Q2wJ7fkSA,919
|
179
177
|
airbyte_cdk/sources/declarative/transformations/add_fields.py,sha256=r4YdAuAk2bQtNWJMztIIy2CC-NglD9NeK1s1TeO9wkw,5027
|
180
|
-
airbyte_cdk/sources/declarative/transformations/flatten_fields.py,sha256=
|
181
|
-
airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py,sha256=vbIn6ump-Ut6g20yMub7PFoPBhOKVtrHSAUdcOUdLfw,1999
|
178
|
+
airbyte_cdk/sources/declarative/transformations/flatten_fields.py,sha256=ti9fLVk-EpMeDY7ImduvQq1YGounLYmH9dHzp7MIRxk,1703
|
182
179
|
airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py,sha256=RTs5KX4V3hM7A6QN1WlGF21YccTIyNH6qQI9IMb__hw,670
|
183
180
|
airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py,sha256=43zwe6_F5ba5C4eY0RgXxPz7ndPKZfXGChHepFn-2lk,2263
|
184
181
|
airbyte_cdk/sources/declarative/transformations/remove_fields.py,sha256=EwUP0SZ2p4GRJ6Q8CUzlz9dcUeEidEFDlI2IBye2tlc,2745
|
@@ -196,7 +193,7 @@ airbyte_cdk/sources/file_based/availability_strategy/__init__.py,sha256=ddKQfUmk
|
|
196
193
|
airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py,sha256=01Nd4b7ERAbp-OZo_8rrAzFXWPTMwr02SnWiN17nx8Q,2363
|
197
194
|
airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py,sha256=j9T5TimfWFUz7nqsaj-83G3xWmDpsmeSbDnaUNmz0UM,5849
|
198
195
|
airbyte_cdk/sources/file_based/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
199
|
-
airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py,sha256=
|
196
|
+
airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py,sha256=tj-M1L5BTa5yIQ3jHo09CtCTSq_eR-68zgyOPqwsurw,6455
|
200
197
|
airbyte_cdk/sources/file_based/config/avro_format.py,sha256=NxTF96ewzn6HuhgodsY7Rpb-ybr1ZEWW5d4Vid64g5A,716
|
201
198
|
airbyte_cdk/sources/file_based/config/csv_format.py,sha256=NWekkyT8dTwiVK0mwa_krQD4FJPHSDfILo8kPAg3-Vs,8006
|
202
199
|
airbyte_cdk/sources/file_based/config/excel_format.py,sha256=9qAmTsT6SoVzNfNv0oBVkVCmiyqQuVAbfRKajjoa7Js,378
|
@@ -207,9 +204,9 @@ airbyte_cdk/sources/file_based/config/unstructured_format.py,sha256=tIbB9Pn1HqU6
|
|
207
204
|
airbyte_cdk/sources/file_based/discovery_policy/__init__.py,sha256=gl3ey6mZbyfraB9P3pFhf9UJp2JeTZ1SUFAopy2iBvY,301
|
208
205
|
airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py,sha256=dCfXX529Rd5rtopg4VeEgTPJjFtqjtjzPq6LCw18Wt0,605
|
209
206
|
airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py,sha256=-xujTidtrq6HC00WKbjQh1CZdT5LMuzkp5BLjqDmfTY,1007
|
210
|
-
airbyte_cdk/sources/file_based/exceptions.py,sha256=
|
211
|
-
airbyte_cdk/sources/file_based/file_based_source.py,sha256=
|
212
|
-
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=
|
207
|
+
airbyte_cdk/sources/file_based/exceptions.py,sha256=AEELNIRzKPX6eopKd_2jhE7WiNeR0Aw7nQWVOL8fvkc,5760
|
208
|
+
airbyte_cdk/sources/file_based/file_based_source.py,sha256=RfpctRNLJ_EHKKEc2E1EZGYRfhG0Z9o6TgsKS4XrSNY,16652
|
209
|
+
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=ohxKlqPuV7TGwjyRy_gaWUol8QN5lBSoCYoaqBtRh1c,6179
|
213
210
|
airbyte_cdk/sources/file_based/file_types/__init__.py,sha256=blCLn0-2LC-ZdgcNyDEhqM2RiUvEjEBh-G4-t32ZtuM,1268
|
214
211
|
airbyte_cdk/sources/file_based/file_types/avro_parser.py,sha256=XNx-JC-sgzH9u3nOJ2M59FxBXvtig8LN6BIkeDOavZA,10858
|
215
212
|
airbyte_cdk/sources/file_based/file_types/csv_parser.py,sha256=QlCXB-ry3np67Q_VerQEPoWDOTcPTB6Go4ydZxY9ae4,20445
|
@@ -218,7 +215,7 @@ airbyte_cdk/sources/file_based/file_types/file_transfer.py,sha256=HyGRihJxcb_lEs
|
|
218
215
|
airbyte_cdk/sources/file_based/file_types/file_type_parser.py,sha256=JgpH21PrbRqwK92BJklZWvh2TndA6xZ-eP1LPMo44oQ,2832
|
219
216
|
airbyte_cdk/sources/file_based/file_types/jsonl_parser.py,sha256=GwyNyxmST4RX-XpXy7xVH0D-znYWWBmGv_pVAu95oHQ,5886
|
220
217
|
airbyte_cdk/sources/file_based/file_types/parquet_parser.py,sha256=XenFg5sJ-UBnIkSmsiNJRou11NO0zZXx-RXgPHMT2NA,10487
|
221
|
-
airbyte_cdk/sources/file_based/file_types/unstructured_parser.py,sha256=
|
218
|
+
airbyte_cdk/sources/file_based/file_types/unstructured_parser.py,sha256=r5FNcJadiI5PTyl1-doIodPCwW7xZWOTHl4Epd-w0-8,18602
|
222
219
|
airbyte_cdk/sources/file_based/remote_file.py,sha256=yqRz93vPe8PBXLIMJ5W5u2JRlZRhg6sBrAjn3pPjJ8A,315
|
223
220
|
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=Cf8FH1bDFP0qCDDfEYir_WjP4exXUnikz8hZ40y1Ek0,9601
|
224
221
|
airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py,sha256=FkByIyEy56x2_awYnxGPqGaOp7zAzpAoRkPZHKySI9M,536
|
@@ -235,7 +232,7 @@ airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_c
|
|
235
232
|
airbyte_cdk/sources/file_based/stream/cursor/__init__.py,sha256=MhFB5hOo8sjwvCh8gangaymdg3EJWYt_72brFOZt068,191
|
236
233
|
airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py,sha256=om-x3gZFPgWDpi15S9RxZmR36VHnk8sytgN6LlBQhAw,1934
|
237
234
|
airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py,sha256=VGV7xLyBribuBMVrXtO1xqkWJD86bl7yhXtjnwLMohM,7051
|
238
|
-
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=
|
235
|
+
airbyte_cdk/sources/file_based/stream/default_file_based_stream.py,sha256=rpwU6AOyhFLuXtcFKkcOHFWbRQ4kLCOKzAjcID_M87k,16770
|
239
236
|
airbyte_cdk/sources/file_based/types.py,sha256=INxG7OPnkdUP69oYNKMAbwhvV1AGvLRHs1J6pIia2FI,218
|
240
237
|
airbyte_cdk/sources/http_config.py,sha256=OBZeuyFilm6NlDlBhFQvHhTWabEvZww6OHDIlZujIS0,730
|
241
238
|
airbyte_cdk/sources/http_logger.py,sha256=TyBmtRA6D9g0XDkKGvdM415b36RXDjgfkwRewDsH8-0,1576
|
@@ -288,12 +285,12 @@ airbyte_cdk/sources/streams/http/http.py,sha256=JAMpiTdS9HFNOlwayWNvQdxoqs2rpW9w
|
|
288
285
|
airbyte_cdk/sources/streams/http/http_client.py,sha256=tDE0ROtxjGMVphvsw8INvGMtZ97hIF-v47pZ3jIyiwc,23011
|
289
286
|
airbyte_cdk/sources/streams/http/rate_limiting.py,sha256=IwdjrHKUnU97XO4qONgYRv4YYW51xQ8SJm4WLafXDB8,6351
|
290
287
|
airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py,sha256=RN0D3nOX1xLgwEwKWu6pkGy3XqBFzKSNZ8Lf6umU2eY,413
|
291
|
-
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=
|
288
|
+
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=sxmrQKAvN8piamssL3xh8KXevTwdaXuLs2O0hNEA5aQ,10635
|
292
289
|
airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py,sha256=Y3n7J-sk5yGjv_OxtY6Z6k0PEsFZmtIRi-x0KCbaHdA,1010
|
293
|
-
airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=
|
290
|
+
airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=ka-bBRWvIv09LmZNYl49p2lK9nd_Tvi2g0lIp3OkU40,14872
|
294
291
|
airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
|
295
292
|
airbyte_cdk/sources/streams/utils/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
296
|
-
airbyte_cdk/sources/types.py,sha256=
|
293
|
+
airbyte_cdk/sources/types.py,sha256=WWVigI7ZSoQU2TBCzDsHJtoX4Ima9v--lcLyYwUG_cE,4904
|
297
294
|
airbyte_cdk/sources/utils/__init__.py,sha256=TTN6VUxVy6Is8BhYQZR5pxJGQh8yH4duXh4O1TiMiEY,118
|
298
295
|
airbyte_cdk/sources/utils/casing.py,sha256=QC-gV1O4e8DR4-bhdXieUPKm_JamzslVyfABLYYRSXA,256
|
299
296
|
airbyte_cdk/sources/utils/record_helper.py,sha256=jeB0mucudzna7Zvj-pCBbwFrbLJ36SlAWZTh5O4Fb9Y,2168
|
@@ -343,8 +340,8 @@ airbyte_cdk/utils/slice_hasher.py,sha256=-pHexlNYoWYPnXNH-M7HEbjmeJe9Zk7SJijdQ7d
|
|
343
340
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
344
341
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
345
342
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
346
|
-
airbyte_cdk-6.
|
347
|
-
airbyte_cdk-6.
|
348
|
-
airbyte_cdk-6.
|
349
|
-
airbyte_cdk-6.
|
350
|
-
airbyte_cdk-6.
|
343
|
+
airbyte_cdk-6.14.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
344
|
+
airbyte_cdk-6.14.0.dist-info/METADATA,sha256=9K6E6L2q8Vn8wNuU-ZHjoxjiEwQX0_Xzb2vwyJzabbY,5988
|
345
|
+
airbyte_cdk-6.14.0.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
346
|
+
airbyte_cdk-6.14.0.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
347
|
+
airbyte_cdk-6.14.0.dist-info/RECORD,,
|
@@ -1,55 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
-
#
|
4
|
-
|
5
|
-
from abc import ABC, abstractmethod
|
6
|
-
from dataclasses import dataclass
|
7
|
-
from typing import Any, Dict, Mapping
|
8
|
-
|
9
|
-
|
10
|
-
@dataclass
|
11
|
-
class TypeTransformer(ABC):
|
12
|
-
"""
|
13
|
-
Abstract base class for implementing type transformation logic.
|
14
|
-
|
15
|
-
This class provides a blueprint for defining custom transformations
|
16
|
-
on data records based on a provided schema. Implementing classes
|
17
|
-
must override the `transform` method to specify the transformation
|
18
|
-
logic.
|
19
|
-
|
20
|
-
Attributes:
|
21
|
-
None explicitly defined, as this is a dataclass intended to be
|
22
|
-
subclassed.
|
23
|
-
|
24
|
-
Methods:
|
25
|
-
transform(record: Dict[str, Any], schema: Mapping[str, Any]) -> None:
|
26
|
-
Abstract method that must be implemented by subclasses.
|
27
|
-
It performs a transformation on a given data record based
|
28
|
-
on the provided schema.
|
29
|
-
|
30
|
-
Usage:
|
31
|
-
To use this class, create a subclass that implements the
|
32
|
-
`transform` method with the desired transformation logic.
|
33
|
-
"""
|
34
|
-
|
35
|
-
@abstractmethod
|
36
|
-
def transform(
|
37
|
-
self,
|
38
|
-
record: Dict[str, Any],
|
39
|
-
schema: Mapping[str, Any],
|
40
|
-
) -> None:
|
41
|
-
"""
|
42
|
-
Perform a transformation on a data record based on a given schema.
|
43
|
-
|
44
|
-
Args:
|
45
|
-
record (Dict[str, Any]): The data record to be transformed.
|
46
|
-
schema (Mapping[str, Any]): The schema that dictates how
|
47
|
-
the record should be transformed.
|
48
|
-
|
49
|
-
Returns:
|
50
|
-
None
|
51
|
-
|
52
|
-
Raises:
|
53
|
-
NotImplementedError: If the method is not implemented
|
54
|
-
by a subclass.
|
55
|
-
"""
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# AsyncHttpJobRepository sequence diagram
|
2
|
-
|
3
|
-
- Components marked as optional are not required and can be ignored.
|
4
|
-
- if `url_requester` is not provided, `urls_extractor` will get urls from the `polling_job_response`
|
5
|
-
- interpolation_context, e.g. `create_job_response` or `polling_job_response` can be obtained from stream_slice
|
6
|
-
|
7
|
-
|
8
|
-
```mermaid
|
9
|
-
---
|
10
|
-
title: AsyncHttpJobRepository Sequence Diagram
|
11
|
-
---
|
12
|
-
sequenceDiagram
|
13
|
-
participant AsyncHttpJobRepository as AsyncOrchestrator
|
14
|
-
participant CreationRequester as creation_requester
|
15
|
-
participant PollingRequester as polling_requester
|
16
|
-
participant UrlRequester as url_requester (Optional)
|
17
|
-
participant DownloadRetriever as download_retriever
|
18
|
-
participant AbortRequester as abort_requester (Optional)
|
19
|
-
participant DeleteRequester as delete_requester (Optional)
|
20
|
-
participant Reporting Server as Async Reporting Server
|
21
|
-
|
22
|
-
AsyncHttpJobRepository ->> CreationRequester: Initiate job creation
|
23
|
-
CreationRequester ->> Reporting Server: Create job request
|
24
|
-
Reporting Server -->> CreationRequester: Job ID response
|
25
|
-
CreationRequester -->> AsyncHttpJobRepository: Job ID
|
26
|
-
|
27
|
-
loop Poll for job status
|
28
|
-
AsyncHttpJobRepository ->> PollingRequester: Check job status
|
29
|
-
PollingRequester ->> Reporting Server: Status request (interpolation_context: `create_job_response`)
|
30
|
-
Reporting Server -->> PollingRequester: Status response
|
31
|
-
PollingRequester -->> AsyncHttpJobRepository: Job status
|
32
|
-
end
|
33
|
-
|
34
|
-
alt Status: Ready
|
35
|
-
AsyncHttpJobRepository ->> UrlRequester: Request download URLs (if applicable)
|
36
|
-
UrlRequester ->> Reporting Server: URL request (interpolation_context: `polling_job_response`)
|
37
|
-
Reporting Server -->> UrlRequester: Download URLs
|
38
|
-
UrlRequester -->> AsyncHttpJobRepository: Download URLs
|
39
|
-
|
40
|
-
AsyncHttpJobRepository ->> DownloadRetriever: Download reports
|
41
|
-
DownloadRetriever ->> Reporting Server: Retrieve report data (interpolation_context: `url`)
|
42
|
-
Reporting Server -->> DownloadRetriever: Report data
|
43
|
-
DownloadRetriever -->> AsyncHttpJobRepository: Report data
|
44
|
-
else Status: Failed
|
45
|
-
AsyncHttpJobRepository ->> AbortRequester: Send abort request
|
46
|
-
AbortRequester ->> Reporting Server: Abort job
|
47
|
-
Reporting Server -->> AbortRequester: Abort confirmation
|
48
|
-
AbortRequester -->> AsyncHttpJobRepository: Confirmation
|
49
|
-
end
|
50
|
-
|
51
|
-
AsyncHttpJobRepository ->> DeleteRequester: Send delete job request
|
52
|
-
DeleteRequester ->> Reporting Server: Delete job
|
53
|
-
Reporting Server -->> DeleteRequester: Deletion confirmation
|
54
|
-
DeleteRequester -->> AsyncHttpJobRepository: Confirmation
|
55
|
-
|
56
|
-
|
57
|
-
```
|
@@ -1,61 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
3
|
-
#
|
4
|
-
|
5
|
-
from dataclasses import InitVar, dataclass
|
6
|
-
from typing import Any, Dict, Mapping, Optional
|
7
|
-
|
8
|
-
from airbyte_cdk import InterpolatedString
|
9
|
-
from airbyte_cdk.sources.declarative.transformations import RecordTransformation
|
10
|
-
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
11
|
-
|
12
|
-
|
13
|
-
@dataclass
|
14
|
-
class KeysReplaceTransformation(RecordTransformation):
|
15
|
-
"""
|
16
|
-
Transformation that applies keys names replacement.
|
17
|
-
|
18
|
-
Example usage:
|
19
|
-
- type: KeysReplace
|
20
|
-
old: " "
|
21
|
-
new: "_"
|
22
|
-
Result:
|
23
|
-
from: {"created time": ..., "customer id": ..., "user id": ...}
|
24
|
-
to: {"created_time": ..., "customer_id": ..., "user_id": ...}
|
25
|
-
"""
|
26
|
-
|
27
|
-
old: str
|
28
|
-
new: str
|
29
|
-
parameters: InitVar[Mapping[str, Any]]
|
30
|
-
|
31
|
-
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
32
|
-
self._old = InterpolatedString.create(self.old, parameters=parameters)
|
33
|
-
self._new = InterpolatedString.create(self.new, parameters=parameters)
|
34
|
-
|
35
|
-
def transform(
|
36
|
-
self,
|
37
|
-
record: Dict[str, Any],
|
38
|
-
config: Optional[Config] = None,
|
39
|
-
stream_state: Optional[StreamState] = None,
|
40
|
-
stream_slice: Optional[StreamSlice] = None,
|
41
|
-
) -> None:
|
42
|
-
if config is None:
|
43
|
-
config = {}
|
44
|
-
|
45
|
-
kwargs = {"record": record, "stream_state": stream_state, "stream_slice": stream_slice}
|
46
|
-
old_key = str(self._old.eval(config, **kwargs))
|
47
|
-
new_key = str(self._new.eval(config, **kwargs))
|
48
|
-
|
49
|
-
def _transform(data: Dict[str, Any]) -> Dict[str, Any]:
|
50
|
-
result = {}
|
51
|
-
for key, value in data.items():
|
52
|
-
updated_key = key.replace(old_key, new_key)
|
53
|
-
if isinstance(value, dict):
|
54
|
-
result[updated_key] = _transform(value)
|
55
|
-
else:
|
56
|
-
result[updated_key] = value
|
57
|
-
return result
|
58
|
-
|
59
|
-
transformed_record = _transform(record)
|
60
|
-
record.clear()
|
61
|
-
record.update(transformed_record)
|
File without changes
|
File without changes
|