airbyte-cdk 7.3.10.dev1__py3-none-any.whl → 7.4.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/concurrent_declarative_source.py +1 -0
 - airbyte_cdk/sources/declarative/declarative_component_schema.yaml +34 -2
 - airbyte_cdk/sources/declarative/models/declarative_component_schema.py +30 -0
 - airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +60 -2
 - airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +7 -2
 - airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/__init__.py +10 -0
 - airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/json_schema_property_selector.py +54 -0
 - airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/property_selector.py +24 -0
 - airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +28 -4
 - airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/METADATA +1 -1
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/RECORD +16 -13
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/LICENSE.txt +0 -0
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/LICENSE_SHORT +0 -0
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/WHEEL +0 -0
 - {airbyte_cdk-7.3.10.dev1.dist-info → airbyte_cdk-7.4.0.dist-info}/entry_points.txt +0 -0
 
| 
         @@ -169,6 +169,7 @@ class ConcurrentDeclarativeSource(Source): 
     | 
|
| 
       169 
169 
     | 
    
         
             
                    component_factory = ModelToComponentFactory(
         
     | 
| 
       170 
170 
     | 
    
         
             
                        emit_connector_builder_messages=emit_connector_builder_messages,
         
     | 
| 
       171 
171 
     | 
    
         
             
                        message_repository=ConcurrentMessageRepository(queue, message_repository),
         
     | 
| 
      
 172 
     | 
    
         
            +
                        configured_catalog=catalog,
         
     | 
| 
       172 
173 
     | 
    
         
             
                        connector_state_manager=self._connector_state_manager,
         
     | 
| 
       173 
174 
     | 
    
         
             
                        max_concurrent_async_job_count=source_config.get("max_concurrent_async_job_count"),
         
     | 
| 
       174 
175 
     | 
    
         
             
                        limit_pages_fetched_per_slice=limits.max_pages_per_slice if limits else None,
         
     | 
| 
         @@ -2520,6 +2520,34 @@ definitions: 
     | 
|
| 
       2520 
2520 
     | 
    
         
             
                  type:
         
     | 
| 
       2521 
2521 
     | 
    
         
             
                    type: string
         
     | 
| 
       2522 
2522 
     | 
    
         
             
                    enum: [JsonlDecoder]
         
     | 
| 
      
 2523 
     | 
    
         
            +
              JsonSchemaPropertySelector:
         
     | 
| 
      
 2524 
     | 
    
         
            +
                title: Json Schema Property Selector
         
     | 
| 
      
 2525 
     | 
    
         
            +
                description: When configured, the JSON schema supplied in the catalog containing which columns are selected for the current stream will be used to reduce which query properties will be included in the outbound API request. This can improve the performance of API requests, especially for those requiring multiple requests to get a complete record.
         
     | 
| 
      
 2526 
     | 
    
         
            +
                type: object
         
     | 
| 
      
 2527 
     | 
    
         
            +
                required:
         
     | 
| 
      
 2528 
     | 
    
         
            +
                  - type
         
     | 
| 
      
 2529 
     | 
    
         
            +
                properties:
         
     | 
| 
      
 2530 
     | 
    
         
            +
                  type:
         
     | 
| 
      
 2531 
     | 
    
         
            +
                    type: string
         
     | 
| 
      
 2532 
     | 
    
         
            +
                    enum: [JsonSchemaPropertySelector]
         
     | 
| 
      
 2533 
     | 
    
         
            +
                  transformations:
         
     | 
| 
      
 2534 
     | 
    
         
            +
                    title: Transformations
         
     | 
| 
      
 2535 
     | 
    
         
            +
                    description: A list of transformations to be applied on the customer configured schema that will be used to filter out unselected fields when specifying query properties for API requests.
         
     | 
| 
      
 2536 
     | 
    
         
            +
                    linkable: true
         
     | 
| 
      
 2537 
     | 
    
         
            +
                    type: array
         
     | 
| 
      
 2538 
     | 
    
         
            +
                    items:
         
     | 
| 
      
 2539 
     | 
    
         
            +
                      anyOf:
         
     | 
| 
      
 2540 
     | 
    
         
            +
                        - "$ref": "#/definitions/AddFields"
         
     | 
| 
      
 2541 
     | 
    
         
            +
                        - "$ref": "#/definitions/RemoveFields"
         
     | 
| 
      
 2542 
     | 
    
         
            +
                        - "$ref": "#/definitions/KeysToLower"
         
     | 
| 
      
 2543 
     | 
    
         
            +
                        - "$ref": "#/definitions/KeysToSnakeCase"
         
     | 
| 
      
 2544 
     | 
    
         
            +
                        - "$ref": "#/definitions/FlattenFields"
         
     | 
| 
      
 2545 
     | 
    
         
            +
                        - "$ref": "#/definitions/DpathFlattenFields"
         
     | 
| 
      
 2546 
     | 
    
         
            +
                        - "$ref": "#/definitions/KeysReplace"
         
     | 
| 
      
 2547 
     | 
    
         
            +
                        - "$ref": "#/definitions/CustomTransformation"
         
     | 
| 
      
 2548 
     | 
    
         
            +
                  $parameters:
         
     | 
| 
      
 2549 
     | 
    
         
            +
                    type: object
         
     | 
| 
      
 2550 
     | 
    
         
            +
                    additionalProperties: true
         
     | 
| 
       2523 
2551 
     | 
    
         
             
              KeysToLower:
         
     | 
| 
       2524 
2552 
     | 
    
         
             
                title: Keys to Lower Case
         
     | 
| 
       2525 
2553 
     | 
    
         
             
                description: A transformation that renames all keys to lower case.
         
     | 
| 
         @@ -3410,6 +3438,10 @@ definitions: 
     | 
|
| 
       3410 
3438 
     | 
    
         
             
                    title: Property Chunking
         
     | 
| 
       3411 
3439 
     | 
    
         
             
                    description: Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.
         
     | 
| 
       3412 
3440 
     | 
    
         
             
                    "$ref": "#/definitions/PropertyChunking"
         
     | 
| 
      
 3441 
     | 
    
         
            +
                  property_selector:
         
     | 
| 
      
 3442 
     | 
    
         
            +
                    title: Property Selector
         
     | 
| 
      
 3443 
     | 
    
         
            +
                    description: Defines where to look for and which query properties that should be sent in outbound API requests. For example, you can specify that only the selected columns of a stream should be in the request.
         
     | 
| 
      
 3444 
     | 
    
         
            +
                    "$ref": "#/definitions/JsonSchemaPropertySelector"
         
     | 
| 
       3413 
3445 
     | 
    
         
             
                  $parameters:
         
     | 
| 
       3414 
3446 
     | 
    
         
             
                    type: object
         
     | 
| 
       3415 
3447 
     | 
    
         
             
                    additionalProperties: true
         
     | 
| 
         @@ -3746,7 +3778,7 @@ definitions: 
     | 
|
| 
       3746 
3778 
     | 
    
         
             
                properties:
         
     | 
| 
       3747 
3779 
     | 
    
         
             
                  type:
         
     | 
| 
       3748 
3780 
     | 
    
         
             
                    type: string
         
     | 
| 
       3749 
     | 
    
         
            -
                    enum: [ 
     | 
| 
      
 3781 
     | 
    
         
            +
                    enum: [PaginationReset]
         
     | 
| 
       3750 
3782 
     | 
    
         
             
                  action:
         
     | 
| 
       3751 
3783 
     | 
    
         
             
                    type: string
         
     | 
| 
       3752 
3784 
     | 
    
         
             
                    enum:
         
     | 
| 
         @@ -3763,7 +3795,7 @@ definitions: 
     | 
|
| 
       3763 
3795 
     | 
    
         
             
                properties:
         
     | 
| 
       3764 
3796 
     | 
    
         
             
                  type:
         
     | 
| 
       3765 
3797 
     | 
    
         
             
                    type: string
         
     | 
| 
       3766 
     | 
    
         
            -
                    enum: [ 
     | 
| 
      
 3798 
     | 
    
         
            +
                    enum: [PaginationResetLimits]
         
     | 
| 
       3767 
3799 
     | 
    
         
             
                  number_of_records:
         
     | 
| 
       3768 
3800 
     | 
    
         
             
                    type: integer
         
     | 
| 
       3769 
3801 
     | 
    
         
             
              GzipDecoder:
         
     | 
| 
         @@ -1,3 +1,5 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            # generated by datamodel-codegen:
         
     | 
| 
       2 
4 
     | 
    
         
             
            #   filename:  declarative_component_schema.yaml
         
     | 
| 
       3 
5 
     | 
    
         | 
| 
         @@ -2029,6 +2031,29 @@ class SessionTokenRequestApiKeyAuthenticator(BaseModel): 
     | 
|
| 
       2029 
2031 
     | 
    
         
             
                )
         
     | 
| 
       2030 
2032 
     | 
    
         | 
| 
       2031 
2033 
     | 
    
         | 
| 
      
 2034 
     | 
    
         
            +
            class JsonSchemaPropertySelector(BaseModel):
         
     | 
| 
      
 2035 
     | 
    
         
            +
                type: Literal["JsonSchemaPropertySelector"]
         
     | 
| 
      
 2036 
     | 
    
         
            +
                transformations: Optional[
         
     | 
| 
      
 2037 
     | 
    
         
            +
                    List[
         
     | 
| 
      
 2038 
     | 
    
         
            +
                        Union[
         
     | 
| 
      
 2039 
     | 
    
         
            +
                            AddFields,
         
     | 
| 
      
 2040 
     | 
    
         
            +
                            RemoveFields,
         
     | 
| 
      
 2041 
     | 
    
         
            +
                            KeysToLower,
         
     | 
| 
      
 2042 
     | 
    
         
            +
                            KeysToSnakeCase,
         
     | 
| 
      
 2043 
     | 
    
         
            +
                            FlattenFields,
         
     | 
| 
      
 2044 
     | 
    
         
            +
                            DpathFlattenFields,
         
     | 
| 
      
 2045 
     | 
    
         
            +
                            KeysReplace,
         
     | 
| 
      
 2046 
     | 
    
         
            +
                            CustomTransformation,
         
     | 
| 
      
 2047 
     | 
    
         
            +
                        ]
         
     | 
| 
      
 2048 
     | 
    
         
            +
                    ]
         
     | 
| 
      
 2049 
     | 
    
         
            +
                ] = Field(
         
     | 
| 
      
 2050 
     | 
    
         
            +
                    None,
         
     | 
| 
      
 2051 
     | 
    
         
            +
                    description="A list of transformations to be applied on the customer configured schema that will be used to filter out unselected fields when specifying query properties for API requests.",
         
     | 
| 
      
 2052 
     | 
    
         
            +
                    title="Transformations",
         
     | 
| 
      
 2053 
     | 
    
         
            +
                )
         
     | 
| 
      
 2054 
     | 
    
         
            +
                parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
         
     | 
| 
      
 2055 
     | 
    
         
            +
             
     | 
| 
      
 2056 
     | 
    
         
            +
             
     | 
| 
       2032 
2057 
     | 
    
         
             
            class ListPartitionRouter(BaseModel):
         
     | 
| 
       2033 
2058 
     | 
    
         
             
                type: Literal["ListPartitionRouter"]
         
     | 
| 
       2034 
2059 
     | 
    
         
             
                cursor_field: str = Field(
         
     | 
| 
         @@ -2799,6 +2824,11 @@ class QueryProperties(BaseModel): 
     | 
|
| 
       2799 
2824 
     | 
    
         
             
                    description="Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.",
         
     | 
| 
       2800 
2825 
     | 
    
         
             
                    title="Property Chunking",
         
     | 
| 
       2801 
2826 
     | 
    
         
             
                )
         
     | 
| 
      
 2827 
     | 
    
         
            +
                property_selector: Optional[JsonSchemaPropertySelector] = Field(
         
     | 
| 
      
 2828 
     | 
    
         
            +
                    None,
         
     | 
| 
      
 2829 
     | 
    
         
            +
                    description="Defines where to look for and which query properties that should be sent in outbound API requests. For example, you can specify that only the selected columns of a stream should be in the request.",
         
     | 
| 
      
 2830 
     | 
    
         
            +
                    title="Property Selector",
         
     | 
| 
      
 2831 
     | 
    
         
            +
                )
         
     | 
| 
       2802 
2832 
     | 
    
         
             
                parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
         
     | 
| 
       2803 
2833 
     | 
    
         | 
| 
       2804 
2834 
     | 
    
         | 
| 
         @@ -26,6 +26,7 @@ from typing import ( 
     | 
|
| 
       26 
26 
     | 
    
         
             
                get_type_hints,
         
     | 
| 
       27 
27 
     | 
    
         
             
            )
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
            from airbyte_protocol_dataclasses.models import ConfiguredAirbyteStream
         
     | 
| 
       29 
30 
     | 
    
         
             
            from isodate import parse_duration
         
     | 
| 
       30 
31 
     | 
    
         
             
            from pydantic.v1 import BaseModel
         
     | 
| 
       31 
32 
     | 
    
         
             
            from requests import Response
         
     | 
| 
         @@ -42,6 +43,7 @@ from airbyte_cdk.models import ( 
     | 
|
| 
       42 
43 
     | 
    
         
             
                AirbyteStateMessage,
         
     | 
| 
       43 
44 
     | 
    
         
             
                AirbyteStateType,
         
     | 
| 
       44 
45 
     | 
    
         
             
                AirbyteStreamState,
         
     | 
| 
      
 46 
     | 
    
         
            +
                ConfiguredAirbyteCatalog,
         
     | 
| 
       45 
47 
     | 
    
         
             
                FailureType,
         
     | 
| 
       46 
48 
     | 
    
         
             
                Level,
         
     | 
| 
       47 
49 
     | 
    
         
             
                StreamDescriptor,
         
     | 
| 
         @@ -314,6 +316,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import 
     | 
|
| 
       314 
316 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
         
     | 
| 
       315 
317 
     | 
    
         
             
                JsonlDecoder as JsonlDecoderModel,
         
     | 
| 
       316 
318 
     | 
    
         
             
            )
         
     | 
| 
      
 319 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
         
     | 
| 
      
 320 
     | 
    
         
            +
                JsonSchemaPropertySelector as JsonSchemaPropertySelectorModel,
         
     | 
| 
      
 321 
     | 
    
         
            +
            )
         
     | 
| 
       317 
322 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
         
     | 
| 
       318 
323 
     | 
    
         
             
                JwtAuthenticator as JwtAuthenticatorModel,
         
     | 
| 
       319 
324 
     | 
    
         
             
            )
         
     | 
