airbyte-cdk 6.54.11__py3-none-any.whl → 6.55.1__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/concurrent_declarative_source.py +1 -1
  7. airbyte_cdk/sources/declarative/declarative_component_schema.yaml +31 -0
  8. airbyte_cdk/sources/declarative/manifest_declarative_source.py +28 -9
  9. airbyte_cdk/sources/declarative/models/declarative_component_schema.py +23 -2
  10. airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +2 -2
  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.54.11.dist-info → airbyte_cdk-6.55.1.dist-info}/METADATA +2 -1
  22. {airbyte_cdk-6.54.11.dist-info → airbyte_cdk-6.55.1.dist-info}/RECORD +26 -25
  23. {airbyte_cdk-6.54.11.dist-info → airbyte_cdk-6.55.1.dist-info}/LICENSE.txt +0 -0
  24. {airbyte_cdk-6.54.11.dist-info → airbyte_cdk-6.55.1.dist-info}/LICENSE_SHORT +0 -0
  25. {airbyte_cdk-6.54.11.dist-info → airbyte_cdk-6.55.1.dist-info}/WHEEL +0 -0
  26. {airbyte_cdk-6.54.11.dist-info → airbyte_cdk-6.55.1.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.54.11
3
+ Version: 6.55.1
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
@@ -85,11 +85,11 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=QeExVmpSYjr_CnghHu
85
85
  airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
86
86
  airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
87
87
  airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
88
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=rgCbaMkXN6QlblyK3mIVwdLtBtCo_IYRYOmjDGa0jwg,28538
88
+ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=rQz9gXp3m8M8E201EWnD7BfeefDXhW3233GG_JLpdOQ,28546
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=PyE9znoZLAlwWUXerXvOGJXADRWlVmBUadEYcAby_P8,177774
92
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=ES1gwuWHAXC9z9Dk8i0kNGK-2omTtjexiNp0iwV54tE,178751
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
@@ -127,20 +127,20 @@ airbyte_cdk/sources/declarative/interpolation/interpolated_string.py,sha256=CQkH
127
127
  airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=9IoeuWam3L6GyN10L6U8xNWXmkt9cnahSDNkez1OmFY,982
128
128
  airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=oFGKs3oX0xO6DOL4E9x8rhxwbEoRcgx4HJVIL1RQ9c4,7269
129
129
  airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=xRcmjape4_WGmKMJpmBsKY0k4OHJDM46Hv3V-dlSz3w,5640
130
- airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=ciXtM7Qhus170ZwP8B9Ac4VScX2FPBYvlbZRv_r376U,24692
130
+ airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=i87TixffTZVRg5m0J_QV_jl901M9BKJeqxf773pxzgA,25563
131
131
  airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
132
  airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=V2lpYE9LJKvz6BUViHk4vaRGndxNABmPbDCtyYdkqaE,4013
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=ikMY2-Q1d19mzVjtqW7XeMtXNSsG4lvZexXR5XlIhfo,125817
136
+ airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=xfmKKdsnPeP9hV_cjBfZEGMxdU0HJDuMwoQGrmTPYMo,126543
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=VEEJeMbOYmPNX2S8KfsWWzU_VaXM-X5_hNsosv_L5AM,175305
143
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=IaVbbuJv7DvheUaW3iBSv1qChpU8Vm1k7ZF_uESZYFU,175315
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
@@ -378,7 +378,7 @@ airbyte_cdk/sql/shared/sql_processor.py,sha256=1CwfC3fp9dWnHBpKtly7vGduf9ho_Mahi
378
378
  airbyte_cdk/sql/types.py,sha256=XEIhRAo_ASd0kVLBkdLf5bHiRhNple-IJrC9TibcDdY,5880
379
379
  airbyte_cdk/test/__init__.py,sha256=f_XdkOg4_63QT2k3BbKY34209lppwgw-svzfZstQEq4,199
380
380
  airbyte_cdk/test/catalog_builder.py,sha256=-y05Cz1x0Dlk6oE9LSKhCozssV2gYBNtMdV5YYOPOtk,3015
381
- airbyte_cdk/test/entrypoint_wrapper.py,sha256=BOqE_cj33UNNIQuJDxroY9vzmX5tsdGx1YKST8pE9oA,11307
381
+ airbyte_cdk/test/entrypoint_wrapper.py,sha256=Lj1E00iTen1PZKLQ63mLCK5cLKFLmm65lqahNJDXxK4,16197
382
382
  airbyte_cdk/test/mock_http/__init__.py,sha256=jE5kC6CQ0OXkTqKhciDnNVZHesBFVIA2YvkdFGwva7k,322
383
383
  airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBETmP6hTEyc,1446
384
384
  airbyte_cdk/test/mock_http/mocker.py,sha256=XgsjMtVoeMpRELPyALgrkHFauH9H5irxrz1Kcxh2yFY,8013
@@ -387,15 +387,16 @@ airbyte_cdk/test/mock_http/response.py,sha256=s4-cQQqTtmeej0pQDWqmG0vUWpHS-93lIW
387
387
  airbyte_cdk/test/mock_http/response_builder.py,sha256=F-v7ebftqGj7YVIMLKdodmU9U8Dq8aIyllWGo2NGwHc,8331
388
388
  airbyte_cdk/test/models/__init__.py,sha256=5f5oFcuUA3dyNTfvvTWav2pTD8WX4nznObKgMTmvdus,290
389
389
  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
390
+ airbyte_cdk/test/models/scenario.py,sha256=vteWvKdinrrDurSnG5Xk478edgJJ9-hvdll0Ufoouu4,5940
391
+ airbyte_cdk/test/standard_tests/__init__.py,sha256=TGCSc9bqfiEhdfyz7SVqwBog2CsCY1unCXocSXswtV0,1369
392
392
  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
393
+ airbyte_cdk/test/standard_tests/connector_base.py,sha256=x_6T4Jj9La7pv5sq1EAi_vXvnuKtIBRilS8e-MEj6f8,4529
394
394
  airbyte_cdk/test/standard_tests/declarative_sources.py,sha256=4lmXKVJEhYeZAYaaXODwkn-DoJt_V--Thbea0kzOqdc,3502
395
395
  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
396
+ airbyte_cdk/test/standard_tests/docker_base.py,sha256=7AGADbUTwqJrBK1pRuiYZ5Kgu5U1Rx3mOQnhrCwA4x4,15082
397
+ airbyte_cdk/test/standard_tests/pytest_hooks.py,sha256=qUrRN36PVHdaGQXLnb3y4CzQhkktq7qnRQppnOfSQh4,5773
398
+ airbyte_cdk/test/standard_tests/source_base.py,sha256=09P2Ii3cb789GzHz1AhLQma01Dzlablua_QEey3fJxo,6719
399
+ airbyte_cdk/test/standard_tests/util.py,sha256=8Gl0vINunzcfsuULgAQ7Ny4SGl66abBcF9Zw9Y2O1T8,2921
399
400
  airbyte_cdk/test/state_builder.py,sha256=kLPql9lNzUJaBg5YYRLJlY_Hy5JLHJDVyKPMZMoYM44,946
400
401
  airbyte_cdk/test/utils/__init__.py,sha256=Hu-1XT2KDoYjDF7-_ziDwv5bY3PueGjANOCbzeOegDg,57
401
402
  airbyte_cdk/test/utils/data.py,sha256=CkCR1_-rujWNmPXFR1IXTMwx1rAl06wAyIKWpDcN02w,820
@@ -405,11 +406,11 @@ airbyte_cdk/test/utils/reading.py,sha256=9ReW2uoITE7NCpVBKn6EfM9yi9_SvqhsNLb-5LO
405
406
  airbyte_cdk/utils/__init__.py,sha256=qhnC02DbS35OY8oB_tkYHwZzHed2FZeBM__G8IOgckY,347
406
407
  airbyte_cdk/utils/airbyte_secrets_utils.py,sha256=wEtRnl5KRhN6eLJwrDrC4FJjyqt_4vkA1F65mdl8c24,3142
407
408
  airbyte_cdk/utils/analytics_message.py,sha256=bi3uugQ2NjecnwTnz63iD5D1M8ZR8mXPbdtt6w5cC4s,653
408
- airbyte_cdk/utils/connector_paths.py,sha256=3yIa3855Cf3EQiiQ6ILMovsjf8UcPsdAuQGfryOhYgE,8675
409
+ airbyte_cdk/utils/connector_paths.py,sha256=ptb1ENNX7m7QkBdLzDWmD6m55WpPhOr9glN0RTUO7Ac,8708
409
410
  airbyte_cdk/utils/constants.py,sha256=QzCi7j5SqpI5I06uRvQ8FC73JVJi7rXaRnR3E_gro5c,108
410
411
  airbyte_cdk/utils/datetime_format_inferrer.py,sha256=Ne2cpk7Tx3eZDEW2Q3O7jnNOY9g-w-AUMt3Ltvwg1tY,3989
411
412
  airbyte_cdk/utils/datetime_helpers.py,sha256=8mqzZ67Or2PBp7tLtrhh6XFv4wFzYsjCL_DOQJRaftI,17751
412
- airbyte_cdk/utils/docker.py,sha256=NS35XgIc6FbFg9IxzDazHrxqmzmi9fjA46qdDfTQ4e0,14585
413
+ airbyte_cdk/utils/docker.py,sha256=aU1xT9znmbWSe0AT-Puk31LawAdxFHwEENdGFrre-WA,16549
413
414
  airbyte_cdk/utils/event_timing.py,sha256=aiuFmPU80buLlNdKq4fDTEqqhEIelHPF6AalFGwY8as,2557
414
415
  airbyte_cdk/utils/is_cloud_environment.py,sha256=DayV32Irh-SdnJ0MnjvstwCJ66_l5oEsd8l85rZtHoc,574
415
416
  airbyte_cdk/utils/mapping_helpers.py,sha256=nWjOpnz_5QE9tY9-GtSWMPvYQL95kDD6k8KwwjUmrh0,6526
@@ -421,9 +422,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
421
422
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
422
423
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
423
424
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
424
- airbyte_cdk-6.54.11.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
425
- airbyte_cdk-6.54.11.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
426
- airbyte_cdk-6.54.11.dist-info/METADATA,sha256=GAc-NcvDVzTVP4sUrNphva1hP0kyZt-ANEM5Qz5CgPY,6344
427
- airbyte_cdk-6.54.11.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
428
- airbyte_cdk-6.54.11.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
429
- airbyte_cdk-6.54.11.dist-info/RECORD,,
425
+ airbyte_cdk-6.55.1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
426
+ airbyte_cdk-6.55.1.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
427
+ airbyte_cdk-6.55.1.dist-info/METADATA,sha256=l7jKuCXU7nwels800F-i0GX3S85Fjw31cHtoKadLd7Y,6388
428
+ airbyte_cdk-6.55.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
429
+ airbyte_cdk-6.55.1.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
430
+ airbyte_cdk-6.55.1.dist-info/RECORD,,