airbyte-cdk 6.55.0__py3-none-any.whl → 6.55.1.post11.dev15684355943__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. airbyte_cdk/cli/airbyte_cdk/_connector.py +32 -8
  2. airbyte_cdk/cli/airbyte_cdk/_image.py +76 -0
  3. airbyte_cdk/cli/airbyte_cdk/_secrets.py +13 -12
  4. airbyte_cdk/models/airbyte_protocol_serializers.py +4 -0
  5. airbyte_cdk/models/connector_metadata.py +14 -0
  6. airbyte_cdk/sources/declarative/declarative_component_schema.yaml +41 -0
  7. airbyte_cdk/sources/declarative/models/declarative_component_schema.py +28 -1
  8. airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +29 -0
  9. airbyte_cdk/sources/declarative/resolvers/__init__.py +10 -0
  10. airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py +125 -0
  11. airbyte_cdk/test/entrypoint_wrapper.py +163 -26
  12. airbyte_cdk/test/models/scenario.py +49 -10
  13. airbyte_cdk/test/standard_tests/__init__.py +2 -4
  14. airbyte_cdk/test/standard_tests/connector_base.py +12 -80
  15. airbyte_cdk/test/standard_tests/docker_base.py +388 -0
  16. airbyte_cdk/test/standard_tests/pytest_hooks.py +115 -2
  17. airbyte_cdk/test/standard_tests/source_base.py +13 -7
  18. airbyte_cdk/test/standard_tests/util.py +4 -3
  19. airbyte_cdk/utils/connector_paths.py +3 -3
  20. airbyte_cdk/utils/docker.py +83 -34
  21. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/METADATA +2 -1
  22. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/RECORD +26 -24
  23. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/LICENSE.txt +0 -0
  24. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/LICENSE_SHORT +0 -0
  25. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/WHEEL +0 -0
  26. {airbyte_cdk-6.55.0.dist-info → airbyte_cdk-6.55.1.post11.dev15684355943.dist-info}/entry_points.txt +0 -0
@@ -4,11 +4,13 @@ from __future__ import annotations
4
4
 
5
5
  import json
6
6
  import logging
7
- import os
7
+ import platform
8
8
  import subprocess
9
9
  import sys
10
+ from contextlib import ExitStack
10
11
  from dataclasses import dataclass
11
12
  from enum import Enum
13
+ from io import TextIOWrapper
12
14
  from pathlib import Path
13
15
 
14
16
  import click