| 
         @@ -501,6 +506,9 @@ from airbyte_cdk.sources.declarative.requesters.query_properties import ( 
     | 
|
| 
       501 
506 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_chunking import (
         
     | 
| 
       502 
507 
     | 
    
         
             
                PropertyLimitType,
         
     | 
| 
       503 
508 
     | 
    
         
             
            )
         
     | 
| 
      
 509 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_selector import (
         
     | 
| 
      
 510 
     | 
    
         
            +
                JsonSchemaPropertySelector,
         
     | 
| 
      
 511 
     | 
    
         
            +
            )
         
     | 
| 
       504 
512 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.requesters.query_properties.strategies import (
         
     | 
| 
       505 
513 
     | 
    
         
             
                GroupByKey,
         
     | 
| 
       506 
514 
     | 
    
         
             
            )
         
     | 
| 
         @@ -668,6 +676,7 @@ class ModelToComponentFactory: 
     | 
|
| 
       668 
676 
     | 
    
         
             
                    message_repository: Optional[MessageRepository] = None,
         
     | 
| 
       669 
677 
     | 
    
         
             
                    connector_state_manager: Optional[ConnectorStateManager] = None,
         
     | 
| 
       670 
678 
     | 
    
         
             
                    max_concurrent_async_job_count: Optional[int] = None,
         
     | 
| 
      
 679 
     | 
    
         
            +
                    configured_catalog: Optional[ConfiguredAirbyteCatalog] = None,
         
     | 
| 
       671 
680 
     | 
    
         
             
                ):
         
     | 
