airbyte-cdk 7.3.5__py3-none-any.whl → 7.3.7__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.

Potentially problematic release.


This version of airbyte-cdk might be problematic. Click here for more details.

@@ -10,6 +10,7 @@ from .manifest import (
10
10
  CheckResponse,
11
11
  DiscoverRequest,
12
12
  DiscoverResponse,
13
+ ErrorResponse,
13
14
  FullResolveRequest,
14
15
  ManifestResponse,
15
16
  RequestContext,
@@ -40,6 +41,7 @@ __all__ = [
40
41
  "CheckResponse",
41
42
  "DiscoverRequest",
42
43
  "DiscoverResponse",
44
+ "ErrorResponse",
43
45
  # Stream models
44
46
  "AuxiliaryRequest",
45
47
  "HttpRequest",
@@ -83,3 +83,9 @@ class FullResolveRequest(BaseModel):
83
83
  config: ConnectorConfig
84
84
  stream_limit: int = Field(default=100, ge=1, le=100)
85
85
  context: Optional[RequestContext] = None
86
+
87
+
88
+ class ErrorResponse(BaseModel):
89
+ """Error response for API requests."""
90
+
91
+ detail: str
@@ -11,7 +11,7 @@ from .routers import capabilities, health, manifest
11
11
  app = FastAPI(
12
12
  title="Manifest Server",
13
13
  description="A service for running low-code Airbyte connectors",
14
- version="0.1.0",
14
+ version="0.2.0",
15
15
  contact={
16
16
  "name": "Airbyte",
17
17
  "url": "https://airbyte.com",
@@ -64,16 +64,7 @@ def build_source(
64
64
  page_limit: Optional[int] = None,
65
65
  slice_limit: Optional[int] = None,
66
66
  ) -> ConcurrentDeclarativeSource:
67
- # We enforce a concurrency level of 1 so that the stream is processed on a single thread
68
- # to retain ordering for the grouping of the builder message responses.
69
67
  definition = copy.deepcopy(manifest)
70
- if "concurrency_level" in definition:
71
- definition["concurrency_level"]["default_concurrency"] = 1
72
- else:
73
- definition["concurrency_level"] = {
74
- "type": "ConcurrencyLevel",
75
- "default_concurrency": 1,
76
- }
77
68
 
78
69
  should_normalize = should_normalize_manifest(manifest)
79
70
  if should_normalize:
@@ -8,7 +8,7 @@ info:
8
8
  contact:
9
9
  name: Airbyte
10
10
  url: https://airbyte.com/
11
- version: 0.1.0
11
+ version: 0.2.0
12
12
  paths:
13
13
  /health/:
14
14
  get:
@@ -62,6 +62,12 @@ paths:
62
62
  application/json:
63
63
  schema:
64
64
  $ref: '#/components/schemas/StreamReadResponse'
65
+ '400':
66
+ description: Bad Request - Error processing request
67
+ content:
68
+ application/json:
69
+ schema:
70
+ $ref: '#/components/schemas/ErrorResponse'
65
71
  '422':
66
72
  description: Validation Error
67
73
  content:
@@ -90,6 +96,12 @@ paths:
90
96
  application/json:
91
97
  schema:
92
98
  $ref: '#/components/schemas/CheckResponse'
99
+ '400':
100
+ description: Bad Request - Error processing request
101
+ content:
102
+ application/json:
103
+ schema:
104
+ $ref: '#/components/schemas/ErrorResponse'
93
105
  '422':
94
106
  description: Validation Error
95
107
  content:
@@ -118,6 +130,12 @@ paths:
118
130
  application/json:
119
131
  schema:
120
132
  $ref: '#/components/schemas/DiscoverResponse'
133
+ '400':
134
+ description: Bad Request - Error processing request
135
+ content:
136
+ application/json:
137
+ schema:
138
+ $ref: '#/components/schemas/ErrorResponse'
121
139
  '422':
122
140
  description: Validation Error
123
141
  content:
@@ -146,6 +164,12 @@ paths:
146
164
  application/json:
147
165
  schema:
148
166
  $ref: '#/components/schemas/ManifestResponse'
167
+ '400':
168
+ description: Bad Request - Error processing request
169
+ content:
170
+ application/json:
171
+ schema:
172
+ $ref: '#/components/schemas/ErrorResponse'
149
173
  '422':
150
174
  description: Validation Error
151
175
  content:
@@ -180,6 +204,12 @@ paths:
180
204
  application/json:
181
205
  schema:
182
206
  $ref: '#/components/schemas/ManifestResponse'
207
+ '400':
208
+ description: Bad Request - Error processing request
209
+ content:
210
+ application/json:
211
+ schema:
212
+ $ref: '#/components/schemas/ErrorResponse'
183
213
  '422':
184
214
  description: Validation Error
185
215
  content:
@@ -353,6 +383,16 @@ components:
353
383
  - catalog
354
384
  title: DiscoverResponse
355
385
  description: Response to discover a manifest.
386
+ ErrorResponse:
387
+ properties:
388
+ detail:
389
+ type: string
390
+ title: Detail
391
+ type: object
392
+ required:
393
+ - detail
394
+ title: ErrorResponse
395
+ description: Error response for API requests.
356
396
  FullResolveRequest:
357
397
  properties:
358
398
  manifest:
@@ -14,12 +14,14 @@ from airbyte_cdk.sources.declarative.parsers.custom_code_compiler import (
14
14
  INJECTED_COMPONENTS_PY,
15
15
  INJECTED_COMPONENTS_PY_CHECKSUMS,
16
16
  )
17
+ from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
17
18
 
18
19
  from ..api_models import (
19
20
  CheckRequest,
20
21
  CheckResponse,
21
22
  DiscoverRequest,
22
23
  DiscoverResponse,
24
+ ErrorResponse,
23
25
  FullResolveRequest,
24
26
  Manifest,
25
27
  ManifestResponse,
@@ -64,7 +66,13 @@ router = APIRouter(
64
66
  )
65
67
 
66
68
 
67
- @router.post("/test_read", operation_id="testRead")
69
+ @router.post(
70
+ "/test_read",
71
+ operation_id="testRead",
72
+ responses={
73
+ 400: {"description": "Bad Request - Error processing request", "model": ErrorResponse}
74
+ },
75
+ )
68
76
  def test_read(request: StreamTestReadRequest) -> StreamReadResponse:
69
77
  """
70
78
  Test reading from a specific stream in the manifest.
@@ -87,8 +95,19 @@ def test_read(request: StreamTestReadRequest) -> StreamReadResponse:
87
95
  "md5": hashlib.md5(request.custom_components_code.encode()).hexdigest()
88
96
  }
89
97
 
98
+ # We enforce a concurrency level of 1 so that the stream is processed on a single thread
99
+ # to retain ordering for the grouping of the builder message responses.
100
+ manifest = request.manifest.model_dump()
101
+ if "concurrency_level" in manifest:
102
+ manifest["concurrency_level"]["default_concurrency"] = 1
103
+ else:
104
+ manifest["concurrency_level"] = {
105
+ "type": "ConcurrencyLevel",
106
+ "default_concurrency": 1,
107
+ }
108
+
90
109
  source = safe_build_source(
91
- request.manifest.model_dump(),
110
+ manifest,
92
111
  config_dict,
93
112
  catalog,
94
113
  converted_state,
@@ -98,18 +117,29 @@ def test_read(request: StreamTestReadRequest) -> StreamReadResponse:
98
117
  )
99
118
 
100
119
  runner = ManifestCommandProcessor(source)
101
- cdk_result = runner.test_read(
102
- config_dict,
103
- catalog,
104
- converted_state,
105
- request.record_limit,
106
- request.page_limit,
107
- request.slice_limit,
108
- )
109
- return StreamReadResponse.model_validate(asdict(cdk_result))
120
+ try:
121
+ cdk_result = runner.test_read(
122
+ config_dict,
123
+ catalog,
124
+ converted_state,
125
+ request.record_limit,
126
+ request.page_limit,
127
+ request.slice_limit,
128
+ )
129
+ return StreamReadResponse.model_validate(asdict(cdk_result))
130
+ except Exception as exc:
131
+ # Filter secrets from error message before returning to client
132
+ sanitized_message = filter_secrets(f"Error reading stream: {str(exc)}")
133
+ raise HTTPException(status_code=400, detail=sanitized_message)
110
134
 
111
135
 
112
- @router.post("/check", operation_id="check")
136
+ @router.post(
137
+ "/check",
138
+ operation_id="check",
139
+ responses={
140
+ 400: {"description": "Bad Request - Error processing request", "model": ErrorResponse}
141
+ },
142
+ )
113
143
  def check(request: CheckRequest) -> CheckResponse:
114
144
  """Check configuration against a manifest"""
115
145
  # Apply trace tags from context if provided
@@ -119,13 +149,24 @@ def check(request: CheckRequest) -> CheckResponse:
119
149
  project_id=request.context.project_id,
120
150
  )
121
151
 
122
- source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
123
- runner = ManifestCommandProcessor(source)
124
- success, message = runner.check_connection(request.config.model_dump())
125
- return CheckResponse(success=success, message=message)
152
+ try:
153
+ source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
154
+ runner = ManifestCommandProcessor(source)
155
+ success, message = runner.check_connection(request.config.model_dump())
156
+ return CheckResponse(success=success, message=message)
157
+ except Exception as exc:
158
+ # Filter secrets from error message before returning to client
159
+ sanitized_message = filter_secrets(f"Error checking connection: {str(exc)}")
160
+ raise HTTPException(status_code=400, detail=sanitized_message)
126
161
 
127
162
 
128
- @router.post("/discover", operation_id="discover")
163
+ @router.post(
164
+ "/discover",
165
+ operation_id="discover",
166
+ responses={
167
+ 400: {"description": "Bad Request - Error processing request", "model": ErrorResponse}
168
+ },
169
+ )
129
170
  def discover(request: DiscoverRequest) -> DiscoverResponse:
130
171
  """Discover streams from a manifest"""
131
172
  # Apply trace tags from context if provided
@@ -135,15 +176,31 @@ def discover(request: DiscoverRequest) -> DiscoverResponse:
135
176
  project_id=request.context.project_id,
136
177
  )
137
178
 
138
- source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
139
- runner = ManifestCommandProcessor(source)
140
- catalog = runner.discover(request.config.model_dump())
141
- if catalog is None:
142
- raise HTTPException(status_code=422, detail="Connector did not return a discovered catalog")
143
- return DiscoverResponse(catalog=catalog)
179
+ try:
180
+ source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
181
+ runner = ManifestCommandProcessor(source)
182
+ catalog = runner.discover(request.config.model_dump())
183
+ if catalog is None:
184
+ raise HTTPException(
185
+ status_code=422, detail="Connector did not return a discovered catalog"
186
+ )
187
+ return DiscoverResponse(catalog=catalog)
188
+ except HTTPException:
189
+ # Re-raise HTTPExceptions as-is (like the catalog None check above)
190
+ raise
191
+ except Exception as exc:
192
+ # Filter secrets from error message before returning to client
193
+ sanitized_message = filter_secrets(f"Error discovering streams: {str(exc)}")
194
+ raise HTTPException(status_code=400, detail=sanitized_message)
144
195
 
145
196
 
146
- @router.post("/resolve", operation_id="resolve")
197
+ @router.post(
198
+ "/resolve",
199
+ operation_id="resolve",
200
+ responses={
201
+ 400: {"description": "Bad Request - Error processing request", "model": ErrorResponse}
202
+ },
203
+ )
147
204
  def resolve(request: ResolveRequest) -> ManifestResponse:
148
205
  """Resolve a manifest to its final configuration."""
149
206
  # Apply trace tags from context if provided
@@ -153,11 +210,22 @@ def resolve(request: ResolveRequest) -> ManifestResponse:
153
210
  project_id=request.context.project_id,
154
211
  )
155
212
 
156
- source = safe_build_source(request.manifest.model_dump(), {})
157
- return ManifestResponse(manifest=Manifest(**source.resolved_manifest))
213
+ try:
214
+ source = safe_build_source(request.manifest.model_dump(), {})
215
+ return ManifestResponse(manifest=Manifest(**source.resolved_manifest))
216
+ except Exception as exc:
217
+ # Filter secrets from error message before returning to client
218
+ sanitized_message = filter_secrets(f"Error resolving manifest: {str(exc)}")
219
+ raise HTTPException(status_code=400, detail=sanitized_message)
158
220
 
159
221
 
160
- @router.post("/full_resolve", operation_id="fullResolve")
222
+ @router.post(
223
+ "/full_resolve",
224
+ operation_id="fullResolve",
225
+ responses={
226
+ 400: {"description": "Bad Request - Error processing request", "model": ErrorResponse}
227
+ },
228
+ )
161
229
  def full_resolve(request: FullResolveRequest) -> ManifestResponse:
162
230
  """
163
231
  Fully resolve a manifest, including dynamic streams.
@@ -171,21 +239,26 @@ def full_resolve(request: FullResolveRequest) -> ManifestResponse:
171
239
  project_id=request.context.project_id,
172
240
  )
173
241
 
174
- source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
175
- manifest = {**source.resolved_manifest}
176
- streams = manifest.get("streams", [])
177
- for stream in streams:
178
- stream["dynamic_stream_name"] = None
242
+ try:
243
+ source = safe_build_source(request.manifest.model_dump(), request.config.model_dump())
244
+ manifest = {**source.resolved_manifest}
245
+ streams = manifest.get("streams", [])
246
+ for stream in streams:
247
+ stream["dynamic_stream_name"] = None
179
248
 
180
- mapped_streams: Dict[str, List[Dict[str, Any]]] = {}
181
- for stream in source.dynamic_streams:
182
- generated_streams = mapped_streams.setdefault(stream["dynamic_stream_name"], [])
249
+ mapped_streams: Dict[str, List[Dict[str, Any]]] = {}
250
+ for stream in source.dynamic_streams:
251
+ generated_streams = mapped_streams.setdefault(stream["dynamic_stream_name"], [])
183
252
 
184
- if len(generated_streams) < request.stream_limit:
185
- generated_streams += [stream]
253
+ if len(generated_streams) < request.stream_limit:
254
+ generated_streams += [stream]
186
255
 
187
- for generated_streams_list in mapped_streams.values():
188
- streams.extend(generated_streams_list)
256
+ for generated_streams_list in mapped_streams.values():
257
+ streams.extend(generated_streams_list)
189
258
 
190
- manifest["streams"] = streams
191
- return ManifestResponse(manifest=Manifest(**manifest))
259
+ manifest["streams"] = streams
260
+ return ManifestResponse(manifest=Manifest(**manifest))
261
+ except Exception as exc:
262
+ # Filter secrets from error message before returning to client
263
+ sanitized_message = filter_secrets(f"Error full resolving manifest: {str(exc)}")
264
+ raise HTTPException(status_code=400, detail=sanitized_message)
@@ -384,10 +384,7 @@ class SimpleRetriever(Retriever):
384
384
 
385
385
  response = None
386
386
  try:
387
- if (
388
- self.additional_query_properties
389
- and self.additional_query_properties.property_chunking
390
- ):
387
+ if self.additional_query_properties:
391
388
  for properties in self.additional_query_properties.get_request_property_chunks(
392
389
  stream_slice=stream_slice
393
390
  ):
@@ -401,15 +398,19 @@ class SimpleRetriever(Retriever):
401
398
  )
402
399
 
403
400
  for current_record in records_generator_fn(response):
404
- merge_key = (
405
- self.additional_query_properties.property_chunking.get_merge_key(
401
+ if self.additional_query_properties.property_chunking:
402
+ merge_key = self.additional_query_properties.property_chunking.get_merge_key(
406
403
  current_record
407
404
  )
408
- )
409
- if merge_key:
410
- _deep_merge(merged_records[merge_key], current_record)
405
+ if merge_key:
406
+ _deep_merge(merged_records[merge_key], current_record)
407
+ else:
408
+ # We should still emit records even if the record did not have a merge key
409
+ pagination_tracker.observe(current_record)
410
+ last_page_size += 1
411
+ last_record = current_record
412
+ yield current_record
411
413
  else:
412
- # We should still emit records even if the record did not have a merge key
413
414
  pagination_tracker.observe(current_record)
414
415
  last_page_size += 1
415
416
  last_record = current_record
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 7.3.5
3
+ Version: 7.3.7
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -64,12 +64,12 @@ airbyte_cdk/manifest_migrations/migrations_registry.py,sha256=zly2fwaOxDukqC7eow
64
64
  airbyte_cdk/manifest_server/Dockerfile,sha256=9I8HUDHkHggzyUiGg4Bqj7oZjrTSaWrZrWyA2FKD7u8,1317
65
65
  airbyte_cdk/manifest_server/README.md,sha256=bYzb3QAnkaM9mR9XgK7n4FKAvZkM4OWaBGcQb91f3vk,4341
66
66
  airbyte_cdk/manifest_server/__init__.py,sha256=EE54nk2dbtExIEEvLPCTUkJ_ESV5OYP4B2rBJlDpJ5g,33
67
- airbyte_cdk/manifest_server/api_models/__init__.py,sha256=UOtYJNkR8_Nb5tDqSjSUhVM9Mv5EiyfD9Zh302GRzRA,1057
67
+ airbyte_cdk/manifest_server/api_models/__init__.py,sha256=xRvplQAd2SJ2GJYn3qyxdvdj3bXaTwvOZoAPJ0t8xhE,1097
68
68
  airbyte_cdk/manifest_server/api_models/capabilities.py,sha256=eL88UxojIewHt97wMeCvyt92Hzh95UvLvVH6MSlsj5o,152
69
69
  airbyte_cdk/manifest_server/api_models/dicts.py,sha256=Rm10IeV745MY8bLyrYyG7a9NGNrZBlnfkXct8gi7OTI,467
70
- airbyte_cdk/manifest_server/api_models/manifest.py,sha256=LlsBPuK8asIsFYh21WvtTgZB1e5dTrPKYM21unKTRaY,2080
70
+ airbyte_cdk/manifest_server/api_models/manifest.py,sha256=nScbQRl0UwLo4_NgrrH49fzpl6PCGOq7wpou13nPiN0,2174
71
71
  airbyte_cdk/manifest_server/api_models/stream.py,sha256=WqAIfcrRiYjaR9DvwoYegv1JOvVd7W5cEefUYyWk9FI,2006
72
- airbyte_cdk/manifest_server/app.py,sha256=RrjV73qx_PBoYoO_IAxDNV5v-UZNwjSG4muxZ4kiMj8,602
72
+ airbyte_cdk/manifest_server/app.py,sha256=5N6i6GU2zOew5i8d_8Gg4hG21bm_AKGpEwMTrBu3usA,602
73
73
  airbyte_cdk/manifest_server/cli/__init__.py,sha256=YfCEfXq3Jr7z3GOKMA6vF-D-7Y66BNHUwBLNM9UQbiQ,273
74
74
  airbyte_cdk/manifest_server/cli/_common.py,sha256=_dV7Lq30-MFDAw4feNKJDnQkAaNpPnuHm4xcGJb9SvE,832
75
75
  airbyte_cdk/manifest_server/cli/_info.py,sha256=-h8U1bSD1umqLuoXfg4yDNWFR1BZuxcXxLhVKfLWB0Y,982
@@ -78,16 +78,16 @@ airbyte_cdk/manifest_server/cli/_start.py,sha256=SgkW_dQcpCIrXYNZ6qF95oYIVaCszm9
78
78
  airbyte_cdk/manifest_server/cli/run.py,sha256=-Yv_Jv_hDeMBVZdzuyeJJ_JBT1WUhCyUQn4f4mA21Ds,1224
79
79
  airbyte_cdk/manifest_server/command_processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  airbyte_cdk/manifest_server/command_processor/processor.py,sha256=BZPASuhPJix78NB7rD1xuxWfL1TmqdnOEa_8WR1R2FI,3741
81
- airbyte_cdk/manifest_server/command_processor/utils.py,sha256=EbZAbX91n12g2TCqOWBUi8KKqdz2Ccrw2FAIN5JT2B8,3184
81
+ airbyte_cdk/manifest_server/command_processor/utils.py,sha256=IXkLXOfx3HzuAErklrQH-vAciRvfegVXAUc6L970FPk,2764
82
82
  airbyte_cdk/manifest_server/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
83
  airbyte_cdk/manifest_server/helpers/auth.py,sha256=kKET6zg4olyf8p_UMcTnm7vkAtowxK6loSf8o83SdEM,1264
84
84
  airbyte_cdk/manifest_server/helpers/tracing.py,sha256=J-Yi5YP4ZrUfG1eN7jNVJR_eldfJBki3Sbke-uWpGe0,1021
85
85
  airbyte_cdk/manifest_server/main.py,sha256=iSgL7x8ifBpGpXi7Dq7017QjeC20l_CYBAIsumiyJn0,573
86
- airbyte_cdk/manifest_server/openapi.yaml,sha256=NL0mQQFS1iHIRpkDT2EfkFcO1QelgZmhOvaoYlhgFxQ,17691
86
+ airbyte_cdk/manifest_server/openapi.yaml,sha256=Tx8wZSVmx8YPmGtum8BnZXj2NRj7pCQxkPKnP8fdnfk,18955
87
87
  airbyte_cdk/manifest_server/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
88
  airbyte_cdk/manifest_server/routers/capabilities.py,sha256=UeZQzbqEuDN23vizgDb_N7KEXR-YZUPnW5AkXeXy1hA,727
89
89
  airbyte_cdk/manifest_server/routers/health.py,sha256=akBUaHUGN-jmN82lQ3kj_3-wdS6gsZx3iSD2KMI5dW8,200
90
- airbyte_cdk/manifest_server/routers/manifest.py,sha256=igFMW2TO-u3Iw_rVY5gTBq4kJagt2PdcLFWQCd0lVO8,6741
90
+ airbyte_cdk/manifest_server/routers/manifest.py,sha256=DNXC6csnswEtJls6MXweNYsge3l0u0yQMN_YvwIKsuU,9520
91
91
  airbyte_cdk/models/__init__.py,sha256=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
92
92
  airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
93
93
  airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=Dq4ry_Wwvzsos6neDiaOZkY6riQYC33ZlPNWpfIIB1E,1926
@@ -242,7 +242,7 @@ airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_
242
242
  airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py,sha256=1yfimzxm09d2j605cu_HhiYVDNVL1rUMi3vs_jYlIyY,330
243
243
  airbyte_cdk/sources/declarative/retrievers/pagination_tracker.py,sha256=h-3GfksrWaQUa1xIefq9eG-6_DuW77Vq8XDenv-hCps,2865
244
244
  airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=os5psYh8z7ZdCAvbfZeTpmjvPa7Qpx0mblpKf47ZaZM,1876
245
- airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=8nb87fsBno1SOxHxYA-sGxAy48sapcF3aZszBu4Ew_s,29643
245
+ airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=bOYqSjcTZCsxRXTICIIc4mFU6T_-AKBL3ofLjOo0mkE,29858
246
246
  airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
247
247
  airbyte_cdk/sources/declarative/schema/composite_schema_loader.py,sha256=ymGbvxS_QyGc4nnjEyRo5ch8bVedELO41PAUxKXZyMw,1113
248
248
  airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=UnbzlExmwoQiVV8zDg4lhAEaqA_0pRfwbMRe8yqOuWk,1834
@@ -459,9 +459,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
459
459
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=9YDJmnIGFsT51CVQf2tSSvTapGimITjEFGbUTSZAGTI,963
460
460
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
461
461
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
462
- airbyte_cdk-7.3.5.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
463
- airbyte_cdk-7.3.5.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
464
- airbyte_cdk-7.3.5.dist-info/METADATA,sha256=rK7eyAVO5g92oWymcPXNKNm7HaIIX8VfDrN_FGETr1Q,6798
465
- airbyte_cdk-7.3.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
466
- airbyte_cdk-7.3.5.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
467
- airbyte_cdk-7.3.5.dist-info/RECORD,,
462
+ airbyte_cdk-7.3.7.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
463
+ airbyte_cdk-7.3.7.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
464
+ airbyte_cdk-7.3.7.dist-info/METADATA,sha256=dHfeb8FuHbwncAqF2yw2NMMzrYeo7ZPye4lJnRSQUc0,6798
465
+ airbyte_cdk-7.3.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
466
+ airbyte_cdk-7.3.7.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
467
+ airbyte_cdk-7.3.7.dist-info/RECORD,,