airbyte-cdk 7.4.0.post2.dev18763111899__py3-none-any.whl → 7.4.1__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.

Potentially problematic release.


This version of airbyte-cdk might be problematic. Click here for more details.

@@ -3353,7 +3353,7 @@ definitions:
3353
3353
  - ["code", "type"]
3354
3354
  PropertiesFromEndpoint:
3355
3355
  title: Properties from Endpoint
3356
- description: Defines the behavior for fetching the list of properties from an API that will be loaded into the requests to extract records.
3356
+ description: Defines the behavior for fetching the list of properties from an API that will be loaded into the requests to extract records. Note that stream_slices can't be interpolated from this retriever.
3357
3357
  type: object
3358
3358
  required:
3359
3359
  - type
@@ -551,9 +551,13 @@ from airbyte_cdk.sources.declarative.schema import (
551
551
  DynamicSchemaLoader,
552
552
  InlineSchemaLoader,
553
553
  JsonFileSchemaLoader,
554
+ SchemaLoader,
554
555
  SchemaTypeIdentifier,
555
556
  TypesMap,
556
557
  )
558
+ from airbyte_cdk.sources.declarative.schema.caching_schema_loader_decorator import (
559
+ CachingSchemaLoaderDecorator,
560
+ )
557
561
  from airbyte_cdk.sources.declarative.schema.composite_schema_loader import CompositeSchemaLoader
558
562
  from airbyte_cdk.sources.declarative.spec import ConfigMigration, Spec