| 
       672 
681 
     | 
    
         
             
                    self._init_mappings()
         
     | 
| 
       673 
682 
     | 
    
         
             
                    self._limit_pages_fetched_per_slice = limit_pages_fetched_per_slice
         
     | 
| 
         @@ -678,6 +687,9 @@ class ModelToComponentFactory: 
     | 
|
| 
       678 
687 
     | 
    
         
             
                    self._message_repository = message_repository or InMemoryMessageRepository(
         
     | 
| 
       679 
688 
     | 
    
         
             
                        self._evaluate_log_level(emit_connector_builder_messages)
         
     | 
| 
       680 
689 
     | 
    
         
             
                    )
         
     | 
| 
      
 690 
     | 
    
         
            +
                    self._stream_name_to_configured_stream = self._create_stream_name_to_configured_stream(
         
     | 
| 
      
 691 
     | 
    
         
            +
                        configured_catalog
         
     | 
| 
      
 692 
     | 
    
         
            +
                    )
         
     | 
| 
       681 
693 
     | 
    
         
             
                    self._connector_state_manager = connector_state_manager or ConnectorStateManager()
         
     | 
| 
       682 
694 
     | 
    
         
             
                    self._api_budget: Optional[Union[APIBudget, HttpAPIBudget]] = None
         
     | 
| 
       683 
695 
     | 
    
         
             
                    self._job_tracker: JobTracker = JobTracker(max_concurrent_async_job_count or 1)
         
     | 
| 
         @@ -734,6 +746,7 @@ class ModelToComponentFactory: 
     | 
|
| 
       734 
746 
     | 
    
         
             
                        InlineSchemaLoaderModel: self.create_inline_schema_loader,
         
     | 
| 
       735 
747 
     | 
    
         
             
                        JsonDecoderModel: self.create_json_decoder,
         
     | 
| 
       736 
748 
     | 
    
         
             
                        JsonlDecoderModel: self.create_jsonl_decoder,
         
     | 
| 
      
 749 
     | 
    
         
            +
                        JsonSchemaPropertySelectorModel: self.create_json_schema_property_selector,
         
     | 
| 
       737 
750 
     | 
    
         
             
                        GzipDecoderModel: self.create_gzip_decoder,
         
     | 
| 
       738 
751 
     | 
    
         
             
                        KeysToLowerModel: self.create_keys_to_lower_transformation,
         
     | 
