airbyte-cdk 6.5.5__py3-none-any.whl → 6.6.0__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/sources/declarative/declarative_component_schema.yaml +43 -0
- airbyte_cdk/sources/declarative/decoders/__init__.py +2 -2
- airbyte_cdk/sources/declarative/decoders/json_decoder.py +45 -12
- airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +7 -3
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +43 -2
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +23 -3
- {airbyte_cdk-6.5.5.dist-info → airbyte_cdk-6.6.0.dist-info}/METADATA +2 -2
- {airbyte_cdk-6.5.5.dist-info → airbyte_cdk-6.6.0.dist-info}/RECORD +10 -10
- {airbyte_cdk-6.5.5.dist-info → airbyte_cdk-6.6.0.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.5.5.dist-info → airbyte_cdk-6.6.0.dist-info}/WHEEL +0 -0
@@ -1750,6 +1750,45 @@ definitions:
|
|
1750
1750
|
type:
|
1751
1751
|
type: string
|
1752
1752
|
enum: [XmlDecoder]
|
1753
|
+
CustomDecoder:
|
1754
|
+
title: Custom Decoder
|
1755
|
+
description: Use this to implement custom decoder logic.
|
1756
|
+
type: object
|
1757
|
+
additionalProperties: true
|
1758
|
+
required:
|
1759
|
+
- type
|
1760
|
+
- class_name
|
1761
|
+
properties:
|
1762
|
+
type:
|
1763
|
+
type: string
|
1764
|
+
enum: [CustomDecoder]
|
1765
|
+
class_name:
|
1766
|
+
title: Class Name
|
1767
|
+
description: Fully-qualified name of the class that will be implementing the custom decoding. Has to be a sub class of Decoder. The format is `source_<name>.<package>.<class_name>`.
|
1768
|
+
type: string
|
1769
|
+
additionalProperties: true
|
1770
|
+
examples:
|
1771
|
+
- "source_amazon_ads.components.GzipJsonlDecoder"
|
1772
|
+
$parameters:
|
1773
|
+
type: object
|
1774
|
+
additionalProperties: true
|
1775
|
+
GzipJsonDecoder:
|
1776
|
+
title: GzipJson Decoder
|
1777
|
+
description: Use this if the response is Gzip compressed Json.
|
1778
|
+
type: object
|
1779
|
+
additionalProperties: true
|
1780
|
+
required:
|
1781
|
+
- type
|
1782
|
+
properties:
|
1783
|
+
type:
|
1784
|
+
type: string
|
1785
|
+
enum: [GzipJsonDecoder]
|
1786
|
+
encoding:
|
1787
|
+
type: string
|
1788
|
+
default: utf-8
|
1789
|
+
$parameters:
|
1790
|
+
type: object
|
1791
|
+
additionalProperties: true
|
1753
1792
|
ListPartitionRouter:
|
1754
1793
|
title: List Partition Router
|
1755
1794
|
description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
|
@@ -2404,10 +2443,12 @@ definitions:
|
|
2404
2443
|
title: Decoder
|
2405
2444
|
description: Component decoding the response so records can be extracted.
|
2406
2445
|
anyOf:
|
2446
|
+
- "$ref": "#/definitions/CustomDecoder"
|
2407
2447
|
- "$ref": "#/definitions/JsonDecoder"
|
2408
2448
|
- "$ref": "#/definitions/JsonlDecoder"
|
2409
2449
|
- "$ref": "#/definitions/IterableDecoder"
|
2410
2450
|
- "$ref": "#/definitions/XmlDecoder"
|
2451
|
+
- "$ref": "#/definitions/GzipJsonDecoder"
|
2411
2452
|
$parameters:
|
2412
2453
|
type: object
|
2413
2454
|
additionalProperties: true
|
@@ -2520,10 +2561,12 @@ definitions:
|
|
2520
2561
|
title: Decoder
|
2521
2562
|
description: Component decoding the response so records can be extracted.
|
2522
2563
|
anyOf:
|
2564
|
+
- "$ref": "#/definitions/CustomDecoder"
|
2523
2565
|
- "$ref": "#/definitions/JsonDecoder"
|
2524
2566
|
- "$ref": "#/definitions/JsonlDecoder"
|
2525
2567
|
- "$ref": "#/definitions/IterableDecoder"
|
2526
2568
|
- "$ref": "#/definitions/XmlDecoder"
|
2569
|
+
- "$ref": "#/definitions/GzipJsonDecoder"
|
2527
2570
|
$parameters:
|
2528
2571
|
type: object
|
2529
2572
|
additionalProperties: true
|
@@ -3,9 +3,9 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
|
6
|
-
from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder, JsonlDecoder, IterableDecoder
|
6
|
+
from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder, JsonlDecoder, IterableDecoder, GzipJsonDecoder
|
7
7
|
from airbyte_cdk.sources.declarative.decoders.noop_decoder import NoopDecoder
|
8
8
|
from airbyte_cdk.sources.declarative.decoders.pagination_decoder_decorator import PaginationDecoderDecorator
|
9
9
|
from airbyte_cdk.sources.declarative.decoders.xml_decoder import XmlDecoder
|
10
10
|
|
11
|
-
__all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "NoopDecoder", "PaginationDecoderDecorator", "XmlDecoder"]
|
11
|
+
__all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "GzipJsonDecoder", "NoopDecoder", "PaginationDecoderDecorator", "XmlDecoder"]
|
@@ -1,14 +1,15 @@
|
|
1
1
|
#
|
2
2
|
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
|
-
|
4
|
+
import codecs
|
5
5
|
import logging
|
6
6
|
from dataclasses import InitVar, dataclass
|
7
|
-
from
|
7
|
+
from gzip import decompress
|
8
|
+
from typing import Any, Generator, Mapping, MutableMapping, List, Optional
|
8
9
|
|
9
10
|
import requests
|
10
11
|
from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
|
11
|
-
|
12
|
+
import orjson
|
12
13
|
|
13
14
|
logger = logging.getLogger("airbyte")
|
14
15
|
|
@@ -24,24 +25,32 @@ class JsonDecoder(Decoder):
|
|
24
25
|
def is_stream_response(self) -> bool:
|
25
26
|
return False
|
26
27
|
|
27
|
-
def decode(
|
28
|
+
def decode(
|
29
|
+
self, response: requests.Response
|
30
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
28
31
|
"""
|
29
32
|
Given the response is an empty string or an emtpy list, the function will return a generator with an empty mapping.
|
30
33
|
"""
|
31
34
|
try:
|
32
35
|
body_json = response.json()
|
33
|
-
|
34
|
-
body_json = [body_json]
|
35
|
-
if len(body_json) == 0:
|
36
|
-
yield {}
|
37
|
-
else:
|
38
|
-
yield from body_json
|
36
|
+
yield from self.parse_body_json(body_json)
|
39
37
|
except requests.exceptions.JSONDecodeError:
|
40
38
|
logger.warning(
|
41
39
|
f"Response cannot be parsed into json: {response.status_code=}, {response.text=}"
|
42
40
|
)
|
43
41
|
yield {}
|
44
42
|
|
43
|
+
@staticmethod
|
44
|
+
def parse_body_json(
|
45
|
+
body_json: MutableMapping[str, Any] | List[MutableMapping[str, Any]],
|
46
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
47
|
+
if not isinstance(body_json, list):
|
48
|
+
body_json = [body_json]
|
49
|
+
if len(body_json) == 0:
|
50
|
+
yield {}
|
51
|
+
else:
|
52
|
+
yield from body_json
|
53
|
+
|
45
54
|
|
46
55
|
@dataclass
|
47
56
|
class IterableDecoder(Decoder):
|
@@ -54,7 +63,9 @@ class IterableDecoder(Decoder):
|
|
54
63
|
def is_stream_response(self) -> bool:
|
55
64
|
return True
|
56
65
|
|
57
|
-
def decode(
|
66
|
+
def decode(
|
67
|
+
self, response: requests.Response
|
68
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
58
69
|
for line in response.iter_lines():
|
59
70
|
yield {"record": line.decode()}
|
60
71
|
|
@@ -70,8 +81,30 @@ class JsonlDecoder(Decoder):
|
|
70
81
|
def is_stream_response(self) -> bool:
|
71
82
|
return True
|
72
83
|
|
73
|
-
def decode(
|
84
|
+
def decode(
|
85
|
+
self, response: requests.Response
|
86
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
74
87
|
# TODO???: set delimiter? usually it is `\n` but maybe it would be useful to set optional?
|
75
88
|
# https://github.com/airbytehq/airbyte-internal-issues/issues/8436
|
76
89
|
for record in response.iter_lines():
|
77
90
|
yield orjson.loads(record)
|
91
|
+
|
92
|
+
|
93
|
+
@dataclass
|
94
|
+
class GzipJsonDecoder(JsonDecoder):
|
95
|
+
encoding: Optional[str]
|
96
|
+
|
97
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
98
|
+
if self.encoding:
|
99
|
+
try:
|
100
|
+
codecs.lookup(self.encoding)
|
101
|
+
except LookupError:
|
102
|
+
raise ValueError(
|
103
|
+
f"Invalid encoding '{self.encoding}'. Please check provided encoding"
|
104
|
+
)
|
105
|
+
|
106
|
+
def decode(
|
107
|
+
self, response: requests.Response
|
108
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
109
|
+
raw_string = decompress(response.content).decode(encoding=self.encoding or "utf-8")
|
110
|
+
yield from self.parse_body_json(orjson.loads(raw_string))
|
@@ -4,7 +4,11 @@ from typing import Any, Mapping
|
|
4
4
|
|
5
5
|
from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
|
6
6
|
from airbyte_cdk.sources.declarative.migrations.state_migration import StateMigration
|
7
|
-
from airbyte_cdk.sources.declarative.models import
|
7
|
+
from airbyte_cdk.sources.declarative.models import (
|
8
|
+
DatetimeBasedCursor,
|
9
|
+
SubstreamPartitionRouter,
|
10
|
+
CustomIncrementalSync,
|
11
|
+
)
|
8
12
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import ParentStreamConfig
|
9
13
|
|
10
14
|
|
@@ -32,7 +36,7 @@ class LegacyToPerPartitionStateMigration(StateMigration):
|
|
32
36
|
def __init__(
|
33
37
|
self,
|
34
38
|
partition_router: SubstreamPartitionRouter,
|
35
|
-
cursor: DatetimeBasedCursor,
|
39
|
+
cursor: CustomIncrementalSync | DatetimeBasedCursor,
|
36
40
|
config: Mapping[str, Any],
|
37
41
|
parameters: Mapping[str, Any],
|
38
42
|
):
|
@@ -64,7 +68,7 @@ class LegacyToPerPartitionStateMigration(StateMigration):
|
|
64
68
|
return False
|
65
69
|
|
66
70
|
# There is exactly one parent stream
|
67
|
-
number_of_parent_streams = len(self._partition_router.parent_stream_configs)
|
71
|
+
number_of_parent_streams = len(self._partition_router.parent_stream_configs) # type: ignore # custom partition will introduce this attribute if needed
|
68
72
|
if number_of_parent_streams != 1:
|
69
73
|
# There should be exactly one parent stream
|
70
74
|
return False
|
@@ -687,6 +687,29 @@ class XmlDecoder(BaseModel):
|
|
687
687
|
type: Literal["XmlDecoder"]
|
688
688
|
|
689
689
|
|
690
|
+
class CustomDecoder(BaseModel):
|
691
|
+
class Config:
|
692
|
+
extra = Extra.allow
|
693
|
+
|
694
|
+
type: Literal["CustomDecoder"]
|
695
|
+
class_name: str = Field(
|
696
|
+
...,
|
697
|
+
description="Fully-qualified name of the class that will be implementing the custom decoding. Has to be a sub class of Decoder. The format is `source_<name>.<package>.<class_name>`.",
|
698
|
+
examples=["source_amazon_ads.components.GzipJsonlDecoder"],
|
699
|
+
title="Class Name",
|
700
|
+
)
|
701
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
702
|
+
|
703
|
+
|
704
|
+
class GzipJsonDecoder(BaseModel):
|
705
|
+
class Config:
|
706
|
+
extra = Extra.allow
|
707
|
+
|
708
|
+
type: Literal["GzipJsonDecoder"]
|
709
|
+
encoding: Optional[str] = "utf-8"
|
710
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
711
|
+
|
712
|
+
|
690
713
|
class MinMaxDatetime(BaseModel):
|
691
714
|
type: Literal["MinMaxDatetime"]
|
692
715
|
datetime: str = Field(
|
@@ -1620,7 +1643,16 @@ class SimpleRetriever(BaseModel):
|
|
1620
1643
|
description="PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.",
|
1621
1644
|
title="Partition Router",
|
1622
1645
|
)
|
1623
|
-
decoder: Optional[
|
1646
|
+
decoder: Optional[
|
1647
|
+
Union[
|
1648
|
+
CustomDecoder,
|
1649
|
+
JsonDecoder,
|
1650
|
+
JsonlDecoder,
|
1651
|
+
IterableDecoder,
|
1652
|
+
XmlDecoder,
|
1653
|
+
GzipJsonDecoder,
|
1654
|
+
]
|
1655
|
+
] = Field(
|
1624
1656
|
None,
|
1625
1657
|
description="Component decoding the response so records can be extracted.",
|
1626
1658
|
title="Decoder",
|
@@ -1680,7 +1712,16 @@ class AsyncRetriever(BaseModel):
|
|
1680
1712
|
description="PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.",
|
1681
1713
|
title="Partition Router",
|
1682
1714
|
)
|
1683
|
-
decoder: Optional[
|
1715
|
+
decoder: Optional[
|
1716
|
+
Union[
|
1717
|
+
CustomDecoder,
|
1718
|
+
JsonDecoder,
|
1719
|
+
JsonlDecoder,
|
1720
|
+
IterableDecoder,
|
1721
|
+
XmlDecoder,
|
1722
|
+
GzipJsonDecoder,
|
1723
|
+
]
|
1724
|
+
] = Field(
|
1684
1725
|
None,
|
1685
1726
|
description="Component decoding the response so records can be extracted.",
|
1686
1727
|
title="Decoder",
|
@@ -58,6 +58,7 @@ from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime
|
|
58
58
|
from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream
|
59
59
|
from airbyte_cdk.sources.declarative.decoders import (
|
60
60
|
Decoder,
|
61
|
+
GzipJsonDecoder,
|
61
62
|
IterableDecoder,
|
62
63
|
JsonDecoder,
|
63
64
|
JsonlDecoder,
|
@@ -134,6 +135,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
134
135
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
135
136
|
CustomBackoffStrategy as CustomBackoffStrategyModel,
|
136
137
|
)
|
138
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
139
|
+
CustomDecoder as CustomDecoderModel,
|
140
|
+
)
|
137
141
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
138
142
|
CustomErrorHandler as CustomErrorHandlerModel,
|
139
143
|
)
|
@@ -182,6 +186,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
182
186
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
183
187
|
ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
|
184
188
|
)
|
189
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
190
|
+
GzipJsonDecoder as GzipJsonDecoderModel,
|
191
|
+
)
|
185
192
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
186
193
|
HttpRequester as HttpRequesterModel,
|
187
194
|
)
|
@@ -402,6 +409,7 @@ class ModelToComponentFactory:
|
|
402
409
|
CursorPaginationModel: self.create_cursor_pagination,
|
403
410
|
CustomAuthenticatorModel: self.create_custom_component,
|
404
411
|
CustomBackoffStrategyModel: self.create_custom_component,
|
412
|
+
CustomDecoderModel: self.create_custom_component,
|
405
413
|
CustomErrorHandlerModel: self.create_custom_component,
|
406
414
|
CustomIncrementalSyncModel: self.create_custom_component,
|
407
415
|
CustomRecordExtractorModel: self.create_custom_component,
|
@@ -425,6 +433,7 @@ class ModelToComponentFactory:
|
|
425
433
|
InlineSchemaLoaderModel: self.create_inline_schema_loader,
|
426
434
|
JsonDecoderModel: self.create_json_decoder,
|
427
435
|
JsonlDecoderModel: self.create_jsonl_decoder,
|
436
|
+
GzipJsonDecoderModel: self.create_gzipjson_decoder,
|
428
437
|
KeysToLowerModel: self.create_keys_to_lower_transformation,
|
429
438
|
IterableDecoderModel: self.create_iterable_decoder,
|
430
439
|
XmlDecoderModel: self.create_xml_decoder,
|
@@ -619,11 +628,16 @@ class ModelToComponentFactory:
|
|
619
628
|
"LegacyToPerPartitionStateMigrations can only be applied with a parent stream configuration."
|
620
629
|
)
|
621
630
|
|
631
|
+
if not hasattr(declarative_stream, "incremental_sync"):
|
632
|
+
raise ValueError(
|
633
|
+
"LegacyToPerPartitionStateMigrations can only be applied with an incremental_sync configuration."
|
634
|
+
)
|
635
|
+
|
622
636
|
return LegacyToPerPartitionStateMigration(
|
623
|
-
|
624
|
-
declarative_stream.incremental_sync,
|
637
|
+
partition_router, # type: ignore # was already checked above
|
638
|
+
declarative_stream.incremental_sync, # type: ignore # was already checked. Migration can be applied only to incremental streams.
|
625
639
|
config,
|
626
|
-
declarative_stream.parameters,
|
640
|
+
declarative_stream.parameters, # type: ignore # different type is expected here Mapping[str, Any], got Dict[str, Any]
|
627
641
|
) # type: ignore # The retriever type was already checked
|
628
642
|
|
629
643
|
def create_session_token_authenticator(
|
@@ -1548,6 +1562,12 @@ class ModelToComponentFactory:
|
|
1548
1562
|
def create_xml_decoder(model: XmlDecoderModel, config: Config, **kwargs: Any) -> XmlDecoder:
|
1549
1563
|
return XmlDecoder(parameters={})
|
1550
1564
|
|
1565
|
+
@staticmethod
|
1566
|
+
def create_gzipjson_decoder(
|
1567
|
+
model: GzipJsonDecoderModel, config: Config, **kwargs: Any
|
1568
|
+
) -> GzipJsonDecoder:
|
1569
|
+
return GzipJsonDecoder(parameters={}, encoding=model.encoding)
|
1570
|
+
|
1551
1571
|
@staticmethod
|
1552
1572
|
def create_json_file_schema_loader(
|
1553
1573
|
model: JsonFileSchemaLoaderModel, config: Config, **kwargs: Any
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.6.0
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -66,7 +66,7 @@ Requires-Dist: requests_cache
|
|
66
66
|
Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
|
67
67
|
Requires-Dist: sphinx-rtd-theme (>=1.0,<1.1) ; extra == "sphinx-docs"
|
68
68
|
Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
|
69
|
-
Requires-Dist: tiktoken (==0.
|
69
|
+
Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
|
70
70
|
Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
|
71
71
|
Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
72
72
|
Requires-Dist: wcmatch (==10.0)
|
@@ -62,12 +62,12 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=b_zZOO2_
|
|
62
62
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=l9LG7Qm6e5r_qgqfVKnx3mXYtg1I9MmMjomVIPfU4XA,177
|
63
63
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=SX9JjdesN1edN2WVUVMzU_ptqp2QB1OnsnjZ4mwcX7w,2579
|
64
64
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=8VZJP18eJLabSPP1XBSPDaagUBG6q1ynIiPJy3rE2mc,5344
|
65
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256
|
65
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=QGpwBEd-KZIeUwtWiZNvRW9SbG4SLGveZHRjAgUk7mg,110383
|
66
66
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
67
67
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=JRyNeOIpsFu4ztVZsN6sncqUEIqIE-bUkD2TPgbMgk0,10375
|
68
|
-
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=
|
68
|
+
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=hNlhaB5FjNC6IfJyglj5ZJWkYD2nEAukMDmzRz5PC6o,671
|
69
69
|
airbyte_cdk/sources/declarative/decoders/decoder.py,sha256=sl-Gt8lXi7yD2Q-sD8je5QS2PbgrgsYjxRLWsay7DMc,826
|
70
|
-
airbyte_cdk/sources/declarative/decoders/json_decoder.py,sha256=
|
70
|
+
airbyte_cdk/sources/declarative/decoders/json_decoder.py,sha256=e5SQzUSpAp7iHrgbDOQQgduf3B09CCndf_NxJswEJS8,3326
|
71
71
|
airbyte_cdk/sources/declarative/decoders/noop_decoder.py,sha256=eEgo7J9ct3nNJXnuZxxs2wEo0xAlkz2siX_ZgY4pE6M,454
|
72
72
|
airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py,sha256=poFupLza71NrWhydE-5oezTzd2TyuCaBAK3TdgdEaxg,1080
|
73
73
|
airbyte_cdk/sources/declarative/decoders/xml_decoder.py,sha256=q_-glq5SV3JVoOJ5ULCZaj5fJodUvc12IxshwphNP-U,3116
|
@@ -97,15 +97,15 @@ airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=KwTd0oagnZI4tARxnJ
|
|
97
97
|
airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=QgIfSVPHx_MMUCgbQdm-NMpUlp_cpk0OQhoRDFtkrxE,4040
|
98
98
|
airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=-n0gWLPybC8-MBmmiO8k9s6L1bmNMWrsnn16JibtX7E,12916
|
99
99
|
airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
|
-
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=
|
100
|
+
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iNsF3jWCaZAmJYArmDQg0MJgZikk6frh3IfhcMBR_Qc,3924
|
101
101
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
102
102
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
103
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
103
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=O_jSeWL2xHxi1u09chtmM40Xk7hVKrnfQjYBFyXbk9I,76057
|
104
104
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
105
105
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
106
106
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=jVZ3ZV5YZrmDNIX5cM2mugXmnbH27zHRcD22_3oatpo,8454
|
107
107
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
108
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
108
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=ObmWWZBE1jeP63_B74GaZqLlHmNsShBp6kOIF4hXXCI,95403
|
109
109
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=8uGos2u7TFTx_EJBdcjdUGn3Eyx6jUuEa1_VB8UP_dI,631
|
110
110
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
111
111
|
airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py,sha256=t7pRdFWfFWJtQQG19c9PVeMODyO2BknRTakpM5U9N-8,4844
|
@@ -324,7 +324,7 @@ airbyte_cdk/utils/schema_inferrer.py,sha256=igYTpdi1uqzyj13h5EJli67g1hfwQK8K_jlN
|
|
324
324
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=LVc9KbtMeV_z99jWo0Ou8u4l6eBJ0BWNhxj4zrrGKRs,763
|
325
325
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
326
326
|
airbyte_cdk/utils/traced_exception.py,sha256=89TQdFuYZ1NJgmFpqLzY_T_T_64TpJYmVqs119Bp43g,6164
|
327
|
-
airbyte_cdk-6.
|
328
|
-
airbyte_cdk-6.
|
329
|
-
airbyte_cdk-6.
|
330
|
-
airbyte_cdk-6.
|
327
|
+
airbyte_cdk-6.6.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
328
|
+
airbyte_cdk-6.6.0.dist-info/METADATA,sha256=YFnSklKAaeueL4GAzEVGWzqSlx_dfliOOPfjqkdpsNc,13347
|
329
|
+
airbyte_cdk-6.6.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
330
|
+
airbyte_cdk-6.6.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|