airbyte-cdk 6.44.0__tar.gz → 6.45.0__tar.gz
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-6.44.0 → airbyte_cdk-6.45.0}/PKG-INFO +1 -1
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +118 -2
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +75 -2
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +180 -8
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +13 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +40 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +69 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +58 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +10 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +33 -0
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +19 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +25 -2
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +101 -30
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/pyproject.toml +1 -1
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -341,7 +341,7 @@ definitions:
|
|
341
341
|
properties:
|
342
342
|
type:
|
343
343
|
type: string
|
344
|
-
enum: [
|
344
|
+
enum: [DynamicStreamCheckConfig]
|
345
345
|
dynamic_stream_name:
|
346
346
|
title: Dynamic Stream Name
|
347
347
|
description: The dynamic stream name.
|
@@ -1752,6 +1752,30 @@ definitions:
|
|
1752
1752
|
$parameters:
|
1753
1753
|
type: object
|
1754
1754
|
additionalProperties: true
|
1755
|
+
GroupByKeyMergeStrategy:
|
1756
|
+
title: Group by Key
|
1757
|
+
description: Record merge strategy that combines records according to fields on the record.
|
1758
|
+
required:
|
1759
|
+
- type
|
1760
|
+
- key
|
1761
|
+
properties:
|
1762
|
+
type:
|
1763
|
+
type: string
|
1764
|
+
enum: [GroupByKeyMergeStrategy]
|
1765
|
+
key:
|
1766
|
+
title: Key
|
1767
|
+
description: The name of the field on the record whose value will be used to group properties that were retrieved through multiple API requests.
|
1768
|
+
anyOf:
|
1769
|
+
- type: string
|
1770
|
+
- type: array
|
1771
|
+
items:
|
1772
|
+
type: string
|
1773
|
+
examples:
|
1774
|
+
- "id"
|
1775
|
+
- ["parent_id", "end_date"]
|
1776
|
+
$parameters:
|
1777
|
+
type: object
|
1778
|
+
additionalProperties: true
|
1755
1779
|
SessionTokenAuthenticator:
|
1756
1780
|
type: object
|
1757
1781
|
required:
|
@@ -1971,7 +1995,9 @@ definitions:
|
|
1971
1995
|
- type: string
|
1972
1996
|
- type: object
|
1973
1997
|
additionalProperties:
|
1974
|
-
|
1998
|
+
anyOf:
|
1999
|
+
- type: string
|
2000
|
+
- $ref": "#/definitions/QueryProperties"
|
1975
2001
|
interpolation_context:
|
1976
2002
|
- next_page_token
|
1977
2003
|
- stream_interval
|
@@ -2989,6 +3015,96 @@ definitions:
|
|
2989
3015
|
examples:
|
2990
3016
|
- id
|
2991
3017
|
- ["code", "type"]
|
3018
|
+
PropertiesFromEndpoint:
|
3019
|
+
title: Properties from Endpoint
|
3020
|
+
description: Defines the behavior for fetching the list of properties from an API that will be loaded into the requests to extract records.
|
3021
|
+
type: object
|
3022
|
+
required:
|
3023
|
+
- type
|
3024
|
+
- property_field_path
|
3025
|
+
- retriever
|
3026
|
+
properties:
|
3027
|
+
type:
|
3028
|
+
type: string
|
3029
|
+
enum: [PropertiesFromEndpoint]
|
3030
|
+
property_field_path:
|
3031
|
+
description: Describes the path to the field that should be extracted
|
3032
|
+
type: array
|
3033
|
+
items:
|
3034
|
+
type: string
|
3035
|
+
examples:
|
3036
|
+
- ["name"]
|
3037
|
+
interpolation_context:
|
3038
|
+
- config
|
3039
|
+
- parameters
|
3040
|
+
retriever:
|
3041
|
+
description: Requester component that describes how to fetch the properties to query from a remote API endpoint.
|
3042
|
+
anyOf:
|
3043
|
+
- "$ref": "#/definitions/CustomRetriever"
|
3044
|
+
- "$ref": "#/definitions/SimpleRetriever"
|
3045
|
+
$parameters:
|
3046
|
+
type: object
|
3047
|
+
additionalProperties: true
|
3048
|
+
PropertyChunking:
|
3049
|
+
title: Property Chunking
|
3050
|
+
description: For APIs with restrictions on the amount of properties that can be requester per request, property chunking can be applied to make multiple requests with a subset of the properties.
|
3051
|
+
type: object
|
3052
|
+
required:
|
3053
|
+
- type
|
3054
|
+
- property_limit_type
|
3055
|
+
properties:
|
3056
|
+
type:
|
3057
|
+
type: string
|
3058
|
+
enum: [PropertyChunking]
|
3059
|
+
property_limit_type:
|
3060
|
+
title: Property Limit Type
|
3061
|
+
description: The type used to determine the maximum number of properties per chunk
|
3062
|
+
enum:
|
3063
|
+
- characters
|
3064
|
+
- property_count
|
3065
|
+
property_limit:
|
3066
|
+
title: Property Limit
|
3067
|
+
description: The maximum amount of properties that can be retrieved per request according to the limit type.
|
3068
|
+
type: integer
|
3069
|
+
record_merge_strategy:
|
3070
|
+
title: Record Merge Strategy
|
3071
|
+
description: Dictates how to records that require multiple requests to get all properties should be emitted to the destination
|
3072
|
+
"$ref": "#/definitions/GroupByKeyMergeStrategy"
|
3073
|
+
$parameters:
|
3074
|
+
type: object
|
3075
|
+
additionalProperties: true
|
3076
|
+
QueryProperties:
|
3077
|
+
title: Query Properties
|
3078
|
+
description: For APIs that require explicit specification of the properties to query for, this component specifies which property fields and how they are supplied to outbound requests.
|
3079
|
+
type: object
|
3080
|
+
required:
|
3081
|
+
- type
|
3082
|
+
- property_list
|
3083
|
+
properties:
|
3084
|
+
type:
|
3085
|
+
type: string
|
3086
|
+
enum: [QueryProperties]
|
3087
|
+
property_list:
|
3088
|
+
title: Property List
|
3089
|
+
description: The set of properties that will be queried for in the outbound request. This can either be statically defined or dynamic based on an API endpoint
|
3090
|
+
anyOf:
|
3091
|
+
- type: array
|
3092
|
+
items:
|
3093
|
+
type: string
|
3094
|
+
- "$ref": "#/definitions/PropertiesFromEndpoint"
|
3095
|
+
always_include_properties:
|
3096
|
+
title: Always Include Properties
|
3097
|
+
description: The list of properties that should be included in every set of properties when multiple chunks of properties are being requested.
|
3098
|
+
type: array
|
3099
|
+
items:
|
3100
|
+
type: string
|
3101
|
+
property_chunking:
|
3102
|
+
title: Property Chunking
|
3103
|
+
description: Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.
|
3104
|
+
"$ref": "#/definitions/PropertyChunking"
|
3105
|
+
$parameters:
|
3106
|
+
type: object
|
3107
|
+
additionalProperties: true
|
2992
3108
|
RecordFilter:
|
2993
3109
|
title: Record Filter
|
2994
3110
|
description: Filter applied on a list of records.
|
@@ -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
|
|
@@ -49,7 +51,7 @@ class DynamicStreamCheckConfig(BaseModel):
|
|
49
51
|
)
|
50
52
|
stream_count: Optional[int] = Field(
|
51
53
|
0,
|
52
|
-
description="
|
54
|
+
description="The number of streams to attempt reading from during a check operation. If `stream_count` exceeds the total number of available streams, the minimum of the two values will be used.",
|
53
55
|
title="Stream Count",
|
54
56
|
)
|
55
57
|
|
@@ -718,6 +720,17 @@ class ExponentialBackoffStrategy(BaseModel):
|
|
718
720
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
719
721
|
|
720
722
|
|
723
|
+
class GroupByKeyMergeStrategy(BaseModel):
|
724
|
+
type: Literal["GroupByKeyMergeStrategy"]
|
725
|
+
key: Union[str, List[str]] = Field(
|
726
|
+
...,
|
727
|
+
description="The name of the field on the record whose value will be used to group properties that were retrieved through multiple API requests.",
|
728
|
+
examples=["id", ["parent_id", "end_date"]],
|
729
|
+
title="Key",
|
730
|
+
)
|
731
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
732
|
+
|
733
|
+
|
721
734
|
class SessionTokenRequestBearerAuthenticator(BaseModel):
|
722
735
|
type: Literal["Bearer"]
|
723
736
|
|
@@ -1189,6 +1202,31 @@ class PrimaryKey(BaseModel):
|
|
1189
1202
|
)
|
1190
1203
|
|
1191
1204
|
|
1205
|
+
class PropertyLimitType(Enum):
|
1206
|
+
characters = "characters"
|
1207
|
+
property_count = "property_count"
|
1208
|
+
|
1209
|
+
|
1210
|
+
class PropertyChunking(BaseModel):
|
1211
|
+
type: Literal["PropertyChunking"]
|
1212
|
+
property_limit_type: PropertyLimitType = Field(
|
1213
|
+
...,
|
1214
|
+
description="The type used to determine the maximum number of properties per chunk",
|
1215
|
+
title="Property Limit Type",
|
1216
|
+
)
|
1217
|
+
property_limit: Optional[int] = Field(
|
1218
|
+
None,
|
1219
|
+
description="The maximum amount of properties that can be retrieved per request according to the limit type.",
|
1220
|
+
title="Property Limit",
|
1221
|
+
)
|
1222
|
+
record_merge_strategy: Optional[GroupByKeyMergeStrategy] = Field(
|
1223
|
+
None,
|
1224
|
+
description="Dictates how to records that require multiple requests to get all properties should be emitted to the destination",
|
1225
|
+
title="Record Merge Strategy",
|
1226
|
+
)
|
1227
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1228
|
+
|
1229
|
+
|
1192
1230
|
class RecordFilter(BaseModel):
|
1193
1231
|
type: Literal["RecordFilter"]
|
1194
1232
|
condition: Optional[str] = Field(
|
@@ -2187,7 +2225,7 @@ class HttpRequester(BaseModel):
|
|
2187
2225
|
examples=[{"Output-Format": "JSON"}, {"Version": "{{ config['version'] }}"}],
|
2188
2226
|
title="Request Headers",
|
2189
2227
|
)
|
2190
|
-
request_parameters: Optional[Union[str, Dict[str, str]]] = Field(
|
2228
|
+
request_parameters: Optional[Union[str, Dict[str, Union[str, Any]]]] = Field(
|
2191
2229
|
None,
|
2192
2230
|
description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
|
2193
2231
|
examples=[
|
@@ -2277,6 +2315,40 @@ class ParentStreamConfig(BaseModel):
|
|
2277
2315
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2278
2316
|
|
2279
2317
|
|
2318
|
+
class PropertiesFromEndpoint(BaseModel):
|
2319
|
+
type: Literal["PropertiesFromEndpoint"]
|
2320
|
+
property_field_path: List[str] = Field(
|
2321
|
+
...,
|
2322
|
+
description="Describes the path to the field that should be extracted",
|
2323
|
+
examples=[["name"]],
|
2324
|
+
)
|
2325
|
+
retriever: Union[CustomRetriever, SimpleRetriever] = Field(
|
2326
|
+
...,
|
2327
|
+
description="Requester component that describes how to fetch the properties to query from a remote API endpoint.",
|
2328
|
+
)
|
2329
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2330
|
+
|
2331
|
+
|
2332
|
+
class QueryProperties(BaseModel):
|
2333
|
+
type: Literal["QueryProperties"]
|
2334
|
+
property_list: Union[List[str], PropertiesFromEndpoint] = Field(
|
2335
|
+
...,
|
2336
|
+
description="The set of properties that will be queried for in the outbound request. This can either be statically defined or dynamic based on an API endpoint",
|
2337
|
+
title="Property List",
|
2338
|
+
)
|
2339
|
+
always_include_properties: Optional[List[str]] = Field(
|
2340
|
+
None,
|
2341
|
+
description="The list of properties that should be included in every set of properties when multiple chunks of properties are being requested.",
|
2342
|
+
title="Always Include Properties",
|
2343
|
+
)
|
2344
|
+
property_chunking: Optional[PropertyChunking] = Field(
|
2345
|
+
None,
|
2346
|
+
description="Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.",
|
2347
|
+
title="Property Chunking",
|
2348
|
+
)
|
2349
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2350
|
+
|
2351
|
+
|
2280
2352
|
class StateDelegatingStream(BaseModel):
|
2281
2353
|
type: Literal["StateDelegatingStream"]
|
2282
2354
|
name: str = Field(..., description="The stream name.", example=["Users"], title="Name")
|
@@ -2525,5 +2597,6 @@ DeclarativeStream.update_forward_refs()
|
|
2525
2597
|
SessionTokenAuthenticator.update_forward_refs()
|
2526
2598
|
DynamicSchemaLoader.update_forward_refs()
|
2527
2599
|
ParentStreamConfig.update_forward_refs()
|
2600
|
+
PropertiesFromEndpoint.update_forward_refs()
|
2528
2601
|
SimpleRetriever.update_forward_refs()
|
2529
2602
|
AsyncRetriever.update_forward_refs()
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
5
|
from __future__ import annotations
|
@@ -234,6 +234,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
234
234
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
235
235
|
FlattenFields as FlattenFieldsModel,
|
236
236
|
)
|
237
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
238
|
+
GroupByKeyMergeStrategy as GroupByKeyMergeStrategyModel,
|
239
|
+
)
|
237
240
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
238
241
|
GroupingPartitionRouter as GroupingPartitionRouterModel,
|
239
242
|
)
|
@@ -324,6 +327,18 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
324
327
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
325
328
|
ParentStreamConfig as ParentStreamConfigModel,
|
326
329
|
)
|
330
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
331
|
+
PropertiesFromEndpoint as PropertiesFromEndpointModel,
|
332
|
+
)
|
333
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
334
|
+
PropertyChunking as PropertyChunkingModel,
|
335
|
+
)
|
336
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
337
|
+
PropertyLimitType as PropertyLimitTypeModel,
|
338
|
+
)
|
339
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
340
|
+
QueryProperties as QueryPropertiesModel,
|
341
|
+
)
|
327
342
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
328
343
|
Rate as RateModel,
|
329
344
|
)
|
@@ -432,6 +447,17 @@ from airbyte_cdk.sources.declarative.requesters.paginators.strategies import (
|
|
432
447
|
PageIncrement,
|
433
448
|
StopConditionPaginationStrategyDecorator,
|
434
449
|
)
|
450
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties import (
|
451
|
+
PropertiesFromEndpoint,
|
452
|
+
PropertyChunking,
|
453
|
+
QueryProperties,
|
454
|
+
)
|
455
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties.property_chunking import (
|
456
|
+
PropertyLimitType,
|
457
|
+
)
|
458
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties.strategies import (
|
459
|
+
GroupByKey,
|
460
|
+
)
|
435
461
|
from airbyte_cdk.sources.declarative.requesters.request_option import RequestOptionType
|
436
462
|
from airbyte_cdk.sources.declarative.requesters.request_options import (
|
437
463
|
DatetimeBasedRequestOptionsProvider,
|
@@ -596,6 +622,7 @@ class ModelToComponentFactory:
|
|
596
622
|
ResponseToFileExtractorModel: self.create_response_to_file_extractor,
|
597
623
|
ExponentialBackoffStrategyModel: self.create_exponential_backoff_strategy,
|
598
624
|
SessionTokenAuthenticatorModel: self.create_session_token_authenticator,
|
625
|
+
GroupByKeyMergeStrategyModel: self.create_group_by_key,
|
599
626
|
HttpRequesterModel: self.create_http_requester,
|
600
627
|
HttpResponseFilterModel: self.create_http_response_filter,
|
601
628
|
InlineSchemaLoaderModel: self.create_inline_schema_loader,
|
@@ -625,6 +652,9 @@ class ModelToComponentFactory:
|
|
625
652
|
OffsetIncrementModel: self.create_offset_increment,
|
626
653
|
PageIncrementModel: self.create_page_increment,
|
627
654
|
ParentStreamConfigModel: self.create_parent_stream_config,
|
655
|
+
PropertiesFromEndpointModel: self.create_properties_from_endpoint,
|
656
|
+
PropertyChunkingModel: self.create_property_chunking,
|
657
|
+
QueryPropertiesModel: self.create_query_properties,
|
628
658
|
RecordFilterModel: self.create_record_filter,
|
629
659
|
RecordSelectorModel: self.create_record_selector,
|
630
660
|
RemoveFieldsModel: self.create_remove_fields,
|
@@ -2083,8 +2113,8 @@ class ModelToComponentFactory:
|
|
2083
2113
|
parameters=model.parameters or {},
|
2084
2114
|
)
|
2085
2115
|
|
2116
|
+
@staticmethod
|
2086
2117
|
def create_response_to_file_extractor(
|
2087
|
-
self,
|
2088
2118
|
model: ResponseToFileExtractorModel,
|
2089
2119
|
**kwargs: Any,
|
2090
2120
|
) -> ResponseToFileExtractor:
|
@@ -2098,11 +2128,17 @@ class ModelToComponentFactory:
|
|
2098
2128
|
factor=model.factor or 5, parameters=model.parameters or {}, config=config
|
2099
2129
|
)
|
2100
2130
|
|
2131
|
+
@staticmethod
|
2132
|
+
def create_group_by_key(model: GroupByKeyMergeStrategyModel, config: Config) -> GroupByKey:
|
2133
|
+
return GroupByKey(model.key, config=config, parameters=model.parameters or {})
|
2134
|
+
|
2101
2135
|
def create_http_requester(
|
2102
2136
|
self,
|
2103
2137
|
model: HttpRequesterModel,
|
2104
2138
|
config: Config,
|
2105
2139
|
decoder: Decoder = JsonDecoder(parameters={}),
|
2140
|
+
query_properties_key: Optional[str] = None,
|
2141
|
+
use_cache: Optional[bool] = None,
|
2106
2142
|
*,
|
2107
2143
|
name: str,
|
2108
2144
|
) -> HttpRequester:
|
@@ -2135,6 +2171,7 @@ class ModelToComponentFactory:
|
|
2135
2171
|
request_body_json=model.request_body_json,
|
2136
2172
|
request_headers=model.request_headers,
|
2137
2173
|
request_parameters=model.request_parameters,
|
2174
|
+
query_properties_key=query_properties_key,
|
2138
2175
|
config=config,
|
2139
2176
|
parameters=model.parameters or {},
|
2140
2177
|
)
|
@@ -2142,7 +2179,7 @@ class ModelToComponentFactory:
|
|
2142
2179
|
assert model.use_cache is not None # for mypy
|
2143
2180
|
assert model.http_method is not None # for mypy
|
2144
2181
|
|
2145
|
-
|
2182
|
+
should_use_cache = (model.use_cache or bool(use_cache)) and not self._disable_cache
|
2146
2183
|
|
2147
2184
|
return HttpRequester(
|
2148
2185
|
name=name,
|
@@ -2157,7 +2194,7 @@ class ModelToComponentFactory:
|
|
2157
2194
|
disable_retries=self._disable_retries,
|
2158
2195
|
parameters=model.parameters or {},
|
2159
2196
|
message_repository=self._message_repository,
|
2160
|
-
use_cache=
|
2197
|
+
use_cache=should_use_cache,
|
2161
2198
|
decoder=decoder,
|
2162
2199
|
stream_response=decoder.is_stream_response() if decoder else False,
|
2163
2200
|
)
|
@@ -2261,10 +2298,11 @@ class ModelToComponentFactory:
|
|
2261
2298
|
retriever = self._create_component_from_model(
|
2262
2299
|
model=model.retriever,
|
2263
2300
|
config=config,
|
2264
|
-
name="",
|
2301
|
+
name="dynamic_properties",
|
2265
2302
|
primary_key=None,
|
2266
2303
|
stream_slicer=combined_slicers,
|
2267
2304
|
transformations=[],
|
2305
|
+
use_cache=True,
|
2268
2306
|
)
|
2269
2307
|
schema_type_identifier = self._create_component_from_model(
|
2270
2308
|
model.schema_type_identifier, config=config, parameters=model.parameters or {}
|
@@ -2602,6 +2640,79 @@ class ModelToComponentFactory:
|
|
2602
2640
|
lazy_read_pointer=model_lazy_read_pointer,
|
2603
2641
|
)
|
2604
2642
|
|
2643
|
+
def create_properties_from_endpoint(
|
2644
|
+
self, model: PropertiesFromEndpointModel, config: Config, **kwargs: Any
|
2645
|
+
) -> PropertiesFromEndpoint:
|
2646
|
+
retriever = self._create_component_from_model(
|
2647
|
+
model=model.retriever,
|
2648
|
+
config=config,
|
2649
|
+
name="dynamic_properties",
|
2650
|
+
primary_key=None,
|
2651
|
+
stream_slicer=None,
|
2652
|
+
transformations=[],
|
2653
|
+
use_cache=True, # Enable caching on the HttpRequester/HttpClient because the properties endpoint will be called for every slice being processed, and it is highly unlikely for the response to different
|
2654
|
+
)
|
2655
|
+
return PropertiesFromEndpoint(
|
2656
|
+
property_field_path=model.property_field_path,
|
2657
|
+
retriever=retriever,
|
2658
|
+
config=config,
|
2659
|
+
parameters=model.parameters or {},
|
2660
|
+
)
|
2661
|
+
|
2662
|
+
def create_property_chunking(
|
2663
|
+
self, model: PropertyChunkingModel, config: Config, **kwargs: Any
|
2664
|
+
) -> PropertyChunking:
|
2665
|
+
record_merge_strategy = (
|
2666
|
+
self._create_component_from_model(
|
2667
|
+
model=model.record_merge_strategy, config=config, **kwargs
|
2668
|
+
)
|
2669
|
+
if model.record_merge_strategy
|
2670
|
+
else None
|
2671
|
+
)
|
2672
|
+
|
2673
|
+
property_limit_type: PropertyLimitType
|
2674
|
+
match model.property_limit_type:
|
2675
|
+
case PropertyLimitTypeModel.property_count:
|
2676
|
+
property_limit_type = PropertyLimitType.property_count
|
2677
|
+
case PropertyLimitTypeModel.characters:
|
2678
|
+
property_limit_type = PropertyLimitType.characters
|
2679
|
+
case _:
|
2680
|
+
raise ValueError(f"Invalid PropertyLimitType {property_limit_type}")
|
2681
|
+
|
2682
|
+
return PropertyChunking(
|
2683
|
+
property_limit_type=property_limit_type,
|
2684
|
+
property_limit=model.property_limit,
|
2685
|
+
record_merge_strategy=record_merge_strategy,
|
2686
|
+
config=config,
|
2687
|
+
parameters=model.parameters or {},
|
2688
|
+
)
|
2689
|
+
|
2690
|
+
def create_query_properties(
|
2691
|
+
self, model: QueryPropertiesModel, config: Config, **kwargs: Any
|
2692
|
+
) -> QueryProperties:
|
2693
|
+
if isinstance(model.property_list, list):
|
2694
|
+
property_list = model.property_list
|
2695
|
+
else:
|
2696
|
+
property_list = self._create_component_from_model(
|
2697
|
+
model=model.property_list, config=config, **kwargs
|
2698
|
+
)
|
2699
|
+
|
2700
|
+
property_chunking = (
|
2701
|
+
self._create_component_from_model(
|
2702
|
+
model=model.property_chunking, config=config, **kwargs
|
2703
|
+
)
|
2704
|
+
if model.property_chunking
|
2705
|
+
else None
|
2706
|
+
)
|
2707
|
+
|
2708
|
+
return QueryProperties(
|
2709
|
+
property_list=property_list,
|
2710
|
+
always_include_properties=model.always_include_properties,
|
2711
|
+
property_chunking=property_chunking,
|
2712
|
+
config=config,
|
2713
|
+
parameters=model.parameters or {},
|
2714
|
+
)
|
2715
|
+
|
2605
2716
|
@staticmethod
|
2606
2717
|
def create_record_filter(
|
2607
2718
|
model: RecordFilterModel, config: Config, **kwargs: Any
|
@@ -2747,6 +2858,7 @@ class ModelToComponentFactory:
|
|
2747
2858
|
IncrementingCountCursorModel, DatetimeBasedCursorModel, CustomIncrementalSyncModel
|
2748
2859
|
]
|
2749
2860
|
] = None,
|
2861
|
+
use_cache: Optional[bool] = None,
|
2750
2862
|
**kwargs: Any,
|
2751
2863
|
) -> SimpleRetriever:
|
2752
2864
|
decoder = (
|
@@ -2754,9 +2866,6 @@ class ModelToComponentFactory:
|
|
2754
2866
|
if model.decoder
|
2755
2867
|
else JsonDecoder(parameters={})
|
2756
2868
|
)
|
2757
|
-
requester = self._create_component_from_model(
|
2758
|
-
model=model.requester, decoder=decoder, config=config, name=name
|
2759
|
-
)
|
2760
2869
|
record_selector = self._create_component_from_model(
|
2761
2870
|
model=model.record_selector,
|
2762
2871
|
name=name,
|
@@ -2765,6 +2874,57 @@ class ModelToComponentFactory:
|
|
2765
2874
|
transformations=transformations,
|
2766
2875
|
client_side_incremental_sync=client_side_incremental_sync,
|
2767
2876
|
)
|
2877
|
+
|
2878
|
+
query_properties: Optional[QueryProperties] = None
|
2879
|
+
query_properties_key: Optional[str] = None
|
2880
|
+
if (
|
2881
|
+
hasattr(model.requester, "request_parameters")
|
2882
|
+
and model.requester.request_parameters
|
2883
|
+
and isinstance(model.requester.request_parameters, Mapping)
|
2884
|
+
):
|
2885
|
+
query_properties_definitions = []
|
2886
|
+
for key, request_parameter in model.requester.request_parameters.items():
|
2887
|
+
# When translating JSON schema into Pydantic models, enforcing types for arrays containing both
|
2888
|
+
# concrete string complex object definitions like QueryProperties would get resolved to Union[str, Any].
|
2889
|
+
# This adds the extra validation that we couldn't get for free in Pydantic model generation
|
2890
|
+
if (
|
2891
|
+
isinstance(request_parameter, Mapping)
|
2892
|
+
and request_parameter.get("type") == "QueryProperties"
|
2893
|
+
):
|
2894
|
+
query_properties_key = key
|
2895
|
+
query_properties_definitions.append(request_parameter)
|
2896
|
+
elif not isinstance(request_parameter, str):
|
2897
|
+
raise ValueError(
|
2898
|
+
f"Each element of request_parameters should be of type str or QueryProperties, but received {request_parameter.get('type')}"
|
2899
|
+
)
|
2900
|
+
|
2901
|
+
if len(query_properties_definitions) > 1:
|
2902
|
+
raise ValueError(
|
2903
|
+
f"request_parameters only supports defining one QueryProperties field, but found {len(query_properties_definitions)} usages"
|
2904
|
+
)
|
2905
|
+
|
2906
|
+
if len(query_properties_definitions) == 1:
|
2907
|
+
query_properties = self.create_component(
|
2908
|
+
model_type=QueryPropertiesModel,
|
2909
|
+
component_definition=query_properties_definitions[0],
|
2910
|
+
config=config,
|
2911
|
+
)
|
2912
|
+
|
2913
|
+
# Removes QueryProperties components from the interpolated mappings because it will be resolved in
|
2914
|
+
# the provider from the slice directly instead of through jinja interpolation
|
2915
|
+
if isinstance(model.requester.request_parameters, Mapping):
|
2916
|
+
model.requester.request_parameters = self._remove_query_properties(
|
2917
|
+
model.requester.request_parameters
|
2918
|
+
)
|
2919
|
+
|
2920
|
+
requester = self._create_component_from_model(
|
2921
|
+
model=model.requester,
|
2922
|
+
decoder=decoder,
|
2923
|
+
name=name,
|
2924
|
+
query_properties_key=query_properties_key,
|
2925
|
+
use_cache=use_cache,
|
2926
|
+
config=config,
|
2927
|
+
)
|
2768
2928
|
url_base = (
|
2769
2929
|
model.requester.url_base
|
2770
2930
|
if hasattr(model.requester, "url_base")
|
@@ -2870,9 +3030,21 @@ class ModelToComponentFactory:
|
|
2870
3030
|
cursor=cursor,
|
2871
3031
|
config=config,
|
2872
3032
|
ignore_stream_slicer_parameters_on_paginated_requests=ignore_stream_slicer_parameters_on_paginated_requests,
|
3033
|
+
additional_query_properties=query_properties,
|
2873
3034
|
parameters=model.parameters or {},
|
2874
3035
|
)
|
2875
3036
|
|
3037
|
+
@staticmethod
|
3038
|
+
def _remove_query_properties(
|
3039
|
+
request_parameters: Mapping[str, Union[Any, str]],
|
3040
|
+
) -> Mapping[str, Union[Any, str]]:
|
3041
|
+
return {
|
3042
|
+
parameter_field: request_parameter
|
3043
|
+
for parameter_field, request_parameter in request_parameters.items()
|
3044
|
+
if not isinstance(request_parameter, Mapping)
|
3045
|
+
or not request_parameter.get("type") == "QueryProperties"
|
3046
|
+
}
|
3047
|
+
|
2876
3048
|
def create_state_delegating_stream(
|
2877
3049
|
self,
|
2878
3050
|
model: StateDelegatingStreamModel,
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
2
|
+
|
3
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties.properties_from_endpoint import (
|
4
|
+
PropertiesFromEndpoint,
|
5
|
+
)
|
6
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties.property_chunking import (
|
7
|
+
PropertyChunking,
|
8
|
+
)
|
9
|
+
from airbyte_cdk.sources.declarative.requesters.query_properties.query_properties import (
|
10
|
+
QueryProperties,
|
11
|
+
)
|
12
|
+
|
13
|
+
__all__ = ["PropertiesFromEndpoint", "PropertyChunking", "QueryProperties"]
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
2
|
+
|
3
|
+
from dataclasses import InitVar, dataclass
|
4
|
+
from typing import Any, Iterable, List, Mapping, Optional
|
5
|
+
|
6
|
+
import dpath
|
7
|
+
|
8
|
+
from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
|
9
|
+
from airbyte_cdk.sources.declarative.retrievers import Retriever
|
10
|
+
from airbyte_cdk.sources.types import Config, StreamSlice
|
11
|
+
|
12
|
+
|
13
|
+
@dataclass
|
14
|
+
class PropertiesFromEndpoint:
|
15
|
+
"""
|
16
|
+
Component that defines the behavior around how to dynamically retrieve a set of request properties from an
|
17
|
+
API endpoint. The set retrieved can then be injected into the requests to extract records from an API source.
|
18
|
+
"""
|
19
|
+
|
20
|
+
property_field_path: List[str]
|
21
|
+
retriever: Retriever
|
22
|
+
config: Config
|
23
|
+
parameters: InitVar[Mapping[str, Any]]
|
24
|
+
|
25
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
26
|
+
self._property_field_path = [
|
27
|
+
InterpolatedString(string=property_field, parameters=parameters)
|
28
|
+
for property_field in self.property_field_path
|
29
|
+
]
|
30
|
+
|
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
|