| 
       739 
752 
     | 
    
         
             
                        KeysToSnakeCaseModel: self.create_keys_to_snake_transformation,
         
     | 
| 
         @@ -796,6 +809,16 @@ class ModelToComponentFactory: 
     | 
|
| 
       796 
809 
     | 
    
         
             
                    # Needed for the case where we need to perform a second parse on the fields of a custom component
         
     | 
| 
       797 
810 
     | 
    
         
             
                    self.TYPE_NAME_TO_MODEL = {cls.__name__: cls for cls in self.PYDANTIC_MODEL_TO_CONSTRUCTOR}
         
     | 
| 
       798 
811 
     | 
    
         | 
| 
      
 812 
     | 
    
         
            +
                @staticmethod
         
     | 
| 
      
 813 
     | 
    
         
            +
                def _create_stream_name_to_configured_stream(
         
     | 
| 
      
 814 
     | 
    
         
            +
                    configured_catalog: Optional[ConfiguredAirbyteCatalog],
         
     | 
| 
      
 815 
     | 
    
         
            +
                ) -> Mapping[str, ConfiguredAirbyteStream]:
         
     | 
| 
      
 816 
     | 
    
         
            +
                    return (
         
     | 
| 
      
 817 
     | 
    
         
            +
                        {stream.stream.name: stream for stream in configured_catalog.streams}
         
     | 
| 
      
 818 
     | 
    
         
            +
                        if configured_catalog
         
     | 
| 
      
 819 
     | 
    
         
            +
                        else {}
         
     | 
| 
      
 820 
     | 
    
         
            +
                    )
         
     | 
| 
      
 821 
     | 
    
         
            +
             
     | 
| 
       799 
822 
     | 
    
         
             
                def create_component(
         
     | 
| 
       800 
823 
     | 
    
         
             
                    self,
         
     | 
| 
       801 
824 
     | 
    
         
             
                    model_type: Type[BaseModel],
         
     | 
| 
         @@ -2987,7 +3010,7 @@ class ModelToComponentFactory: 
     | 
|
| 
       2987 
3010 
     | 
    
         
             
                    )
         
     | 
| 
       2988 
3011 
     | 
    
         | 
| 
       2989 
3012 
     | 
    
         
             
                def create_query_properties(
         
     | 
| 
       2990 
     | 
    
         
            -
                    self, model: QueryPropertiesModel, config: Config, **kwargs: Any
         
     | 
| 
      
 3013 
     | 
    
         
            +
                    self, model: QueryPropertiesModel, config: Config, *, stream_name: str, **kwargs: Any
         
     | 
| 
       2991 
3014 
     | 
    
         
             
                ) -> QueryProperties:
         
     | 
| 
       2992 
3015 
     | 
    
         
             
                    if isinstance(model.property_list, list):
         
     | 
| 
       2993 
3016 
     | 
    
         
             
                        property_list = model.property_list
         
     | 
| 
         @@ -3004,10 +3027,43 @@ class ModelToComponentFactory: 
     | 
|
| 
       3004 
3027 
     | 
    
         
             
                        else None
         
     | 
| 
       3005 
3028 
     | 
    
         
             
                    )
         
     | 
| 
       3006 
3029 
     | 
    
         | 
| 
      
 3030 
     | 
    
         
            +
                    property_selector = (
         
     | 
| 
      
 3031 
     | 
    
         
            +
                        self._create_component_from_model(
         
     | 
| 
      
 3032 
     | 
    
         
            +
                            model=model.property_selector, config=config, stream_name=stream_name, **kwargs
         
     | 
| 
      
 3033 
     | 
    
         
            +
                        )
         
     | 
| 
      
 3034 
     | 
    
         
            +
                        if model.property_selector
         
     | 
| 
      
 3035 
     | 
    
         
            +
                        else None
         
     | 
| 
      
 3036 
     | 
    
         
            +
                    )
         
     | 
| 
      
 3037 
     | 
    
         
            +
             
     | 
| 
       3007 
3038 
     | 
    
         
             
                    return QueryProperties(
         
     | 
| 
       3008 
3039 
     | 
    
         
             
                        property_list=property_list,
         
     | 
| 
       3009 
3040 
     | 
    
         
             
                        always_include_properties=model.always_include_properties,
         
     | 
| 
       3010 
3041 
     | 
    
         
             
                        property_chunking=property_chunking,
         
     | 
| 
      
 3042 
     | 
    
         
            +
                        property_selector=property_selector,
         
     | 
| 
      
 3043 
     | 
    
         
            +
                        config=config,
         
     | 
| 
      
 3044 
     | 
    
         
            +
                        parameters=model.parameters or {},
         
     | 
| 
      
 3045 
     | 
    
         
            +
                    )
         
     | 
| 
      
 3046 
     | 
    
         
            +
             
     | 
| 
      
 3047 
     | 
    
         
            +
                def create_json_schema_property_selector(
         
     | 
| 
      
 3048 
     | 
    
         
            +
                    self,
         
     | 
| 
      
 3049 
     | 
    
         
            +
                    model: JsonSchemaPropertySelectorModel,
         
     | 
| 
      
 3050 
     | 
    
         
            +
                    config: Config,
         
     | 
| 
      
 3051 
     | 
    
         
            +
                    *,
         
     | 
| 
      
 3052 
     | 
    
         
            +
                    stream_name: str,
         
     | 
| 
      
 3053 
     | 
    
         
            +
                    **kwargs: Any,
         
     | 
| 
      
 3054 
     | 
    
         
            +
                ) -> JsonSchemaPropertySelector:
         
     | 
| 
      
 3055 
     | 
    
         
            +
                    configured_stream = self._stream_name_to_configured_stream.get(stream_name)
         
     | 
| 
      
 3056 
     | 
    
         
            +
             
     | 
| 
      
 3057 
     | 
    
         
            +
                    transformations = []
         
     | 
| 
      
 3058 
     | 
    
         
            +
                    if model.transformations:
         
     | 
| 
      
 3059 
     | 
    
         
            +
                        for transformation_model in model.transformations:
         
     | 
