airbyte-cdk 6.48.7__py3-none-any.whl → 6.48.7.dev1__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.
@@ -63,7 +63,7 @@ except ImportError:
63
63
 
64
64
  TEST_FILE_TEMPLATE = '''
65
65
  # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
66
- """FAST Airbyte Standard Tests for the {connector_name} source."""
66
+ """FAST Airbyte Standard Tests for the source_pokeapi_w_components source."""
67
67
 
68
68
  #from airbyte_cdk.test.standard_tests import {base_class_name}
69
69
  from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
@@ -78,7 +78,7 @@ TestSuite = create_connector_test_suite(
78
78
  )
79
79
 
80
80
  # class TestSuite({base_class_name}):
81
- # """Test suite for the {connector_name} source.
81
+ # """Test suite for the source_pokeapi_w_components source.
82
82
 
83
83
  # This class inherits from SourceTestSuiteBase and implements all of the tests in the suite.
84
84
 
@@ -152,7 +152,7 @@ def test(
152
152
 
153
153
  file_text = TEST_FILE_TEMPLATE.format(
154
154
  base_class_name=connector_test_suite.__bases__[0].__name__,
155
- connector_name=connector_name,
155
+ connector_directory=str(connector_directory),
156
156
  )
157
157
  test_file_path = Path() / ".tmp" / "integration_tests/test_airbyte_standards.py"
158
158
  test_file_path = test_file_path.resolve().absolute()
@@ -10,15 +10,18 @@ from abc import ABC, abstractmethod
10
10
  from typing import Any, Iterable, List, Mapping
11
11
 
12
12
  import orjson
13
+ from airbyte_protocol_dataclasses.models import (
14
+ AirbyteMessage,
15
+ ConfiguredAirbyteCatalog,
16
+ DestinationCatalog,
17
+ Type,
18
+ )
13
19
 
14
20
  from airbyte_cdk.connector import Connector
15
21
  from airbyte_cdk.exception_handler import init_uncaught_exception_handler
16
22
  from airbyte_cdk.models import (
17
- AirbyteMessage,
18
23
  AirbyteMessageSerializer,
19
- ConfiguredAirbyteCatalog,
20
24
  ConfiguredAirbyteCatalogSerializer,
21
- Type,
22
25
  )
23
26
  from airbyte_cdk.sources.utils.schema_helpers import check_config_against_spec_or_exit
24
27
  from airbyte_cdk.utils.traced_exception import AirbyteTracedException
@@ -26,8 +29,74 @@ from airbyte_cdk.utils.traced_exception import AirbyteTracedException
26
29
  logger = logging.getLogger("airbyte")
27
30
 
28
31
 
32
+ def parse_args(args: List[str]) -> argparse.Namespace:
33
+ """
34
+ :param args: commandline arguments
35
+ :return:
36
+ """
37
+
38
+ parent_parser = argparse.ArgumentParser(add_help=False)
39
+ parent_parser.add_argument(
40
+ "--debug", action="store_true", help="enables detailed debug logs related to the sync"
41
+ )
42
+ main_parser = argparse.ArgumentParser()
43
+ subparsers = main_parser.add_subparsers(title="commands", dest="command")
44
+
45
+ # spec
46
+ subparsers.add_parser(
47
+ "spec", help="outputs the json configuration specification", parents=[parent_parser]
48
+ )
49
+
50
+ # check
51
+ check_parser = subparsers.add_parser(
52
+ "check", help="checks the config can be used to connect", parents=[parent_parser]
53
+ )
54
+ required_check_parser = check_parser.add_argument_group("required named arguments")
55
+ required_check_parser.add_argument(
56
+ "--config", type=str, required=True, help="path to the json configuration file"
57
+ )
58
+
59
+ # discover
60
+ discover_parser = subparsers.add_parser(
61
+ "discover",
62
+ help="discover the objects available in the destination",
63
+ parents=[parent_parser],
64
+ )
65
+ required_discover_parser = discover_parser.add_argument_group("required named arguments")
66
+ required_discover_parser.add_argument(
67
+ "--config", type=str, required=True, help="path to the json configuration file"
68
+ )
69
+
70
+ # write
71
+ write_parser = subparsers.add_parser(
72
+ "write", help="Writes data to the destination", parents=[parent_parser]
73
+ )
74
+ write_required = write_parser.add_argument_group("required named arguments")
75
+ write_required.add_argument(
76
+ "--config", type=str, required=True, help="path to the JSON configuration file"
77
+ )
78
+ write_required.add_argument(
79
+ "--catalog", type=str, required=True, help="path to the configured catalog JSON file"
80
+ )
81
+
82
+ parsed_args = main_parser.parse_args(args)
83
+ cmd = parsed_args.command
84
+ if not cmd:
85
+ raise Exception("No command entered. ")
86
+ elif cmd not in ["spec", "check", "discover", "write"]:
87
+ # This is technically dead code since parse_args() would fail if this was the case
88
+ # But it's non-obvious enough to warrant placing it here anyways
89
+ raise Exception(f"Unknown command entered: {cmd}")
90
+
91
+ return parsed_args
92
+
93
+
29
94
  class Destination(Connector, ABC):
30
- VALID_CMDS = {"spec", "check", "write"}
95
+ VALID_CMDS = {"spec", "check", "discover", "write"}
96
+
97
+ def discover(self) -> DestinationCatalog:
98
+ """Implement to define what objects are available in the destination"""
99
+ raise NotImplementedError("Discover method is not implemented")
31
100
 
32
101
  @abstractmethod
33
102
  def write(
@@ -68,52 +137,9 @@ class Destination(Connector, ABC):
68
137
  )
69
138
  logger.info("Writing complete.")
70
139
 
71
- def parse_args(self, args: List[str]) -> argparse.Namespace:
72
- """
73
- :param args: commandline arguments
74
- :return:
75
- """
76
-
77
- parent_parser = argparse.ArgumentParser(add_help=False)
78
- main_parser = argparse.ArgumentParser()
79
- subparsers = main_parser.add_subparsers(title="commands", dest="command")
80
-
81
- # spec
82
- subparsers.add_parser(
83
- "spec", help="outputs the json configuration specification", parents=[parent_parser]
84
- )
85
-
86
- # check
87
- check_parser = subparsers.add_parser(
88
- "check", help="checks the config can be used to connect", parents=[parent_parser]
89
- )
90
- required_check_parser = check_parser.add_argument_group("required named arguments")
91
- required_check_parser.add_argument(
92
- "--config", type=str, required=True, help="path to the json configuration file"
93
- )
94
-
95
- # write
96
- write_parser = subparsers.add_parser(
97
- "write", help="Writes data to the destination", parents=[parent_parser]
98
- )
99
- write_required = write_parser.add_argument_group("required named arguments")
100
- write_required.add_argument(
101
- "--config", type=str, required=True, help="path to the JSON configuration file"
102
- )
103
- write_required.add_argument(
104
- "--catalog", type=str, required=True, help="path to the configured catalog JSON file"
105
- )
106
-
107
- parsed_args = main_parser.parse_args(args)
108
- cmd = parsed_args.command
109
- if not cmd:
110
- raise Exception("No command entered. ")
111
- elif cmd not in ["spec", "check", "write"]:
112
- # This is technically dead code since parse_args() would fail if this was the case
113
- # But it's non-obvious enough to warrant placing it here anyways
114
- raise Exception(f"Unknown command entered: {cmd}")
115
-
116
- return parsed_args
140
+ @staticmethod
141
+ def parse_args(args: List[str]) -> argparse.Namespace:
142
+ return parse_args(args)
117
143
 
118
144
  def run_cmd(self, parsed_args: argparse.Namespace) -> Iterable[AirbyteMessage]:
119
145
  cmd = parsed_args.command
@@ -137,6 +163,8 @@ class Destination(Connector, ABC):
137
163
 
138
164
  if cmd == "check":
139
165
  yield self._run_check(config=config)
166
+ elif cmd == "discover":
167
+ yield AirbyteMessage(type=Type.DESTINATION_CATALOG, destination_catalog=self.discover())
140
168
  elif cmd == "write":
141
169
  # Wrap in UTF-8 to override any other input encodings
142
170
  wrapped_stdin = io.TextIOWrapper(sys.stdin.buffer, encoding="utf-8")
@@ -35,6 +35,10 @@ from .airbyte_protocol import (
35
35
  ConfiguredAirbyteCatalog,
36
36
  ConfiguredAirbyteStream,
37
37
  ConnectorSpecification,
38
+ DestinationCatalog,
39
+ DestinationObject,
40
+ DestinationObjectProperty,
41
+ DestinationOperation,
38
42
  DestinationSyncMode,
39
43
  EstimateType,
40
44
  FailureType,
@@ -4,10 +4,6 @@
4
4
  # WHEN DEPRECATED FIELDS ARE ACCESSED
5
5
 
6
6
  import warnings
7
-
8
- # ignore the SyntaxWarning in the Airbyte log messages, during the string evaluation
9
- warnings.filterwarnings("ignore", category=SyntaxWarning)
10
-
11
7
  from typing import Any, List
12
8
 
13
9
  from pydantic.v1 import BaseModel
@@ -16,10 +12,9 @@ from airbyte_cdk.connector_builder.models import LogMessage as ConnectorBuilderL
16
12
 
17
13
  # format the warning message
18
14
  warnings.formatwarning = (
19
- lambda message, category, *args, **kwargs: f"{category.__name__}: {message}\n"
15
+ lambda message, category, *args, **kwargs: f"{category.__name__}: {message}"
20
16
  )
21
17
 
22
-
23
18
  FIELDS_TAG = "__fields__"
24
19
  DEPRECATED = "deprecated"
25
20
  DEPRECATION_MESSAGE = "deprecation_message"
@@ -1,11 +1,10 @@
1
1
  #
2
2
  # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
3
3
  #
4
-
5
-
4
+ from abc import ABC, abstractmethod
6
5
  from copy import deepcopy
7
6
  from dataclasses import InitVar, dataclass, field
8
- from typing import Any, List, Mapping, MutableMapping, Optional, Union
7
+ from typing import Any, Dict, List, Mapping, MutableMapping, Optional, Union
9
8
 
10
9
  import dpath
11
10
  from typing_extensions import deprecated
@@ -16,7 +15,7 @@ from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever
16
15
  from airbyte_cdk.sources.declarative.schema.schema_loader import SchemaLoader
17
16
  from airbyte_cdk.sources.declarative.transformations import RecordTransformation
18
17
  from airbyte_cdk.sources.source import ExperimentalClassWarning
19
- from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
18
+ from airbyte_cdk.sources.types import Config
20
19
 
21
20
  AIRBYTE_DATA_TYPES: Mapping[str, MutableMapping[str, Any]] = {
22
21
  "string": {"type": ["null", "string"]},
@@ -114,6 +113,38 @@ class SchemaTypeIdentifier:
114
113
  )
115
114
 
116
115
 
116
+ @deprecated("This class is experimental. Use at your own risk.", category=ExperimentalClassWarning)
117
+ class AdditionalPropertyFieldsInferrer(ABC):
118
+ """
119
+ Infers additional fields to be added to each property. For example, if this inferrer returns {"toto": "tata"}, a property that would have looked like this:
120
+ ```
121
+ "properties": {
122
+ "Id": {
123
+ "type": ["null", "string"],
124
+ },
125
+ <...>
126
+ }
127
+ ```
128
+ ... will look like this:
129
+ ```
130
+ "properties": {
131
+ "Id": {
132
+ "type": ["null", "string"],
133
+ "toto": "tata"
134
+ },
135
+ <...>
136
+ }
137
+ ```
138
+ """
139
+
140
+ @abstractmethod
141
+ def infer(self, property_definition: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
142
+ """
143
+ Infers additional property fields from the given property definition.
144
+ """
145
+ pass
146
+
147
+
117
148
  @deprecated("This class is experimental. Use at your own risk.", category=ExperimentalClassWarning)
118
149
  @dataclass
119
150
  class DynamicSchemaLoader(SchemaLoader):
@@ -126,6 +157,8 @@ class DynamicSchemaLoader(SchemaLoader):
126
157
  parameters: InitVar[Mapping[str, Any]]
127
158
  schema_type_identifier: SchemaTypeIdentifier
128
159
  schema_transformations: List[RecordTransformation] = field(default_factory=lambda: [])
160
+ additional_property_fields_inferrer: Optional[AdditionalPropertyFieldsInferrer] = None
161
+ allow_additional_properties: bool = True
129
162
 
130
163
  def get_json_schema(self) -> Mapping[str, Any]:
131
164
  """
@@ -149,22 +182,26 @@ class DynamicSchemaLoader(SchemaLoader):
149
182
  property_definition,
150
183
  self.schema_type_identifier.type_pointer,
151
184
  )
185
+
186
+ value.update(
187
+ self.additional_property_fields_inferrer.infer(property_definition)
188
+ if self.additional_property_fields_inferrer
189
+ else {}
190
+ )
152
191
  properties[key] = value
153
192
 
154
- transformed_properties = self._transform(properties, {})
193
+ transformed_properties = self._transform(properties)
155
194
 
156
195
  return {
157
196
  "$schema": "https://json-schema.org/draft-07/schema#",
158
197
  "type": "object",
159
- "additionalProperties": True,
198
+ "additionalProperties": self.allow_additional_properties,
160
199
  "properties": transformed_properties,
161
200
  }
162
201
 
163
202
  def _transform(
164
203
  self,
165
204
  properties: Mapping[str, Any],
166
- stream_state: StreamState,
167
- stream_slice: Optional[StreamSlice] = None,
168
205
  ) -> Mapping[str, Any]:
169
206
  for transformation in self.schema_transformations:
170
207
  transformation.transform(
@@ -190,7 +227,7 @@ class DynamicSchemaLoader(SchemaLoader):
190
227
  self,
191
228
  raw_schema: MutableMapping[str, Any],
192
229
  field_type_path: Optional[List[Union[InterpolatedString, str]]],
193
- ) -> Union[Mapping[str, Any], List[Mapping[str, Any]]]:
230
+ ) -> Dict[str, Any]:
194
231
  """
195
232
  Determines the JSON Schema type for a field, supporting nullable and combined types.
196
233
  """
@@ -220,7 +257,7 @@ class DynamicSchemaLoader(SchemaLoader):
220
257
  f"Invalid data type. Available string or two items list of string. Got {mapped_field_type}."
221
258
  )
222
259
 
223
- def _resolve_complex_type(self, complex_type: ComplexFieldType) -> Mapping[str, Any]:
260
+ def _resolve_complex_type(self, complex_type: ComplexFieldType) -> Dict[str, Any]:
224
261
  if not complex_type.items:
225
262
  return self._get_airbyte_type(complex_type.field_type)
226
263
 
@@ -255,14 +292,14 @@ class DynamicSchemaLoader(SchemaLoader):
255
292
  return field_type
256
293
 
257
294
  @staticmethod
258
- def _get_airbyte_type(field_type: str) -> MutableMapping[str, Any]:
295
+ def _get_airbyte_type(field_type: str) -> Dict[str, Any]:
259
296
  """
260
297
  Maps a field type to its corresponding Airbyte type definition.
261
298
  """
262
299
  if field_type not in AIRBYTE_DATA_TYPES:
263
300
  raise ValueError(f"Invalid Airbyte data type: {field_type}")
264
301
 
265
- return deepcopy(AIRBYTE_DATA_TYPES[field_type])
302
+ return deepcopy(AIRBYTE_DATA_TYPES[field_type]) # type: ignore # a copy of a dict should be a dict, not a MutableMapping
266
303
 
267
304
  def _extract_data(
268
305
  self,
@@ -2,6 +2,8 @@
2
2
 
3
3
  from typing import Any, Dict, List, Union, overload
4
4
 
5
+ from airbyte_protocol_dataclasses.models import DestinationSyncMode
6
+
5
7
  from airbyte_cdk.models import (
6
8
  ConfiguredAirbyteCatalog,
7
9
  ConfiguredAirbyteStream,
@@ -32,6 +34,12 @@ class ConfiguredAirbyteStreamBuilder:
32
34
  self._stream["sync_mode"] = sync_mode.name
33
35
  return self
34
36
 
37
+ def with_destination_sync_mode(
38
+ self, sync_mode: DestinationSyncMode
39
+ ) -> "ConfiguredAirbyteStreamBuilder":
40
+ self._stream["destination_sync_mode"] = sync_mode.name
41
+ return self
42
+
35
43
  def with_primary_key(self, pk: List[List[str]]) -> "ConfiguredAirbyteStreamBuilder":
36
44
  self._stream["primary_key"] = pk
37
45
  self._stream["stream"]["source_defined_primary_key"] = pk # type: ignore # we assume that self._stream["stream"] is a Dict[str, Any]
@@ -58,7 +66,7 @@ class CatalogBuilder:
58
66
  def with_stream(
59
67
  self,
60
68
  name: Union[str, ConfiguredAirbyteStreamBuilder],
61
- sync_mode: Union[SyncMode, None] = None,
69
+ sync_mode: SyncMode = SyncMode.full_refresh,
62
70
  ) -> "CatalogBuilder":
63
71
  # As we are introducing a fully fledge ConfiguredAirbyteStreamBuilder, we would like to deprecate the previous interface
64
72
  # with_stream(str, SyncMode)
@@ -72,7 +72,11 @@ class HttpRequest:
72
72
  elif isinstance(body, bytes):
73
73
  return json.loads(body.decode()) # type: ignore # assumes return type of Mapping[str, Any]
74
74
  elif isinstance(body, str):
75
- return json.loads(body) # type: ignore # assumes return type of Mapping[str, Any]
75
+ try:
76
+ return json.loads(body) # type: ignore # assumes return type of Mapping[str, Any]
77
+ except json.JSONDecodeError:
78
+ # one of the body is a mapping while the other isn't so comparison should fail anyway
79
+ return None
76
80
  return None
77
81
 
78
82
  @staticmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.48.7
3
+ Version: 6.48.7.dev1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -23,7 +23,7 @@ Provides-Extra: sql
23
23
  Provides-Extra: vector-db-based
24
24
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
25
25
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
26
- Requires-Dist: airbyte-protocol-models-dataclasses (>=0.15,<0.16)
26
+ Requires-Dist: airbyte-protocol-models-dataclasses (==0.15.0.dev1746621859)
27
27
  Requires-Dist: anyascii (>=0.3.2,<0.4.0)
28
28
  Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
29
29
  Requires-Dist: backoff
@@ -1,7 +1,7 @@
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=wXwt7tbO-9qFYDDK4P8wbKJX43kbeoRZvK5SNX-Wnfs,5300
4
+ airbyte_cdk/cli/airbyte_cdk/_connector.py,sha256=bz6PGAuer17mSTkbCw10rTllOEjG_gw3U2lsvXAcPQE,5337
5
5
  airbyte_cdk/cli/airbyte_cdk/_image.py,sha256=F0XtvR2CyFi1EPIUBiEnDia9NfCuM7T_itdNj9yyb2E,2907
6
6
  airbyte_cdk/cli/airbyte_cdk/_manifest.py,sha256=aFdeeWgek7oXR3YfZPxk7kBZ64Blmsr0dAXN6BVGiIA,482
7
7
  airbyte_cdk/cli/airbyte_cdk/_secrets.py,sha256=iRA8435sYDcWe6IBv4VAo-3yTIAFqySbDvmUsgpEInA,14712
@@ -23,7 +23,7 @@ airbyte_cdk/connector_builder/test_reader/message_grouper.py,sha256=84BAEPIBHMq3
23
23
  airbyte_cdk/connector_builder/test_reader/reader.py,sha256=mP1yHK5vG38KxoKoT2QQ7ZNbkdLA1rMAU3EKpucjHls,21098
24
24
  airbyte_cdk/connector_builder/test_reader/types.py,sha256=hPZG3jO03kBaPyW94NI3JHRS1jxXGSNBcN1HFzOxo5Y,2528
25
25
  airbyte_cdk/destinations/__init__.py,sha256=FyDp28PT_YceJD5HDFhA-mrGfX9AONIyMQ4d68CHNxQ,213
26
- airbyte_cdk/destinations/destination.py,sha256=CIq-yb8C_0QvcKCtmStaHfiqn53GEfRAIGGCkJhKP1Q,5880
26
+ airbyte_cdk/destinations/destination.py,sha256=VUR_7XqljswVyAhfasYVG0KhGAoWuBw12VX_gW9Couo,6807
27
27
  airbyte_cdk/destinations/vector_db_based/README.md,sha256=QAe8c_1Afme4r2TCE10cTSaxUE3zgCBuArSuRQqK8tA,2115
28
28
  airbyte_cdk/destinations/vector_db_based/__init__.py,sha256=eAkzwTjBbXBhJ5GfPO5I53Zgpv5xQFLRQS8n4nuyPt0,1006
29
29
  airbyte_cdk/destinations/vector_db_based/config.py,sha256=1u87eibIWLZ_wuaCvE3yp5ayguM9dGhGXbT8agmkUBg,12468
@@ -47,7 +47,7 @@ airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data
47
47
  airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py,sha256=EX1MVYVpoWypA28qoH48wA0SYZjGdlR8bcSixTDzfgo,1346
48
48
  airbyte_cdk/manifest_migrations/migrations/registry.yaml,sha256=K5KBQ2C1T_dWExEJFuEAe1VO_QqOijOCh90rnUOCEyc,960
49
49
  airbyte_cdk/manifest_migrations/migrations_registry.py,sha256=zly2fwaOxDukqC7eowzrDlvhA2v71FjW74kDzvRXhSY,2619
50
- airbyte_cdk/models/__init__.py,sha256=Et9wJWs5VOWynGbb-3aJRhsdAHAiLkNNLxdwqJAuqkw,2114
50
+ airbyte_cdk/models/__init__.py,sha256=2_fM0Vms2athSn3MDsISG9JXlfKqaeKRuLR0rudQvoc,2218
51
51
  airbyte_cdk/models/airbyte_protocol.py,sha256=oZdKsZ7yPjUt9hvxdWNpxCtgjSV2RWhf4R9Np03sqyY,3613
52
52
  airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=s6SaFB2CMrG_7jTQGn_fhFbQ1FUxhCxf5kq2RWGHMVI,1749
53
53
  airbyte_cdk/models/connector_metadata.py,sha256=Lwb0JKiWvnqHduXjHHgBBBhTsGoLiNjxbG93W_OjcKQ,2875
@@ -132,7 +132,7 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
132
132
  airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
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
- airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Imnj3yef0aqRdLfaUxkIYISUb8YkiPrRH_wBd-x8HjM,5999
135
+ airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Rq5kzR5bflqBf6td2ZAgw6lP3iN_mNi4tjntn_R01_o,5851
136
136
  airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=P0l-NiKm873uBZ0x6vRJK2u4P-XPTGeTWMnhafKryRw,117940
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
@@ -210,7 +210,7 @@ airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc3
210
210
  airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=O7qpM71L1_ATIbEKa8y658jdiSJSPw0KmuGKgnaruQU,31008
211
211
  airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
212
212
  airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=UnbzlExmwoQiVV8zDg4lhAEaqA_0pRfwbMRe8yqOuWk,1834
213
- airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=J8Q_iJYhcSQLWyt0bTZCbDAGpxt9G8FCc6Q9jtGsNzw,10703
213
+ airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=pdQUtQXhT8VDm1wBlLF9bqYyx_wMSKOai7qyDVGUgXI,11939
214
214
  airbyte_cdk/sources/declarative/schema/inline_schema_loader.py,sha256=bVETE10hRsatRJq3R3BeyRR0wIoK3gcP1gcpVRQ_P5U,464
215
215
  airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py,sha256=5Wl-fqW-pVf_dxJ4yGHMAFfC4JjKHYJhqFJT1xA57F4,4177
216
216
  airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLnrDLxf1PJKdUqvQq2RVnAOAzNSY,379
@@ -364,12 +364,12 @@ airbyte_cdk/sql/shared/catalog_providers.py,sha256=qiahORhtN6qBUGHhSKmzE00uC4i6W
364
364
  airbyte_cdk/sql/shared/sql_processor.py,sha256=1CwfC3fp9dWnHBpKtly7vGduf9ho_MahiwxGFcULG3Y,27687
365
365
  airbyte_cdk/sql/types.py,sha256=XEIhRAo_ASd0kVLBkdLf5bHiRhNple-IJrC9TibcDdY,5880
366
366
  airbyte_cdk/test/__init__.py,sha256=f_XdkOg4_63QT2k3BbKY34209lppwgw-svzfZstQEq4,199
367
- airbyte_cdk/test/catalog_builder.py,sha256=-y05Cz1x0Dlk6oE9LSKhCozssV2gYBNtMdV5YYOPOtk,3015
367
+ airbyte_cdk/test/catalog_builder.py,sha256=b8sg1smzqSTNkwD0KUTZZin7tRFrjScco9v_RxKFYSU,3296
368
368
  airbyte_cdk/test/entrypoint_wrapper.py,sha256=TyUmVJyIuGelAv6y8Wy_BnwqIRw_drjfZWKlroljCuQ,9951
369
369
  airbyte_cdk/test/mock_http/__init__.py,sha256=jE5kC6CQ0OXkTqKhciDnNVZHesBFVIA2YvkdFGwva7k,322
370
370
  airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBETmP6hTEyc,1446
371
371
  airbyte_cdk/test/mock_http/mocker.py,sha256=XgsjMtVoeMpRELPyALgrkHFauH9H5irxrz1Kcxh2yFY,8013
372
- airbyte_cdk/test/mock_http/request.py,sha256=tdB8cqk2vLgCDTOKffBKsM06llYs4ZecgtH6DKyx6yY,4112
372
+ airbyte_cdk/test/mock_http/request.py,sha256=nct71fBILqy-PP4TZAkRBor--w4CJWWZZ83w9PLklok,4304
373
373
  airbyte_cdk/test/mock_http/response.py,sha256=s4-cQQqTtmeej0pQDWqmG0vUWpHS-93lIWMpW3zSVyU,662
374
374
  airbyte_cdk/test/mock_http/response_builder.py,sha256=F-v7ebftqGj7YVIMLKdodmU9U8Dq8aIyllWGo2NGwHc,8331
375
375
  airbyte_cdk/test/standard_tests/__init__.py,sha256=YS2bghoGmQ-4GNIbe6RuEmvV-V1kpM1OyxTpebrs0Ig,1338
@@ -408,9 +408,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
408
408
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
409
409
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
410
410
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
411
- airbyte_cdk-6.48.7.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
412
- airbyte_cdk-6.48.7.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
413
- airbyte_cdk-6.48.7.dist-info/METADATA,sha256=wDGb1Arvgo0iKsx3MhfwfIA6_kGgUaQe2GoJcvwM8ZU,6343
414
- airbyte_cdk-6.48.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
415
- airbyte_cdk-6.48.7.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
416
- airbyte_cdk-6.48.7.dist-info/RECORD,,
411
+ airbyte_cdk-6.48.7.dev1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
412
+ airbyte_cdk-6.48.7.dev1.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
413
+ airbyte_cdk-6.48.7.dev1.dist-info/METADATA,sha256=-uVvAZ9DOSX4kyqKpMKxCpMhiEcet9doY8GoyAR94TQ,6358
414
+ airbyte_cdk-6.48.7.dev1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
415
+ airbyte_cdk-6.48.7.dev1.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
416
+ airbyte_cdk-6.48.7.dev1.dist-info/RECORD,,