airbyte-cdk 6.60.0.post27.dev16508849855__py3-none-any.whl → 6.60.0.post30.dev16509083730__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/source_declarative_manifest/_run.py +2 -3
- airbyte_cdk/connector.py +1 -2
- airbyte_cdk/connector_builder/main.py +1 -3
- airbyte_cdk/destinations/destination.py +3 -4
- airbyte_cdk/models/__init__.py +4 -3
- airbyte_cdk/models/airbyte_protocol.py +1 -1
- airbyte_cdk/models/airbyte_protocol_serializers.py +113 -115
- airbyte_cdk/sources/declarative/spec/spec.py +2 -2
- airbyte_cdk/sources/source.py +2 -4
- airbyte_cdk/test/entrypoint_wrapper.py +13 -12
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/RECORD +16 -16
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.60.0.post27.dev16508849855.dist-info → airbyte_cdk-6.60.0.post30.dev16509083730.dist-info}/entry_points.txt +0 -0
@@ -35,9 +35,9 @@ from airbyte_cdk.models import (
|
|
35
35
|
AirbyteStateMessage,
|
36
36
|
AirbyteTraceMessage,
|
37
37
|
ConfiguredAirbyteCatalog,
|
38
|
-
ConnectorSpecificationSerializer,
|
39
38
|
TraceType,
|
40
39
|
Type,
|
40
|
+
ab_connector_spec_from_string,
|
41
41
|
ab_message_to_string,
|
42
42
|
)
|
43
43
|
from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
|
@@ -147,8 +147,7 @@ def handle_remote_manifest_command(args: list[str]) -> None:
|
|
147
147
|
"Could not find `spec.json` file for source-declarative-manifest"
|
148
148
|
)
|
149
149
|
|
150
|
-
|
151
|
-
spec = ConnectorSpecificationSerializer.load(spec_obj)
|
150
|
+
spec = ab_connector_spec_from_string(json_spec.decode("utf-8"))
|
152
151
|
|
153
152
|
message = AirbyteMessage(type=Type.SPEC, spec=spec)
|
154
153
|
print(ab_message_to_string(message))
|
airbyte_cdk/connector.py
CHANGED
@@ -15,7 +15,6 @@ import yaml
|
|
15
15
|
from airbyte_cdk.models import (
|
16
16
|
AirbyteConnectionStatus,
|
17
17
|
ConnectorSpecification,
|
18
|
-
ConnectorSpecificationSerializer,
|
19
18
|
)
|
20
19
|
|
21
20
|
|
@@ -95,7 +94,7 @@ class BaseConnector(ABC, Generic[TConfig]):
|
|
95
94
|
else:
|
96
95
|
raise FileNotFoundError("Unable to find spec.yaml or spec.json in the package.")
|
97
96
|
|
98
|
-
return
|
97
|
+
return ConnectorSpecification.model_validate(spec_obj)
|
99
98
|
|
100
99
|
@abstractmethod
|
101
100
|
def check(self, logger: logging.Logger, config: TConfig) -> AirbyteConnectionStatus:
|
@@ -22,8 +22,6 @@ from airbyte_cdk.models import (
|
|
22
22
|
AirbyteMessage,
|
23
23
|
AirbyteStateMessage,
|
24
24
|
ConfiguredAirbyteCatalog,
|
25
|
-
ConfiguredAirbyteCatalogSerializer,
|
26
|
-
ab_message_to_string,
|
27
25
|
)
|
28
26
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
29
27
|
from airbyte_cdk.sources.source import Source
|
@@ -53,7 +51,7 @@ def get_config_and_catalog_from_args(
|
|
53
51
|
|
54
52
|
command = config["__command"]
|
55
53
|
if command == "test_read":
|
56
|
-
catalog =
|
54
|
+
catalog = ConfiguredAirbyteCatalog.model_validate(BaseConnector.read_config(catalog_path))
|
57
55
|
state = Source.read_state(state_path)
|
58
56
|
else:
|
59
57
|
catalog = None
|
@@ -16,8 +16,9 @@ from airbyte_cdk.exception_handler import init_uncaught_exception_handler
|
|
16
16
|
from airbyte_cdk.models import (
|
17
17
|
AirbyteMessage,
|
18
18
|
ConfiguredAirbyteCatalog,
|
19
|
-
ConfiguredAirbyteCatalogSerializer,
|
20
19
|
Type,
|
20
|
+
ab_configured_catalog_from_string,
|
21
|
+
ab_configured_catalog_to_string,
|
21
22
|
ab_message_from_string,
|
22
23
|
ab_message_to_string,
|
23
24
|
)
|
@@ -59,9 +60,7 @@ class Destination(Connector, ABC):
|
|
59
60
|
configured_catalog_path: str,
|
60
61
|
input_stream: io.TextIOWrapper,
|
61
62
|
) -> Iterable[AirbyteMessage]:
|
62
|
-
catalog =
|
63
|
-
orjson.loads(open(configured_catalog_path).read())
|
64
|
-
)
|
63
|
+
catalog = ab_configured_catalog_from_string(open(configured_catalog_path).read())
|
65
64
|
input_messages = self._parse_input_stream(input_stream)
|
66
65
|
logger.info("Begin writing to the destination...")
|
67
66
|
yield from self.write(
|
airbyte_cdk/models/__init__.py
CHANGED
@@ -50,9 +50,10 @@ from .airbyte_protocol import (
|
|
50
50
|
Type,
|
51
51
|
)
|
52
52
|
from .airbyte_protocol_serializers import (
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
ab_configured_catalog_from_string,
|
54
|
+
ab_configured_catalog_to_string,
|
55
|
+
ab_connector_spec_from_string,
|
56
|
+
ab_connector_spec_to_string,
|
56
57
|
ab_message_from_string,
|
57
58
|
ab_message_to_string,
|
58
59
|
)
|
@@ -31,101 +31,7 @@ T = TypeVar("T")
|
|
31
31
|
|
32
32
|
logger = logging.getLogger("airbyte")
|
33
33
|
|
34
|
-
|
35
|
-
class CustomSerializer:
|
36
|
-
"""Custom serializer that mimics serpyco-rs Serializer API"""
|
37
|
-
|
38
|
-
def __init__(
|
39
|
-
self,
|
40
|
-
model_class: Type[T],
|
41
|
-
omit_none: bool = False,
|
42
|
-
custom_type_resolver: Callable | None = None,
|
43
|
-
):
|
44
|
-
self.model_class = model_class
|
45
|
-
self.omit_none = omit_none
|
46
|
-
self.custom_type_resolver = custom_type_resolver
|
47
|
-
|
48
|
-
def dump(self, obj: T) -> Dict[str, Any]:
|
49
|
-
"""Convert dataclass to dictionary, omitting None values if configured"""
|
50
|
-
if hasattr(obj, "__dict__"):
|
51
|
-
result = {}
|
52
|
-
for key, value in obj.__dict__.items():
|
53
|
-
if self.omit_none and value is None:
|
54
|
-
continue
|
55
|
-
# Handle custom types like AirbyteStateBlob
|
56
|
-
if self.custom_type_resolver and hasattr(value, "__class__"):
|
57
|
-
custom_handler = self.custom_type_resolver(value.__class__)
|
58
|
-
if custom_handler:
|
59
|
-
value = custom_handler.serialize(value)
|
60
|
-
# Recursively handle nested objects
|
61
|
-
if hasattr(value, "__dict__"):
|
62
|
-
value = self._serialize_nested(value)
|
63
|
-
elif isinstance(value, list):
|
64
|
-
value = [
|
65
|
-
self._serialize_nested(item) if hasattr(item, "__dict__") else item
|
66
|
-
for item in value
|
67
|
-
]
|
68
|
-
result[key] = value
|
69
|
-
return result
|
70
|
-
return obj.__dict__ if hasattr(obj, "__dict__") else {}
|
71
|
-
|
72
|
-
def load(self, data: Dict[str, Any]) -> T:
|
73
|
-
"""Convert dictionary to dataclass instance"""
|
74
|
-
# Handle custom types
|
75
|
-
return dacite.from_dict(data_class=self.model_class, data=data)
|
76
|
-
|
77
|
-
def _serialize_nested(self, obj: Any) -> Any:
|
78
|
-
"""Helper to serialize nested objects"""
|
79
|
-
if hasattr(obj, "__dict__"):
|
80
|
-
result = {}
|
81
|
-
for key, value in obj.__dict__.items():
|
82
|
-
if self.omit_none and value is None:
|
83
|
-
continue
|
84
|
-
result[key] = value
|
85
|
-
return result
|
86
|
-
return obj
|
87
|
-
|
88
|
-
|
89
|
-
if USE_RUST_BACKEND:
|
90
|
-
from serpyco_rs import CustomType, Serializer # type: ignore[import]
|
91
|
-
|
92
|
-
SERIALIZER = Serializer if USE_RUST_BACKEND else CustomSerializer
|
93
|
-
|
94
34
|
# Making this a no-op for now:
|
95
|
-
custom_type_resolver = None
|
96
|
-
|
97
|
-
# No idea why this is here. Commenting out for now.
|
98
|
-
# def custom_type_resolver(t: type) -> AirbyteStateBlobType | None:
|
99
|
-
# return AirbyteStateBlobType() if t is AirbyteStateBlob else None
|
100
|
-
#
|
101
|
-
# class AirbyteStateBlobType(CustomType[AirbyteStateBlob, Dict[str, Any]]):
|
102
|
-
# def serialize(self, value: AirbyteStateBlob) -> Dict[str, Any]:
|
103
|
-
# # cant use orjson.dumps() directly because private attributes are excluded, e.g. "__ab_full_refresh_sync_complete"
|
104
|
-
# return {k: v for k, v in value.__dict__.items()}
|
105
|
-
|
106
|
-
# def deserialize(self, value: Dict[str, Any]) -> AirbyteStateBlob:
|
107
|
-
# return AirbyteStateBlob(value)
|
108
|
-
|
109
|
-
# def get_json_schema(self) -> Dict[str, Any]:
|
110
|
-
# return {"type": "object"}
|
111
|
-
|
112
|
-
# Create serializer instances maintaining the same API
|
113
|
-
AirbyteStateMessageSerializer = SERIALIZER(
|
114
|
-
AirbyteStateMessage, omit_none=True, custom_type_resolver=custom_type_resolver
|
115
|
-
)
|
116
|
-
AirbyteMessageSerializer = SERIALIZER(
|
117
|
-
AirbyteMessage, omit_none=True, custom_type_resolver=custom_type_resolver
|
118
|
-
)
|
119
|
-
ConfiguredAirbyteCatalogSerializer = SERIALIZER(ConfiguredAirbyteCatalog, omit_none=True)
|
120
|
-
ConnectorSpecificationSerializer = SERIALIZER(ConnectorSpecification, omit_none=True)
|
121
|
-
|
122
|
-
|
123
|
-
def _custom_json_serializer(val: object) -> str:
|
124
|
-
"""Handle custom serialization needs for AirbyteMessage."""
|
125
|
-
if isinstance(val, Enum):
|
126
|
-
return str(val.value)
|
127
|
-
|
128
|
-
return str(val)
|
129
35
|
|
130
36
|
|
131
37
|
def ab_message_to_string(
|
@@ -140,28 +46,11 @@ def ab_message_to_string(
|
|
140
46
|
Returns:
|
141
47
|
str: JSON string representation of the AirbyteMessage.
|
142
48
|
"""
|
143
|
-
|
144
|
-
dict_obj = AirbyteMessageSerializer.dump(message)
|
145
|
-
|
146
|
-
try:
|
147
|
-
return orjson.dumps(
|
148
|
-
dict_obj,
|
149
|
-
default=_custom_json_serializer,
|
150
|
-
).decode()
|
151
|
-
except Exception as exception:
|
152
|
-
if not _HAS_LOGGED_FOR_SERIALIZATION_ERROR:
|
153
|
-
logger.warning(
|
154
|
-
f"There was an error during the serialization of an AirbyteMessage: `{exception}`. This might impact the sync performances."
|
155
|
-
)
|
156
|
-
_HAS_LOGGED_FOR_SERIALIZATION_ERROR = True
|
157
|
-
return json.dumps(
|
158
|
-
dict_obj,
|
159
|
-
default=_custom_json_serializer,
|
160
|
-
)
|
49
|
+
return message.model_dump_json()
|
161
50
|
|
162
51
|
|
163
52
|
def ab_message_from_string(
|
164
|
-
|
53
|
+
message_json: str,
|
165
54
|
) -> AirbyteMessage:
|
166
55
|
"""
|
167
56
|
Convert a JSON string to an AirbyteMessage.
|
@@ -173,9 +62,118 @@ def ab_message_from_string(
|
|
173
62
|
AirbyteMessage: The deserialized AirbyteMessage.
|
174
63
|
"""
|
175
64
|
try:
|
176
|
-
|
177
|
-
return AirbyteMessageSerializer.load(message_dict)
|
65
|
+
return AirbyteMessage.model_validate_json(message_json)
|
178
66
|
except ValidationError as e:
|
179
67
|
raise ValueError(f"Invalid AirbyteMessage format: {e}") from e
|
180
68
|
except orjson.JSONDecodeError as e:
|
181
69
|
raise ValueError(f"Failed to decode JSON: {e}") from e
|
70
|
+
|
71
|
+
|
72
|
+
def ab_connector_spec_from_string(
|
73
|
+
spec_json: str,
|
74
|
+
) -> ConnectorSpecification:
|
75
|
+
"""
|
76
|
+
Convert a JSON string to a ConnectorSpecification.
|
77
|
+
|
78
|
+
Args:
|
79
|
+
spec_str (str): The JSON string to convert.
|
80
|
+
|
81
|
+
Returns:
|
82
|
+
ConnectorSpecification: The deserialized ConnectorSpecification.
|
83
|
+
"""
|
84
|
+
try:
|
85
|
+
return ConnectorSpecification.model_validate_json(spec_json)
|
86
|
+
except ValidationError as e:
|
87
|
+
raise ValueError(f"Invalid ConnectorSpecification format: {e}") from e
|
88
|
+
except orjson.JSONDecodeError as e:
|
89
|
+
raise ValueError(f"Failed to decode JSON: {e}") from e
|
90
|
+
|
91
|
+
|
92
|
+
def ab_connector_spec_to_string(
|
93
|
+
spec: ConnectorSpecification,
|
94
|
+
) -> str:
|
95
|
+
"""
|
96
|
+
Convert a ConnectorSpecification to a JSON string.
|
97
|
+
|
98
|
+
Args:
|
99
|
+
spec (ConnectorSpecification): The ConnectorSpecification to convert.
|
100
|
+
|
101
|
+
Returns:
|
102
|
+
str: JSON string representation of the ConnectorSpecification.
|
103
|
+
"""
|
104
|
+
return spec.model_dump_json()
|
105
|
+
|
106
|
+
|
107
|
+
def ab_configured_catalog_to_string(
|
108
|
+
catalog: ConfiguredAirbyteCatalog,
|
109
|
+
) -> str:
|
110
|
+
"""
|
111
|
+
Convert a ConfiguredAirbyteCatalog to a JSON string.
|
112
|
+
|
113
|
+
Args:
|
114
|
+
catalog (ConfiguredAirbyteCatalog): The ConfiguredAirbyteCatalog to convert.
|
115
|
+
|
116
|
+
Returns:
|
117
|
+
str: JSON string representation of the ConfiguredAirbyteCatalog.
|
118
|
+
"""
|
119
|
+
return catalog.model_dump_json()
|
120
|
+
|
121
|
+
|
122
|
+
def ab_configured_catalog_from_string(
|
123
|
+
catalog_json: str,
|
124
|
+
) -> ConfiguredAirbyteCatalog:
|
125
|
+
"""
|
126
|
+
Convert a JSON string to a ConfiguredAirbyteCatalog.
|
127
|
+
|
128
|
+
Args:
|
129
|
+
catalog_json (str): The JSON string to convert.
|
130
|
+
|
131
|
+
Returns:
|
132
|
+
ConfiguredAirbyteCatalog: The deserialized ConfiguredAirbyteCatalog.
|
133
|
+
"""
|
134
|
+
try:
|
135
|
+
return ConfiguredAirbyteCatalog.model_validate_json(catalog_json)
|
136
|
+
except ValidationError as e:
|
137
|
+
raise ValueError(f"Invalid ConfiguredAirbyteCatalog format: {e}") from e
|
138
|
+
except orjson.JSONDecodeError as e:
|
139
|
+
raise ValueError(f"Failed to decode JSON: {e}") from e
|
140
|
+
|
141
|
+
|
142
|
+
def ab_state_message_from_string(
|
143
|
+
state_json: str,
|
144
|
+
) -> AirbyteStateMessage:
|
145
|
+
"""
|
146
|
+
Convert a JSON string to an AirbyteStateMessage.
|
147
|
+
|
148
|
+
Args:
|
149
|
+
state_json (str): The JSON string to convert.
|
150
|
+
|
151
|
+
Returns:
|
152
|
+
AirbyteStateMessage: The deserialized AirbyteStateMessage.
|
153
|
+
"""
|
154
|
+
try:
|
155
|
+
return AirbyteStateMessage.model_validate_json(state_json)
|
156
|
+
except ValidationError as e:
|
157
|
+
raise ValueError(f"Invalid AirbyteStateMessage format: {e}") from e
|
158
|
+
except orjson.JSONDecodeError as e:
|
159
|
+
raise ValueError(f"Failed to decode JSON: {e}") from e
|
160
|
+
|
161
|
+
|
162
|
+
def ab_state_blob_from_string(
|
163
|
+
state_blob_json: str,
|
164
|
+
) -> AirbyteStateBlob:
|
165
|
+
"""
|
166
|
+
Convert a JSON string to an AirbyteStateBlob.
|
167
|
+
|
168
|
+
Args:
|
169
|
+
state_blob_json (str): The JSON string to convert.
|
170
|
+
|
171
|
+
Returns:
|
172
|
+
AirbyteStateBlob: The deserialized AirbyteStateBlob.
|
173
|
+
"""
|
174
|
+
try:
|
175
|
+
return AirbyteStateBlob.model_validate_json(state_blob_json)
|
176
|
+
except ValidationError as e:
|
177
|
+
raise ValueError(f"Invalid AirbyteStateBlob format: {e}") from e
|
178
|
+
except orjson.JSONDecodeError as e:
|
179
|
+
raise ValueError(f"Failed to decode JSON: {e}") from e
|
@@ -8,8 +8,8 @@ from typing import Any, List, Mapping, MutableMapping, Optional
|
|
8
8
|
from airbyte_cdk.models import (
|
9
9
|
AdvancedAuth,
|
10
10
|
ConnectorSpecification,
|
11
|
-
ConnectorSpecificationSerializer,
|
12
11
|
)
|
12
|
+
from airbyte_cdk.models.airbyte_protocol_serializers import ab_connector_spec_from_string
|
13
13
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import AuthFlow
|
14
14
|
from airbyte_cdk.sources.declarative.transformations.config_transformations.config_transformation import (
|
15
15
|
ConfigTransformation,
|
@@ -59,7 +59,7 @@ class Spec:
|
|
59
59
|
obj["advanced_auth"] = self.advanced_auth.dict()
|
60
60
|
|
61
61
|
# We remap these keys to camel case because that's the existing format expected by the rest of the platform
|
62
|
-
return
|
62
|
+
return ConnectorSpecification.model_validate(obj)
|
63
63
|
|
64
64
|
def migrate_config(self, config: MutableMapping[str, Any]) -> None:
|
65
65
|
"""
|
airbyte_cdk/sources/source.py
CHANGED
@@ -12,9 +12,7 @@ from airbyte_cdk.models import (
|
|
12
12
|
AirbyteCatalog,
|
13
13
|
AirbyteMessage,
|
14
14
|
AirbyteStateMessage,
|
15
|
-
AirbyteStateMessageSerializer,
|
16
15
|
ConfiguredAirbyteCatalog,
|
17
|
-
ConfiguredAirbyteCatalogSerializer,
|
18
16
|
)
|
19
17
|
|
20
18
|
TState = TypeVar("TState")
|
@@ -72,7 +70,7 @@ class Source(
|
|
72
70
|
state_obj = BaseConnector._read_json_file(state_path)
|
73
71
|
if state_obj:
|
74
72
|
for state in state_obj: # type: ignore # `isinstance(state_obj, List)` ensures that this is a list
|
75
|
-
parsed_message =
|
73
|
+
parsed_message = AirbyteStateMessage.model_validate(state)
|
76
74
|
if (
|
77
75
|
not parsed_message.stream
|
78
76
|
and not parsed_message.data
|
@@ -87,7 +85,7 @@ class Source(
|
|
87
85
|
# can be overridden to change an input catalog
|
88
86
|
@classmethod
|
89
87
|
def read_catalog(cls, catalog_path: str) -> ConfiguredAirbyteCatalog:
|
90
|
-
return
|
88
|
+
return ConfiguredAirbyteCatalog.model_validate(cls._read_json_file(catalog_path))
|
91
89
|
|
92
90
|
@property
|
93
91
|
def name(self) -> str:
|
@@ -37,16 +37,19 @@ from airbyte_cdk.models import (
|
|
37
37
|
AirbyteLogMessage,
|
38
38
|
AirbyteMessage,
|
39
39
|
AirbyteStateMessage,
|
40
|
-
AirbyteStateMessageSerializer,
|
41
40
|
AirbyteStreamState,
|
42
41
|
AirbyteStreamStatus,
|
43
42
|
ConfiguredAirbyteCatalog,
|
44
|
-
ConfiguredAirbyteCatalogSerializer,
|
45
43
|
Level,
|
46
44
|
TraceType,
|
47
45
|
Type,
|
46
|
+
ab_configured_catalog_from_string,
|
47
|
+
ab_configured_catalog_to_string,
|
48
|
+
ab_connector_spec_from_string,
|
49
|
+
ab_connector_spec_to_string,
|
48
50
|
ab_message_from_string,
|
49
51
|
ab_message_to_string,
|
52
|
+
ab_state_message_to_string,
|
50
53
|
)
|
51
54
|
from airbyte_cdk.sources import Source
|
52
55
|
from airbyte_cdk.test.models.scenario import ExpectedOutcome
|
@@ -449,7 +452,7 @@ def read(
|
|
449
452
|
config_file = make_file(tmp_directory_path / "config.json", config)
|
450
453
|
catalog_file = make_file(
|
451
454
|
tmp_directory_path / "catalog.json",
|
452
|
-
|
455
|
+
ab_configured_catalog_to_string(catalog),
|
453
456
|
)
|
454
457
|
args = [
|
455
458
|
"read",
|
@@ -461,15 +464,13 @@ def read(
|
|
461
464
|
if debug:
|
462
465
|
args.append("--debug")
|
463
466
|
if state is not None:
|
464
|
-
args.extend(
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
]
|
472
|
-
)
|
467
|
+
args.extend([
|
468
|
+
"--state",
|
469
|
+
make_file(
|
470
|
+
tmp_directory_path / "state.json",
|
471
|
+
f"[{','.join([ab_state_message_to_string(stream_state) for stream_state in state])}]",
|
472
|
+
),
|
473
|
+
])
|
473
474
|
|
474
475
|
return _run_command(
|
475
476
|
source,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.60.0.
|
3
|
+
Version: 6.60.0.post30.dev16509083730
|
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-
|
26
|
+
Requires-Dist: airbyte-protocol-models-pdv2 (>=0.18.0,<0.19.0)
|
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
|
@@ -9,14 +9,14 @@ airbyte_cdk/cli/airbyte_cdk/_version.py,sha256=ohZNIktLFk91sdzqFW5idaNrZAPX2dIRn
|
|
9
9
|
airbyte_cdk/cli/airbyte_cdk/exceptions.py,sha256=bsGmlWN6cXL2jCD1WYAZMqFmK1OLg2xLrcC_60KHSeA,803
|
10
10
|
airbyte_cdk/cli/source_declarative_manifest/README.md,sha256=aviNYFk1qKXGm33NQ2mJtJNyQ1MO0SPrm_fggUs0MVE,2460
|
11
11
|
airbyte_cdk/cli/source_declarative_manifest/__init__.py,sha256=F-DFREvW6Sz71nSu0MwVALaybs9veg678tvsGFi2dYo,143
|
12
|
-
airbyte_cdk/cli/source_declarative_manifest/_run.py,sha256=
|
12
|
+
airbyte_cdk/cli/source_declarative_manifest/_run.py,sha256=BSpHX4Ly9p65mgnv9LSdEgjSADqEWvyq0L68d0-OwnY,11021
|
13
13
|
airbyte_cdk/cli/source_declarative_manifest/spec.json,sha256=Earc1L6ngcdIr514oFQlUoOxdF4RHqtUyStSIAquXdY,554
|
14
14
|
airbyte_cdk/config_observation.py,sha256=HJznEy6WfwmskCAa_x6edK3z3x_GPbkqK0YL8AA4zr8,3950
|
15
|
-
airbyte_cdk/connector.py,sha256=
|
15
|
+
airbyte_cdk/connector.py,sha256=m8fWTbFkatmR0ID6DAuL75sb9gQPKGBjLqqROLq7BaY,4216
|
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
18
|
airbyte_cdk/connector_builder/connector_builder_handler.py,sha256=OFTzxyfAevI3Um8fXTOLTgoCc4Sx9NzF0boqYkAATfM,6590
|
19
|
-
airbyte_cdk/connector_builder/main.py,sha256=
|
19
|
+
airbyte_cdk/connector_builder/main.py,sha256=X7rQZeExRpGPD8y3_QuzhxHuGPD2Y3blkhBknYYwHiQ,3813
|
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=Iczn-_iczS2CaIAunWwyFcX0uLTra8Wh9JVfzm1Gfxo,26765
|
@@ -24,7 +24,7 @@ airbyte_cdk/connector_builder/test_reader/message_grouper.py,sha256=84BAEPIBHMq3
|
|
24
24
|
airbyte_cdk/connector_builder/test_reader/reader.py,sha256=mP1yHK5vG38KxoKoT2QQ7ZNbkdLA1rMAU3EKpucjHls,21098
|
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
|
-
airbyte_cdk/destinations/destination.py,sha256=
|
27
|
+
airbyte_cdk/destinations/destination.py,sha256=zymirizqFihspyPyXT9piHKYlnLXfMuxiUx7ORzlgeE,5845
|
28
28
|
airbyte_cdk/destinations/vector_db_based/README.md,sha256=QAe8c_1Afme4r2TCE10cTSaxUE3zgCBuArSuRQqK8tA,2115
|
29
29
|
airbyte_cdk/destinations/vector_db_based/__init__.py,sha256=eAkzwTjBbXBhJ5GfPO5I53Zgpv5xQFLRQS8n4nuyPt0,1006
|
30
30
|
airbyte_cdk/destinations/vector_db_based/config.py,sha256=1u87eibIWLZ_wuaCvE3yp5ayguM9dGhGXbT8agmkUBg,12468
|
@@ -48,9 +48,9 @@ airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data
|
|
48
48
|
airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py,sha256=EX1MVYVpoWypA28qoH48wA0SYZjGdlR8bcSixTDzfgo,1346
|
49
49
|
airbyte_cdk/manifest_migrations/migrations/registry.yaml,sha256=F-hdapvl_vZnsI7CQsV00Rb7g7j4Nt2zaM83-Tbwgbg,956
|
50
50
|
airbyte_cdk/manifest_migrations/migrations_registry.py,sha256=zly2fwaOxDukqC7eowzrDlvhA2v71FjW74kDzvRXhSY,2619
|
51
|
-
airbyte_cdk/models/__init__.py,sha256=
|
52
|
-
airbyte_cdk/models/airbyte_protocol.py,sha256
|
53
|
-
airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=
|
51
|
+
airbyte_cdk/models/__init__.py,sha256=NjSFgkzPZd5miSliYLQP-OynA7tUrYEybdMXYmzJOmQ,2096
|
52
|
+
airbyte_cdk/models/airbyte_protocol.py,sha256=-JLm0bZtzk5Gn_e0TAin2qTUVGqppJhDzeQ-j3z2Pso,254
|
53
|
+
airbyte_cdk/models/airbyte_protocol_serializers.py,sha256=HXvMf9f1hoRYDQnMOjI84puJVNlpzfMcpfr3164RlDk,4899
|
54
54
|
airbyte_cdk/models/connector_metadata.py,sha256=BD6CO8c3mHavxRJAcwP29sHtNNVLVSNFNQLgHOVxrwA,3229
|
55
55
|
airbyte_cdk/models/well_known_types.py,sha256=EquepbisGPuCSrs_D7YVVnMR9-ShhUr21wnFz3COiJs,156
|
56
56
|
airbyte_cdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -218,7 +218,7 @@ airbyte_cdk/sources/declarative/schema/inline_schema_loader.py,sha256=bVETE10hRs
|
|
218
218
|
airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py,sha256=5Wl-fqW-pVf_dxJ4yGHMAFfC4JjKHYJhqFJT1xA57F4,4177
|
219
219
|
airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLnrDLxf1PJKdUqvQq2RVnAOAzNSY,379
|
220
220
|
airbyte_cdk/sources/declarative/spec/__init__.py,sha256=9FYO-fVOclrwjAW4qwRTbZRVopTc9rOaauAJfThdNCQ,177
|
221
|
-
airbyte_cdk/sources/declarative/spec/spec.py,sha256=
|
221
|
+
airbyte_cdk/sources/declarative/spec/spec.py,sha256=33b1tOAZuhkIDOzoiG5CwRjJb_qBkoUECtL3iq4M-XU,3654
|
222
222
|
airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=UX-cP_C-9FIFFPL9z8nuxu_rglssRsMOqQmQHN8FLB8,341
|
223
223
|
airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=cjKGm4r438dd1GxrFHJ4aYrdzG2bkncnwaWxAwlXR3M,3585
|
224
224
|
airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
|
@@ -301,7 +301,7 @@ airbyte_cdk/sources/http_config.py,sha256=OBZeuyFilm6NlDlBhFQvHhTWabEvZww6OHDIlZ
|
|
301
301
|
airbyte_cdk/sources/http_logger.py,sha256=H93kPAujHhPmXNX0JSFG3D-SL6yEFA5PtKot9Hu3TYA,1690
|
302
302
|
airbyte_cdk/sources/message/__init__.py,sha256=y98fzHsQBwXwp2zEa4K5mxGFqjnx9lDn9O0pTk-VS4U,395
|
303
303
|
airbyte_cdk/sources/message/repository.py,sha256=SG7avgti_-dj8FcRHTTrhgLLGJbElv14_zIB0SH8AIc,4763
|
304
|
-
airbyte_cdk/sources/source.py,sha256=
|
304
|
+
airbyte_cdk/sources/source.py,sha256=G9G5pzuHnXgBchHJIbUj7TPMJJoIdbrcjpACybWoEnc,3536
|
305
305
|
airbyte_cdk/sources/specs/transfer_modes.py,sha256=sfSVO0yT6SaGKN5_TP0Nl_ftG0yPhecaBv0WkhAEXA8,932
|
306
306
|
airbyte_cdk/sources/streams/__init__.py,sha256=8fzTKpRTnSx5PggXgQPKJzHNZUV2BCA40N-dI6JM1xI,256
|
307
307
|
airbyte_cdk/sources/streams/availability_strategy.py,sha256=_RU4JITrxMEN36g1RDHMu0iSw0I_3yWGfo5N8_YRvOg,3247
|
@@ -380,7 +380,7 @@ airbyte_cdk/sql/shared/sql_processor.py,sha256=jR-hdLZsPf2sNBa_wvWKLvys8ZJ-SQCIi
|
|
380
380
|
airbyte_cdk/sql/types.py,sha256=XEIhRAo_ASd0kVLBkdLf5bHiRhNple-IJrC9TibcDdY,5880
|
381
381
|
airbyte_cdk/test/__init__.py,sha256=f_XdkOg4_63QT2k3BbKY34209lppwgw-svzfZstQEq4,199
|
382
382
|
airbyte_cdk/test/catalog_builder.py,sha256=2_tdbk5Jk8mUXtxAN3_vhGIzQawYOZ9kg39xgoJbtl4,2963
|
383
|
-
airbyte_cdk/test/entrypoint_wrapper.py,sha256=
|
383
|
+
airbyte_cdk/test/entrypoint_wrapper.py,sha256=jo-Y9j9BBStT4moPMYMylvitVov6grZS_5ze_gHnGkM,18223
|
384
384
|
airbyte_cdk/test/mock_http/__init__.py,sha256=jE5kC6CQ0OXkTqKhciDnNVZHesBFVIA2YvkdFGwva7k,322
|
385
385
|
airbyte_cdk/test/mock_http/matcher.py,sha256=4Qj8UnJKZIs-eodshryce3SN1Ayc8GZpBETmP6hTEyc,1446
|
386
386
|
airbyte_cdk/test/mock_http/mocker.py,sha256=XgsjMtVoeMpRELPyALgrkHFauH9H5irxrz1Kcxh2yFY,8013
|
@@ -424,9 +424,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
424
424
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
425
425
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
426
426
|
airbyte_cdk/utils/traced_exception.py,sha256=bc5jMk8Z3AnSL-vqsgPCNgHzWqGTKZODHSg7VHiUyj0,6256
|
427
|
-
airbyte_cdk-6.60.0.
|
428
|
-
airbyte_cdk-6.60.0.
|
429
|
-
airbyte_cdk-6.60.0.
|
430
|
-
airbyte_cdk-6.60.0.
|
431
|
-
airbyte_cdk-6.60.0.
|
432
|
-
airbyte_cdk-6.60.0.
|
427
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
428
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
429
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/METADATA,sha256=yd9r67fQtQF_aOC9g9i-Lr4U7uxmlVOqi1IoxPi_N70,6544
|
430
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
431
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
|
432
|
+
airbyte_cdk-6.60.0.post30.dev16509083730.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|