airbyte-cdk 6.33.2__tar.gz → 6.33.2.dev1__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.33.2 → airbyte_cdk-6.33.2.dev1}/PKG-INFO +1 -1
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py +1 -6
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +1 -15
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +208 -1
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +11 -6
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +4 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +165 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +141 -17
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +3 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/call_rate.py +116 -40
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -3
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/pyproject.toml +1 -1
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/LICENSE.txt +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/utils/traced_exception.py +0 -0
{airbyte_cdk-6.33.2 → airbyte_cdk-6.33.2.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
from dataclasses import InitVar, dataclass, field
|
6
|
-
from datetime import
|
6
|
+
from datetime import timedelta
|
7
7
|
from typing import Any, List, Mapping, MutableMapping, Optional, Union
|
8
8
|
|
9
9
|
from airbyte_cdk.sources.declarative.auth.declarative_authenticator import DeclarativeAuthenticator
|
@@ -232,13 +232,8 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
232
232
|
return self._refresh_request_headers.eval(self.config)
|
233
233
|
|
234
234
|
def get_token_expiry_date(self) -> AirbyteDateTime:
|
235
|
-
if not self._has_access_token_been_initialized():
|
236
|
-
return AirbyteDateTime.from_datetime(datetime.min)
|
237
235
|
return self._token_expiry_date # type: ignore # _token_expiry_date is an AirbyteDateTime. It is never None despite what mypy thinks
|
238
236
|
|
239
|
-
def _has_access_token_been_initialized(self) -> bool:
|
240
|
-
return self._access_token is not None
|
241
|
-
|
242
237
|
def set_token_expiry_date(self, value: Union[str, int]) -> None:
|
243
238
|
self._token_expiry_date = self._parse_token_expiration_date(value)
|
244
239
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
import logging
|
6
|
-
from typing import Any, Generic, Iterator, List, Mapping,
|
6
|
+
from typing import Any, Generic, Iterator, List, Mapping, Optional, Tuple
|
7
7
|
|
8
8
|
from airbyte_cdk.models import (
|
9
9
|
AirbyteCatalog,
|
@@ -224,7 +224,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
224
224
|
stream_state = self._connector_state_manager.get_stream_state(
|
225
225
|
stream_name=declarative_stream.name, namespace=declarative_stream.namespace
|
226
226
|
)
|
227
|
-
stream_state = self._migrate_state(declarative_stream, stream_state)
|
228
227
|
|
229
228
|
retriever = self._get_retriever(declarative_stream, stream_state)
|
230
229
|
|
@@ -332,8 +331,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
332
331
|
stream_state = self._connector_state_manager.get_stream_state(
|
333
332
|
stream_name=declarative_stream.name, namespace=declarative_stream.namespace
|
334
333
|
)
|
335
|
-
stream_state = self._migrate_state(declarative_stream, stream_state)
|
336
|
-
|
337
334
|
partition_router = declarative_stream.retriever.stream_slicer._partition_router
|
338
335
|
|
339
336
|
perpartition_cursor = (
|
@@ -524,14 +521,3 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
524
521
|
if stream.stream.name not in concurrent_stream_names
|
525
522
|
]
|
526
523
|
)
|
527
|
-
|
528
|
-
@staticmethod
|
529
|
-
def _migrate_state(
|
530
|
-
declarative_stream: DeclarativeStream, stream_state: MutableMapping[str, Any]
|
531
|
-
) -> MutableMapping[str, Any]:
|
532
|
-
for state_migration in declarative_stream.state_migrations:
|
533
|
-
if state_migration.should_migrate(stream_state):
|
534
|
-
# The state variable is expected to be mutable but the migrate method returns an immutable mapping.
|
535
|
-
stream_state = dict(state_migration.migrate(stream_state))
|
536
|
-
|
537
|
-
return stream_state
|
@@ -40,6 +40,12 @@ properties:
|
|
40
40
|
"$ref": "#/definitions/Spec"
|
41
41
|
concurrency_level:
|
42
42
|
"$ref": "#/definitions/ConcurrencyLevel"
|
43
|
+
api_budget:
|
44
|
+
title: API Budget
|
45
|
+
description: Defines how many requests can be made to the API in a given time frame. This field accepts either a generic APIBudget or an HTTP-specific configuration (HTTPAPIBudget) to be applied across all streams.
|
46
|
+
anyOf:
|
47
|
+
- "$ref": "#/definitions/APIBudget"
|
48
|
+
- "$ref": "#/definitions/HTTPAPIBudget"
|
43
49
|
metadata:
|
44
50
|
type: object
|
45
51
|
description: For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.
|
@@ -794,7 +800,7 @@ definitions:
|
|
794
800
|
description: This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)
|
795
801
|
type: object
|
796
802
|
required:
|
797
|
-
|
803
|
+
- target
|
798
804
|
properties:
|
799
805
|
target:
|
800
806
|
title: Target
|
@@ -1365,6 +1371,207 @@ definitions:
|
|
1365
1371
|
$parameters:
|
1366
1372
|
type: object
|
1367
1373
|
additional_properties: true
|
1374
|
+
APIBudget:
|
1375
|
+
title: API Budget
|
1376
|
+
description: >
|
1377
|
+
A generic API budget configuration that defines the policies (rate limiting rules)
|
1378
|
+
and the maximum number of attempts to acquire a call credit. This budget does not automatically
|
1379
|
+
update itself based on HTTP response headers.
|
1380
|
+
type: object
|
1381
|
+
required:
|
1382
|
+
- type
|
1383
|
+
- policies
|
1384
|
+
properties:
|
1385
|
+
type:
|
1386
|
+
type: string
|
1387
|
+
enum: [APIBudget]
|
1388
|
+
policies:
|
1389
|
+
title: Policies
|
1390
|
+
description: List of call rate policies that define how many calls are allowed.
|
1391
|
+
type: array
|
1392
|
+
items:
|
1393
|
+
anyOf:
|
1394
|
+
- "$ref": "#/definitions/FixedWindowCallRatePolicy"
|
1395
|
+
- "$ref": "#/definitions/MovingWindowCallRatePolicy"
|
1396
|
+
- "$ref": "#/definitions/UnlimitedCallRatePolicy"
|
1397
|
+
maximum_attempts_to_acquire:
|
1398
|
+
title: Maximum Attempts to Acquire
|
1399
|
+
description: The maximum number of attempts to acquire a call before giving up.
|
1400
|
+
type: integer
|
1401
|
+
default: 100000
|
1402
|
+
additionalProperties: true
|
1403
|
+
HTTPAPIBudget:
|
1404
|
+
title: HTTP API Budget
|
1405
|
+
description: >
|
1406
|
+
An HTTP-specific API budget that extends APIBudget by updating rate limiting information based
|
1407
|
+
on HTTP response headers. It extracts available calls and the next reset timestamp from the HTTP responses.
|
1408
|
+
type: object
|
1409
|
+
required:
|
1410
|
+
- type
|
1411
|
+
- policies
|
1412
|
+
properties:
|
1413
|
+
type:
|
1414
|
+
type: string
|
1415
|
+
enum: [HTTPAPIBudget]
|
1416
|
+
policies:
|
1417
|
+
title: Policies
|
1418
|
+
description: List of call rate policies that define how many calls are allowed.
|
1419
|
+
type: array
|
1420
|
+
items:
|
1421
|
+
anyOf:
|
1422
|
+
- "$ref": "#/definitions/FixedWindowCallRatePolicy"
|
1423
|
+
- "$ref": "#/definitions/MovingWindowCallRatePolicy"
|
1424
|
+
- "$ref": "#/definitions/UnlimitedCallRatePolicy"
|
1425
|
+
ratelimit_reset_header:
|
1426
|
+
title: Rate Limit Reset Header
|
1427
|
+
description: The HTTP response header name that indicates when the rate limit resets.
|
1428
|
+
type: string
|
1429
|
+
default: "ratelimit-reset"
|
1430
|
+
ratelimit_remaining_header:
|
1431
|
+
title: Rate Limit Remaining Header
|
1432
|
+
description: The HTTP response header name that indicates the number of remaining allowed calls.
|
1433
|
+
type: string
|
1434
|
+
default: "ratelimit-remaining"
|
1435
|
+
status_codes_for_ratelimit_hit:
|
1436
|
+
title: Status Codes for Rate Limit Hit
|
1437
|
+
description: List of HTTP status codes that indicate a rate limit has been hit.
|
1438
|
+
type: array
|
1439
|
+
items:
|
1440
|
+
type: integer
|
1441
|
+
default: [429]
|
1442
|
+
maximum_attempts_to_acquire:
|
1443
|
+
title: Maximum Attempts to Acquire
|
1444
|
+
description: The maximum number of attempts to acquire a call before giving up.
|
1445
|
+
type: integer
|
1446
|
+
default: 100000
|
1447
|
+
additionalProperties: true
|
1448
|
+
FixedWindowCallRatePolicy:
|
1449
|
+
title: Fixed Window Call Rate Policy
|
1450
|
+
description: A policy that allows a fixed number of calls within a specific time window.
|
1451
|
+
type: object
|
1452
|
+
required:
|
1453
|
+
- type
|
1454
|
+
- next_reset_ts
|
1455
|
+
- period
|
1456
|
+
- call_limit
|
1457
|
+
- matchers
|
1458
|
+
properties:
|
1459
|
+
type:
|
1460
|
+
type: string
|
1461
|
+
enum: [FixedWindowCallRatePolicy]
|
1462
|
+
next_reset_ts:
|
1463
|
+
title: Next Reset Timestamp
|
1464
|
+
description: The timestamp when the rate limit will reset.
|
1465
|
+
type: string
|
1466
|
+
format: date-time
|
1467
|
+
period:
|
1468
|
+
title: Period
|
1469
|
+
description: The time interval for the rate limit window.
|
1470
|
+
type: string
|
1471
|
+
format: duration
|
1472
|
+
call_limit:
|
1473
|
+
title: Call Limit
|
1474
|
+
description: The maximum number of calls allowed within the period.
|
1475
|
+
type: integer
|
1476
|
+
matchers:
|
1477
|
+
title: Matchers
|
1478
|
+
description: List of matchers that define which requests this policy applies to.
|
1479
|
+
type: array
|
1480
|
+
items:
|
1481
|
+
"$ref": "#/definitions/HttpRequestRegexMatcher"
|
1482
|
+
additionalProperties: true
|
1483
|
+
MovingWindowCallRatePolicy:
|
1484
|
+
title: Moving Window Call Rate Policy
|
1485
|
+
description: A policy that allows a fixed number of calls within a moving time window.
|
1486
|
+
type: object
|
1487
|
+
required:
|
1488
|
+
- type
|
1489
|
+
- rates
|
1490
|
+
- matchers
|
1491
|
+
properties:
|
1492
|
+
type:
|
1493
|
+
type: string
|
1494
|
+
enum: [MovingWindowCallRatePolicy]
|
1495
|
+
rates:
|
1496
|
+
title: Rates
|
1497
|
+
description: List of rates that define the call limits for different time intervals.
|
1498
|
+
type: array
|
1499
|
+
items:
|
1500
|
+
"$ref": "#/definitions/Rate"
|
1501
|
+
matchers:
|
1502
|
+
title: Matchers
|
1503
|
+
description: List of matchers that define which requests this policy applies to.
|
1504
|
+
type: array
|
1505
|
+
items:
|
1506
|
+
"$ref": "#/definitions/HttpRequestRegexMatcher"
|
1507
|
+
additionalProperties: true
|
1508
|
+
UnlimitedCallRatePolicy:
|
1509
|
+
title: Unlimited Call Rate Policy
|
1510
|
+
description: A policy that allows unlimited calls for specific requests.
|
1511
|
+
type: object
|
1512
|
+
required:
|
1513
|
+
- type
|
1514
|
+
- matchers
|
1515
|
+
properties:
|
1516
|
+
type:
|
1517
|
+
type: string
|
1518
|
+
enum: [UnlimitedCallRatePolicy]
|
1519
|
+
matchers:
|
1520
|
+
title: Matchers
|
1521
|
+
description: List of matchers that define which requests this policy applies to.
|
1522
|
+
type: array
|
1523
|
+
items:
|
1524
|
+
"$ref": "#/definitions/HttpRequestRegexMatcher"
|
1525
|
+
additionalProperties: true
|
1526
|
+
Rate:
|
1527
|
+
title: Rate
|
1528
|
+
description: Defines a rate limit with a specific number of calls allowed within a time interval.
|
1529
|
+
type: object
|
1530
|
+
required:
|
1531
|
+
- limit
|
1532
|
+
- interval
|
1533
|
+
properties:
|
1534
|
+
limit:
|
1535
|
+
title: Limit
|
1536
|
+
description: The maximum number of calls allowed within the interval.
|
1537
|
+
type: integer
|
1538
|
+
interval:
|
1539
|
+
title: Interval
|
1540
|
+
description: The time interval for the rate limit.
|
1541
|
+
type: string
|
1542
|
+
format: duration
|
1543
|
+
additionalProperties: true
|
1544
|
+
HttpRequestRegexMatcher:
|
1545
|
+
title: HTTP Request Matcher
|
1546
|
+
description: >
|
1547
|
+
Matches HTTP requests based on method, base URL, URL path pattern, query parameters, and headers.
|
1548
|
+
Use `url_base` to specify the scheme and host (without trailing slash) and
|
1549
|
+
`url_path_pattern` to apply a regex to the request path.
|
1550
|
+
type: object
|
1551
|
+
properties:
|
1552
|
+
method:
|
1553
|
+
title: Method
|
1554
|
+
description: The HTTP method to match (e.g., GET, POST).
|
1555
|
+
type: string
|
1556
|
+
url_base:
|
1557
|
+
title: URL Base
|
1558
|
+
description: The base URL (scheme and host, e.g. "https://api.example.com") to match.
|
1559
|
+
type: string
|
1560
|
+
url_path_pattern:
|
1561
|
+
title: URL Path Pattern
|
1562
|
+
description: A regular expression pattern to match the URL path.
|
1563
|
+
type: string
|
1564
|
+
params:
|
1565
|
+
title: Parameters
|
1566
|
+
description: The query parameters to match.
|
1567
|
+
type: object
|
1568
|
+
additionalProperties: true
|
1569
|
+
headers:
|
1570
|
+
title: Headers
|
1571
|
+
description: The headers to match.
|
1572
|
+
type: object
|
1573
|
+
additionalProperties: true
|
1574
|
+
additionalProperties: true
|
1368
1575
|
DefaultErrorHandler:
|
1369
1576
|
title: Default Error Handler
|
1370
1577
|
description: Component defining how to handle errors. Default behavior includes only retrying server errors (HTTP 5XX) and too many requests (HTTP 429) with an exponential backoff.
|
@@ -58,7 +58,8 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
58
58
|
CurrentPerPartitionCursor expects the state of the ConcurrentCursor to follow the format {cursor_field: cursor_value}.
|
59
59
|
"""
|
60
60
|
|
61
|
-
DEFAULT_MAX_PARTITIONS_NUMBER =
|
61
|
+
DEFAULT_MAX_PARTITIONS_NUMBER = 25_000
|
62
|
+
SWITCH_TO_GLOBAL_LIMIT = 1000
|
62
63
|
_NO_STATE: Mapping[str, Any] = {}
|
63
64
|
_NO_CURSOR_STATE: Mapping[str, Any] = {}
|
64
65
|
_GLOBAL_STATE_KEY = "state"
|
@@ -99,7 +100,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
99
100
|
self._new_global_cursor: Optional[StreamState] = None
|
100
101
|
self._lookback_window: int = 0
|
101
102
|
self._parent_state: Optional[StreamState] = None
|
102
|
-
self.
|
103
|
+
self._number_of_partitions: int = 0
|
103
104
|
self._use_global_cursor: bool = False
|
104
105
|
self._partition_serializer = PerPartitionKeySerializer()
|
105
106
|
|
@@ -233,8 +234,8 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
233
234
|
or removed due to being the oldest.
|
234
235
|
"""
|
235
236
|
with self._lock:
|
237
|
+
self._number_of_partitions += 1
|
236
238
|
while len(self._cursor_per_partition) > self.DEFAULT_MAX_PARTITIONS_NUMBER - 1:
|
237
|
-
self._over_limit += 1
|
238
239
|
# Try removing finished partitions first
|
239
240
|
for partition_key in list(self._cursor_per_partition.keys()):
|
240
241
|
if (
|
@@ -245,7 +246,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
245
246
|
partition_key
|
246
247
|
) # Remove the oldest partition
|
247
248
|
logger.warning(
|
248
|
-
f"The maximum number of partitions has been reached. Dropping the oldest finished partition: {oldest_partition}. Over limit: {self.
|
249
|
+
f"The maximum number of partitions has been reached. Dropping the oldest finished partition: {oldest_partition}. Over limit: {self._number_of_partitions}."
|
249
250
|
)
|
250
251
|
break
|
251
252
|
else:
|
@@ -254,7 +255,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
254
255
|
1
|
255
256
|
] # Remove the oldest partition
|
256
257
|
logger.warning(
|
257
|
-
f"The maximum number of partitions has been reached. Dropping the oldest partition: {oldest_partition}. Over limit: {self.
|
258
|
+
f"The maximum number of partitions has been reached. Dropping the oldest partition: {oldest_partition}. Over limit: {self._number_of_partitions}."
|
258
259
|
)
|
259
260
|
|
260
261
|
def _set_initial_state(self, stream_state: StreamState) -> None:
|
@@ -355,6 +356,10 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
355
356
|
|
356
357
|
def observe(self, record: Record) -> None:
|
357
358
|
if not self._use_global_cursor and self.limit_reached():
|
359
|
+
logger.info(
|
360
|
+
f"Exceeded the 'SWITCH_TO_GLOBAL_LIMIT' of {self.SWITCH_TO_GLOBAL_LIMIT}. "
|
361
|
+
f"Switching to global cursor for {self._stream_name}."
|
362
|
+
)
|
358
363
|
self._use_global_cursor = True
|
359
364
|
|
360
365
|
if not record.associated_slice:
|
@@ -397,4 +402,4 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
397
402
|
return cursor
|
398
403
|
|
399
404
|
def limit_reached(self) -> bool:
|
400
|
-
return self.
|
405
|
+
return self._number_of_partitions > self.SWITCH_TO_GLOBAL_LIMIT
|
@@ -137,6 +137,10 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
137
137
|
self._source_config, config
|
138
138
|
)
|
139
139
|
|
140
|
+
api_budget_model = self._source_config.get("api_budget")
|
141
|
+
if api_budget_model:
|
142
|
+
self._constructor.set_api_budget(api_budget_model, config)
|
143
|
+
|
140
144
|
source_streams = [
|
141
145
|
self._constructor.create_component(
|
142
146
|
DeclarativeStreamModel,
|
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
from __future__ import annotations
|
5
5
|
|
6
|
+
from datetime import datetime, timedelta
|
6
7
|
from enum import Enum
|
7
8
|
from typing import Any, Dict, List, Literal, Optional, Union
|
8
9
|
|
@@ -642,6 +643,45 @@ class OAuthAuthenticator(BaseModel):
|
|
642
643
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
643
644
|
|
644
645
|
|
646
|
+
class Rate(BaseModel):
|
647
|
+
class Config:
|
648
|
+
extra = Extra.allow
|
649
|
+
|
650
|
+
limit: int = Field(
|
651
|
+
...,
|
652
|
+
description="The maximum number of calls allowed within the interval.",
|
653
|
+
title="Limit",
|
654
|
+
)
|
655
|
+
interval: timedelta = Field(
|
656
|
+
..., description="The time interval for the rate limit.", title="Interval"
|
657
|
+
)
|
658
|
+
|
659
|
+
|
660
|
+
class HttpRequestRegexMatcher(BaseModel):
|
661
|
+
class Config:
|
662
|
+
extra = Extra.allow
|
663
|
+
|
664
|
+
method: Optional[str] = Field(
|
665
|
+
None, description="The HTTP method to match (e.g., GET, POST).", title="Method"
|
666
|
+
)
|
667
|
+
url_base: Optional[str] = Field(
|
668
|
+
None,
|
669
|
+
description='The base URL (scheme and host, e.g. "https://api.example.com") to match.',
|
670
|
+
title="URL Base",
|
671
|
+
)
|
672
|
+
url_path_pattern: Optional[str] = Field(
|
673
|
+
None,
|
674
|
+
description="A regular expression pattern to match the URL path.",
|
675
|
+
title="URL Path Pattern",
|
676
|
+
)
|
677
|
+
params: Optional[Dict[str, Any]] = Field(
|
678
|
+
None, description="The query parameters to match.", title="Parameters"
|
679
|
+
)
|
680
|
+
headers: Optional[Dict[str, Any]] = Field(
|
681
|
+
None, description="The headers to match.", title="Headers"
|
682
|
+
)
|
683
|
+
|
684
|
+
|
645
685
|
class DpathExtractor(BaseModel):
|
646
686
|
type: Literal["DpathExtractor"]
|
647
687
|
field_path: List[str] = Field(
|
@@ -1584,6 +1624,60 @@ class DatetimeBasedCursor(BaseModel):
|
|
1584
1624
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1585
1625
|
|
1586
1626
|
|
1627
|
+
class FixedWindowCallRatePolicy(BaseModel):
|
1628
|
+
class Config:
|
1629
|
+
extra = Extra.allow
|
1630
|
+
|
1631
|
+
type: Literal["FixedWindowCallRatePolicy"]
|
1632
|
+
next_reset_ts: datetime = Field(
|
1633
|
+
...,
|
1634
|
+
description="The timestamp when the rate limit will reset.",
|
1635
|
+
title="Next Reset Timestamp",
|
1636
|
+
)
|
1637
|
+
period: timedelta = Field(
|
1638
|
+
..., description="The time interval for the rate limit window.", title="Period"
|
1639
|
+
)
|
1640
|
+
call_limit: int = Field(
|
1641
|
+
...,
|
1642
|
+
description="The maximum number of calls allowed within the period.",
|
1643
|
+
title="Call Limit",
|
1644
|
+
)
|
1645
|
+
matchers: List[HttpRequestRegexMatcher] = Field(
|
1646
|
+
...,
|
1647
|
+
description="List of matchers that define which requests this policy applies to.",
|
1648
|
+
title="Matchers",
|
1649
|
+
)
|
1650
|
+
|
1651
|
+
|
1652
|
+
class MovingWindowCallRatePolicy(BaseModel):
|
1653
|
+
class Config:
|
1654
|
+
extra = Extra.allow
|
1655
|
+
|
1656
|
+
type: Literal["MovingWindowCallRatePolicy"]
|
1657
|
+
rates: List[Rate] = Field(
|
1658
|
+
...,
|
1659
|
+
description="List of rates that define the call limits for different time intervals.",
|
1660
|
+
title="Rates",
|
1661
|
+
)
|
1662
|
+
matchers: List[HttpRequestRegexMatcher] = Field(
|
1663
|
+
...,
|
1664
|
+
description="List of matchers that define which requests this policy applies to.",
|
1665
|
+
title="Matchers",
|
1666
|
+
)
|
1667
|
+
|
1668
|
+
|
1669
|
+
class UnlimitedCallRatePolicy(BaseModel):
|
1670
|
+
class Config:
|
1671
|
+
extra = Extra.allow
|
1672
|
+
|
1673
|
+
type: Literal["UnlimitedCallRatePolicy"]
|
1674
|
+
matchers: List[HttpRequestRegexMatcher] = Field(
|
1675
|
+
...,
|
1676
|
+
description="List of matchers that define which requests this policy applies to.",
|
1677
|
+
title="Matchers",
|
1678
|
+
)
|
1679
|
+
|
1680
|
+
|
1587
1681
|
class DefaultErrorHandler(BaseModel):
|
1588
1682
|
type: Literal["DefaultErrorHandler"]
|
1589
1683
|
backoff_strategies: Optional[
|
@@ -1715,6 +1809,67 @@ class CompositeErrorHandler(BaseModel):
|
|
1715
1809
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1716
1810
|
|
1717
1811
|
|
1812
|
+
class APIBudget(BaseModel):
|
1813
|
+
class Config:
|
1814
|
+
extra = Extra.allow
|
1815
|
+
|
1816
|
+
type: Literal["APIBudget"]
|
1817
|
+
policies: List[
|
1818
|
+
Union[
|
1819
|
+
FixedWindowCallRatePolicy,
|
1820
|
+
MovingWindowCallRatePolicy,
|
1821
|
+
UnlimitedCallRatePolicy,
|
1822
|
+
]
|
1823
|
+
] = Field(
|
1824
|
+
...,
|
1825
|
+
description="List of call rate policies that define how many calls are allowed.",
|
1826
|
+
title="Policies",
|
1827
|
+
)
|
1828
|
+
maximum_attempts_to_acquire: Optional[int] = Field(
|
1829
|
+
100000,
|
1830
|
+
description="The maximum number of attempts to acquire a call before giving up.",
|
1831
|
+
title="Maximum Attempts to Acquire",
|
1832
|
+
)
|
1833
|
+
|
1834
|
+
|
1835
|
+
class HTTPAPIBudget(BaseModel):
|
1836
|
+
class Config:
|
1837
|
+
extra = Extra.allow
|
1838
|
+
|
1839
|
+
type: Literal["HTTPAPIBudget"]
|
1840
|
+
policies: List[
|
1841
|
+
Union[
|
1842
|
+
FixedWindowCallRatePolicy,
|
1843
|
+
MovingWindowCallRatePolicy,
|
1844
|
+
UnlimitedCallRatePolicy,
|
1845
|
+
]
|
1846
|
+
] = Field(
|
1847
|
+
...,
|
1848
|
+
description="List of call rate policies that define how many calls are allowed.",
|
1849
|
+
title="Policies",
|
1850
|
+
)
|
1851
|
+
ratelimit_reset_header: Optional[str] = Field(
|
1852
|
+
"ratelimit-reset",
|
1853
|
+
description="The HTTP response header name that indicates when the rate limit resets.",
|
1854
|
+
title="Rate Limit Reset Header",
|
1855
|
+
)
|
1856
|
+
ratelimit_remaining_header: Optional[str] = Field(
|
1857
|
+
"ratelimit-remaining",
|
1858
|
+
description="The HTTP response header name that indicates the number of remaining allowed calls.",
|
1859
|
+
title="Rate Limit Remaining Header",
|
1860
|
+
)
|
1861
|
+
status_codes_for_ratelimit_hit: Optional[List[int]] = Field(
|
1862
|
+
[429],
|
1863
|
+
description="List of HTTP status codes that indicate a rate limit has been hit.",
|
1864
|
+
title="Status Codes for Rate Limit Hit",
|
1865
|
+
)
|
1866
|
+
maximum_attempts_to_acquire: Optional[int] = Field(
|
1867
|
+
100000,
|
1868
|
+
description="The maximum number of attempts to acquire a call before giving up.",
|
1869
|
+
title="Maximum Attempts to Acquire",
|
1870
|
+
)
|
1871
|
+
|
1872
|
+
|
1718
1873
|
class ZipfileDecoder(BaseModel):
|
1719
1874
|
class Config:
|
1720
1875
|
extra = Extra.allow
|
@@ -1748,6 +1903,11 @@ class DeclarativeSource1(BaseModel):
|
|
1748
1903
|
definitions: Optional[Dict[str, Any]] = None
|
1749
1904
|
spec: Optional[Spec] = None
|
1750
1905
|
concurrency_level: Optional[ConcurrencyLevel] = None
|
1906
|
+
api_budget: Optional[Union[APIBudget, HTTPAPIBudget]] = Field(
|
1907
|
+
None,
|
1908
|
+
description="Defines how many requests can be made to the API in a given time frame. This field accepts either a generic APIBudget or an HTTP-specific configuration (HTTPAPIBudget) to be applied across all streams.",
|
1909
|
+
title="API Budget",
|
1910
|
+
)
|
1751
1911
|
metadata: Optional[Dict[str, Any]] = Field(
|
1752
1912
|
None,
|
1753
1913
|
description="For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.",
|
@@ -1774,6 +1934,11 @@ class DeclarativeSource2(BaseModel):
|
|
1774
1934
|
definitions: Optional[Dict[str, Any]] = None
|
1775
1935
|
spec: Optional[Spec] = None
|
1776
1936
|
concurrency_level: Optional[ConcurrencyLevel] = None
|
1937
|
+
api_budget: Optional[Union[APIBudget, HTTPAPIBudget]] = Field(
|
1938
|
+
None,
|
1939
|
+
description="Defines how many requests can be made to the API in a given time frame. This field accepts either a generic APIBudget or an HTTP-specific configuration (HTTPAPIBudget) to be applied across all streams.",
|
1940
|
+
title="API Budget",
|
1941
|
+
)
|
1777
1942
|
metadata: Optional[Dict[str, Any]] = Field(
|
1778
1943
|
None,
|
1779
1944
|
description="For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.",
|