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.
- airbyte_cdk/cli/airbyte_cdk/_connector.py +3 -3
- airbyte_cdk/destinations/destination.py +78 -50
- airbyte_cdk/models/__init__.py +4 -0
- airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +1 -6
- airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +49 -12
- airbyte_cdk/test/catalog_builder.py +9 -1
- airbyte_cdk/test/mock_http/request.py +5 -1
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/RECORD +13 -13
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.48.7.dist-info → airbyte_cdk-6.48.7.dev1.dist-info}/entry_points.txt +0 -0
@@ -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
|
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
|
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
|
-
|
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
|
-
|
72
|
-
|
73
|
-
|
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")
|
airbyte_cdk/models/__init__.py
CHANGED
@@ -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}
|
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
|
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":
|
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
|
-
) ->
|
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) ->
|
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) ->
|
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:
|
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
|
-
|
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 (
|
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=
|
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=
|
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=
|
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=
|
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=
|
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
|
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=
|
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
|
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,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|