airbyte-cdk 6.61.5__py3-none-any.whl → 6.61.6__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.
@@ -62,10 +62,10 @@ def should_normalize_manifest(config: Mapping[str, Any]) -> bool:
62
62
 
63
63
  def create_source(
64
64
  config: Mapping[str, Any],
65
- limits: TestLimits,
66
- catalog: Optional[ConfiguredAirbyteCatalog],
67
- state: Optional[List[AirbyteStateMessage]],
68
- ) -> ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]:
65
+ limits: TestLimits | None = None,
66
+ catalog: ConfiguredAirbyteCatalog | None = None,
67
+ state: List[AirbyteStateMessage] | None = None,
68
+ ) -> ConcurrentDeclarativeSource:
69
69
  manifest = config["__injected_declarative_manifest"]
70
70
 
71
71
  # We enforce a concurrency level of 1 so that the stream is processed on a single thread
@@ -88,7 +88,7 @@ def create_source(
88
88
 
89
89
 
90
90
  def read_stream(
91
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]],
91
+ source: ConcurrentDeclarativeSource,
92
92
  config: Mapping[str, Any],
93
93
  configured_catalog: ConfiguredAirbyteCatalog,
94
94
  state: List[AirbyteStateMessage],
@@ -127,7 +127,7 @@ def read_stream(
127
127
 
128
128
 
129
129
  def resolve_manifest(
130
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]],
130
+ source: ConcurrentDeclarativeSource,
131
131
  ) -> AirbyteMessage:
132
132
  try:
133
133
  return AirbyteMessage(
@@ -146,7 +146,7 @@ def resolve_manifest(
146
146
 
147
147
 
148
148
  def full_resolve_manifest(
149
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]], limits: TestLimits
149
+ source: ConcurrentDeclarativeSource, limits: TestLimits
150
150
  ) -> AirbyteMessage:
151
151
  try:
152
152
  manifest = {**source.resolved_manifest}
@@ -34,7 +34,7 @@ from airbyte_cdk.utils.traced_exception import AirbyteTracedException
34
34
 
35
35
  def get_config_and_catalog_from_args(
36
36
  args: List[str],
37
- ) -> Tuple[str, Mapping[str, Any], Optional[ConfiguredAirbyteCatalog], Any]:
37
+ ) -> Tuple[str, Mapping[str, Any], Optional[ConfiguredAirbyteCatalog], List[AirbyteStateMessage]]:
38
38
  # TODO: Add functionality for the `debug` logger.
39
39
  # Currently, no one `debug` level log will be displayed during `read` a stream for a connector created through `connector-builder`.
40
40
  parsed_args = AirbyteEntrypoint.parse_args(args)
@@ -70,7 +70,7 @@ def get_config_and_catalog_from_args(
70
70
 
71
71
 
72
72
  def handle_connector_builder_request(
73
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]],
73
+ source: ConcurrentDeclarativeSource,
74
74
  command: str,
75
75
  config: Mapping[str, Any],
76
76
  catalog: Optional[ConfiguredAirbyteCatalog],
@@ -85,7 +85,7 @@ class TestReader:
85
85
 
86
86
  def run_test_read(
87
87
  self,
88
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]],
88
+ source: ConcurrentDeclarativeSource,
89
89
  config: Mapping[str, Any],
90
90
  configured_catalog: ConfiguredAirbyteCatalog,
91
91
  stream_name: str,
@@ -383,7 +383,7 @@ class TestReader:
383
383
 
384
384
  def _read_stream(
385
385
  self,
386
- source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]],
386
+ source: ConcurrentDeclarativeSource,
387
387
  config: Mapping[str, Any],
388
388
  configured_catalog: ConfiguredAirbyteCatalog,
389
389
  state: List[AirbyteStateMessage],
@@ -11,7 +11,7 @@ FROM python:3.12-slim-bookworm
11
11
  RUN apt-get update && \
12
12
  apt-get install -y git && \