@@ -56,11 +58,13 @@ def _build_image(
56
58
  """Build a Docker image for the specified architecture.
57
59
 
58
60
  Returns the tag of the built image.
61
+ We use buildx to ensure we can build multi-platform images.
59
62
 
60
63
  Raises: ConnectorImageBuildError if the build fails.
61
64
  """
62
65
  docker_args: list[str] = [
63
66
  "docker",
67
+ "buildx",
64
68
  "build",
65
69
  "--platform",
66
70
  f"linux/{arch.value}",
@@ -74,9 +78,10 @@ def _build_image(
74
78
  if build_args:
75
79
  for key, value in build_args.items():
76
80
  if value is not None:
77
- docker_args.append(f"--build-arg={key}={value}")
81
+ docker_args.extend(["--build-arg", f"{key}={value}"])
78
82
  else:
79
- docker_args.append(f"--build-arg={key}")
83
+ docker_args.extend(["--build-arg", key])
84
+
80
85
  docker_args.extend(
81
86
  [
82
87
  "-t",
@@ -90,6 +95,7 @@ def _build_image(
90
95
  run_docker_command(
91
96
  docker_args,
92
97
  check=True,
98
+ capture_stderr=True,
93
99
  )
94
100
  except subprocess.CalledProcessError as e:
95
101
  raise ConnectorImageBuildError(
@@ -126,6 +132,7 @@ def _tag_image(
126
132
  run_docker_command(
127
133
  docker_args,
128
134
  check=True,
135
+ capture_stderr=True,
129
136
  )
130
137
  except subprocess.CalledProcessError as e:
131
138
  raise ConnectorImageBuildError(
@@ -137,12 +144,12 @@ def _tag_image(
137
144
  def build_connector_image(
138
145
  connector_name: str,
139
146
  connector_directory: Path,
147
+ *,
140
148
  metadata: MetadataFile,
141
149
  tag: str,
142
- primary_arch: ArchEnum = ArchEnum.ARM64, # Assume MacBook M series by default
143
150
  no_verify: bool = False,
144
151
  dockerfile_override: Path | None = None,
145
- ) -> None:
152
+ ) -> str:
146
153
  """Build a connector Docker image.
147
154
 
148
155
  This command builds a Docker image for a connector, using either
@@ -154,22 +161,33 @@ def build_connector_image(
154
161
  connector_directory: The directory containing the connector code.
155
162
  metadata: The metadata of the connector.
156
163
  tag: The tag to apply to the built image.
157
- primary_arch: The primary architecture for the build (default: arm64). This
158
- architecture will be used for the same-named tag. Both AMD64 and ARM64
159
- images will be built, with the suffixes '-amd64' and '-arm64'.
160
164
  no_verify: If True, skip verification of the built image.
161
165
 
162
166
  Raises:
163
167
  ValueError: If the connector build options are not defined in metadata.yaml.
164
168
  ConnectorImageBuildError: If the image build or tag operation fails.
165
169
  """
170
+ # Detect primary architecture based on the machine type.
171
+ primary_arch: ArchEnum = (
172
+ ArchEnum.ARM64
173
+ if platform.machine().lower().startswith(("arm", "aarch"))
174
+ else ArchEnum.AMD64
175
+ )
176
+ if not connector_name:
177
+ raise ValueError("Connector name must be provided.")
178
+ if not connector_directory:
179
+ raise ValueError("Connector directory must be provided.")
180
+ if not connector_directory.exists():
181
+ raise ValueError(f"Connector directory does not exist: {connector_directory}")
182
+
166
183
  connector_kebab_name = connector_name
184
+ connector_dockerfile_dir = connector_directory / "build" / "docker"
167
185
 
168
186
  if dockerfile_override:
169
187
  dockerfile_path = dockerfile_override
170
188
  else:
171
- dockerfile_path = connector_directory / "build" / "docker" / "Dockerfile"
172
- dockerignore_path = connector_directory / "build" / "docker" / "Dockerfile.dockerignore"
189
+ dockerfile_path = connector_dockerfile_dir / "Dockerfile"
190
+ dockerignore_path = connector_dockerfile_dir / "Dockerfile.dockerignore"
173
191
  try:
174
192
  dockerfile_text, dockerignore_text = get_dockerfile_templates(
175
193
  metadata=metadata,
@@ -192,6 +210,8 @@ def build_connector_image(
192
210
  ),
193
211
  ) from e
194
212
 
213
+ # ensure the directory exists
214
+ connector_dockerfile_dir.mkdir(parents=True, exist_ok=True)
195
215
  dockerfile_path.write_text(dockerfile_text)
196
216
  dockerignore_path.write_text(dockerignore_text)
197
217
 
@@ -215,7 +235,6 @@ def build_connector_image(
215
235
  }
216
236
 
217
237
  base_tag = f"{metadata.data.dockerRepository}:{tag}"
218
- arch_images: list[str] = []
219
238
 
220
239
  if metadata.data.language == ConnectorLanguage.JAVA:
221
240
  # This assumes that the repo root ('airbyte') is three levels above the
@@ -232,12 +251,18 @@ def build_connector_image(
232
251
  check=True,
233
252
  )
234
253
 
235
- for arch in [ArchEnum.AMD64, ArchEnum.ARM64]:
254
+ # Always build for AMD64, and optionally for ARM64 if needed locally.
255
+ architectures = [ArchEnum.AMD64]
256
+ if primary_arch == ArchEnum.ARM64:
257
+ architectures += [ArchEnum.ARM64]
258
+
259
+ built_images: list[str] = []
260
+ for arch in architectures:
236
261
  docker_tag = f"{base_tag}-{arch.value}"
237
262
  docker_tag_parts = docker_tag.split("/")
238
263
  if len(docker_tag_parts) > 2:
239
264
  docker_tag = "/".join(docker_tag_parts[-1:])
240
- arch_images.append(
265
+ built_images.append(
241
266
  _build_image(
242
267
  context_dir=connector_directory,
243
268
  dockerfile=dockerfile_path,
@@ -254,14 +279,14 @@ def build_connector_image(
254
279
  )
255
280
  if not no_verify:
256
281
  if verify_connector_image(base_tag):
257
- click.echo(f"Build completed successfully: {base_tag}")
258
- sys.exit(0)
259
- else:
260
- click.echo(f"Built image failed verification: {base_tag}", err=True)
261
- sys.exit(1)
262
- else:
263
- click.echo(f"Build completed successfully (without verification): {base_tag}")
264
- sys.exit(0)
282
+ click.echo(f"Build and verification completed successfully: {base_tag}")
283
+ return base_tag
284
+
285
+ click.echo(f"Built image failed verification: {base_tag}", err=True)
286
+ sys.exit(1)
287
+
288
+ click.echo(f"Build completed successfully: {base_tag}")
289
+ return base_tag
265
290
 
266
291
 
267
292
  def _download_dockerfile_defs(
@@ -364,7 +389,8 @@ def run_docker_command(
364
389
  cmd: list[str],
365
390
  *,
366
391
  check: bool = True,
367
- capture_output: bool = False,
392
+ capture_stdout: bool | Path = False,
393
+ capture_stderr: bool | Path = False,
368
394
  ) -> subprocess.CompletedProcess[str]:
369
395
  """Run a Docker command as a subprocess.
370
396
 
@@ -372,23 +398,45 @@ def run_docker_command(
372
398
  cmd: The command to run as a list of strings.
373
399
  check: If True, raises an exception if the command fails. If False, the caller is
374
400
  responsible for checking the return code.
375
- capture_output: If True, captures stdout and stderr and returns to the caller.
376
- If False, the output is printed to the console.
401
+ capture_stdout: How to process stdout.
402
+ capture_stderr: If True, captures stderr in memory and returns to the caller.
403
+ If a Path is provided, the output is written to the specified file.
404
+
405
+ For stdout and stderr process:
406
+ - If False (the default), stdout is not captured.
407
+ - If True, output is captured in memory and returned within the `CompletedProcess` object.
408
+ - If a Path is provided, the output is written to the specified file. (Recommended for large syncs.)
377
409
 
378
410
  Raises:
379
411
  subprocess.CalledProcessError: If the command fails and check is True.
380
412
  """
381
413
  print(f"Running command: {' '.join(cmd)}")
382
414
 
383
- process = subprocess.run(
384
- cmd,
385
- text=True,
386
- check=check,
387
- # If capture_output=True, stderr and stdout are captured and returned to caller:
388
- capture_output=capture_output,
389
- env={**os.environ, "DOCKER_BUILDKIT": "1"},
390
- )
391
- return process
415
+ with ExitStack() as stack:
416
+ # Shared context manager to handle file closing, if needed.
417
+ stderr: TextIOWrapper | int | None
418
+ stdout: TextIOWrapper | int | None
419
+
420
+ # If capture_stderr or capture_stdout is a Path, we open the file in write mode.
421
+ # If it's a boolean, we set it to either subprocess.PIPE or None.
422
+ if isinstance(capture_stderr, Path):
423
+ stderr = stack.enter_context(capture_stderr.open("w", encoding="utf-8"))
424
+ elif isinstance(capture_stderr, bool):
425
+ stderr = subprocess.PIPE if capture_stderr is True else None
426
+
427
+ if isinstance(capture_stdout, Path):
428
+ stdout = stack.enter_context(capture_stdout.open("w", encoding="utf-8"))
429
+ elif isinstance(capture_stdout, bool):
430
+ stdout = subprocess.PIPE if capture_stdout is True else None
431
+
432
+ completed_process: subprocess.CompletedProcess[str] = subprocess.run(
433
+ cmd,
434
+ text=True,
435
+ check=check,
436
+ stderr=stderr,
437
+ stdout=stdout,
438
+ )
439
+ return completed_process
392
440
 
393
441
 
394
442
  def verify_docker_installation() -> bool:
@@ -419,7 +467,8 @@ def verify_connector_image(
419
467
  result = run_docker_command(
420
468
  cmd,
421
469
  check=True,
422
- capture_output=True,
470
+ capture_stderr=True,
471
+ capture_stdout=True,
423
472
  )
424
473
  # check that the output is valid JSON
425
474
  if result.stdout:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.55.0
3
+ Version: 6.55.1.post11.dev15684355943
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -69,6 +69,7 @@ Requires-Dist: requests_cache
69
69
  Requires-Dist: rich
70
70
  Requires-Dist: rich-click (>=1.8.8,<2.0.0)
71
71
  Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
72
+ Requires-Dist: setuptools (>=80.9.0,<81.0.0)
72
73
  Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
73
74
  Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
74
75
  Requires-Dist: typing-extensions
@@ -1,10 +1,10 @@
1
1
  airbyte_cdk/__init__.py,sha256=52uncJvDQNHvwKxaqzXgnMYTptIl65LDJr2fvlk8-DU,11707
2
2
  airbyte_cdk/cli/__init__.py,sha256=CXsai3MYMLZ_sqi2vPAIVcKDun8VRqlv0cKffBI0iSY,346
3
3
  airbyte_cdk/cli/airbyte_cdk/__init__.py,sha256=8IoEcbdYr7CMAh97Xut5__uHH9vV4LKUtSBNTk3qEWY,2031
4
- airbyte_cdk/cli/airbyte_cdk/_connector.py,sha256=MHWbekKMzYMqjYMB1spN0bwF1Y8Bdphhhu2JMhptDRU,5489
5
- airbyte_cdk/cli/airbyte_cdk/_image.py,sha256=AkBEZrRYXEwvhW7hPOPRWeYEZutzi2PIzjpl7_yaE8I,2890
4
+ airbyte_cdk/cli/airbyte_cdk/_connector.py,sha256=u5T_puPDVIsI-jdaQRsPI-Hd4AGoaVY8no2zgMFVOXQ,6164
5
+ airbyte_cdk/cli/airbyte_cdk/_image.py,sha256=Uc7gpWHr9JPX2qLXP7jn4Va5W4Ruc8E2m9M2Yv8jwRA,5490
6
6
  airbyte_cdk/cli/airbyte_cdk/_manifest.py,sha256=aFdeeWgek7oXR3YfZPxk7kBZ64Blmsr0dAXN6BVGiIA,482
7
- airbyte_cdk/cli/airbyte_cdk/_secrets.py,sha256=jLtpkhFJHavABN3UuqddeDRGS8v1iEj0e_f6WTeYoQA,17409
7
+ airbyte_cdk/cli/airbyte_cdk/_secrets.py,sha256=zkO9bO5pfOA-EJb0HRdEdSiybMFkyiqiQ6MWXldAg0s,17630
8
8
  airbyte_cdk/cli/airbyte_cdk/_version.py,sha256=ohZNIktLFk91sdzqFW5idaNrZAPX2dIRnz---_fcKOE,352
9
9
  airbyte_cdk/cli/airbyte_cdk/exceptions.py,sha256=bsGmlWN6cXL2jCD1WYAZMqFmK1OLg2xLrcC_60KHSeA,803
10
10
  airbyte_cdk/cli/source_declarative_manifest/__init__.py,sha256=-0ST722Nj65bgRokzpzPkD1NBBW5CytEHFUe38cB86Q,91
@@ -49,8 +49,8 @@ airbyte_cdk/manifest_migrations/migrations/registry.yaml,sha256=SITcsFFf0avFYZzE
49
49
  airbyte_cdk/manifest_migrations/migrations_registry.py,sha256=zly2fwaOxDukqC7eowzrDlvhA2v71FjW74kDzvRXhSY,2619
50
50
  airbyte_cdk/models/__init__.py,sha256=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
51
51
  airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
52
- airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=s6SaFB2CMrG_7jTQGn_fhFbQ1FUxhCxf5kq2RWGHMVI,1749
53
- airbyte_cdk/models/connector_metadata.py,sha256=Lwb0JKiWvnqHduXjHHgBBBhTsGoLiNjxbG93W_OjcKQ,2875
52
+ airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=Dq4ry_Wwvzsos6neDiaOZkY6riQYC33ZlPNWpfIIB1E,1926
53
+ airbyte_cdk/models/connector_metadata.py,sha256=BD6CO8c3mHavxRJAcwP29sHtNNVLVSNFNQLgHOVxrwA,3229
54
54
  airbyte_cdk/models/well_known_types.py,sha256=EquepbisGPuCSrs_D7YVVnMR9-ShhUr21wnFz3COiJs,156
55
55
  airbyte_cdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  airbyte_cdk/sources/__init__.py,sha256=45J83QsFH3Wky3sVapZWg4C58R_i1thm61M06t2c1AQ,1156
@@ -89,7 +89,7 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=rQz9gXp3
89
89
  airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
90
90
  airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
91
91
  airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
92
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=ES1gwuWHAXC9z9Dk8i0kNGK-2omTtjexiNp0iwV54tE,178751
92
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=JwWxM_QAIC7jAOYQMpo9fWa1aULtGhMn9Tg0bntoM58,180321
93
93
  airbyte_cdk/sources/declarative/declarative_source.py,sha256=qmyMnnet92eGc3C22yBtpvD5UZjqdhsAafP_zxI5wp8,1814
94
94
  airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
95
95
  airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
@@ -133,14 +133,14 @@ airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migrati
133
133
  airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
134
134
  airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
135
135
  airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Imnj3yef0aqRdLfaUxkIYISUb8YkiPrRH_wBd-x8HjM,5999
136
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=xfmKKdsnPeP9hV_cjBfZEGMxdU0HJDuMwoQGrmTPYMo,126543
136
+ airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=jipvV9xV_BB4-IGjdUolbY3IoaB0VPubWoCtnr1Ick0,127459
137
137
  airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
138
138
  airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
139
139
  airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=wnRUP0Xeru9Rbu5OexXSDN9QWDo8YU4tT9M2LDVOgGA,802
140
140
  airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=2UdpCz3yi7ISZTyqkQXSSy3dMxeyOWqV7OlAS5b9GVg,11568
141
141
  airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py,sha256=laBy7ebjA-PiNwc-50U4FHvMqS_mmHvnabxgFs4CjGw,17069
142
142
  airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=pJmg78vqE5VfUrF_KJnWjucQ4k9IWFULeAxHCowrHXE,6806
143
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=IaVbbuJv7DvheUaW3iBSv1qChpU8Vm1k7ZF_uESZYFU,175315
143
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=Sr8LrlLl61eQTsJ5b8eWt3ESCPDEpJRd6DXS4P53hVE,176635
144
144
  airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
145
145
  airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
146
146
  airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
@@ -193,10 +193,11 @@ airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_
193
193
  airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py,sha256=8YRiDzjYvqJ-aMmKFcjqzv_-e8OZ5QG_TbpZ-nuCu6s,2590
194
194
  airbyte_cdk/sources/declarative/requesters/request_path.py,sha256=S3MeFvcaQrMbOkSY2W2VbXLNomqt_3eXqVd9ZhgNwUs,299
195
195
  airbyte_cdk/sources/declarative/requesters/requester.py,sha256=T6tMx_Bx4iT-0YVjY7IzgRil-gaIu9n01b1iwpTh3Ek,5516
196
- airbyte_cdk/sources/declarative/resolvers/__init__.py,sha256=NiDcz5qi8HPsfX94MUmnX0Rgs_kQXGvucOmJjNWlxKQ,1207
196
+ airbyte_cdk/sources/declarative/resolvers/__init__.py,sha256=xVhOWLQW0wFBTAtRYu3GdFebPqKCDSt1uoP2TiBGrvs,1643
197
197
  airbyte_cdk/sources/declarative/resolvers/components_resolver.py,sha256=oJIpy66ep8n-QOc8GwpllApTRcl4QtQhkTw5fWWra2w,2026
198
198
  airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py,sha256=sD3N7nmqDjLsau8P2DE7DYOHdFTYjC_2nIB6454BNYk,7556
199
199
  airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=AiojNs8wItJFrENZBFUaDvau3sgwudO6Wkra36upSPo,4639
200
+ airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py,sha256=BUmvbsMeIGusZSCd80NiTFcwcosq-uhXHGNheAFs-10,5147
200
201
  airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=LQQspOQS9oyOx9cGnRIz1mq-8DZCBysyDJDPqjy1HvM,449
201
202
  airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=6oZtnCHm9NdDvjTSrVwPQOXGSdETSIR7eWH2vFjM7jI,4855
202
203
  airbyte_cdk/sources/declarative/retrievers/file_uploader/__init__.py,sha256=ovs0oZGPEEw-V4asqr0D1Xty2u7tR8ADhRuHNgXGuWQ,490
@@ -378,7 +379,7 @@ airbyte_cdk/sql/shared/sql_processor.py,sha256=1CwfC3fp9dWnHBpKtly7vGduf9ho_Mahi
378
379
  airbyte_cdk/sql/types.py,sha256=XEIhRAo_ASd0kVLBkdLf5bHiRhNple-IJrC9TibcDdY,5880
379
380
  airbyte_cdk/test/__init__.py,sha256=f_XdkOg4_63QT2k3BbKY34209lppwgw-svzfZstQEq4,199
380
381
  airbyte_cdk/test/catalog_builder.py,sha256=-y05Cz1x0Dlk6oE9LSKhCozssV2gYBNtMdV5YYOPOtk,3015
381
- airbyte_cdk/test/entrypoint_wrapper.py,sha256=BOqE_cj33UNNIQuJDxroY9vzmX5tsdGx1YKST8pE9oA,11307
382
+ airbyte_cdk/test/entrypoint_wrapper.py,sha256=Lj1E00iTen1PZKLQ63mLCK5cLKFLmm65lqahNJDXxK4,16197
382
383
  airbyte_cdk/test/mock_http/__init__.py,sha256=jE5kC6CQ0OXkTqKhciDnNVZHesBFVIA2YvkdFGwva7k,322
383
384
  airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBETmP6hTEyc,1446
384
385
  airbyte_cdk/test/mock_http/mocker.py,sha256=XgsjMtVoeMpRELPyALgrkHFauH9H5irxrz1Kcxh2yFY,8013
@@ -387,15 +388,16 @@ airbyte_cdk/test/mock_http/response.py,sha256=s4-cQQqTtmeej0pQDWqmG0vUWpHS-93lIW
387
388
  airbyte_cdk/test/mock_http/response_builder.py,sha256=F-v7ebftqGj7YVIMLKdodmU9U8Dq8aIyllWGo2NGwHc,8331
388
389
  airbyte_cdk/test/models/__init__.py,sha256=5f5oFcuUA3dyNTfvvTWav2pTD8WX4nznObKgMTmvdus,290
389
390
  airbyte_cdk/test/models/outcome.py,sha256=TdLEnRZv1QjlbI0xdsJqA2rfIvSVRJWXS4TNS9NbKZQ,2135
390
- airbyte_cdk/test/models/scenario.py,sha256=rlU3ykv6YCQsDxEtHMcDQJS_HQYa8sxfWSM7xiHWSjU,4710
391
- airbyte_cdk/test/standard_tests/__init__.py,sha256=YS2bghoGmQ-4GNIbe6RuEmvV-V1kpM1OyxTpebrs0Ig,1338
391
+ airbyte_cdk/test/models/scenario.py,sha256=vteWvKdinrrDurSnG5Xk478edgJJ9-hvdll0Ufoouu4,5940
392
+ airbyte_cdk/test/standard_tests/__init__.py,sha256=TGCSc9bqfiEhdfyz7SVqwBog2CsCY1unCXocSXswtV0,1369
392
393
  airbyte_cdk/test/standard_tests/_job_runner.py,sha256=vTuLJiJv-LBqXLfcr7RaTm0HBH4y7L8U6tDv3qYdTkg,6195
393
- airbyte_cdk/test/standard_tests/connector_base.py,sha256=YA_frtCav8ygg9XlHY9Yxi-KOkHBsaiXZGIp4ULa2D4,7107
394
+ airbyte_cdk/test/standard_tests/connector_base.py,sha256=x_6T4Jj9La7pv5sq1EAi_vXvnuKtIBRilS8e-MEj6f8,4529
394
395
  airbyte_cdk/test/standard_tests/declarative_sources.py,sha256=4lmXKVJEhYeZAYaaXODwkn-DoJt_V--Thbea0kzOqdc,3502
395
396
  airbyte_cdk/test/standard_tests/destination_base.py,sha256=MARZip2mdo_PzGvzf2VBTAfrP4tbjrJYgeJUApnAArA,731
396
- airbyte_cdk/test/standard_tests/pytest_hooks.py,sha256=4OMy2jNQThS8y7Tyj8MiMy2-SWjoefD4lGo-zQmCUfU,1886
397
- airbyte_cdk/test/standard_tests/source_base.py,sha256=o5N9a1lPgx8IVHgXlZcRdKmE4hhgQtTgYoAOA79MgS4,6421
398
- airbyte_cdk/test/standard_tests/util.py,sha256=340vihLJ_2rEnq91dRHutbPM4ssm2ze1uq01cOI5vF4,2937
397
+ airbyte_cdk/test/standard_tests/docker_base.py,sha256=7AGADbUTwqJrBK1pRuiYZ5Kgu5U1Rx3mOQnhrCwA4x4,15082
398
+ airbyte_cdk/test/standard_tests/pytest_hooks.py,sha256=qUrRN36PVHdaGQXLnb3y4CzQhkktq7qnRQppnOfSQh4,5773
399
+ airbyte_cdk/test/standard_tests/source_base.py,sha256=09P2Ii3cb789GzHz1AhLQma01Dzlablua_QEey3fJxo,6719
400
+ airbyte_cdk/test/standard_tests/util.py,sha256=8Gl0vINunzcfsuULgAQ7Ny4SGl66abBcF9Zw9Y2O1T8,2921
399
401
  airbyte_cdk/test/state_builder.py,sha256=kLPql9lNzUJaBg5YYRLJlY_Hy5JLHJDVyKPMZMoYM44,946
400
402
  airbyte_cdk/test/utils/__init__.py,sha256=Hu-1XT2KDoYjDF7-_ziDwv5bY3PueGjANOCbzeOegDg,57
401
403
  airbyte_cdk/test/utils/data.py,sha256=CkCR1_-rujWNmPXFR1IXTMwx1rAl06wAyIKWpDcN02w,820
@@ -405,11 +407,11 @@ airbyte_cdk/test/utils/reading.py,sha256=9ReW2uoITE7NCpVBKn6EfM9yi9_SvqhsNLb-5LO
405
407
  airbyte_cdk/utils/__init__.py,sha256=qhnC02DbS35OY8oB_tkYHwZzHed2FZeBM__G8IOgckY,347
406
408
  airbyte_cdk/utils/airbyte_secrets_utils.py,sha256=wEtRnl5KRhN6eLJwrDrC4FJjyqt_4vkA1F65mdl8c24,3142
407
409
  airbyte_cdk/utils/analytics_message.py,sha256=bi3uugQ2NjecnwTnz63iD5D1M8ZR8mXPbdtt6w5cC4s,653
408
- airbyte_cdk/utils/connector_paths.py,sha256=3yIa3855Cf3EQiiQ6ILMovsjf8UcPsdAuQGfryOhYgE,8675
410
+ airbyte_cdk/utils/connector_paths.py,sha256=ptb1ENNX7m7QkBdLzDWmD6m55WpPhOr9glN0RTUO7Ac,8708
409
411
  airbyte_cdk/utils/constants.py,sha256=QzCi7j5SqpI5I06uRvQ8FC73JVJi7rXaRnR3E_gro5c,108
410
412
  airbyte_cdk/utils/datetime_format_inferrer.py,sha256=Ne2cpk7Tx3eZDEW2Q3O7jnNOY9g-w-AUMt3Ltvwg1tY,3989
411
413
  airbyte_cdk/utils/datetime_helpers.py,sha256=8mqzZ67Or2PBp7tLtrhh6XFv4wFzYsjCL_DOQJRaftI,17751
412
- airbyte_cdk/utils/docker.py,sha256=NS35XgIc6FbFg9IxzDazHrxqmzmi9fjA46qdDfTQ4e0,14585
414
+ airbyte_cdk/utils/docker.py,sha256=aU1xT9znmbWSe0AT-Puk31LawAdxFHwEENdGFrre-WA,16549
413
415
  airbyte_cdk/utils/event_timing.py,sha256=aiuFmPU80buLlNdKq4fDTEqqhEIelHPF6AalFGwY8as,2557
414
416
  airbyte_cdk/utils/is_cloud_environment.py,sha256=DayV32Irh-SdnJ0MnjvstwCJ66_l5oEsd8l85rZtHoc,574
415
417
  airbyte_cdk/utils/mapping_helpers.py,sha256=nWjOpnz_5QE9tY9-GtSWMPvYQL95kDD6k8KwwjUmrh0,6526
@@ -421,9 +423,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
421
423
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
422
424
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
423
425
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
424
- airbyte_cdk-6.55.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
425
- airbyte_cdk-6.55.0.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
426
- airbyte_cdk-6.55.0.dist-info/METADATA,sha256=Me6noWhmTUus25avMry9Dor-Qd2mqi-gyOpRhqc05RI,6343
427
- airbyte_cdk-6.55.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
428
- airbyte_cdk-6.55.0.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
429
- airbyte_cdk-6.55.0.dist-info/RECORD,,
426
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
427
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
428
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/METADATA,sha256=xKp1ZcyutxyE1WspUNEnsaxdHSqgG34rKP0OiWa1mmk,6410
429
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
430
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
431
+ airbyte_cdk-6.55.1.post11.dev15684355943.dist-info/RECORD,,