| 
      
 3060 
     | 
    
         
            +
                            transformations.append(
         
     | 
| 
      
 3061 
     | 
    
         
            +
                                self._create_component_from_model(model=transformation_model, config=config)
         
     | 
| 
      
 3062 
     | 
    
         
            +
                            )
         
     | 
| 
      
 3063 
     | 
    
         
            +
             
     | 
| 
      
 3064 
     | 
    
         
            +
                    return JsonSchemaPropertySelector(
         
     | 
| 
      
 3065 
     | 
    
         
            +
                        configured_stream=configured_stream,
         
     | 
| 
      
 3066 
     | 
    
         
            +
                        properties_transformations=transformations,
         
     | 
| 
       3011 
3067 
     | 
    
         
             
                        config=config,
         
     | 
| 
       3012 
3068 
     | 
    
         
             
                        parameters=model.parameters or {},
         
     | 
| 
       3013 
3069 
     | 
    
         
             
                    )
         
     | 
| 
         @@ -3235,7 +3291,7 @@ class ModelToComponentFactory: 
     | 
|
| 
       3235 
3291 
     | 
    
         | 
| 
       3236 
3292 
     | 
    
         
             
                        if len(query_properties_definitions) == 1:
         
     | 
| 
       3237 
3293 
     | 
    
         
             
                            query_properties = self._create_component_from_model(
         
     | 
| 
       3238 
     | 
    
         
            -
                                model=query_properties_definitions[0], config=config
         
     | 
| 
      
 3294 
     | 
    
         
            +
                                model=query_properties_definitions[0], stream_name=name, config=config
         
     | 
| 
       3239 
3295 
     | 
    
         
             
                            )
         
     | 
| 
       3240 
3296 
     | 
    
         | 
| 
       3241 
3297 
     | 
    
         
             
                        # Removes QueryProperties components from the interpolated mappings because it has been designed
         
     | 
| 
         @@ -3261,11 +3317,13 @@ class ModelToComponentFactory: 
     | 
|
| 
       3261 
3317 
     | 
    
         | 
| 
       3262 
3318 
     | 
    
         
             
                        query_properties = self.create_query_properties(
         
     | 
| 
       3263 
3319 
     | 
    
         
             
                            model=query_properties_definition,
         
     | 
| 
      
 3320 
     | 
    
         
            +
                            stream_name=name,
         
     | 
| 
       3264 
3321 
     | 
    
         
             
                            config=config,
         
     | 
| 
       3265 
3322 
     | 
    
         
             
                        )
         
     | 
| 
       3266 
3323 
     | 
    
         
             
                    elif hasattr(model.requester, "query_properties") and model.requester.query_properties:
         
     | 
| 
       3267 
3324 
     | 
    
         
             
                        query_properties = self.create_query_properties(
         
     | 
| 
       3268 
3325 
     | 
    
         
             
                            model=model.requester.query_properties,
         
     | 
| 
      
 3326 
     | 
    
         
            +
                            stream_name=name,
         
     | 
| 
       3269 
3327 
     | 
    
         
             
                            config=config,
         
     | 
| 
       3270 
3328 
     | 
    
         
             
                        )
         
     | 
| 
       3271 
3329 
     | 
    
         | 
| 
         @@ -2,7 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            from dataclasses import InitVar, dataclass
         
     | 
| 
       4 
4 
     | 
    
         
             
            from enum import Enum
         
     | 
| 
       5 
     | 
    
         
            -
            from typing import Any, Iterable, List, Mapping, Optional
         
     | 
| 
      
 5 
     | 
    
         
            +
            from typing import Any, Iterable, List, Mapping, Optional, Set
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.requesters.query_properties.strategies import GroupByKey
         
     | 
| 
       8 
8 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.requesters.query_properties.strategies.merge_strategy import (
         
     | 
| 
         @@ -40,7 +40,10 @@ class PropertyChunking: 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    )
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
                def get_request_property_chunks(
         
     | 
| 
       43 
     | 
    
         
            -
                    self, 
     | 
| 
      
 43 
     | 
    
         
            +
                    self,
         
     | 
| 
      
 44 
     | 
    
         
            +
                    property_fields: Iterable[str],
         
     | 
| 
      
 45 
     | 
    
         
            +
                    always_include_properties: Optional[List[str]],
         
     | 
| 
      
 46 
     | 
    
         
            +
                    configured_properties: Optional[Set[str]],
         
     | 
| 
       44 
47 
     | 
    
         
             
                ) -> Iterable[List[str]]:
         
     | 
| 
       45 
48 
     | 
    
         
             
                    if not self.property_limit:
         
     | 
| 
       46 
49 
     | 
    
         
             
                        single_property_chunk = list(property_fields)
         
     | 
| 
         @@ -53,6 +56,8 @@ class PropertyChunking: 
     | 
|
| 
       53 
56 
     | 
    
         
             
                    for property_field in property_fields:
         
     | 
| 
       54 
57 
     | 
    
         
             
                        # If property_limit_type is not defined, we default to property_count which is just an incrementing count
         
     | 
| 
       55 
58 
     | 
    
         
             
                        # todo: Add ability to specify parameter delimiter representation and take into account in property_field_size
         
     | 
| 
      
 59 
     | 
    
         
            +
                        if configured_properties is not None and property_field not in configured_properties:
         
     | 
| 
      
 60 
     | 
    
         
            +
                            continue
         
     | 
| 
       56 
