airbyte-cdk 6.41.2__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.2 → airbyte_cdk-6.41.2.dev0}/PKG-INFO +1 -1
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +45 -10
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +2 -1
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +42 -7
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +41 -24
- {airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +1 -3
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +7 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/pyproject.toml +1 -1
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → 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.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.41.2 → 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.
|
@@ -3333,7 +3335,7 @@ definitions:
|
|
3333
3335
|
items:
|
3334
3336
|
type: string
|
3335
3337
|
AsyncRetriever:
|
3336
|
-
description: "Retrieves records by Asynchronously sending requests to fetch records. The retriever acts as an orchestrator between the requester, the record selector, the paginator, and the partition router."
|
3338
|
+
description: "[Experimental - We expect the interface to change shortly and we reserve the right to not consider this a breaking change] Retrieves records by Asynchronously sending requests to fetch records. The retriever acts as an orchestrator between the requester, the record selector, the paginator, and the partition router."
|
3337
3339
|
type: object
|
3338
3340
|
required:
|
3339
3341
|
- type
|
@@ -3381,13 +3383,6 @@ definitions:
|
|
3381
3383
|
anyOf:
|
3382
3384
|
- "$ref": "#/definitions/CustomRequester"
|
3383
3385
|
- "$ref": "#/definitions/HttpRequester"
|
3384
|
-
polling_job_timeout:
|
3385
|
-
description: The time in minutes after which the single Async Job should be considered as Timed Out.
|
3386
|
-
anyOf:
|
3387
|
-
- type: integer
|
3388
|
-
- type: string
|
3389
|
-
interpolation_context:
|
3390
|
-
- config
|
3391
3386
|
download_target_requester:
|
3392
3387
|
description: Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.
|
3393
3388
|
anyOf:
|
@@ -3421,12 +3416,14 @@ definitions:
|
|
3421
3416
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3422
3417
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3423
3418
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3419
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3424
3420
|
- type: array
|
3425
3421
|
items:
|
3426
3422
|
anyOf:
|
3427
3423
|
- "$ref": "#/definitions/CustomPartitionRouter"
|
3428
3424
|
- "$ref": "#/definitions/ListPartitionRouter"
|
3429
3425
|
- "$ref": "#/definitions/SubstreamPartitionRouter"
|
3426
|
+
- "$ref": "#/definitions/GroupingPartitionRouter"
|
3430
3427
|
decoder:
|
3431
3428
|
title: Decoder
|
3432
3429
|
description: Component decoding the response so records can be extracted.
|
@@ -3543,6 +3540,44 @@ definitions:
|
|
3543
3540
|
$parameters:
|
3544
3541
|
type: object
|
3545
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
|
3546
3581
|
WaitUntilTimeFromHeader:
|
3547
3582
|
title: Wait Until Time Defined In Response Header
|
3548
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
|
@@ -1467,7 +1467,7 @@ class AddFields(BaseModel):
|
|
1467
1467
|
)
|
1468
1468
|
condition: Optional[str] = Field(
|
1469
1469
|
"",
|
1470
|
-
description="Fields will be added if expression is evaluated to True
|
1470
|
+
description="Fields will be added if expression is evaluated to True.,",
|
1471
1471
|
examples=[
|
1472
1472
|
"{{ property|string == '' }}",
|
1473
1473
|
"{{ property is integer }}",
|
@@ -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
|
[],
|
@@ -2354,10 +2362,6 @@ class AsyncRetriever(BaseModel):
|
|
2354
2362
|
...,
|
2355
2363
|
description="Requester component that describes how to prepare HTTP requests to send to the source API to fetch the status of the running async job.",
|
2356
2364
|
)
|
2357
|
-
polling_job_timeout: Optional[Union[int, str]] = Field(
|
2358
|
-
None,
|
2359
|
-
description="The time in minutes after which the single Async Job should be considered as Timed Out.",
|
2360
|
-
)
|
2361
2365
|
download_target_requester: Optional[Union[CustomRequester, HttpRequester]] = Field(
|
2362
2366
|
None,
|
2363
2367
|
description="Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.",
|
@@ -2383,7 +2387,15 @@ class AsyncRetriever(BaseModel):
|
|
2383
2387
|
CustomPartitionRouter,
|
2384
2388
|
ListPartitionRouter,
|
2385
2389
|
SubstreamPartitionRouter,
|
2386
|
-
|
2390
|
+
GroupingPartitionRouter,
|
2391
|
+
List[
|
2392
|
+
Union[
|
2393
|
+
CustomPartitionRouter,
|
2394
|
+
ListPartitionRouter,
|
2395
|
+
SubstreamPartitionRouter,
|
2396
|
+
GroupingPartitionRouter,
|
2397
|
+
]
|
2398
|
+
],
|
2387
2399
|
]
|
2388
2400
|
] = Field(
|
2389
2401
|
[],
|
@@ -2435,6 +2447,29 @@ class SubstreamPartitionRouter(BaseModel):
|
|
2435
2447
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
2436
2448
|
|
2437
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
|
+
|
2438
2473
|
class HttpComponentsResolver(BaseModel):
|
2439
2474
|
type: Literal["HttpComponentsResolver"]
|
2440
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,
|
@@ -507,7 +511,7 @@ from airbyte_cdk.sources.streams.concurrent.state_converters.incrementing_count_
|
|
507
511
|
IncrementingCountStreamStateConverter,
|
508
512
|
)
|
509
513
|
from airbyte_cdk.sources.streams.http.error_handlers.response_models import ResponseAction
|
510
|
-
from airbyte_cdk.sources.types import Config
|
514
|
+
from airbyte_cdk.sources.types import Config, ConnectionDefinition
|
511
515
|
from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer
|
512
516
|
|
513
517
|
ComponentDefinition = Mapping[str, Any]
|
@@ -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
|
@@ -2939,27 +2948,6 @@ class ModelToComponentFactory:
|
|
2939
2948
|
parameters={},
|
2940
2949
|
)
|
2941
2950
|
|
2942
|
-
def _get_job_timeout() -> datetime.timedelta:
|
2943
|
-
user_defined_timeout: Optional[int] = (
|
2944
|
-
int(
|
2945
|
-
InterpolatedString.create(
|
2946
|
-
str(model.polling_job_timeout),
|
2947
|
-
parameters={},
|
2948
|
-
).eval(config)
|
2949
|
-
)
|
2950
|
-
if model.polling_job_timeout
|
2951
|
-
else None
|
2952
|
-
)
|
2953
|
-
|
2954
|
-
# check for user defined timeout during the test read or 15 minutes
|
2955
|
-
test_read_timeout = datetime.timedelta(minutes=user_defined_timeout or 15)
|
2956
|
-
# default value for non-connector builder is 60 minutes.
|
2957
|
-
default_sync_timeout = datetime.timedelta(minutes=user_defined_timeout or 60)
|
2958
|
-
|
2959
|
-
return (
|
2960
|
-
test_read_timeout if self._emit_connector_builder_messages else default_sync_timeout
|
2961
|
-
)
|
2962
|
-
|
2963
2951
|
decoder = (
|
2964
2952
|
self._create_component_from_model(model=model.decoder, config=config)
|
2965
2953
|
if model.decoder
|
@@ -3053,7 +3041,6 @@ class ModelToComponentFactory:
|
|
3053
3041
|
config=config,
|
3054
3042
|
name=name,
|
3055
3043
|
)
|
3056
|
-
|
3057
3044
|
job_repository: AsyncJobRepository = AsyncHttpJobRepository(
|
3058
3045
|
creation_requester=creation_requester,
|
3059
3046
|
polling_requester=polling_requester,
|
@@ -3064,7 +3051,6 @@ class ModelToComponentFactory:
|
|
3064
3051
|
status_extractor=status_extractor,
|
3065
3052
|
status_mapping=self._create_async_job_status_mapping(model.status_mapping, config),
|
3066
3053
|
download_target_extractor=download_target_extractor,
|
3067
|
-
job_timeout=_get_job_timeout(),
|
3068
3054
|
)
|
3069
3055
|
|
3070
3056
|
async_job_partition_router = AsyncJobPartitionRouter(
|
@@ -3367,3 +3353,34 @@ class ModelToComponentFactory:
|
|
3367
3353
|
self._api_budget = self.create_component(
|
3368
3354
|
model_type=HTTPAPIBudgetModel, component_definition=component_definition, config=config
|
3369
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
|
@@ -45,9 +45,7 @@ class AsyncHttpJobRepository(AsyncJobRepository):
|
|
45
45
|
status_mapping: Mapping[str, AsyncJobStatus]
|
46
46
|
download_target_extractor: DpathExtractor
|
47
47
|
|
48
|
-
# timeout for the job to be completed, passed from `polling_job_timeout`
|
49
48
|
job_timeout: Optional[timedelta] = None
|
50
|
-
|
51
49
|
record_extractor: RecordExtractor = field(
|
52
50
|
init=False, repr=False, default_factory=lambda: ResponseToFileExtractor({})
|
53
51
|
)
|
@@ -133,7 +131,7 @@ class AsyncHttpJobRepository(AsyncJobRepository):
|
|
133
131
|
log_formatter=lambda response: format_http_message(
|
134
132
|
response=response,
|
135
133
|
title="Async Job -- Create",
|
136
|
-
description=
|
134
|
+
description="Create the server-side async job.",
|
137
135
|
stream_name=None,
|
138
136
|
is_auxiliary=True,
|
139
137
|
type="ASYNC_CREATE",
|
@@ -4,17 +4,24 @@
|
|
4
4
|
from dataclasses import InitVar, dataclass, field
|
5
5
|
from typing import Any, Iterable, Mapping, Optional
|
6
6
|
|
7
|
+
from typing_extensions import deprecated
|
8
|
+
|
7
9
|
from airbyte_cdk.sources.declarative.async_job.job import AsyncJob
|
8
10
|
from airbyte_cdk.sources.declarative.extractors.record_selector import RecordSelector
|
9
11
|
from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_router import (
|
10
12
|
AsyncJobPartitionRouter,
|
11
13
|
)
|
12
14
|
from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever
|
15
|
+
from airbyte_cdk.sources.source import ExperimentalClassWarning
|
13
16
|
from airbyte_cdk.sources.streams.core import StreamData
|
14
17
|
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
15
18
|
from airbyte_cdk.sources.utils.slice_logger import AlwaysLogSliceLogger
|
16
19
|
|
17
20
|
|
21
|
+
@deprecated(
|
22
|
+
"This class is experimental. Use at your own risk.",
|
23
|
+
category=ExperimentalClassWarning,
|
24
|
+
)
|
18
25
|
@dataclass
|
19
26
|
class AsyncRetriever(Retriever):
|
20
27
|
config: Config
|
@@ -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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/__init__.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/connector_builder/test_reader/reader.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/README.md
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → 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.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py
RENAMED
File without changes
|
{airbyte_cdk-6.41.2 → airbyte_cdk-6.41.2.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py
RENAMED
File without changes
|
File without changes
|