13
13
  rm -rf /var/lib/apt/lists/* && \
14
- pip install poetry==1.8.3
14
+ pip install poetry==2.0.1
15
15
 
16
16
  # Configure poetry to not create virtual environments and disable interactive mode
17
17
  ENV POETRY_NO_INTERACTION=1 \
@@ -42,4 +42,4 @@ USER airbyte:airbyte
42
42
 
43
43
  EXPOSE 8080
44
44
 
45
- CMD ["uvicorn", "airbyte_cdk.manifest_server.app:app", "--host", "0.0.0.0", "--port", "8080"]
45
+ CMD ["uvicorn", "airbyte_cdk.manifest_server.app:app", "--host", "0.0.0.0", "--port", "8080"]
@@ -21,12 +21,10 @@ from airbyte_cdk.test.entrypoint_wrapper import AirbyteEntrypointException, Entr
21
21
 
22
22
 
23
23
  class ManifestCommandProcessor:
24
- _source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]
24
+ _source: ConcurrentDeclarativeSource
25
25
  _logger = logging.getLogger("airbyte.manifest-server")
26
26
 
27
- def __init__(
28
- self, source: ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]
29
- ) -> None:
27
+ def __init__(self, source: ConcurrentDeclarativeSource) -> None:
30
28
  self._source = source
31
29
 
32
30
  def test_read(
@@ -63,7 +63,7 @@ def build_source(
63
63
  record_limit: Optional[int] = None,
64
64
  page_limit: Optional[int] = None,
65
65
  slice_limit: Optional[int] = None,
66
- ) -> ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]:
66
+ ) -> ConcurrentDeclarativeSource:
67
67
  # We enforce a concurrency level of 1 so that the stream is processed on a single thread
68
68
  # to retain ordering for the grouping of the builder message responses.
69
69
  definition = copy.deepcopy(manifest)
@@ -40,7 +40,7 @@ def safe_build_source(
40
40
  page_limit: Optional[int] = None,
41
41
  slice_limit: Optional[int] = None,
42
42
  record_limit: Optional[int] = None,
43
- ) -> ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]:
43
+ ) -> ConcurrentDeclarativeSource:
44
44
  """Wrapper around build_source that converts ValidationError to HTTPException."""
45
45
  try:
46
46
  return build_source(
@@ -162,16 +162,17 @@ def _get_declarative_component_schema() -> Dict[str, Any]:
162
162
  # is no longer inherited from since the only external dependency is from that class.
163
163
  #
164
164
  # todo: It is worth investigating removal of the Generic[TState] since it will always be Optional[List[AirbyteStateMessage]]
165
- class ConcurrentDeclarativeSource(AbstractSource, Generic[TState]):
165
+ class ConcurrentDeclarativeSource(AbstractSource):
166
166
  # By default, we defer to a value of 2. A value lower than could cause a PartitionEnqueuer to be stuck in a state of deadlock
167
167
  # because it has hit the limit of futures but not partition reader is consuming them.
168
168
  _LOWEST_SAFE_CONCURRENCY_LEVEL = 2
169
169
 
170
170
  def __init__(
171
171
  self,
172
- catalog: Optional[ConfiguredAirbyteCatalog],
173
- config: Optional[Mapping[str, Any]],
174
- state: TState,
172
+ catalog: Optional[ConfiguredAirbyteCatalog] = None,
173
+ config: Optional[Mapping[str, Any]] = None,
174
+ state: Optional[List[AirbyteStateMessage]] = None,
175
+ *,
175
176
  source_config: ConnectionDefinition,
176
177
  debug: bool = False,
177
178
  emit_connector_builder_messages: bool = False,
@@ -14,7 +14,7 @@ from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
14
14
  from airbyte_cdk.sources.types import ConnectionDefinition
15
15
 
16
16
 
17
- class YamlDeclarativeSource(ConcurrentDeclarativeSource[List[AirbyteStateMessage]]):
17
+ class YamlDeclarativeSource(ConcurrentDeclarativeSource):
18
18
  """Declarative source defined by a yaml file"""
19
19
 
20
20
  def __init__(
@@ -7,12 +7,16 @@ import importlib
7
7
  import json
8
8
  import os
9
9
  import pkgutil
10
- from typing import Any, ClassVar, Dict, List, Mapping, MutableMapping, Optional, Tuple
10
+ from copy import deepcopy
11
+ from typing import TYPE_CHECKING, Any, ClassVar, Dict, List, Mapping, MutableMapping, Tuple, cast
11
12
 
12
13
  import jsonref
13
- from jsonschema import RefResolver, validate
14
+ from jsonschema import validate
14
15
  from jsonschema.exceptions import ValidationError
15
16
  from pydantic.v1 import BaseModel, Field
17
+ from referencing import Registry, Resource
18
+ from referencing._core import Resolver # used for type hints
19
+ from referencing.jsonschema import DRAFT7
16
20
 
17
21
  from airbyte_cdk.models import ConnectorSpecification, FailureType
18
22
  from airbyte_cdk.utils.traced_exception import AirbyteTracedException
@@ -63,18 +67,30 @@ def resolve_ref_links(obj: Any) -> Any:
63
67
  return obj
64
68
 
65
69
 
66
- def _expand_refs(schema: Any, ref_resolver: Optional[RefResolver] = None) -> None:
70
+ def get_ref_resolver_registry(schema: dict[str, Any]) -> Registry:
71
+ """Get a reference resolver registry for the given schema."""
72
+ resource: Resource = Resource.from_contents(
73
+ contents=schema,
74
+ default_specification=DRAFT7,
75
+ )
76
+ return cast( # Mypy has a hard time detecting this return type.
77
+ "Registry",
78
+ Registry().with_resource(
79
+ uri="",
80
+ resource=resource,
81
+ ),
82
+ )
83
+
84
+
85
+ def _expand_refs(schema: Any, ref_resolver: Resolver) -> None:
67
86
  """Internal function to iterate over schema and replace all occurrences of $ref with their definitions. Recursive.
68
87
 
69
88
  :param schema: schema that will be patched
70
- :param ref_resolver: resolver to get definition from $ref, if None pass it will be instantiated
71
89
  """
72
- ref_resolver = ref_resolver or RefResolver.from_schema(schema)
73
-
74
90
  if isinstance(schema, MutableMapping):
75
91
  if "$ref" in schema:
76
92
  ref_url = schema.pop("$ref")
77
- _, definition = ref_resolver.resolve(ref_url)
93
+ definition = ref_resolver.lookup(ref_url).contents
78
94
  _expand_refs(
79
95
  definition, ref_resolver=ref_resolver
80
96
  ) # expand refs in definitions as well
@@ -90,10 +106,14 @@ def _expand_refs(schema: Any, ref_resolver: Optional[RefResolver] = None) -> Non
90
106
  def expand_refs(schema: Any) -> None:
91
107
  """Iterate over schema and replace all occurrences of $ref with their definitions.
92
108
 
109
+ If a "definitions" section is present at the root of the schema, it will be removed
110
+ after $ref resolution is complete.
111
+
93
112
  :param schema: schema that will be patched
94
113
  """
95
- _expand_refs(schema)
96
- schema.pop("definitions", None) # remove definitions created by $ref
114
+ ref_resolver = get_ref_resolver_registry(schema).resolver()
115
+ _expand_refs(schema, ref_resolver)
116
+ schema.pop("definitions", None)
97
117
 
98
118
 
99
119
  def rename_key(schema: Any, old_key: str, new_key: str) -> None:
@@ -3,10 +3,25 @@
3
3
  #
4
4
 
5
5
  import logging
6
+ from copy import deepcopy
6
7
  from enum import Flag, auto
7
- from typing import Any, Callable, Dict, Generator, Mapping, Optional, cast
8
+ from typing import TYPE_CHECKING, Any, Callable, Dict, Generator, Mapping, Optional, cast
9
+
10
+ from jsonschema import Draft7Validator, ValidationError, validators
11
+ from referencing import Registry, Resource
12
+ from referencing._core import Resolver
13
+ from referencing.exceptions import Unresolvable
14
+ from referencing.jsonschema import DRAFT7
15
+
16
+ from airbyte_cdk.sources.utils.schema_helpers import expand_refs
17
+
18
+ from .schema_helpers import get_ref_resolver_registry
19
+
20
+ try:
21
+ from jsonschema.validators import Validator
22
+ except:
23
+ from jsonschema import Validator
8
24
 
9
- from jsonschema import Draft7Validator, RefResolver, ValidationError, Validator, validators
10
25
 
11
26
  MAX_NESTING_DEPTH = 3
12
27
  json_to_python_simple = {
@@ -191,15 +206,14 @@ class TypeTransformer:
191
206
  validators parameter for detailed description.
192
207
  :
193
208
  """
209
+ # Very first step is to expand $refs in the schema itself:
210
+ expand_refs(schema)
211
+
212
+ # Now we can expand $refs in the property value:
213
+ if isinstance(property_value, dict):
214
+ expand_refs(property_value)
194
215
 
195
- def resolve(subschema: dict[str, Any]) -> dict[str, Any]:
196
- if "$ref" in subschema:
197
- _, resolved = cast(
198
- RefResolver,
199
- validator_instance.resolver,
200
- ).resolve(subschema["$ref"])
201
- return cast(dict[str, Any], resolved)
202
- return subschema
216
+ # Now we can validate and normalize the values:
203
217
 
204
218
  # Transform object and array values before running json schema type checking for each element.
205
219
  # Recursively normalize every value of the "instance" sub-object,
@@ -207,14 +221,12 @@ class TypeTransformer:
207
221
  if schema_key == "properties" and isinstance(instance, dict):
208
222
  for k, subschema in property_value.items():
209
223
  if k in instance:
210
- subschema = resolve(subschema)
211
224
  instance[k] = self.__normalize(instance[k], subschema)
212
225
  # Recursively normalize every item of the "instance" sub-array,
213
226
  # if "instance" is an incorrect type - skip recursive normalization of "instance"
214
227
  elif schema_key == "items" and isinstance(instance, list):
215
- subschema = resolve(property_value)
216
228
  for index, item in enumerate(instance):
217
- instance[index] = self.__normalize(item, subschema)
229
+ instance[index] = self.__normalize(item, property_value)
218
230
 
219
231
  # Running native jsonschema traverse algorithm after field normalization is done.
220
232
  yield from original_validator(
@@ -6,7 +6,8 @@ import json
6
6
  import re
7
7
  from typing import Any
8
8
 
9
- from jsonschema import RefResolver
9
+ from referencing import Registry, Resource
10
+ from referencing.jsonschema import DRAFT7
10
11
 
11
12
 
12
13
  def resolve_refs(schema: dict[str, Any]) -> dict[str, Any]:
@@ -14,13 +15,14 @@ def resolve_refs(schema: dict[str, Any]) -> dict[str, Any]:
14
15
  For spec schemas generated using Pydantic models, the resulting JSON schema can contain refs between object
15
16
  relationships.
16
17
  """
17
- json_schema_ref_resolver = RefResolver.from_schema(schema)
18
+ resource = Resource.from_contents(schema, default_specification=DRAFT7)
19
+ registry = Registry().with_resource("", resource)
20
+ resolver = registry.resolver()
18
21
  str_schema = json.dumps(schema)
19
22
  for ref_block in re.findall(r'{"\$ref": "#\/definitions\/.+?(?="})"}', str_schema):
20
23
  ref = json.loads(ref_block)["$ref"]
21
- str_schema = str_schema.replace(
22
- ref_block, json.dumps(json_schema_ref_resolver.resolve(ref)[1])
23
- )
24
+ resolved = resolver.lookup(ref).contents
25
+ str_schema = str_schema.replace(ref_block, json.dumps(resolved))
24
26
  pyschema: dict[str, Any] = json.loads(str_schema)
25
27
  del pyschema["definitions"]
26
28
  return pyschema
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.61.5
3
+ Version: 6.61.6
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -44,7 +44,7 @@ Requires-Dist: genson (==1.3.0)
44
44
  Requires-Dist: google-cloud-secret-manager (>=2.17.0,<3.0.0)
45
45
  Requires-Dist: isodate (>=0.6.1,<0.7.0)
46
46
  Requires-Dist: jsonref (>=0.2,<0.3)
47
- Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
47
+ Requires-Dist: jsonschema (>=4.17.3,<5.0)
48
48
  Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
49
49
  Requires-Dist: langchain_core (==0.1.42)
50
50
  Requires-Dist: markdown ; extra == "file-based"
@@ -69,6 +69,7 @@ Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
69
69
  Requires-Dist: python-ulid (>=3.0.0,<4.0.0)
70
70
  Requires-Dist: pytz (==2024.2)
71
71
  Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
72
+ Requires-Dist: referencing (>=0.36.2)
72
73
  Requires-Dist: requests
73
74
  Requires-Dist: requests_cache
74
75
  Requires-Dist: rich
@@ -15,13 +15,13 @@ airbyte_cdk/config_observation.py,sha256=7SSPxtN0nXPkm4euGNcTTr1iLbwUL01jy-24V1H
15
15
  airbyte_cdk/connector.py,sha256=N6TUlrZOMjLAI85JrNAKkfyTqnO5xfBCw4oEfgjJd9o,4254
16
16
  airbyte_cdk/connector_builder/README.md,sha256=Hw3wvVewuHG9-QgsAq1jDiKuLlStDxKBz52ftyNRnBw,1665
17
17
  airbyte_cdk/connector_builder/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
18
- airbyte_cdk/connector_builder/connector_builder_handler.py,sha256=B5Zpt9u81n8BJjRCF-EvUUk0Y4-tTp6mPx0dSPP-pFg,6330
19
- airbyte_cdk/connector_builder/main.py,sha256=IkudoYUvjFieB9RJaHPrKd95yC90f9jOb6EBl1PaO7M,3935
18
+ airbyte_cdk/connector_builder/connector_builder_handler.py,sha256=g3P7Ib27mOLEMH8tBIVhl3A-ZidothnXxevhNSuGHvM,6204
19
+ airbyte_cdk/connector_builder/main.py,sha256=dbVvNIFGIiAM9HKFsoB00lAHSvX16JY49dUImsGCpwQ,3920
20
20
  airbyte_cdk/connector_builder/models.py,sha256=9pIZ98LW_d6fRS39VdnUOf3cxGt4TkC5MJ0_OrzcCRk,1578
21
21
  airbyte_cdk/connector_builder/test_reader/__init__.py,sha256=iTwBMoI9vaJotEgpqZbFjlxRcbxXYypSVJ9YxeHk7wc,120
22
22
  airbyte_cdk/connector_builder/test_reader/helpers.py,sha256=5GSrK9EVBDm5dwtudVbA-73EHh53-niRA-oj8eQVFHI,29236
23
23
  airbyte_cdk/connector_builder/test_reader/message_grouper.py,sha256=bFoQMKCXJob98O6F4tgMW81cCquNOqCx2tkNXP7lPqc,7062
24
- airbyte_cdk/connector_builder/test_reader/reader.py,sha256=Zuq0LCtrT-KHaELn2pVl7eQd39c_BwYbVeZBX7HEeeQ,21842
24
+ airbyte_cdk/connector_builder/test_reader/reader.py,sha256=QvIBtCJxcQhJqlHXOAHoFHGz_N7Z7ocpV2j5JO92XEU,21768
25
25
  airbyte_cdk/connector_builder/test_reader/types.py,sha256=hPZG3jO03kBaPyW94NI3JHRS1jxXGSNBcN1HFzOxo5Y,2528
26
26
  airbyte_cdk/destinations/__init__.py,sha256=FyDp28PT_YceJD5HDFhA-mrGfX9AONIyMQ4d68CHNxQ,213
27
27
  airbyte_cdk/destinations/destination.py,sha256=CIq-yb8C_0QvcKCtmStaHfiqn53GEfRAIGGCkJhKP1Q,5880
@@ -55,7 +55,7 @@ airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data
55
55
  airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py,sha256=EX1MVYVpoWypA28qoH48wA0SYZjGdlR8bcSixTDzfgo,1346
56
56
  airbyte_cdk/manifest_migrations/migrations/registry.yaml,sha256=F-hdapvl_vZnsI7CQsV00Rb7g7j4Nt2zaM83-Tbwgbg,956
57
57
  airbyte_cdk/manifest_migrations/migrations_registry.py,sha256=zly2fwaOxDukqC7eowzrDlvhA2v71FjW74kDzvRXhSY,2619
58
- airbyte_cdk/manifest_server/Dockerfile,sha256=hNgnUguE9jA5XFkpLmzvbsQbsZTuwOxJgE7qYNkPueo,1316
58
+ airbyte_cdk/manifest_server/Dockerfile,sha256=9I8HUDHkHggzyUiGg4Bqj7oZjrTSaWrZrWyA2FKD7u8,1317
59
59
  airbyte_cdk/manifest_server/README.md,sha256=bYzb3QAnkaM9mR9XgK7n4FKAvZkM4OWaBGcQb91f3vk,4341
60
60
  airbyte_cdk/manifest_server/__init__.py,sha256=EE54nk2dbtExIEEvLPCTUkJ_ESV5OYP4B2rBJlDpJ5g,33
61
61
  airbyte_cdk/manifest_server/api_models/__init__.py,sha256=1UFpMsJm1sjNBjgEasbOU98BgZxLthlPM1KdUpGfC4I,1015
@@ -72,14 +72,14 @@ airbyte_cdk/manifest_server/cli/_openapi.py,sha256=rNghqbBMMT118auUIsxr89Mu6L6hq
72
72
  airbyte_cdk/manifest_server/cli/_start.py,sha256=SgkW_dQcpCIrXYNZ6qF95oYIVaCszm9tFEbYiAZo4EQ,876
73
73
  airbyte_cdk/manifest_server/cli/run.py,sha256=-Yv_Jv_hDeMBVZdzuyeJJ_JBT1WUhCyUQn4f4mA21Ds,1224
74
74
  airbyte_cdk/manifest_server/command_processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- airbyte_cdk/manifest_server/command_processor/processor.py,sha256=_YNJdP3H9IP_26m1S6j-ZfVK-EC9YppAV-Degd7yll0,3829
76
- airbyte_cdk/manifest_server/command_processor/utils.py,sha256=f_CkN2nURTTp07Twr9vZfFj5j-jTFtezoOUu2i402W4,3221
75
+ airbyte_cdk/manifest_server/command_processor/processor.py,sha256=BZPASuhPJix78NB7rD1xuxWfL1TmqdnOEa_8WR1R2FI,3741
76
+ airbyte_cdk/manifest_server/command_processor/utils.py,sha256=EbZAbX91n12g2TCqOWBUi8KKqdz2Ccrw2FAIN5JT2B8,3184
77
77
  airbyte_cdk/manifest_server/main.py,sha256=iSgL7x8ifBpGpXi7Dq7017QjeC20l_CYBAIsumiyJn0,573
78
78
  airbyte_cdk/manifest_server/openapi.yaml,sha256=jwJXohDXP3BLL0JGZhkyhpNLWLZu6_iXEgMtM58F2Pc,16693
79
79
  airbyte_cdk/manifest_server/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  airbyte_cdk/manifest_server/routers/capabilities.py,sha256=UeZQzbqEuDN23vizgDb_N7KEXR-YZUPnW5AkXeXy1hA,727
81
81
  airbyte_cdk/manifest_server/routers/health.py,sha256=akBUaHUGN-jmN82lQ3kj_3-wdS6gsZx3iSD2KMI5dW8,200
82
- airbyte_cdk/manifest_server/routers/manifest.py,sha256=6UT8bD-og-Eg-cfxuXkJXzzj0z3Kko6vOfsGjOAaPks,5570
82
+ airbyte_cdk/manifest_server/routers/manifest.py,sha256=JmL5eaw4mDyjP7-ufQ_F6h0kmjttivrvXkEjPzYccTg,5533
83
83
  airbyte_cdk/models/__init__.py,sha256=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
84
84
  airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
85
85
  airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=Dq4ry_Wwvzsos6neDiaOZkY6riQYC33ZlPNWpfIIB1E,1926
@@ -118,7 +118,7 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=sV-ZY7dZ03V8GdAxPY
118
118
  airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
119
119
  airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
120
120
  airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
121
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=3Trf6Qh5thzJM-NitcmbBGomQ06w_B_XCWDwenw4vvA,52912
121
+ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=EpTpu7y8rK6QP9smRIXYi7NTjJwumTwI2FvoeFbigvc,52956
122
122
  airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
123
123
  airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
124
124
  airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
@@ -273,7 +273,7 @@ airbyte_cdk/sources/declarative/validators/predicate_validator.py,sha256=Q4eVncl
273
273
  airbyte_cdk/sources/declarative/validators/validate_adheres_to_schema.py,sha256=kjcuKxWMJEzpF4GiESITGMxBAXw6YZCAsgOQMgeBo4g,1085
274
274
  airbyte_cdk/sources/declarative/validators/validation_strategy.py,sha256=LwqUX89cFdHTM1-h6c8vebBA9WC38HYoGBvJfCZHr0g,467
275
275
  airbyte_cdk/sources/declarative/validators/validator.py,sha256=MAwo8OievUsuzBuPxI9pbPu87yq0tJZkGbydcrHZyQc,382
276
- airbyte_cdk/sources/declarative/yaml_declarative_source.py,sha256=-pHwGO7ZW-x8lmsqSpbrN0pOgIyjJhFDGUNwB3kQWWc,2794
276
+ airbyte_cdk/sources/declarative/yaml_declarative_source.py,sha256=qDQXems3USwhapqzbcESeXyYAhTSp8PLBq47Hiw52PY,2767
277
277
  airbyte_cdk/sources/file_based/README.md,sha256=iMqww4VZ882jfNQIdljjDgqreKs-mkdtSrRKA94iX6A,11085
278
278
  airbyte_cdk/sources/file_based/__init__.py,sha256=EaxHv_9ot-eRlUCR47ZMZ0IOtB-n0HH24om7Bfn-uuQ,868
279
279
  airbyte_cdk/sources/file_based/availability_strategy/__init__.py,sha256=VY-0PcTaPttXU_mGf-7w7u5VKQD7iQWJbKMvIYAOhcQ,288
@@ -393,9 +393,9 @@ airbyte_cdk/sources/utils/__init__.py,sha256=TTN6VUxVy6Is8BhYQZR5pxJGQh8yH4duXh4
393
393
  airbyte_cdk/sources/utils/casing.py,sha256=QC-gV1O4e8DR4-bhdXieUPKm_JamzslVyfABLYYRSXA,256
394
394
  airbyte_cdk/sources/utils/files_directory.py,sha256=z8Dmr-wkL1sAqdwCST4MBUFAyMHPD2cJIzVdAuCynp8,391
395
395
  airbyte_cdk/sources/utils/record_helper.py,sha256=7wL-pDYrBpcmZHa8ORtiSOqBZJEZI5hdl2dA1RYiatk,2029
396
- airbyte_cdk/sources/utils/schema_helpers.py,sha256=bR3I70-e11S6B8r6VK-pthQXtcYrXojgXFvuK7lRrpg,8545
396
+ airbyte_cdk/sources/utils/schema_helpers.py,sha256=_SCOPalKoMW3SX9J-zK6UsAO0oHsfCyW-F2wQlPJ3PU,9145
397
397
  airbyte_cdk/sources/utils/slice_logger.py,sha256=M1TvcYGMftXR841XdJmeEpKpQqrdOD5X-qsspfAMKMs,2168
398
- airbyte_cdk/sources/utils/transform.py,sha256=0LOvIJg1vmg_70AiAVe-YHMr-LHrqEuxg9cm1BnYPDM,11725
398
+ airbyte_cdk/sources/utils/transform.py,sha256=49xcU97dZAO7FTQItrpN0mZ4qjz5d6huftF4DYbze6c,11971
399
399
  airbyte_cdk/sources/utils/types.py,sha256=41ZQR681t5TUnOScij58d088sb99klH_ZENFcaYro_g,175
400
400
  airbyte_cdk/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
401
  airbyte_cdk/sql/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -451,12 +451,12 @@ airbyte_cdk/utils/oneof_option_config.py,sha256=N8EmWdYdwt0FM7fuShh6H8nj_r4KEL9t
451
451
  airbyte_cdk/utils/print_buffer.py,sha256=PhMOi0C4Z91kWKrSvCQXcp8qRh1uCimpIdvrg6voZIA,2810
452
452
  airbyte_cdk/utils/schema_inferrer.py,sha256=_jLzL9PzE4gfR44OSavkIqZNFM9t08c3LuRrkR7PZbk,9861
453
453
  airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7GrKcg,1264
454
- airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
454
+ airbyte_cdk/utils/spec_schema_transformations.py,sha256=9YDJmnIGFsT51CVQf2tSSvTapGimITjEFGbUTSZAGTI,963
455
455
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
456
456
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
457
- airbyte_cdk-6.61.5.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
458
- airbyte_cdk-6.61.5.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
459
- airbyte_cdk-6.61.5.dist-info/METADATA,sha256=zlQaW0NJTYCeg64XINJttXW9XxgcRjeCy0Rc-OfEDKQ,6765
460
- airbyte_cdk-6.61.5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
461
- airbyte_cdk-6.61.5.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
462
- airbyte_cdk-6.61.5.dist-info/RECORD,,
457
+ airbyte_cdk-6.61.6.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
458
+ airbyte_cdk-6.61.6.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
459
+ airbyte_cdk-6.61.6.dist-info/METADATA,sha256=2CK9PaFLE8ebRfYDTjK5S1dxFO-jlr3fD-wHPzVe4pY,6800
460
+ airbyte_cdk-6.61.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
461
+ airbyte_cdk-6.61.6.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
462
+ airbyte_cdk-6.61.6.dist-info/RECORD,,