559
563
  from airbyte_cdk.sources.declarative.stream_slicers import (
@@ -2095,13 +2099,7 @@ class ModelToComponentFactory:
2095
2099
  if isinstance(retriever, AsyncRetriever):
2096
2100
  stream_slicer = retriever.stream_slicer
2097
2101
 
2098
- schema_loader: Union[
2099
- CompositeSchemaLoader,
2100
- DefaultSchemaLoader,
2101
- DynamicSchemaLoader,
2102
- InlineSchemaLoader,
2103
- JsonFileSchemaLoader,
2104
- ]
2102
+ schema_loader: SchemaLoader
2105
2103
  if model.schema_loader and isinstance(model.schema_loader, list):
2106
2104
  nested_schema_loaders = [
2107
2105
  self._create_component_from_model(model=nested_schema_loader, config=config)
@@ -2120,6 +2118,7 @@ class ModelToComponentFactory:
2120
2118
  if "name" not in options:
2121
2119
  options["name"] = model.name
2122
2120
  schema_loader = DefaultSchemaLoader(config=config, parameters=options)
2121
+ schema_loader = CachingSchemaLoaderDecorator(schema_loader)
2123
2122
 
2124
2123
  stream_name = model.name or ""
2125
2124
  return DefaultStream(
@@ -22,19 +22,27 @@ class PropertiesFromEndpoint:
22
22
  config: Config
23
23
  parameters: InitVar[Mapping[str, Any]]
24
24
 
25
+ _cached_properties: Optional[List[str]] = None
26
+
25
27
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
26
28
  self._property_field_path = [
27
29
  InterpolatedString(string=property_field, parameters=parameters)
28
30
  for property_field in self.property_field_path
29
31
  ]
30
32
 
31
- def get_properties_from_endpoint(self, stream_slice: Optional[StreamSlice]) -> Iterable[str]:
32
- response_properties = self.retriever.read_records(
33
- records_schema={}, stream_slice=stream_slice
34
- )
35
- for property_obj in response_properties:
36
- path = [
37
- node.eval(self.config) if not isinstance(node, str) else node
38
- for node in self._property_field_path
39
- ]
40
- yield dpath.get(property_obj, path, default=[]) # type: ignore # extracted will be a MutableMapping, given input data structure
33
+ def get_properties_from_endpoint(self) -> List[str]:
34
+ if self._cached_properties is None:
35
+ self._cached_properties = list(
36
+ map(
37
+ self._get_property, # type: ignore # SimpleRetriever and AsyncRetriever only returns Record. Should we change the return type of Retriever.read_records?
38
+ self.retriever.read_records(records_schema={}, stream_slice=None),
39
+ )
40
+ )
41
+ return self._cached_properties
42
+
43
+ def _get_property(self, property_obj: Mapping[str, Any]) -> str:
44
+ path = [
45
+ node.eval(self.config) if not isinstance(node, str) else node
46
+ for node in self._property_field_path
47
+ ]
48
+ return str(dpath.get(property_obj, path, default=[])) # type: ignore # extracted will be a MutableMapping, given input data structure
@@ -41,7 +41,7 @@ class PropertyChunking:
41
41
 
42
42
  def get_request_property_chunks(
43
43
  self,
44
- property_fields: Iterable[str],
44
+ property_fields: List[str],
45
45
  always_include_properties: Optional[List[str]],
46
46
  configured_properties: Optional[Set[str]],
47
47
  ) -> Iterable[List[str]]:
@@ -30,23 +30,16 @@ class QueryProperties:
30
30
  config: Config
31
31
  parameters: InitVar[Mapping[str, Any]]
32
32
 
33
- def get_request_property_chunks(
34
- self,
35
- stream_slice: Optional[StreamSlice] = None,
36
- ) -> Iterable[List[str]]:
33
+ def get_request_property_chunks(self) -> Iterable[List[str]]:
37
34
  """
38
35
  Uses the defined property_list to fetch the total set of properties dynamically or from a static list
39
36
  and based on the resulting properties, performs property chunking if applicable.
40
- :param stream_slice: The StreamSlice of the current partition being processed during the sync. This is included
41
- because subcomponents of QueryProperties can make use of interpolation of the top-level StreamSlice object
42
- :param configured_stream: The customer configured stream being synced which is needed to identify which
43
- record fields to query for and emit.
44
37
  """
38
+ fields: List[str]
45
39
  configured_properties = self.property_selector.select() if self.property_selector else None
46
40
 
47
- fields: Union[Iterable[str], List[str]]
48
41
  if isinstance(self.property_list, PropertiesFromEndpoint):
49
- fields = self.property_list.get_properties_from_endpoint(stream_slice=stream_slice)
42
+ fields = self.property_list.get_properties_from_endpoint()
50
43
  else:
51
44
  fields = self.property_list if self.property_list else []
52
45
 
@@ -385,9 +385,9 @@ class SimpleRetriever(Retriever):
385
385
  response = None
386
386
  try:
387
387
  if self.additional_query_properties:
388
- for properties in self.additional_query_properties.get_request_property_chunks(
389
- stream_slice=stream_slice,
390
- ):
388
+ for (
389
+ properties
390
+ ) in self.additional_query_properties.get_request_property_chunks():
391
391
  stream_slice = StreamSlice(
392
392
  partition=stream_slice.partition or {},
393
393
  cursor_slice=stream_slice.cursor_slice or {},
@@ -523,7 +523,6 @@ class SimpleRetriever(Retriever):
523
523
  """
524
524
  _slice = stream_slice or StreamSlice(partition={}, cursor_slice={}) # None-check
525
525
 
526
- most_recent_record_from_slice = None
527
526
  record_generator = partial(
528
527
  self._parse_records,
529
528
  stream_slice=stream_slice,
@@ -0,0 +1,15 @@
1
+ from typing import Any, Mapping, Optional
2
+
3
+ from airbyte_cdk.sources.declarative.schema import SchemaLoader
4
+
5
+
6
+ class CachingSchemaLoaderDecorator(SchemaLoader):
7
+ def __init__(self, schema_loader: SchemaLoader):
8
+ self._decorated = schema_loader
9
+ self._loaded_schema: Optional[Mapping[str, Any]] = None
10
+
11
+ def get_json_schema(self) -> Mapping[str, Any]:
12
+ if self._loaded_schema is None:
13
+ self._loaded_schema = self._decorated.get_json_schema()
14
+
15
+ return self._loaded_schema # type: ignore # at that point, we assume the schema will be populated
@@ -31,18 +31,6 @@ class RecordCounter:
31
31
  return self.total_record_counter
32
32
 
33
33
 
34
- class SchemaLoaderCachingDecorator(SchemaLoader):
35
- def __init__(self, schema_loader: SchemaLoader):
36
- self._decorated = schema_loader
37
- self._loaded_schema: Optional[Mapping[str, Any]] = None
38
-
39
- def get_json_schema(self) -> Mapping[str, Any]:
40
- if self._loaded_schema is None:
41
- self._loaded_schema = self._decorated.get_json_schema()
42
-
43
- return self._loaded_schema # type: ignore # at that point, we assume the schema will be populated
44
-
45
-
46
34
  class DeclarativePartitionFactory:
47
35
  def __init__(
48
36
  self,
@@ -58,7 +46,7 @@ class DeclarativePartitionFactory:
58
46
  In order to avoid these problems, we will create one retriever per thread which should make the processing thread-safe.
59
47
  """
60
48
  self._stream_name = stream_name
61
- self._schema_loader = SchemaLoaderCachingDecorator(schema_loader)
49
+ self._schema_loader = schema_loader
62
50
  self._retriever = retriever
63
51
  self._message_repository = message_repository
64
52
  self._max_records_limit = max_records_limit
@@ -3,20 +3,11 @@
3
3
  #
4
4
 
5
5
  import logging
6
- from copy import deepcopy
7
6
  from enum import Flag, auto
8
- from typing import TYPE_CHECKING, Any, Callable, Dict, Generator, Mapping, Optional, cast
7
+ from typing import Any, Callable, Dict, Generator, Mapping, Optional, cast
9
8
 
10
9
  from jsonschema import Draft7Validator, ValidationError, validators
11
10
  from jsonschema.protocols import Validator
12
- from referencing import Registry, Resource
13
- from referencing._core import Resolver
14
- from referencing.exceptions import Unresolvable
15
- from referencing.jsonschema import DRAFT7
16
-
17
- from airbyte_cdk.sources.utils.schema_helpers import expand_refs
18
-
19
- from .schema_helpers import get_ref_resolver_registry
20
11
 
21
12
  MAX_NESTING_DEPTH = 3
22
13
  json_to_python_simple = {
@@ -201,15 +192,6 @@ class TypeTransformer:
201
192
  validators parameter for detailed description.
202
193
  :
203
194
  """
204
- # Very first step is to expand $refs in the schema itself:
205
- expand_refs(schema)
206
-
207
- # Now we can expand $refs in the property value:
208
- if isinstance(property_value, dict):
209
- expand_refs(property_value)
210
-
211
- # Now we can validate and normalize the values:
212
-
213
195
  # Transform object and array values before running json schema type checking for each element.
214
196
  # Recursively normalize every value of the "instance" sub-object,
215
197
  # if "instance" is an incorrect type - skip recursive normalization of "instance"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 7.4.0.post2.dev18763111899
3
+ Version: 7.4.1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -130,7 +130,7 @@ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=H_pnBSQp
130
130
  airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=4Hw-PX1-VgESLF16cDdvuYCzGJtHntThLF4qIiULWeo,61
131
131
  airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=_zGNGq31RNy_0QBLt_EcTvgPyhj7urPdx6oA3M5-r3o,3150
132
132
  airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
133
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=PlJeDmDYx_aUmZw0Uki873xrqcRu4Gl4sg08Qg5ZG9w,190643
133
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=297gcRV57A-C-bPhQinu9wuwge6bXYuZsuHh9KLZ5o4,190710
134
134
  airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
135
135
  airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py,sha256=qB4lRUrCXLTE-a3VlpOLaazHiC7RIF_FIVJesuz7ebw,8078
136
136
  airbyte_cdk/sources/declarative/decoders/decoder.py,sha256=1PeKwuMK8x9dsA2zqUjSVinEWVSEgYcUS6npiW3aC2c,855
@@ -172,7 +172,7 @@ airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=wnRUP0Xeru9R
172
172
  airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=la9Ulpc0lQewiBLKJ0FpsWxyU5XISv-ulmFRHJLJ1Pc,11292
173
173
  airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py,sha256=EtKjS9c94yNp3AwQC8KUCQaAYW5T3zvFYxoWYjc_buI,19729
174
174
  airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=pJmg78vqE5VfUrF_KJnWjucQ4k9IWFULeAxHCowrHXE,6806
175
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=Fa5B6nLCk-MWmy3zMARWmtE3HpnY_W6VwJwavZQhBbQ,190797
175
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=_hTrgNFQlI76QP7B5xnXUK4tEj-tXuceluE898DUTIM,190833
176
176
  airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=TBC9AkGaUqHm2IKHMPN6punBIcY5tWGULowcLoAVkfw,1109
177
177
  airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
178
178
  airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=ocm4hZ4k-tEGs5HLrtI8ecWSK0hGqNH0Rvz2byx_HZk,6927
@@ -209,12 +209,12 @@ airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.
209
209
  airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py,sha256=ZBshGQNr5Bb_V8dqnWRISqdXFcjm1CKIXnlfbRhNl8g,1308
210
210
  airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py,sha256=wVTjBVxR2PJZ06W9wWQmNEe3mvWLnsm40s5HpYpNG-Y,2037
211
211
  airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py,sha256=sHwHVuN6djuRBF7zQb-HmINV0By4wE5j_i6TjmIPMzQ,494
212
- airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py,sha256=3h9Ae6TNGagh9sMYWdG5KoEFWDlqUWZ5fkswTPreveM,1616
213
- airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py,sha256=WwDVJAdDmX12i-fw-uve1J4uaHv4Efx6O1VtEMnyuK0,3178
212
+ airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py,sha256=YfPtj2KF6gDao7zi2j9f7z8mu6nIKN5kvyjBnJ1S-pE,1949
213
+ airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py,sha256=L1fX5LHhL_LEqbCBjF_-X7aPAdV07YboLlYi_cHiV_0,3174
214
214
  airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/__init__.py,sha256=xI2V-eurHx_AgwFW9b0Ftm4ivJPcCObHpGQtpssCW-g,410
215
215
  airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/json_schema_property_selector.py,sha256=_J-pJgOizb7oDvcGWntBQGfzYETsjCbHHmFJCOT6FO0,2392
216
216
  airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/property_selector.py,sha256=9RgHSuTPRhrhxhKwj0lpVQTbPQr0wWK809au6K6dgIw,736
217
- airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py,sha256=RNvFeCxTttXnKnQXaVizgZErd6KEvQFkWmK63zCM-F4,3253
217
+ airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py,sha256=G7LmMmegSOwZB_AoZHs5MS9-6I-huT1yxa2T_r-3pQc,2747
218
218
  airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py,sha256=ojiPj9eVU7SuNpF3RZwhZWW21IYLQYEoxpzg1rCdvNM,350
219
219
  airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py,sha256=np4uTwSpQvXxubIzVbwSDX0Xf3EgVn8kkhs6zYLOdAQ,1081
220
220
  airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py,sha256=iuk9QxpwvKVtdrq9eadQVkZ-Sfk3qhyyAAErprBfw2s,516
@@ -245,8 +245,9 @@ airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_
245
245
  airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py,sha256=1yfimzxm09d2j605cu_HhiYVDNVL1rUMi3vs_jYlIyY,330
246
246
  airbyte_cdk/sources/declarative/retrievers/pagination_tracker.py,sha256=h-3GfksrWaQUa1xIefq9eG-6_DuW77Vq8XDenv-hCps,2865
247
247
  airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=os5psYh8z7ZdCAvbfZeTpmjvPa7Qpx0mblpKf47ZaZM,1876
248
- airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=qGehym1keYpS-SofLSJ07qdhAY3odr8Op9clviqhacM,29859
248
+ airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=9vwStESZNrxh2y0Ym8aux0vXw4jsIcxLO4rc57BGpwA,29790
249
249
  airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
250
+ airbyte_cdk/sources/declarative/schema/caching_schema_loader_decorator.py,sha256=eEIhJPvNGv9e_uGTbflVVnrBU4zJmlkXEOW1Afbm_yE,586
250
251
  airbyte_cdk/sources/declarative/schema/composite_schema_loader.py,sha256=ymGbvxS_QyGc4nnjEyRo5ch8bVedELO41PAUxKXZyMw,1113
251
252
  airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=UnbzlExmwoQiVV8zDg4lhAEaqA_0pRfwbMRe8yqOuWk,1834
252
253
  airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py,sha256=QJsEcwJcRQai3nCE0NQwZ18U2mvwGsVH2rF_TSrfzpE,11214
@@ -256,7 +257,7 @@ airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLn
256
257
  airbyte_cdk/sources/declarative/spec/__init__.py,sha256=9FYO-fVOclrwjAW4qwRTbZRVopTc9rOaauAJfThdNCQ,177
257
258
  airbyte_cdk/sources/declarative/spec/spec.py,sha256=SwL_pfXZgcLYLJY-MAeFMHug9oYh2tOWjgG0C3DoLOY,3602
258
259
  airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=UX-cP_C-9FIFFPL9z8nuxu_rglssRsMOqQmQHN8FLB8,341
259
- airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=LLr5U_6UI3zp4i9gvP8dawIcdE-UYTSa-B0l5qkDW3Q,6161
260
+ airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py,sha256=ccmJ4hninHZQDNGFbK8tD927fgGcfNjdJWE542PDzNQ,5652
260
261
  airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=SOkIPBi2Wu7yxIvA15yFzUAB95a3IzA8LPq5DEqHQQc,725
261
262
  airbyte_cdk/sources/declarative/stream_slicers/stream_slicer_test_read_decorator.py,sha256=4vit5ADyhoZnd1psRVeM5jdySYzhjwspLVXxh8vt1M8,944
262
263
  airbyte_cdk/sources/declarative/transformations/__init__.py,sha256=CPJ8TlMpiUmvG3624VYu_NfTzxwKcfBjM2Q2wJ7fkSA,919
@@ -403,7 +404,7 @@ airbyte_cdk/sources/utils/files_directory.py,sha256=z8Dmr-wkL1sAqdwCST4MBUFAyMHP
403
404
  airbyte_cdk/sources/utils/record_helper.py,sha256=7wL-pDYrBpcmZHa8ORtiSOqBZJEZI5hdl2dA1RYiatk,2029
404
405
  airbyte_cdk/sources/utils/schema_helpers.py,sha256=_SCOPalKoMW3SX9J-zK6UsAO0oHsfCyW-F2wQlPJ3PU,9145
405
406
  airbyte_cdk/sources/utils/slice_logger.py,sha256=M1TvcYGMftXR841XdJmeEpKpQqrdOD5X-qsspfAMKMs,2168
406
- airbyte_cdk/sources/utils/transform.py,sha256=b45WBpkdhsRDJZa95DnwfTcc5eJHmBBSs1CWP6CHJt8,11914
407
+ airbyte_cdk/sources/utils/transform.py,sha256=1ph3cQOZR-wwxlwVEcqT7aYDgf0Auh601bbVrHCLQN8,11260
407
408
  airbyte_cdk/sources/utils/types.py,sha256=41ZQR681t5TUnOScij58d088sb99klH_ZENFcaYro_g,175
408
409
  airbyte_cdk/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
409
410
  airbyte_cdk/sql/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -462,9 +463,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
462
463
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=9YDJmnIGFsT51CVQf2tSSvTapGimITjEFGbUTSZAGTI,963
463
464
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
464
465
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
465
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
466
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
467
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/METADATA,sha256=E6jreMXK3iK-vgYhx0RcRaAZC-l2MZqOeIOHBNbLOq4,6913
468
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
469
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
470
- airbyte_cdk-7.4.0.post2.dev18763111899.dist-info/RECORD,,
466
+ airbyte_cdk-7.4.1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
467
+ airbyte_cdk-7.4.1.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
468
+ airbyte_cdk-7.4.1.dist-info/METADATA,sha256=CBRf66GopXrkqkRTQfGpp-VwO0UKXUYFrHiPVH317Uo,6892
469
+ airbyte_cdk-7.4.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
470
+ airbyte_cdk-7.4.1.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
471
+ airbyte_cdk-7.4.1.dist-info/RECORD,,