61 
     | 
    
         
             
                        property_field_size = (
         
     | 
| 
       57 
62 
     | 
    
         
             
                            len(property_field)
         
     | 
| 
       58 
63 
     | 
    
         
             
                            + 3  # The +3 represents the extra characters for encoding the delimiter in between properties
         
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_selector.json_schema_property_selector import (
         
     | 
| 
      
 4 
     | 
    
         
            +
                JsonSchemaPropertySelector,
         
     | 
| 
      
 5 
     | 
    
         
            +
            )
         
     | 
| 
      
 6 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_selector.property_selector import (
         
     | 
| 
      
 7 
     | 
    
         
            +
                PropertySelector,
         
     | 
| 
      
 8 
     | 
    
         
            +
            )
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            __all__ = ["JsonSchemaPropertySelector", "PropertySelector"]
         
     | 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
            import copy
         
     | 
| 
      
 3 
     | 
    
         
            +
            from dataclasses import InitVar, dataclass, field
         
     | 
| 
      
 4 
     | 
    
         
            +
            from typing import Any, List, Mapping, Optional, Set
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            from airbyte_protocol_dataclasses.models import ConfiguredAirbyteStream
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_selector.property_selector import (
         
     | 
| 
      
 9 
     | 
    
         
            +
                PropertySelector,
         
     | 
| 
      
 10 
     | 
    
         
            +
            )
         
     | 
| 
      
 11 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.transformations import RecordTransformation
         
     | 
| 
      
 12 
     | 
    
         
            +
            from airbyte_cdk.sources.types import Config
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            @dataclass
         
     | 
| 
      
 16 
     | 
    
         
            +
            class JsonSchemaPropertySelector(PropertySelector):
         
     | 
| 
      
 17 
     | 
    
         
            +
                """
         
     | 
| 
      
 18 
     | 
    
         
            +
                A class that contains a list of transformations to apply to properties.
         
     | 
| 
      
 19 
     | 
    
         
            +
                """
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                config: Config
         
     | 
| 
      
 22 
     | 
    
         
            +
                parameters: InitVar[Mapping[str, Any]]
         
     | 
| 
      
 23 
     | 
    
         
            +
                # For other non-read operations, there is no configured catalog and therefore no schema selection
         
     | 
| 
      
 24 
     | 
    
         
            +
                configured_stream: Optional[ConfiguredAirbyteStream] = None
         
     | 
| 
      
 25 
     | 
    
         
            +
                properties_transformations: List[RecordTransformation] = field(default_factory=lambda: [])
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                def __post_init__(self, parameters: Mapping[str, Any]) -> None:
         
     | 
| 
      
 28 
     | 
    
         
            +
                    self._parameters = parameters
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def select(self) -> Optional[Set[str]]:
         
     | 
| 
      
 31 
     | 
    
         
            +
                    """
         
     | 
| 
      
 32 
     | 
    
         
            +
                    Returns the set of properties that have been selected for the configured stream. The intent being that
         
     | 
| 
      
 33 
     | 
    
         
            +
                    we should only query for selected properties not all since disabled properties are discarded.
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    When configured_stream is None, then there was no incoming catalog and all fields should be retrieved.
         
     | 
| 
      
 36 
     | 
    
         
            +
                    This is different from the empty set where the json_schema was empty and no schema fields were selected.
         
     | 
| 
      
 37 
     | 
    
         
            +
                    """
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                    # For CHECK/DISCOVER operations, there is no catalog and therefore no configured stream or selected
         
     | 
| 
      
 40 
     | 
    
         
            +
                    # columns. In this case we return None which is interpreted by the QueryProperties component to not
         
     | 
| 
      
 41 
     | 
    
         
            +
                    # perform any filtering of schema properties and fetch all of them
         
     | 
| 
      
 42 
     | 
    
         
            +
                    if self.configured_stream is None:
         
     | 
| 
      
 43 
     | 
    
         
            +
                        return None
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    schema_properties = copy.deepcopy(
         
     | 
| 
      
 46 
     | 
    
         
            +
                        self.configured_stream.stream.json_schema.get("properties", {})
         
     | 
| 
      
 47 
     | 
    
         
            +
                    )
         
     | 
| 
      
 48 
     | 
    
         
            +
                    if self.properties_transformations:
         
     | 
| 
      
 49 
     | 
    
         
            +
                        for transformation in self.properties_transformations:
         
     | 
| 
      
 50 
     | 
    
         
            +
                            transformation.transform(
         
     | 
| 
      
 51 
     | 
    
         
            +
                                record=schema_properties,
         
     | 
| 
      
 52 
     | 
    
         
            +
                                config=self.config,
         
     | 
| 
      
 53 
     | 
    
         
            +
                            )
         
     | 
| 
      
 54 
     | 
    
         
            +
                    return set(schema_properties.keys())
         
     | 
    
        airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/property_selector.py
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            from abc import ABC, abstractmethod
         
     | 
| 
      
 4 
     | 
    
         
            +
            from dataclasses import dataclass
         
     | 
| 
      
 5 
     | 
    
         
            +
            from typing import Optional, Set
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            @dataclass
         
     | 
| 
      
 9 
     | 
    
         
            +
            class PropertySelector(ABC):
         
     | 
| 
      
 10 
     | 
    
         
            +
                """
         
     | 
| 
      
 11 
     | 
    
         
            +
                Describes the interface for selecting and transforming properties from a configured stream's schema
         
     | 
| 
      
 12 
     | 
    
         
            +
                to determine which properties should be queried from the API.
         
     | 
| 
      
 13 
     | 
    
         
            +
                """
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                @abstractmethod
         
     | 
| 
      
 16 
     | 
    
         
            +
                def select(self) -> Optional[Set[str]]:
         
     | 
| 
      
 17 
     | 
    
         
            +
                    """
         
     | 
| 
      
 18 
     | 
    
         
            +
                    Selects and returns the set of properties that should be queried from the API based on the
         
     | 
| 
      
 19 
     | 
    
         
            +
                    configured stream's schema and any applicable transformations.
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    Returns:
         
     | 
| 
      
 22 
     | 
    
         
            +
                        Set[str]: The set of property names to query
         
     | 
| 
      
 23 
     | 
    
         
            +
                    """
         
     | 
| 
      
 24 
     | 
    
         
            +
                    pass
         
     | 
| 
         @@ -1,12 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            from dataclasses import InitVar, dataclass
         
     | 
| 
       4 
     | 
    
         
            -
            from typing import Any, Iterable, List, Mapping, Optional, Union
         
     | 
| 
      
 4 
     | 
    
         
            +
            from typing import Any, Iterable, List, Mapping, Optional, Set, Union
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            from airbyte_cdk.models import ConfiguredAirbyteStream
         
     | 
| 
       6 
7 
     | 
    
         
             
            from airbyte_cdk.sources.declarative.requesters.query_properties import (
         
     | 
| 
       7 
8 
     | 
    
         
             
                PropertiesFromEndpoint,
         
     | 
| 
       8 
9 
     | 
    
         
             
                PropertyChunking,
         
     | 
| 
       9 
10 
     | 
    
         
             
            )
         
     | 
| 
      
 11 
     | 
    
         
            +
            from airbyte_cdk.sources.declarative.requesters.query_properties.property_selector import (
         
     | 
| 
      
 12 
     | 
    
         
            +
                PropertySelector,
         
     | 
| 
      
 13 
     | 
    
         
            +
            )
         
     | 
| 
       10 
14 
     | 
    
         
             
            from airbyte_cdk.sources.types import Config, StreamSlice
         
     | 
| 
       11 
15 
     | 
    
         | 
| 
       12 
16 
     | 
    
         | 
| 
         @@ -22,18 +26,24 @@ class QueryProperties: 
     | 
|
| 
       22 
26 
     | 
    
         
             
                property_list: Optional[Union[List[str], PropertiesFromEndpoint]]
         
     | 
| 
       23 
27 
     | 
    
         
             
                always_include_properties: Optional[List[str]]
         
     | 
| 
       24 
28 
     | 
    
         
             
                property_chunking: Optional[PropertyChunking]
         
     | 
| 
      
 29 
     | 
    
         
            +
                property_selector: Optional[PropertySelector]
         
     | 
| 
       25 
30 
     | 
    
         
             
                config: Config
         
     | 
| 
       26 
31 
     | 
    
         
             
                parameters: InitVar[Mapping[str, Any]]
         
     | 
| 
       27 
32 
     | 
    
         | 
| 
       28 
33 
     | 
    
         
             
                def get_request_property_chunks(
         
     | 
| 
       29 
     | 
    
         
            -
                    self, 
     | 
| 
      
 34 
     | 
    
         
            +
                    self,
         
     | 
| 
      
 35 
     | 
    
         
            +
                    stream_slice: Optional[StreamSlice] = None,
         
     | 
| 
       30 
36 
     | 
    
         
             
                ) -> Iterable[List[str]]:
         
     | 
| 
       31 
37 
     | 
    
         
             
                    """
         
     | 
| 
       32 
38 
     | 
    
         
             
                    Uses the defined property_list to fetch the total set of properties dynamically or from a static list
         
     | 
| 
       33 
39 
     | 
    
         
             
                    and based on the resulting properties, performs property chunking if applicable.
         
     | 
| 
       34 
40 
     | 
    
         
             
                    :param stream_slice: The StreamSlice of the current partition being processed during the sync. This is included
         
     | 
| 
       35 
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.
         
     | 
| 
       36 
44 
     | 
    
         
             
                    """
         
     | 
| 
      
 45 
     | 
    
         
            +
                    configured_properties = self.property_selector.select() if self.property_selector else None
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       37 
47 
     | 
    
         
             
                    fields: Union[Iterable[str], List[str]]
         
     | 
| 
       38 
48 
     | 
    
         
             
                    if isinstance(self.property_list, PropertiesFromEndpoint):
         
     | 
| 
       39 
49 
     | 
    
         
             
                        fields = self.property_list.get_properties_from_endpoint(stream_slice=stream_slice)
         
     | 
| 
         @@ -42,7 +52,21 @@ class QueryProperties: 
     | 
|
| 
       42 
52 
     | 
    
         | 
| 
       43 
53 
     | 
    
         
             
                    if self.property_chunking:
         
     | 
| 
       44 
54 
     | 
    
         
             
                        yield from self.property_chunking.get_request_property_chunks(
         
     | 
| 
       45 
     | 
    
         
            -
                            property_fields=fields, 
     | 
| 
      
 55 
     | 
    
         
            +
                            property_fields=fields,
         
     | 
| 
      
 56 
     | 
    
         
            +
                            always_include_properties=self.always_include_properties,
         
     | 
| 
      
 57 
     | 
    
         
            +
                            configured_properties=configured_properties,
         
     | 
| 
       46 
58 
     | 
    
         
             
                        )
         
     | 
| 
       47 
59 
     | 
    
         
             
                    else:
         
     | 
| 
       48 
     | 
    
         
            -
                         
     | 
| 
      
 60 
     | 
    
         
            +
                        if configured_properties is not None:
         
     | 
| 
      
 61 
     | 
    
         
            +
                            all_fields = (
         
     | 
| 
      
 62 
     | 
    
         
            +
                                [field for field in fields if field in configured_properties]
         
     | 
| 
      
 63 
     | 
    
         
            +
                                if configured_properties is not None
         
     | 
| 
      
 64 
     | 
    
         
            +
                                else list(fields)
         
     | 
| 
      
 65 
     | 
    
         
            +
                            )
         
     | 
| 
      
 66 
     | 
    
         
            +
                        else:
         
     | 
| 
      
 67 
     | 
    
         
            +
                            all_fields = list(fields)
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                        if self.always_include_properties:
         
     | 
| 
      
 70 
     | 
    
         
            +
                            all_fields = list(self.always_include_properties) + all_fields
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                        yield all_fields
         
     | 
| 
         @@ -386,7 +386,7 @@ class SimpleRetriever(Retriever): 
     | 
|
| 
       386 
386 
     | 
    
         
             
                        try:
         
     | 
| 
       387 
387 
     | 
    
         
             
                            if self.additional_query_properties:
         
     | 
| 
       388 
388 
     | 
    
         
             
                                for properties in self.additional_query_properties.get_request_property_chunks(
         
     | 
| 
       389 
     | 
    
         
            -
                                    stream_slice=stream_slice
         
     | 
| 
      
 389 
     | 
    
         
            +
                                    stream_slice=stream_slice,
         
     | 
| 
       390 
390 
     | 
    
         
             
                                ):
         
     | 
| 
       391 
391 
     | 
    
         
             
                                    stream_slice = StreamSlice(
         
     | 
| 
       392 
392 
     | 
    
         
             
                                        partition=stream_slice.partition or {},
         
     | 
| 
         @@ -126,11 +126,11 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=G7VBOwDdybbpZstFG0 
     | 
|
| 
       126 
126 
     | 
    
         
             
            airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=HQHK3gO5xXeWYdxDjiXO3xzz5MBOYcQn0Dd6IRW7Vx8,1400
         
     | 
| 
       127 
127 
     | 
    
         
             
            airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
         
     | 
| 
       128 
128 
     | 
    
         
             
            airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
         
     | 
| 
       129 
     | 
    
         
            -
            airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256= 
     | 
| 
      
 129 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=H_pnBSQpYfM2H_6wNbNcLEjDqRqvnucyXsEYFXOua4k,31230
         
     | 
| 
       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= 
     | 
| 
      
 133 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=PlJeDmDYx_aUmZw0Uki873xrqcRu4Gl4sg08Qg5ZG9w,190643
         
     | 
| 
       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
         
     | 
| 
         @@ -165,14 +165,14 @@ airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migrati 
     | 
|
| 
       165 
165 
     | 
    
         
             
            airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
         
     | 
| 
       166 
166 
     | 
    
         
             
            airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
         
     | 
| 
       167 
167 
     | 
    
         
             
            airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py,sha256=Imnj3yef0aqRdLfaUxkIYISUb8YkiPrRH_wBd-x8HjM,5999
         
     | 
| 
       168 
     | 
    
         
            -
            airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256= 
     | 
| 
      
 168 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=D2F38uDXBRdvpGBsK2vLqs-CYyQMNvl7TN5bJMHFwbs,134025
         
     | 
| 
       169 
169 
     | 
    
         
             
            airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
         
     | 
| 
       170 
170 
     | 
    
         
             
            airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=nlVvHC511NUyDEEIRBkoeDTAvLqKNp-hRy8D19z8tdk,5941
         
     | 
| 
       171 
171 
     | 
    
         
             
            airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=wnRUP0Xeru9Rbu5OexXSDN9QWDo8YU4tT9M2LDVOgGA,802
         
     | 
| 
       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= 
     | 
| 
      
 175 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=Fa5B6nLCk-MWmy3zMARWmtE3HpnY_W6VwJwavZQhBbQ,190797
         
     | 
| 
       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
         
     | 
| 
         @@ -210,8 +210,11 @@ airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_stra 
     | 
|
| 
       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 
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= 
     | 
| 
       214 
     | 
    
         
            -
            airbyte_cdk/sources/declarative/requesters/query_properties/ 
     | 
| 
      
 213 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py,sha256=WwDVJAdDmX12i-fw-uve1J4uaHv4Efx6O1VtEMnyuK0,3178
         
     | 
| 
      
 214 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/__init__.py,sha256=xI2V-eurHx_AgwFW9b0Ftm4ivJPcCObHpGQtpssCW-g,410
         
     | 
| 
      
 215 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/requesters/query_properties/property_selector/json_schema_property_selector.py,sha256=_J-pJgOizb7oDvcGWntBQGfzYETsjCbHHmFJCOT6FO0,2392
         
     | 
| 
      
 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
         
     | 
| 
       215 
218 
     | 
    
         
             
            airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py,sha256=ojiPj9eVU7SuNpF3RZwhZWW21IYLQYEoxpzg1rCdvNM,350
         
     | 
| 
       216 
219 
     | 
    
         
             
            airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py,sha256=np4uTwSpQvXxubIzVbwSDX0Xf3EgVn8kkhs6zYLOdAQ,1081
         
     | 
| 
       217 
220 
     | 
    
         
             
            airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py,sha256=iuk9QxpwvKVtdrq9eadQVkZ-Sfk3qhyyAAErprBfw2s,516
         
     | 
| 
         @@ -242,7 +245,7 @@ airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_ 
     | 
|
| 
       242 
245 
     | 
    
         
             
            airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py,sha256=1yfimzxm09d2j605cu_HhiYVDNVL1rUMi3vs_jYlIyY,330
         
     | 
| 
       243 
246 
     | 
    
         
             
            airbyte_cdk/sources/declarative/retrievers/pagination_tracker.py,sha256=h-3GfksrWaQUa1xIefq9eG-6_DuW77Vq8XDenv-hCps,2865
         
     | 
| 
       244 
247 
     | 
    
         
             
            airbyte_cdk/sources/declarative/retrievers/retriever.py,sha256=os5psYh8z7ZdCAvbfZeTpmjvPa7Qpx0mblpKf47ZaZM,1876
         
     | 
| 
       245 
     | 
    
         
            -
            airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256= 
     | 
| 
      
 248 
     | 
    
         
            +
            airbyte_cdk/sources/declarative/retrievers/simple_retriever.py,sha256=qGehym1keYpS-SofLSJ07qdhAY3odr8Op9clviqhacM,29859
         
     | 
| 
       246 
249 
     | 
    
         
             
            airbyte_cdk/sources/declarative/schema/__init__.py,sha256=xU45UvM5O4c1PSM13UHpCdh5hpW3HXy9vRRGEiAC1rg,795
         
     | 
| 
       247 
250 
     | 
    
         
             
            airbyte_cdk/sources/declarative/schema/composite_schema_loader.py,sha256=ymGbvxS_QyGc4nnjEyRo5ch8bVedELO41PAUxKXZyMw,1113
         
     | 
| 
       248 
251 
     | 
    
         
             
            airbyte_cdk/sources/declarative/schema/default_schema_loader.py,sha256=UnbzlExmwoQiVV8zDg4lhAEaqA_0pRfwbMRe8yqOuWk,1834
         
     | 
| 
         @@ -459,9 +462,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G 
     | 
|
| 
       459 
462 
     | 
    
         
             
            airbyte_cdk/utils/spec_schema_transformations.py,sha256=9YDJmnIGFsT51CVQf2tSSvTapGimITjEFGbUTSZAGTI,963
         
     | 
| 
       460 
463 
     | 
    
         
             
            airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
         
     | 
| 
       461 
464 
     | 
    
         
             
            airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
         
     | 
| 
       462 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
       463 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
       464 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
       465 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
       466 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
       467 
     | 
    
         
            -
            airbyte_cdk-7. 
     | 
| 
      
 465 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
         
     | 
| 
      
 466 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
         
     | 
| 
      
 467 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/METADATA,sha256=LdD8zjbNJspzuttuY4F39E6K_8u-7LLLvfE5dYvJsMA,6759
         
     | 
| 
      
 468 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
         
     | 
| 
      
 469 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/entry_points.txt,sha256=eLZ2UYvJZGm1s07Pplcs--1Gim60YhZWTb53j_dghwU,195
         
     | 
| 
      
 470 
     | 
    
         
            +
            airbyte_cdk-7.4.0.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |