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.
Files changed (20) hide show
  1. airbyte_cdk/sources/declarative/checks/__init__.py +5 -2
  2. airbyte_cdk/sources/declarative/checks/check_stream.py +113 -11
  3. airbyte_cdk/sources/declarative/declarative_component_schema.yaml +139 -2
  4. airbyte_cdk/sources/declarative/models/declarative_component_schema.py +94 -8
  5. airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +219 -11
  6. airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +13 -0
  7. airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +40 -0
  8. airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +69 -0
  9. airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +58 -0
  10. airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +10 -0
  11. airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +33 -0
  12. airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +19 -0
  13. airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +25 -2
  14. airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +101 -30
  15. {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/METADATA +1 -1
  16. {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/RECORD +20 -13
  17. {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/LICENSE.txt +0 -0
  18. {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/LICENSE_SHORT +0 -0
  19. {airbyte_cdk-6.43.1.dist-info → airbyte_cdk-6.45.0.dist-info}/WHEEL +0 -0
  20. {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) 2023 Airbyte, Inc., all rights reserved.
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
- most_recent_record_from_slice = None
451
- record_generator = partial(
452
- self._parse_records,
453
- stream_slice=stream_slice,
454
- stream_state=self.state or {},
455
- records_schema=records_schema,
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
- if self.cursor and isinstance(self.cursor, ResumableFullRefreshCursor):
459
- stream_state = self.state
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
- yield from self._read_single_page(record_generator, stream_state, _slice)
468
- else:
469
- for stream_data in self._read_pages(record_generator, self.state, _slice):
470
- current_record = self._extract_record(stream_data, _slice)
471
- if self.cursor and current_record:
472
- self.cursor.observe(_slice, current_record)
473
-
474
- # Latest record read, not necessarily within slice boundaries.
475
- # TODO Remove once all custom components implement `observe` method.
476
- # https://github.com/airbytehq/airbyte-internal-issues/issues/6955
477
- most_recent_record_from_slice = self._get_most_recent_record(
478
- most_recent_record_from_slice, current_record, _slice
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
- return
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,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.43.1
3
+ Version: 6.45.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -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=nsVV5Bo0E_tBNd8A4Xdsdb-75PpcLo5RQu2RQ_Gv-ME,806
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=dAA-UhmMj0WLXCkRQrilWCfJmncBzXCZ18ptRNip3XA,2139
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=twYvmNco0B7R8N5QXcTc1tbqWFB_7b-_i149LJbMss8,153129
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=nzQqJjBo8wFUF9gqF9E52zDsEDQGpG46aWylViTcAJU,108372
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=APJkP5dmDU4aIaj7w3quGjrP1cV3MMp2gxbTckhOVRA,149720
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=vOsdHfWHiTFc89WENHPv1hcxLgdzycMXVT_IEtLuhfs,5012
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=p6O4FYS7zzPq6uQT2NVnughUjI66tePaXVlyhCAyyv0,27746
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.43.1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
363
- airbyte_cdk-6.43.1.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
364
- airbyte_cdk-6.43.1.dist-info/METADATA,sha256=Zrfti0WPq-_VsjOASQALX5Gctg83yqECVMd-zOsyLOM,6071
365
- airbyte_cdk-6.43.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
366
- airbyte_cdk-6.43.1.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
367
- airbyte_cdk-6.43.1.dist-info/RECORD,,
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,,