airbyte-cdk 6.43.1__py3-none-any.whl → 6.45.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/checks/__init__.py +5 -2
- airbyte_cdk/sources/declarative/checks/check_stream.py +113 -11
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml +139 -2
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py +94 -8
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +219 -11
- airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +13 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +40 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +69 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +58 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +10 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +33 -0
- airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +19 -0
- airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +25 -2
- airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +101 -30
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/METADATA +1 -1
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/RECORD +20 -13
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/WHEEL +0 -0
- {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/entry_points.txt +0 -0
@@ -1,8 +1,9 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
5
|
import json
|
6
|
+
from collections import defaultdict
|
6
7
|
from dataclasses import InitVar, dataclass, field
|
7
8
|
from functools import partial
|
8
9
|
from itertools import islice
|
@@ -12,6 +13,7 @@ from typing import (
|
|
12
13
|
Iterable,
|
13
14
|
List,
|
14
15
|
Mapping,
|
16
|
+
MutableMapping,
|
15
17
|
Optional,
|
16
18
|
Set,
|
17
19
|
Tuple,
|
@@ -31,6 +33,7 @@ from airbyte_cdk.sources.declarative.partition_routers.single_partition_router i
|
|
31
33
|
)
|
32
34
|
from airbyte_cdk.sources.declarative.requesters.paginators.no_pagination import NoPagination
|
33
35
|
from airbyte_cdk.sources.declarative.requesters.paginators.paginator import Paginator
|
36
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties import QueryProperties
|
34
37
|
from airbyte_cdk.sources.declarative.requesters.request_options import (
|
35
38
|
DefaultRequestOptionsProvider,
|
36
39
|
RequestOptionsProvider,
|
@@ -88,6 +91,7 @@ class SimpleRetriever(Retriever):
|
|
88
91
|
)
|
89
92
|
cursor: Optional[DeclarativeCursor] = None
|
90
93
|
ignore_stream_slicer_parameters_on_paginated_requests: bool = False
|
94
|
+
additional_query_properties: Optional[QueryProperties] = None
|
91
95
|
|
92
96
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
93
97
|
self._paginator = self.paginator or NoPagination(parameters=parameters)
|
@@ -445,43 +449,110 @@ class SimpleRetriever(Retriever):
|
|
445
449
|
:param stream_slice: The stream slice to read data for
|
446
450
|
:return: The records read from the API source
|
447
451
|
"""
|
448
|
-
_slice = stream_slice or StreamSlice(partition={}, cursor_slice={}) # None-check
|
449
452
|
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
453
|
+
property_chunks = (
|
454
|
+
list(
|
455
|
+
self.additional_query_properties.get_request_property_chunks(
|
456
|
+
stream_slice=stream_slice
|
457
|
+
)
|
458
|
+
)
|
459
|
+
if self.additional_query_properties
|
460
|
+
else []
|
456
461
|
)
|
462
|
+
records_without_merge_key = []
|
463
|
+
merged_records: MutableMapping[str, Any] = defaultdict(dict)
|
457
464
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
# Before syncing the RFR stream, we check if the job's prior attempt was successful and don't need to
|
462
|
-
# fetch more records. The platform deletes stream state for full refresh streams before starting a
|
463
|
-
# new job, so we don't need to worry about this value existing for the initial attempt
|
464
|
-
if stream_state.get(FULL_REFRESH_SYNC_COMPLETE_KEY):
|
465
|
-
return
|
465
|
+
_slice = stream_slice or StreamSlice(partition={}, cursor_slice={}) # None-check
|
466
|
+
most_recent_record_from_slice = None
|
466
467
|
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
468
|
+
if self.additional_query_properties:
|
469
|
+
for properties in property_chunks:
|
470
|
+
_slice = StreamSlice(
|
471
|
+
partition=_slice.partition or {},
|
472
|
+
cursor_slice=_slice.cursor_slice or {},
|
473
|
+
extra_fields={"query_properties": properties},
|
474
|
+
) # None-check
|
475
|
+
|
476
|
+
record_generator = partial(
|
477
|
+
self._parse_records,
|
478
|
+
stream_slice=_slice,
|
479
|
+
stream_state=self.state or {},
|
480
|
+
records_schema=records_schema,
|
479
481
|
)
|
480
|
-
yield stream_data
|
481
482
|
|
483
|
+
for stream_data in self._read_pages(record_generator, self.state, _slice):
|
484
|
+
current_record = self._extract_record(stream_data, _slice)
|
485
|
+
if self.cursor and current_record:
|
486
|
+
self.cursor.observe(_slice, current_record)
|
487
|
+
|
488
|
+
# Latest record read, not necessarily within slice boundaries.
|
489
|
+
# TODO Remove once all custom components implement `observe` method.
|
490
|
+
# https://github.com/airbytehq/airbyte-internal-issues/issues/6955
|
491
|
+
most_recent_record_from_slice = self._get_most_recent_record(
|
492
|
+
most_recent_record_from_slice, current_record, _slice
|
493
|
+
)
|
494
|
+
|
495
|
+
if current_record and self.additional_query_properties.property_chunking:
|
496
|
+
merge_key = (
|
497
|
+
self.additional_query_properties.property_chunking.get_merge_key(
|
498
|
+
current_record
|
499
|
+
)
|
500
|
+
)
|
501
|
+
if merge_key:
|
502
|
+
merged_records[merge_key].update(current_record)
|
503
|
+
else:
|
504
|
+
# We should still emit records even if the record did not have a merge key
|
505
|
+
records_without_merge_key.append(current_record)
|
506
|
+
else:
|
507
|
+
yield stream_data
|
482
508
|
if self.cursor:
|
483
509
|
self.cursor.close_slice(_slice, most_recent_record_from_slice)
|
484
|
-
|
510
|
+
|
511
|
+
if len(merged_records) > 0:
|
512
|
+
yield from [
|
513
|
+
Record(data=merged_record, stream_name=self.name, associated_slice=stream_slice)
|
514
|
+
for merged_record in merged_records.values()
|
515
|
+
]
|
516
|
+
if len(records_without_merge_key) > 0:
|
517
|
+
yield from records_without_merge_key
|
518
|
+
else:
|
519
|
+
_slice = stream_slice or StreamSlice(partition={}, cursor_slice={}) # None-check
|
520
|
+
|
521
|
+
most_recent_record_from_slice = None
|
522
|
+
record_generator = partial(
|
523
|
+
self._parse_records,
|
524
|
+
stream_slice=stream_slice,
|
525
|
+
stream_state=self.state or {},
|
526
|
+
records_schema=records_schema,
|
527
|
+
)
|
528
|
+
|
529
|
+
if self.cursor and isinstance(self.cursor, ResumableFullRefreshCursor):
|
530
|
+
stream_state = self.state
|
531
|
+
|
532
|
+
# Before syncing the RFR stream, we check if the job's prior attempt was successful and don't need to
|
533
|
+
# fetch more records. The platform deletes stream state for full refresh streams before starting a
|
534
|
+
# new job, so we don't need to worry about this value existing for the initial attempt
|
535
|
+
if stream_state.get(FULL_REFRESH_SYNC_COMPLETE_KEY):
|
536
|
+
return
|
537
|
+
|
538
|
+
yield from self._read_single_page(record_generator, stream_state, _slice)
|
539
|
+
else:
|
540
|
+
for stream_data in self._read_pages(record_generator, self.state, _slice):
|
541
|
+
current_record = self._extract_record(stream_data, _slice)
|
542
|
+
if self.cursor and current_record:
|
543
|
+
self.cursor.observe(_slice, current_record)
|
544
|
+
|
545
|
+
# Latest record read, not necessarily within slice boundaries.
|
546
|
+
# TODO Remove once all custom components implement `observe` method.
|
547
|
+
# https://github.com/airbytehq/airbyte-internal-issues/issues/6955
|
548
|
+
most_recent_record_from_slice = self._get_most_recent_record(
|
549
|
+
most_recent_record_from_slice, current_record, _slice
|
550
|
+
)
|
551
|
+
yield stream_data
|
552
|
+
|
553
|
+
if self.cursor:
|
554
|
+
self.cursor.close_slice(_slice, most_recent_record_from_slice)
|
555
|
+
return
|
485
556
|
|
486
557
|
def _get_most_recent_record(
|
487
558
|
self,
|
@@ -61,9 +61,9 @@ airbyte_cdk/sources/declarative/auth/oauth.py,sha256=SUfib1oSzlyRRnOSg8Bui73mfyr
|
|
61
61
|
airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
|
62
62
|
airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
|
63
63
|
airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=Jzuxlmt1_-_aFC_n0OmP8L1nDOacLzbEVVx3kjdX_W8,3104
|
64
|
-
airbyte_cdk/sources/declarative/checks/__init__.py,sha256=
|
64
|
+
airbyte_cdk/sources/declarative/checks/__init__.py,sha256=cpoBwEbRNcMi7Rmi5pD63ppUvAOZsAWzasmc57ob9rc,873
|
65
65
|
airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py,sha256=HUktywjI8pqOeED08UGqponUSwxs2TOAECTowlWlrRE,2138
|
66
|
-
airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=
|
66
|
+
airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=QeExVmpSYjr_CnghHuJBn5oHW6wyKmAr7rotSSfcWp8,7145
|
67
67
|
airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
|
68
68
|
airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
|
69
69
|
airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
|
@@ -71,7 +71,7 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=uhy0dRkA
|
|
71
71
|
airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
|
72
72
|
airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
|
73
73
|
airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
|
74
|
-
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=
|
74
|
+
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=pGFwleIC0sXFY-a6QphWyjY9QjUfHasgChPAMZFWjU8,158152
|
75
75
|
airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
|
76
76
|
airbyte_cdk/sources/declarative/declarative_stream.py,sha256=dCRlddBUSaJmBNBz1pSO1r2rTw8AP5d2_vlmIeGs2gg,10767
|
77
77
|
airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
|
@@ -114,13 +114,13 @@ airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
114
114
|
airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
|
115
115
|
airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
|
116
116
|
airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
|
117
|
-
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=
|
117
|
+
airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=EfhCFVz_UHl7_cbRlf5hvFO1J5osxAZjISeqgbXE2t8,112007
|
118
118
|
airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
119
119
|
airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
|
120
120
|
airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
|
121
121
|
airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=4C15MKV-zOrMVQAm4FyohDsrJUBCSpMv5tZw0SK3aeI,9685
|
122
122
|
airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
|
123
|
-
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=
|
123
|
+
airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=Qim2qR64SKWbxD-Au0KAB3fLf6G2YfppUv3Q0w4QYtE,158619
|
124
124
|
airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
|
125
125
|
airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
|
126
126
|
airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
|
@@ -156,13 +156,20 @@ airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_incremen
|
|
156
156
|
airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py,sha256=Z2i6a-oKMmOTxHxsTVSnyaShkJ3u8xZw1xIJdx2yxss,2731
|
157
157
|
airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=ZBshGQNr5Bb_V8dqnWRISqdXFcjm1CKIXnlfbRhNl8g,1308
|
158
158
|
airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256=LoKXdUbSgHEtSwtA8DFrnX6SpQbRVVwreY8NguTKTcI,2229
|
159
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py,sha256=sHwHVuN6djuRBF7zQb-HmINV0By4wE5j_i6TjmIPMzQ,494
|
160
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py,sha256=3h9Ae6TNGagh9sMYWdG5KoEFWDlqUWZ5fkswTPreveM,1616
|
161
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py,sha256=YmUeeY3ZpsuK2VTF3SkdVuJcplI1I4UfhgzOrggifag,2748
|
162
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py,sha256=2VWhgphAFKmHJhzp-UoSP9_QR3eYOLPT0nzMDyglBV4,2650
|
163
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py,sha256=ojiPj9eVU7SuNpF3RZwhZWW21IYLQYEoxpzg1rCdvNM,350
|
164
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py,sha256=np4uTwSpQvXxubIzVbwSDX0Xf3EgVn8kkhs6zYLOdAQ,1081
|
165
|
+
airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py,sha256=iuk9QxpwvKVtdrq9eadQVkZ-Sfk3qhyyAAErprBfw2s,516
|
159
166
|
airbyte_cdk/sources/declarative/requesters/request_option.py,sha256=Bl0gxGWudmwT3FXBozTN00WYle2jd6ry_S1YylCnwqM,4825
|
160
167
|
airbyte_cdk/sources/declarative/requesters/request_options/__init__.py,sha256=WCwpKqM4wKqy-DHJaCHbKAlFqRVOqMi9K5qonxIfi_Y,809
|
161
168
|
airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py,sha256=31nG6_0igidJFQon37-WeQkTpG3g2A5ZmlluI3ilZdE,3632
|
162
169
|
airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py,sha256=SRROdPJZ5kuqHLOlkh115pWP9nDGfDxRYPgH9oD3hPo,1798
|
163
170
|
airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py,sha256=86YozYuBDfu0t9NbevIvQoGU0vqTP4rt3dRSTsHz3PA,2269
|
164
171
|
airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py,sha256=rR00kE64U2yL0McU1gPr4_W5_sLUqwDgL3Nvj691nRU,2884
|
165
|
-
airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py,sha256=
|
172
|
+
airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py,sha256=dRlG1IyEOVzWFw7wm-8TBPn7JUtZw3jz6oAoH5yuuf0,6375
|
166
173
|
airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py,sha256=8YRiDzjYvqJ-aMmKFcjqzv_-e8OZ5QG_TbpZ-nuCu6s,2590
|
167
174
|
airbyte_cdk/sources/declarative/requesters/request_path.py,sha256=S3MeFvcaQrMbOkSY2W2VbXLNomqt_3eXqVd9ZhgNwUs,299
|
168
175
|
airbyte_cdk/sources/declarative/requesters/requester.py,sha256=OcDzuCBgD1owK_lBPG0KbRRHRn9kzbuRveU4HejDiv4,5116
|
@@ -173,7 +180,7 @@ airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py,sha256=Aio
|
|
173
180
|
airbyte_cdk/sources/declarative/retrievers/__init__.py,sha256=nQepwG_RfW53sgwvK5dLPqfCx0VjsQ83nYoPjBMAaLM,527
|
174
181
|
airbyte_cdk/sources/declarative/retrievers/async_retriever.py,sha256=6oZtnCHm9NdDvjTSrVwPQOXGSdETSIR7eWH2vFjM7jI,4855
|
175
182
|
airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=XPLs593Xv8c5cKMc37XzUAYmzlXd1a7eSsspM-CMuWA,1696
|
176
|
-
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=
|
183
|
+
airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=Ixs_byM-DMfYiYB-iOa97yH4WGAvxgTdTYeAsskHdYM,31134
|
177
184
|
airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
|
178
185
|
airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=KTACrIE23a83wsm3Rd9Eb4K6-20lrGqYxTHNp9yxsso,1820
|
179
186
|
airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=J8Q_iJYhcSQLWyt0bTZCbDAGpxt9G8FCc6Q9jtGsNzw,10703
|
@@ -359,9 +366,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
|
|
359
366
|
airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
|
360
367
|
airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
|
361
368
|
airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
|
362
|
-
airbyte_cdk-6.
|
363
|
-
airbyte_cdk-6.
|
364
|
-
airbyte_cdk-6.
|
365
|
-
airbyte_cdk-6.
|
366
|
-
airbyte_cdk-6.
|
367
|
-
airbyte_cdk-6.
|
369
|
+
airbyte_cdk-6.45.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
370
|
+
airbyte_cdk-6.45.0.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
|
371
|
+
airbyte_cdk-6.45.0.dist-info/METADATA,sha256=QFEPcdQP0d_cCYIUW4uSBOL-muBtxr0wu7kbmc65LkQ,6071
|
372
|
+
airbyte_cdk-6.45.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
373
|
+
airbyte_cdk-6.45.0.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
|
374
|
+
airbyte_cdk-6.45.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|