airbyte-cdk 6.13.0__tar.gz → 6.13.0.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.13.0 → airbyte_cdk-6.13.0.dev0}/PKG-INFO +2 -2
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +25 -8
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +52 -35
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +10 -7
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +9 -4
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +11 -6
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +17 -8
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +14 -13
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +7 -8
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +10 -10
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +71 -64
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/pyproject.toml +1 -1
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/README.md +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.13.0 → airbyte_cdk-6.13.0.dev0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -194,10 +194,11 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
194
194
|
# Some low-code sources use a combination of DeclarativeStream and regular Python streams. We can't inspect
|
195
195
|
# these legacy Python streams the way we do low-code streams to determine if they are concurrent compatible,
|
196
196
|
# so we need to treat them as synchronous
|
197
|
-
if (
|
198
|
-
|
199
|
-
and name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
|
197
|
+
if isinstance(declarative_stream, DeclarativeStream) and (
|
198
|
+
name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
|
200
199
|
== "SimpleRetriever"
|
200
|
+
or name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
|
201
|
+
== "AsyncRetriever"
|
201
202
|
):
|
202
203
|
incremental_sync_component_definition = name_to_stream_mapping[
|
203
204
|
declarative_stream.name
|
@@ -217,6 +218,11 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
217
218
|
and not incremental_sync_component_definition
|
218
219
|
)
|
219
220
|
|
221
|
+
is_async_job_stream = (
|
222
|
+
name_to_stream_mapping[declarative_stream.name].get("retriever", {}).get("type")
|
223
|
+
== "AsyncRetriever"
|
224
|
+
)
|
225
|
+
|
220
226
|
if self._is_datetime_incremental_without_partition_routing(
|
221
227
|
declarative_stream, incremental_sync_component_definition
|
222
228
|
):
|
@@ -268,15 +274,26 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
268
274
|
elif (
|
269
275
|
is_substream_without_incremental or is_without_partition_router_or_cursor
|
270
276
|
) and hasattr(declarative_stream.retriever, "stream_slicer"):
|
277
|
+
if is_async_job_stream:
|
278
|
+
# A stream's AsyncRetriever must be shared across all partitions because it uses a
|
279
|
+
# shared JobRepository to manage the state of jobs requests and when they are ready
|
280
|
+
async_retriever = declarative_stream.retriever
|
281
|
+
|
282
|
+
def async_retriever_factory_method() -> Retriever:
|
283
|
+
return async_retriever
|
284
|
+
|
285
|
+
retriever_factory = async_retriever_factory_method
|
286
|
+
else:
|
287
|
+
retriever_factory = self._retriever_factory(
|
288
|
+
name_to_stream_mapping[declarative_stream.name],
|
289
|
+
config,
|
290
|
+
{},
|
291
|
+
)
|
271
292
|
partition_generator = StreamSlicerPartitionGenerator(
|
272
293
|
DeclarativePartitionFactory(
|
273
294
|
declarative_stream.name,
|
274
295
|
declarative_stream.get_json_schema(),
|
275
|
-
|
276
|
-
name_to_stream_mapping[declarative_stream.name],
|
277
|
-
config,
|
278
|
-
{},
|
279
|
-
),
|
296
|
+
retriever_factory,
|
280
297
|
self.message_repository,
|
281
298
|
),
|
282
299
|
declarative_stream.retriever.stream_slicer,
|
@@ -112,27 +112,39 @@ class DefaultPaginator(Paginator):
|
|
112
112
|
)
|
113
113
|
if isinstance(self.url_base, str):
|
114
114
|
self.url_base = InterpolatedString(string=self.url_base, parameters=parameters)
|
115
|
-
|
115
|
+
|
116
|
+
def get_initial_token(self) -> Optional[Any]:
|
117
|
+
"""
|
118
|
+
Return the page token that should be used for the first request of a stream
|
119
|
+
|
120
|
+
WARNING: get_initial_token() should not be used by streams that use RFR that perform checkpointing
|
121
|
+
of state using page numbers. Because paginators are stateless
|
122
|
+
"""
|
123
|
+
return self.pagination_strategy.initial_token
|
116
124
|
|
117
125
|
def next_page_token(
|
118
|
-
self,
|
126
|
+
self,
|
127
|
+
response: requests.Response,
|
128
|
+
last_page_size: int,
|
129
|
+
last_record: Optional[Record],
|
130
|
+
last_page_token_value: Optional[Any] = None,
|
119
131
|
) -> Optional[Mapping[str, Any]]:
|
120
|
-
|
121
|
-
response,
|
132
|
+
next_page_token = self.pagination_strategy.next_page_token(
|
133
|
+
response=response,
|
134
|
+
last_page_size=last_page_size,
|
135
|
+
last_record=last_record,
|
136
|
+
last_page_token_value=last_page_token_value,
|
122
137
|
)
|
123
|
-
if
|
124
|
-
return {"next_page_token":
|
138
|
+
if next_page_token:
|
139
|
+
return {"next_page_token": next_page_token}
|
125
140
|
else:
|
126
141
|
return None
|
127
142
|
|
128
|
-
def path(self) -> Optional[str]:
|
129
|
-
if
|
130
|
-
|
131
|
-
and self.page_token_option
|
132
|
-
and isinstance(self.page_token_option, RequestPath)
|
133
|
-
):
|
143
|
+
def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
|
144
|
+
token = next_page_token.get("next_page_token") if next_page_token else None
|
145
|
+
if token and self.page_token_option and isinstance(self.page_token_option, RequestPath):
|
134
146
|
# Replace url base to only return the path
|
135
|
-
return str(
|
147
|
+
return str(token).replace(self.url_base.eval(self.config), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
|
136
148
|
else:
|
137
149
|
return None
|
138
150
|
|
@@ -143,7 +155,7 @@ class DefaultPaginator(Paginator):
|
|
143
155
|
stream_slice: Optional[StreamSlice] = None,
|
144
156
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
145
157
|
) -> MutableMapping[str, Any]:
|
146
|
-
return self._get_request_options(RequestOptionType.request_parameter)
|
158
|
+
return self._get_request_options(RequestOptionType.request_parameter, next_page_token)
|
147
159
|
|
148
160
|
def get_request_headers(
|
149
161
|
self,
|
@@ -152,7 +164,7 @@ class DefaultPaginator(Paginator):
|
|
152
164
|
stream_slice: Optional[StreamSlice] = None,
|
153
165
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
154
166
|
) -> Mapping[str, str]:
|
155
|
-
return self._get_request_options(RequestOptionType.header)
|
167
|
+
return self._get_request_options(RequestOptionType.header, next_page_token)
|
156
168
|
|
157
169
|
def get_request_body_data(
|
158
170
|
self,
|
@@ -161,7 +173,7 @@ class DefaultPaginator(Paginator):
|
|
161
173
|
stream_slice: Optional[StreamSlice] = None,
|
162
174
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
163
175
|
) -> Mapping[str, Any]:
|
164
|
-
return self._get_request_options(RequestOptionType.body_data)
|
176
|
+
return self._get_request_options(RequestOptionType.body_data, next_page_token)
|
165
177
|
|
166
178
|
def get_request_body_json(
|
167
179
|
self,
|
@@ -170,25 +182,21 @@ class DefaultPaginator(Paginator):
|
|
170
182
|
stream_slice: Optional[StreamSlice] = None,
|
171
183
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
172
184
|
) -> Mapping[str, Any]:
|
173
|
-
return self._get_request_options(RequestOptionType.body_json)
|
174
|
-
|
175
|
-
def reset(self, reset_value: Optional[Any] = None) -> None:
|
176
|
-
if reset_value:
|
177
|
-
self.pagination_strategy.reset(reset_value=reset_value)
|
178
|
-
else:
|
179
|
-
self.pagination_strategy.reset()
|
180
|
-
self._token = self.pagination_strategy.initial_token
|
185
|
+
return self._get_request_options(RequestOptionType.body_json, next_page_token)
|
181
186
|
|
182
|
-
def _get_request_options(
|
187
|
+
def _get_request_options(
|
188
|
+
self, option_type: RequestOptionType, next_page_token: Optional[Mapping[str, Any]]
|
189
|
+
) -> MutableMapping[str, Any]:
|
183
190
|
options = {}
|
184
191
|
|
192
|
+
token = next_page_token.get("next_page_token") if next_page_token else None
|
185
193
|
if (
|
186
194
|
self.page_token_option
|
187
|
-
and
|
195
|
+
and token is not None
|
188
196
|
and isinstance(self.page_token_option, RequestOption)
|
189
197
|
and self.page_token_option.inject_into == option_type
|
190
198
|
):
|
191
|
-
options[self.page_token_option.field_name.eval(config=self.config)] =
|
199
|
+
options[self.page_token_option.field_name.eval(config=self.config)] = token # type: ignore # field_name is always cast to an interpolated string
|
192
200
|
if (
|
193
201
|
self.page_size_option
|
194
202
|
and self.pagination_strategy.get_page_size()
|
@@ -204,6 +212,9 @@ class PaginatorTestReadDecorator(Paginator):
|
|
204
212
|
"""
|
205
213
|
In some cases, we want to limit the number of requests that are made to the backend source. This class allows for limiting the number of
|
206
214
|
pages that are queried throughout a read command.
|
215
|
+
|
216
|
+
WARNING: This decorator is not currently thread-safe like the rest of the low-code framework because it has
|
217
|
+
an internal state to track the current number of pages counted so that it can exit early during a test read
|
207
218
|
"""
|
208
219
|
|
209
220
|
_PAGE_COUNT_BEFORE_FIRST_NEXT_CALL = 1
|
@@ -217,17 +228,27 @@ class PaginatorTestReadDecorator(Paginator):
|
|
217
228
|
self._decorated = decorated
|
218
229
|
self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
|
219
230
|
|
231
|
+
def get_initial_token(self) -> Optional[Any]:
|
232
|
+
self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
|
233
|
+
return self._decorated.get_initial_token()
|
234
|
+
|
220
235
|
def next_page_token(
|
221
|
-
self,
|
236
|
+
self,
|
237
|
+
response: requests.Response,
|
238
|
+
last_page_size: int,
|
239
|
+
last_record: Optional[Record],
|
240
|
+
last_page_token_value: Optional[Any] = None,
|
222
241
|
) -> Optional[Mapping[str, Any]]:
|
223
242
|
if self._page_count >= self._maximum_number_of_pages:
|
224
243
|
return None
|
225
244
|
|
226
245
|
self._page_count += 1
|
227
|
-
return self._decorated.next_page_token(
|
246
|
+
return self._decorated.next_page_token(
|
247
|
+
response, last_page_size, last_record, last_page_token_value
|
248
|
+
)
|
228
249
|
|
229
|
-
def path(self) -> Optional[str]:
|
230
|
-
return self._decorated.path()
|
250
|
+
def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
|
251
|
+
return self._decorated.path(next_page_token)
|
231
252
|
|
232
253
|
def get_request_params(
|
233
254
|
self,
|
@@ -272,7 +293,3 @@ class PaginatorTestReadDecorator(Paginator):
|
|
272
293
|
return self._decorated.get_request_body_json(
|
273
294
|
stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token
|
274
295
|
)
|
275
|
-
|
276
|
-
def reset(self, reset_value: Optional[Any] = None) -> None:
|
277
|
-
self._decorated.reset()
|
278
|
-
self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
|
@@ -19,7 +19,7 @@ class NoPagination(Paginator):
|
|
19
19
|
|
20
20
|
parameters: InitVar[Mapping[str, Any]]
|
21
21
|
|
22
|
-
def path(self) -> Optional[str]:
|
22
|
+
def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
|
23
23
|
return None
|
24
24
|
|
25
25
|
def get_request_params(
|
@@ -58,11 +58,14 @@ class NoPagination(Paginator):
|
|
58
58
|
) -> Mapping[str, Any]:
|
59
59
|
return {}
|
60
60
|
|
61
|
+
def get_initial_token(self) -> Optional[Any]:
|
62
|
+
return None
|
63
|
+
|
61
64
|
def next_page_token(
|
62
|
-
self,
|
63
|
-
|
65
|
+
self,
|
66
|
+
response: requests.Response,
|
67
|
+
last_page_size: int,
|
68
|
+
last_record: Optional[Record],
|
69
|
+
last_page_token_value: Optional[Any],
|
70
|
+
) -> Optional[Mapping[str, Any]]:
|
64
71
|
return {}
|
65
|
-
|
66
|
-
def reset(self, reset_value: Optional[Any] = None) -> None:
|
67
|
-
# No state to reset
|
68
|
-
pass
|
@@ -24,14 +24,18 @@ class Paginator(ABC, RequestOptionsProvider):
|
|
24
24
|
"""
|
25
25
|
|
26
26
|
@abstractmethod
|
27
|
-
def
|
27
|
+
def get_initial_token(self) -> Optional[Any]:
|
28
28
|
"""
|
29
|
-
|
29
|
+
Get the page token that should be included in the request to get the first page of records
|
30
30
|
"""
|
31
31
|
|
32
32
|
@abstractmethod
|
33
33
|
def next_page_token(
|
34
|
-
self,
|
34
|
+
self,
|
35
|
+
response: requests.Response,
|
36
|
+
last_page_size: int,
|
37
|
+
last_record: Optional[Record],
|
38
|
+
last_page_token_value: Optional[Any],
|
35
39
|
) -> Optional[Mapping[str, Any]]:
|
36
40
|
"""
|
37
41
|
Returns the next_page_token to use to fetch the next page of records.
|
@@ -39,12 +43,13 @@ class Paginator(ABC, RequestOptionsProvider):
|
|
39
43
|
:param response: the response to process
|
40
44
|
:param last_page_size: the number of records read from the response
|
41
45
|
:param last_record: the last record extracted from the response
|
46
|
+
:param last_page_token_value: The current value of the page token made on the last request
|
42
47
|
:return: A mapping {"next_page_token": <token>} for the next page from the input response object. Returning None means there are no more pages to read in this response.
|
43
48
|
"""
|
44
49
|
pass
|
45
50
|
|
46
51
|
@abstractmethod
|
47
|
-
def path(self) -> Optional[str]:
|
52
|
+
def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
|
48
53
|
"""
|
49
54
|
Returns the URL path to hit to fetch the next page of records
|
50
55
|
|
@@ -43,7 +43,6 @@ class CursorPaginationStrategy(PaginationStrategy):
|
|
43
43
|
)
|
44
44
|
|
45
45
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
46
|
-
self._initial_cursor = None
|
47
46
|
if isinstance(self.cursor_value, str):
|
48
47
|
self._cursor_value = InterpolatedString.create(self.cursor_value, parameters=parameters)
|
49
48
|
else:
|
@@ -57,10 +56,19 @@ class CursorPaginationStrategy(PaginationStrategy):
|
|
57
56
|
|
58
57
|
@property
|
59
58
|
def initial_token(self) -> Optional[Any]:
|
60
|
-
|
59
|
+
"""
|
60
|
+
CursorPaginationStrategy does not have an initial value because the next cursor is typically included
|
61
|
+
in the response of the first request. For Resumable Full Refresh streams that checkpoint the page
|
62
|
+
cursor, the next cursor should be read from the state or stream slice object.
|
63
|
+
"""
|
64
|
+
return None
|
61
65
|
|
62
66
|
def next_page_token(
|
63
|
-
self,
|
67
|
+
self,
|
68
|
+
response: requests.Response,
|
69
|
+
last_page_size: int,
|
70
|
+
last_record: Optional[Record],
|
71
|
+
last_page_token_value: Optional[Any] = None,
|
64
72
|
) -> Optional[Any]:
|
65
73
|
decoded_response = next(self.decoder.decode(response))
|
66
74
|
|
@@ -87,8 +95,5 @@ class CursorPaginationStrategy(PaginationStrategy):
|
|
87
95
|
)
|
88
96
|
return token if token else None
|
89
97
|
|
90
|
-
def reset(self, reset_value: Optional[Any] = None) -> None:
|
91
|
-
self._initial_cursor = reset_value
|
92
|
-
|
93
98
|
def get_page_size(self) -> Optional[int]:
|
94
99
|
return self.page_size
|
@@ -52,7 +52,6 @@ class OffsetIncrement(PaginationStrategy):
|
|
52
52
|
inject_on_first_request: bool = False
|
53
53
|
|
54
54
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
55
|
-
self._offset = 0
|
56
55
|
page_size = str(self.page_size) if isinstance(self.page_size, int) else self.page_size
|
57
56
|
if page_size:
|
58
57
|
self._page_size: Optional[InterpolatedString] = InterpolatedString(
|
@@ -64,11 +63,15 @@ class OffsetIncrement(PaginationStrategy):
|
|
64
63
|
@property
|
65
64
|
def initial_token(self) -> Optional[Any]:
|
66
65
|
if self.inject_on_first_request:
|
67
|
-
return
|
66
|
+
return 0
|
68
67
|
return None
|
69
68
|
|
70
69
|
def next_page_token(
|
71
|
-
self,
|
70
|
+
self,
|
71
|
+
response: requests.Response,
|
72
|
+
last_page_size: int,
|
73
|
+
last_record: Optional[Record],
|
74
|
+
last_page_token_value: Optional[Any] = None,
|
72
75
|
) -> Optional[Any]:
|
73
76
|
decoded_response = next(self.decoder.decode(response))
|
74
77
|
|
@@ -78,14 +81,20 @@ class OffsetIncrement(PaginationStrategy):
|
|
78
81
|
and last_page_size < self._page_size.eval(self.config, response=decoded_response)
|
79
82
|
) or last_page_size == 0:
|
80
83
|
return None
|
84
|
+
elif last_page_token_value is None:
|
85
|
+
# If the OffsetIncrement strategy does not inject on the first request, the incoming last_page_token_value
|
86
|
+
# will be None. For this case, we assume that None was the first page and progress to the next offset
|
87
|
+
return 0 + last_page_size
|
88
|
+
elif not isinstance(last_page_token_value, int):
|
89
|
+
raise ValueError(
|
90
|
+
"The page token for a OffsetIncrement pagination strategy must be an integer"
|
91
|
+
)
|
81
92
|
else:
|
82
|
-
|
83
|
-
return
|
93
|
+
next_page_token_value = last_page_token_value + last_page_size
|
94
|
+
return next_page_token_value
|
84
95
|
|
85
96
|
def reset(self, reset_value: Optional[Any] = 0) -> None:
|
86
|
-
if reset_value
|
87
|
-
self._offset = 0
|
88
|
-
elif not isinstance(reset_value, int):
|
97
|
+
if not isinstance(reset_value, int):
|
89
98
|
raise ValueError(
|
90
99
|
f"Reset value {reset_value} for OffsetIncrement pagination strategy was not an integer"
|
91
100
|
)
|
@@ -31,7 +31,6 @@ class PageIncrement(PaginationStrategy):
|
|
31
31
|
inject_on_first_request: bool = False
|
32
32
|
|
33
33
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
34
|
-
self._page = self.start_from_page
|
35
34
|
if isinstance(self.page_size, int) or (self.page_size is None):
|
36
35
|
self._page_size = self.page_size
|
37
36
|
else:
|
@@ -43,28 +42,30 @@ class PageIncrement(PaginationStrategy):
|
|
43
42
|
@property
|
44
43
|
def initial_token(self) -> Optional[Any]:
|
45
44
|
if self.inject_on_first_request:
|
46
|
-
return self.
|
45
|
+
return self.start_from_page
|
47
46
|
return None
|
48
47
|
|
49
48
|
def next_page_token(
|
50
|
-
self,
|
49
|
+
self,
|
50
|
+
response: requests.Response,
|
51
|
+
last_page_size: int,
|
52
|
+
last_record: Optional[Record],
|
53
|
+
last_page_token_value: Optional[Any],
|
51
54
|
) -> Optional[Any]:
|
52
55
|
# Stop paginating when there are fewer records than the page size or the current page has no records
|
53
56
|
if (self._page_size and last_page_size < self._page_size) or last_page_size == 0:
|
54
57
|
return None
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
self._page = self.start_from_page
|
62
|
-
elif not isinstance(reset_value, int):
|
58
|
+
elif last_page_token_value is None:
|
59
|
+
# If the PageIncrement strategy does not inject on the first request, the incoming last_page_token_value
|
60
|
+
# may be None. When this is the case, we assume we've already requested the first page specified by
|
61
|
+
# start_from_page and must now get the next page
|
62
|
+
return self.start_from_page + 1
|
63
|
+
elif not isinstance(last_page_token_value, int):
|
63
64
|
raise ValueError(
|
64
|
-
|
65
|
+
"The page token for a PageIncrement pagination strategy must be an integer"
|
65
66
|
)
|
66
67
|
else:
|
67
|
-
|
68
|
+
return last_page_token_value + 1
|
68
69
|
|
69
70
|
def get_page_size(self) -> Optional[int]:
|
70
71
|
return self._page_size
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
from abc import abstractmethod
|
6
6
|
from dataclasses import dataclass
|
7
|
-
from typing import Any, Optional
|
7
|
+
from typing import Any, Mapping, Optional
|
8
8
|
|
9
9
|
import requests
|
10
10
|
|
@@ -26,22 +26,21 @@ class PaginationStrategy:
|
|
26
26
|
|
27
27
|
@abstractmethod
|
28
28
|
def next_page_token(
|
29
|
-
self,
|
29
|
+
self,
|
30
|
+
response: requests.Response,
|
31
|
+
last_page_size: int,
|
32
|
+
last_record: Optional[Record],
|
33
|
+
last_page_token_value: Optional[Any],
|
30
34
|
) -> Optional[Any]:
|
31
35
|
"""
|
32
36
|
:param response: response to process
|
33
37
|
:param last_page_size: the number of records read from the response
|
34
38
|
:param last_record: the last record extracted from the response
|
39
|
+
:param last_page_token_value: The current value of the page token made on the last request
|
35
40
|
:return: next page token. Returns None if there are no more pages to fetch
|
36
41
|
"""
|
37
42
|
pass
|
38
43
|
|
39
|
-
@abstractmethod
|
40
|
-
def reset(self, reset_value: Optional[Any] = None) -> None:
|
41
|
-
"""
|
42
|
-
Reset the pagination's inner state
|
43
|
-
"""
|
44
|
-
|
45
44
|
@abstractmethod
|
46
45
|
def get_page_size(self) -> Optional[int]:
|
47
46
|
"""
|
@@ -44,19 +44,19 @@ class StopConditionPaginationStrategyDecorator(PaginationStrategy):
|
|
44
44
|
self._stop_condition = stop_condition
|
45
45
|
|
46
46
|
def next_page_token(
|
47
|
-
self,
|
47
|
+
self,
|
48
|
+
response: requests.Response,
|
49
|
+
last_page_size: int,
|
50
|
+
last_record: Optional[Record],
|
51
|
+
last_page_token_value: Optional[Any] = None,
|
48
52
|
) -> Optional[Any]:
|
49
|
-
# We evaluate in reverse order because the assumption is that most of the APIs using data feed structure
|
50
|
-
# descending order. In terms of performance/memory, we return the records lazily
|
53
|
+
# We evaluate in reverse order because the assumption is that most of the APIs using data feed structure
|
54
|
+
# will return records in descending order. In terms of performance/memory, we return the records lazily
|
51
55
|
if last_record and self._stop_condition.is_met(last_record):
|
52
56
|
return None
|
53
|
-
return self._delegate.next_page_token(
|
54
|
-
|
55
|
-
|
56
|
-
if reset_value:
|
57
|
-
self._delegate.reset(reset_value)
|
58
|
-
else:
|
59
|
-
self._delegate.reset()
|
57
|
+
return self._delegate.next_page_token(
|
58
|
+
response, last_page_size, last_record, last_page_token_value
|
59
|
+
)
|
60
60
|
|
61
61
|
def get_page_size(self) -> Optional[int]:
|
62
62
|
return self._delegate.get_page_size()
|