airbyte-cdk 6.41.1__tar.gz → 6.41.2.dev0__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.41.1 → airbyte_cdk-6.41.2.dev0}/PKG-INFO +1 -1
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +44 -2
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +2 -1
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +41 -2
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +40 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +4 -0
- airbyte_cdk-6.41.2.dev0/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +150 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/pyproject.toml +1 -1
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -2894,7 +2894,7 @@ definitions:
|
|
2894
2894
|
title: Lazy Read Pointer
|
2895
2895
|
description: If set, this will enable lazy reading, using the initial read of parent records to extract child records.
|
2896
2896
|
type: array
|
2897
|
-
default: [
|
2897
|
+
default: []
|
2898
2898
|
items:
|
2899
2899
|
- type: string
|
2900
2900
|
interpolation_context:
|
@@ -3199,7 +3199,7 @@ definitions:
|
|
3199
3199
|
properties:
|
3200
3200
|
type:
|
3201
3201
|
type: string
|
3202
|
-
enum: [
|
3202
|
+
enum: [StateDelegatingStream]
|
3203
3203
|
name:
|
3204
3204
|
title: Name
|
3205
3205
|
description: The stream name.
|
@@ -3254,12 +3254,14 @@ definitions:
|
|
3254
3254
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3255
3255
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3256
3256
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3257
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3257
3258
|
- type: array
|
3258
3259
|
items:
|
3259
3260
|
anyOf:
|
3260
3261
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3261
3262
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3262
3263
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3264
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3263
3265
|
decoder:
|
3264
3266
|
title: Decoder
|
3265
3267
|
description: Component decoding the response so records can be extracted.
|
@@ -3414,12 +3416,14 @@ definitions:
|
|
3414
3416
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3415
3417
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3416
3418
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3419
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3417
3420
|
- type: array
|
3418
3421
|
items:
|
3419
3422
|
anyOf:
|
3420
3423
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3421
3424
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3422
3425
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3426
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3423
3427
|
decoder:
|
3424
3428
|
title: Decoder
|
3425
3429
|
description: Component decoding the response so records can be extracted.
|
@@ -3536,6 +3540,44 @@ definitions:
|
|
3536
3540
|
$parameters:
|
3537
3541
|
type: object
|
3538
3542
|
additionalProperties: true
|
3543
|
+
GroupingPartitionRouter:
|
3544
|
+
title: Grouping Partition Router
|
3545
|
+
description: >
|
3546
|
+
A decorator on top of a partition router that groups partitions into batches of a specified size.
|
3547
|
+
This is useful for APIs that support filtering by multiple partition keys in a single request.
|
3548
|
+
Note that per-partition incremental syncs may not work as expected because the grouping
|
3549
|
+
of partitions might change between syncs, potentially leading to inconsistent state tracking.
|
3550
|
+
type: object
|
3551
|
+
required:
|
3552
|
+
- type
|
3553
|
+
- group_size
|
3554
|
+
- underlying_partition_router
|
3555
|
+
properties:
|
3556
|
+
type:
|
3557
|
+
type: string
|
3558
|
+
enum: [GroupingPartitionRouter]
|
3559
|
+
group_size:
|
3560
|
+
title: Group Size
|
3561
|
+
description: The number of partitions to include in each group. This determines how many partition values are batched together in a single slice.
|
3562
|
+
type: integer
|
3563
|
+
examples:
|
3564
|
+
- 10
|
3565
|
+
- 50
|
3566
|
+
underlying_partition_router:
|
3567
|
+
title: Underlying Partition Router
|
3568
|
+
description: The partition router whose output will be grouped. This can be any valid partition router component.
|
3569
|
+
anyOf:
|
3570
|
+
- "$ref": "#/definitions/CustomPartitionRouter"
|
3571
|
+
- "$ref": "#/definitions/ListPartitionRouter"
|
3572
|
+
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3573
|
+
deduplicate:
|
3574
|
+
title: Deduplicate Partitions
|
3575
|
+
description: If true, ensures that partitions are unique within each group by removing duplicates based on the partition key.
|
3576
|
+
type: boolean
|
3577
|
+
default: true
|
3578
|
+
$parameters:
|
3579
|
+
type: object
|
3580
|
+
additionalProperties: true
|
3539
3581
|
WaitUntilTimeFromHeader:
|
3540
3582
|
title: Wait Until Time Defined In Response Header
|
3541
3583
|
description: Extract time at which we can retry the request from response header and wait for the difference between now and that time.
|
@@ -79,6 +79,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
79
79
|
connector_state_manager: ConnectorStateManager,
|
80
80
|
connector_state_converter: AbstractStreamStateConverter,
|
81
81
|
cursor_field: CursorField,
|
82
|
+
use_global_cursor: bool = False,
|
82
83
|
) -> None:
|
83
84
|
self._global_cursor: Optional[StreamState] = {}
|
84
85
|
self._stream_name = stream_name
|
@@ -106,7 +107,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
106
107
|
self._lookback_window: int = 0
|
107
108
|
self._parent_state: Optional[StreamState] = None
|
108
109
|
self._number_of_partitions: int = 0
|
109
|
-
self._use_global_cursor: bool =
|
110
|
+
self._use_global_cursor: bool = use_global_cursor
|
110
111
|
self._partition_serializer = PerPartitionKeySerializer()
|
111
112
|
# Track the last time a state message was emitted
|
112
113
|
self._last_emission_time: float = 0.0
|
@@ -2301,7 +2301,15 @@ class SimpleRetriever(BaseModel):
|
|
2301
2301
|
CustomPartitionRouter,
|
2302
2302
|
ListPartitionRouter,
|
2303
2303
|
SubstreamPartitionRouter,
|
2304
|
-
|
2304
|
+
GroupingPartitionRouter,
|
2305
|
+
List[
|
2306
|
+
Union[
|
2307
|
+
CustomPartitionRouter,
|
2308
|
+
ListPartitionRouter,
|
2309
|
+
SubstreamPartitionRouter,
|
2310
|
+
GroupingPartitionRouter,
|
2311
|
+
]
|
2312
|
+
],
|
2305
2313
|
]
|
2306
2314
|
] = Field(
|
2307
2315
|
[],
|
@@ -2379,7 +2387,15 @@ class AsyncRetriever(BaseModel):
|
|
2379
2387
|
CustomPartitionRouter,
|
2380
2388
|
ListPartitionRouter,
|
2381
2389
|
SubstreamPartitionRouter,
|
2382
|
-
|
2390
|
+
GroupingPartitionRouter,
|
2391
|
+
List[
|
2392
|
+
Union[
|
2393
|
+
CustomPartitionRouter,
|
2394
|
+
ListPartitionRouter,
|
2395
|
+
SubstreamPartitionRouter,
|
2396
|
+
GroupingPartitionRouter,
|
2397
|
+
]
|
2398
|
+
],
|
2383
2399
|
]
|
2384
2400
|
] = Field(
|
2385
2401
|
[],
|
@@ -2431,6 +2447,29 @@ class SubstreamPartitionRouter(BaseModel):
|
|
2431
2447
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2432
2448
|
|
2433
2449
|
|
2450
|
+
class GroupingPartitionRouter(BaseModel):
|
2451
|
+
type: Literal["GroupingPartitionRouter"]
|
2452
|
+
group_size: int = Field(
|
2453
|
+
...,
|
2454
|
+
description="The number of partitions to include in each group. This determines how many partition values are batched together in a single slice.",
|
2455
|
+
examples=[10, 50],
|
2456
|
+
title="Group Size",
|
2457
|
+
)
|
2458
|
+
underlying_partition_router: Union[
|
2459
|
+
CustomPartitionRouter, ListPartitionRouter, SubstreamPartitionRouter
|
2460
|
+
] = Field(
|
2461
|
+
...,
|
2462
|
+
description="The partition router whose output will be grouped. This can be any valid partition router component.",
|
2463
|
+
title="Underlying Partition Router",
|
2464
|
+
)
|
2465
|
+
deduplicate: Optional[bool] = Field(
|
2466
|
+
True,
|
2467
|
+
description="If true, ensures that partitions are unique within each group by removing duplicates based on the partition key.",
|
2468
|
+
title="Deduplicate Partitions",
|
2469
|
+
)
|
2470
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2471
|
+
|
2472
|
+
|
2434
2473
|
class HttpComponentsResolver(BaseModel):
|
2435
2474
|
type: Literal["HttpComponentsResolver"]
|
2436
2475
|
retriever: Union[AsyncRetriever, CustomRetriever, SimpleRetriever] = Field(
|
@@ -227,6 +227,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
227
227
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
228
228
|
FlattenFields as FlattenFieldsModel,
|
229
229
|
)
|
230
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
231
|
+
GroupingPartitionRouter as GroupingPartitionRouterModel,
|
232
|
+
)
|
230
233
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
231
234
|
GzipDecoder as GzipDecoderModel,
|
232
235
|
)
|
@@ -385,6 +388,7 @@ from airbyte_cdk.sources.declarative.parsers.custom_code_compiler import (
|
|
385
388
|
)
|
386
389
|
from airbyte_cdk.sources.declarative.partition_routers import (
|
387
390
|
CartesianProductStreamSlicer,
|
391
|
+
GroupingPartitionRouter,
|
388
392
|
ListPartitionRouter,
|
389
393
|
PartitionRouter,
|
390
394
|
SinglePartitionRouter,
|
@@ -638,6 +642,7 @@ class ModelToComponentFactory:
|
|
638
642
|
UnlimitedCallRatePolicyModel: self.create_unlimited_call_rate_policy,
|
639
643
|
RateModel: self.create_rate,
|
640
644
|
HttpRequestRegexMatcherModel: self.create_http_request_matcher,
|
645
|
+
GroupingPartitionRouterModel: self.create_grouping_partition_router,
|
641
646
|
}
|
642
647
|
|
643
648
|
# Needed for the case where we need to perform a second parse on the fields of a custom component
|
@@ -1355,6 +1360,9 @@ class ModelToComponentFactory:
|
|
1355
1360
|
)
|
1356
1361
|
stream_state = self.apply_stream_state_migrations(stream_state_migrations, stream_state)
|
1357
1362
|
|
1363
|
+
# Per-partition state doesn't make sense for GroupingPartitionRouter, so force the global state
|
1364
|
+
use_global_cursor = isinstance(partition_router, GroupingPartitionRouter)
|
1365
|
+
|
1358
1366
|
# Return the concurrent cursor and state converter
|
1359
1367
|
return ConcurrentPerPartitionCursor(
|
1360
1368
|
cursor_factory=cursor_factory,
|
@@ -1366,6 +1374,7 @@ class ModelToComponentFactory:
|
|
1366
1374
|
connector_state_manager=state_manager,
|
1367
1375
|
connector_state_converter=connector_state_converter,
|
1368
1376
|
cursor_field=cursor_field,
|
1377
|
+
use_global_cursor=use_global_cursor,
|
1369
1378
|
)
|
1370
1379
|
|
1371
1380
|
@staticmethod
|
@@ -3344,3 +3353,34 @@ class ModelToComponentFactory:
|
|
3344
3353
|
self._api_budget = self.create_component(
|
3345
3354
|
model_type=HTTPAPIBudgetModel, component_definition=component_definition, config=config
|
3346
3355
|
)
|
3356
|
+
|
3357
|
+
def create_grouping_partition_router(
|
3358
|
+
self, model: GroupingPartitionRouterModel, config: Config, **kwargs: Any
|
3359
|
+
) -> GroupingPartitionRouter:
|
3360
|
+
underlying_router = self._create_component_from_model(
|
3361
|
+
model=model.underlying_partition_router, config=config
|
3362
|
+
)
|
3363
|
+
if model.group_size < 1:
|
3364
|
+
raise ValueError(f"Group size must be greater than 0, got {model.group_size}")
|
3365
|
+
|
3366
|
+
# Request options in underlying partition routers are not supported for GroupingPartitionRouter
|
3367
|
+
# because they are specific to individual partitions and cannot be aggregated or handled
|
3368
|
+
# when grouping, potentially leading to incorrect API calls. Any request customization
|
3369
|
+
# should be managed at the stream level through the requester's configuration.
|
3370
|
+
if isinstance(underlying_router, SubstreamPartitionRouter):
|
3371
|
+
if any(
|
3372
|
+
parent_config.request_option
|
3373
|
+
for parent_config in underlying_router.parent_stream_configs
|
3374
|
+
):
|
3375
|
+
raise ValueError("Request options are not supported for GroupingPartitionRouter.")
|
3376
|
+
|
3377
|
+
if isinstance(underlying_router, ListPartitionRouter):
|
3378
|
+
if underlying_router.request_option:
|
3379
|
+
raise ValueError("Request options are not supported for GroupingPartitionRouter.")
|
3380
|
+
|
3381
|
+
return GroupingPartitionRouter(
|
3382
|
+
group_size=model.group_size,
|
3383
|
+
underlying_partition_router=underlying_router,
|
3384
|
+
deduplicate=model.deduplicate if model.deduplicate is not None else True,
|
3385
|
+
config=config,
|
3386
|
+
)
|
@@ -8,6 +8,9 @@ from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_route
|
|
8
8
|
from airbyte_cdk.sources.declarative.partition_routers.cartesian_product_stream_slicer import (
|
9
9
|
CartesianProductStreamSlicer,
|
10
10
|
)
|
11
|
+
from airbyte_cdk.sources.declarative.partition_routers.grouping_partition_router import (
|
12
|
+
GroupingPartitionRouter,
|
13
|
+
)
|
11
14
|
from airbyte_cdk.sources.declarative.partition_routers.list_partition_router import (
|
12
15
|
ListPartitionRouter,
|
13
16
|
)
|
@@ -22,6 +25,7 @@ from airbyte_cdk.sources.declarative.partition_routers.substream_partition_route
|
|
22
25
|
__all__ = [
|
23
26
|
"AsyncJobPartitionRouter",
|
24
27
|
"CartesianProductStreamSlicer",
|
28
|
+
"GroupingPartitionRouter",
|
25
29
|
"ListPartitionRouter",
|
26
30
|
"SinglePartitionRouter",
|
27
31
|
"SubstreamPartitionRouter",
|
@@ -0,0 +1,150 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
from dataclasses import dataclass
|
6
|
+
from typing import Any, Iterable, Mapping, Optional
|
7
|
+
|
8
|
+
from airbyte_cdk.sources.declarative.partition_routers.partition_router import PartitionRouter
|
9
|
+
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
10
|
+
|
11
|
+
|
12
|
+
@dataclass
|
13
|
+
class GroupingPartitionRouter(PartitionRouter):
|
14
|
+
"""
|
15
|
+
A partition router that groups partitions from an underlying partition router into batches of a specified size.
|
16
|
+
This is useful for APIs that support filtering by multiple partition keys in a single request.
|
17
|
+
|
18
|
+
Attributes:
|
19
|
+
group_size (int): The number of partitions to include in each group.
|
20
|
+
underlying_partition_router (PartitionRouter): The partition router whose output will be grouped.
|
21
|
+
deduplicate (bool): If True, ensures unique partitions within each group by removing duplicates based on the partition key.
|
22
|
+
config (Config): The connector configuration.
|
23
|
+
parameters (Mapping[str, Any]): Additional parameters for interpolation and configuration.
|
24
|
+
"""
|
25
|
+
|
26
|
+
group_size: int
|
27
|
+
underlying_partition_router: PartitionRouter
|
28
|
+
config: Config
|
29
|
+
deduplicate: bool = True
|
30
|
+
|
31
|
+
def __post_init__(self) -> None:
|
32
|
+
self._state: Optional[Mapping[str, StreamState]] = {}
|
33
|
+
|
34
|
+
def stream_slices(self) -> Iterable[StreamSlice]:
|
35
|
+
"""
|
36
|
+
Lazily groups partitions from the underlying partition router into batches of size `group_size`.
|
37
|
+
|
38
|
+
This method processes partitions one at a time from the underlying router, maintaining a batch buffer.
|
39
|
+
When the buffer reaches `group_size` or the underlying router is exhausted, it yields a grouped slice.
|
40
|
+
If deduplication is enabled, it tracks seen partition keys to ensure uniqueness within the current batch.
|
41
|
+
|
42
|
+
Yields:
|
43
|
+
Iterable[StreamSlice]: An iterable of StreamSlice objects, where each slice contains a batch of partition values.
|
44
|
+
"""
|
45
|
+
batch = []
|
46
|
+
seen_keys = set()
|
47
|
+
|
48
|
+
# Iterate over partitions lazily from the underlying router
|
49
|
+
for partition in self.underlying_partition_router.stream_slices():
|
50
|
+
# Extract the partition key (assuming single key-value pair, e.g., {"board_ids": value})
|
51
|
+
partition_keys = list(partition.partition.keys())
|
52
|
+
# skip parent_slice as it is part of SubstreamPartitionRouter partition
|
53
|
+
if "parent_slice" in partition_keys:
|
54
|
+
partition_keys.remove("parent_slice")
|
55
|
+
if len(partition_keys) != 1:
|
56
|
+
raise ValueError(
|
57
|
+
f"GroupingPartitionRouter expects a single partition key-value pair. Got {partition.partition}"
|
58
|
+
)
|
59
|
+
key = partition.partition[partition_keys[0]]
|
60
|
+
|
61
|
+
# Skip duplicates if deduplication is enabled
|
62
|
+
if self.deduplicate and key in seen_keys:
|
63
|
+
continue
|
64
|
+
|
65
|
+
# Add partition to the batch
|
66
|
+
batch.append(partition)
|
67
|
+
if self.deduplicate:
|
68
|
+
seen_keys.add(key)
|
69
|
+
|
70
|
+
# Yield the batch when it reaches the group_size
|
71
|
+
if len(batch) == self.group_size:
|
72
|
+
self._state = self.underlying_partition_router.get_stream_state()
|
73
|
+
yield self._create_grouped_slice(batch)
|
74
|
+
batch = [] # Reset the batch
|
75
|
+
|
76
|
+
self._state = self.underlying_partition_router.get_stream_state()
|
77
|
+
# Yield any remaining partitions if the batch isn't empty
|
78
|
+
if batch:
|
79
|
+
yield self._create_grouped_slice(batch)
|
80
|
+
|
81
|
+
def _create_grouped_slice(self, batch: list[StreamSlice]) -> StreamSlice:
|
82
|
+
"""
|
83
|
+
Creates a grouped StreamSlice from a batch of partitions, aggregating extra fields into a dictionary with list values.
|
84
|
+
|
85
|
+
Args:
|
86
|
+
batch (list[StreamSlice]): A list of StreamSlice objects to group.
|
87
|
+
|
88
|
+
Returns:
|
89
|
+
StreamSlice: A single StreamSlice with combined partition and extra field values.
|
90
|
+
"""
|
91
|
+
# Combine partition values into a single dict with lists
|
92
|
+
grouped_partition = {
|
93
|
+
key: [p.partition.get(key) for p in batch] for key in batch[0].partition.keys()
|
94
|
+
}
|
95
|
+
|
96
|
+
# Aggregate extra fields into a dict with list values
|
97
|
+
extra_fields_dict = (
|
98
|
+
{
|
99
|
+
key: [p.extra_fields.get(key) for p in batch]
|
100
|
+
for key in set().union(*(p.extra_fields.keys() for p in batch if p.extra_fields))
|
101
|
+
}
|
102
|
+
if any(p.extra_fields for p in batch)
|
103
|
+
else {}
|
104
|
+
)
|
105
|
+
return StreamSlice(
|
106
|
+
partition=grouped_partition,
|
107
|
+
cursor_slice={}, # Cursor is managed by the underlying router or incremental sync
|
108
|
+
extra_fields=extra_fields_dict,
|
109
|
+
)
|
110
|
+
|
111
|
+
def get_request_params(
|
112
|
+
self,
|
113
|
+
stream_state: Optional[StreamState] = None,
|
114
|
+
stream_slice: Optional[StreamSlice] = None,
|
115
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
116
|
+
) -> Mapping[str, Any]:
|
117
|
+
return {}
|
118
|
+
|
119
|
+
def get_request_headers(
|
120
|
+
self,
|
121
|
+
stream_state: Optional[StreamState] = None,
|
122
|
+
stream_slice: Optional[StreamSlice] = None,
|
123
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
124
|
+
) -> Mapping[str, Any]:
|
125
|
+
return {}
|
126
|
+
|
127
|
+
def get_request_body_data(
|
128
|
+
self,
|
129
|
+
stream_state: Optional[StreamState] = None,
|
130
|
+
stream_slice: Optional[StreamSlice] = None,
|
131
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
132
|
+
) -> Mapping[str, Any]:
|
133
|
+
return {}
|
134
|
+
|
135
|
+
def get_request_body_json(
|
136
|
+
self,
|
137
|
+
stream_state: Optional[StreamState] = None,
|
138
|
+
stream_slice: Optional[StreamSlice] = None,
|
139
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
140
|
+
) -> Mapping[str, Any]:
|
141
|
+
return {}
|
142
|
+
|
143
|
+
def set_initial_state(self, stream_state: StreamState) -> None:
|
144
|
+
"""Delegate state initialization to the underlying partition router."""
|
145
|
+
self.underlying_partition_router.set_initial_state(stream_state)
|
146
|
+
self._state = self.underlying_partition_router.get_stream_state()
|
147
|
+
|
148
|
+
def get_stream_state(self) -> Optional[Mapping[str, StreamState]]:
|
149
|
+
"""Delegate state retrieval to the underlying partition router."""
|
150
|
+
return self._state
|
@@ -23,7 +23,7 @@ classifiers = [
|
|
23
23
|
keywords = ["airbyte", "connector-development-kit", "cdk"]
|
24
24
|
|
25
25
|
# Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
|
26
|
-
version = "6.41.
|
26
|
+
version = "6.41.2dev0" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/__init__.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/helpers.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/reader.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/types.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/README.md
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/config.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/file_transfer_record_message.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/connector_state_manager.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/status.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/token.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.41.1 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_source.py
RENAMED
File without changes
|