airbyte-cdk 6.32.0__tar.gz → 6.33.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.32.0 → airbyte_cdk-6.33.0.dev0}/PKG-INFO +1 -1
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +208 -1
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +4 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +165 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +141 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +3 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/call_rate.py +84 -71
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/pyproject.toml +1 -1
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.32.0 → airbyte_cdk-6.33.0.dev0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -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/HttpRequestMatcher"
|
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/HttpRequestMatcher"
|
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/HttpRequestMatcher"
|
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
|
+
HttpRequestMatcher:
|
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.
|
@@ -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 HttpRequestMatcher(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(
|
@@ -1578,6 +1618,60 @@ class DatetimeBasedCursor(BaseModel):
|
|
1578
1618
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1579
1619
|
|
1580
1620
|
|
1621
|
+
class FixedWindowCallRatePolicy(BaseModel):
|
1622
|
+
class Config:
|
1623
|
+
extra = Extra.allow
|
1624
|
+
|
1625
|
+
type: Literal["FixedWindowCallRatePolicy"]
|
1626
|
+
next_reset_ts: datetime = Field(
|
1627
|
+
...,
|
1628
|
+
description="The timestamp when the rate limit will reset.",
|
1629
|
+
title="Next Reset Timestamp",
|
1630
|
+
)
|
1631
|
+
period: timedelta = Field(
|
1632
|
+
..., description="The time interval for the rate limit window.", title="Period"
|
1633
|
+
)
|
1634
|
+
call_limit: int = Field(
|
1635
|
+
...,
|
1636
|
+
description="The maximum number of calls allowed within the period.",
|
1637
|
+
title="Call Limit",
|
1638
|
+
)
|
1639
|
+
matchers: List[HttpRequestMatcher] = Field(
|
1640
|
+
...,
|
1641
|
+
description="List of matchers that define which requests this policy applies to.",
|
1642
|
+
title="Matchers",
|
1643
|
+
)
|
1644
|
+
|
1645
|
+
|
1646
|
+
class MovingWindowCallRatePolicy(BaseModel):
|
1647
|
+
class Config:
|
1648
|
+
extra = Extra.allow
|
1649
|
+
|
1650
|
+
type: Literal["MovingWindowCallRatePolicy"]
|
1651
|
+
rates: List[Rate] = Field(
|
1652
|
+
...,
|
1653
|
+
description="List of rates that define the call limits for different time intervals.",
|
1654
|
+
title="Rates",
|
1655
|
+
)
|
1656
|
+
matchers: List[HttpRequestMatcher] = Field(
|
1657
|
+
...,
|
1658
|
+
description="List of matchers that define which requests this policy applies to.",
|
1659
|
+
title="Matchers",
|
1660
|
+
)
|
1661
|
+
|
1662
|
+
|
1663
|
+
class UnlimitedCallRatePolicy(BaseModel):
|
1664
|
+
class Config:
|
1665
|
+
extra = Extra.allow
|
1666
|
+
|
1667
|
+
type: Literal["UnlimitedCallRatePolicy"]
|
1668
|
+
matchers: List[HttpRequestMatcher] = Field(
|
1669
|
+
...,
|
1670
|
+
description="List of matchers that define which requests this policy applies to.",
|
1671
|
+
title="Matchers",
|
1672
|
+
)
|
1673
|
+
|
1674
|
+
|
1581
1675
|
class DefaultErrorHandler(BaseModel):
|
1582
1676
|
type: Literal["DefaultErrorHandler"]
|
1583
1677
|
backoff_strategies: Optional[
|
@@ -1709,6 +1803,67 @@ class CompositeErrorHandler(BaseModel):
|
|
1709
1803
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1710
1804
|
|
1711
1805
|
|
1806
|
+
class APIBudget(BaseModel):
|
1807
|
+
class Config:
|
1808
|
+
extra = Extra.allow
|
1809
|
+
|
1810
|
+
type: Literal["APIBudget"]
|
1811
|
+
policies: List[
|
1812
|
+
Union[
|
1813
|
+
FixedWindowCallRatePolicy,
|
1814
|
+
MovingWindowCallRatePolicy,
|
1815
|
+
UnlimitedCallRatePolicy,
|
1816
|
+
]
|
1817
|
+
] = Field(
|
1818
|
+
...,
|
1819
|
+
description="List of call rate policies that define how many calls are allowed.",
|
1820
|
+
title="Policies",
|
1821
|
+
)
|
1822
|
+
maximum_attempts_to_acquire: Optional[int] = Field(
|
1823
|
+
100000,
|
1824
|
+
description="The maximum number of attempts to acquire a call before giving up.",
|
1825
|
+
title="Maximum Attempts to Acquire",
|
1826
|
+
)
|
1827
|
+
|
1828
|
+
|
1829
|
+
class HTTPAPIBudget(BaseModel):
|
1830
|
+
class Config:
|
1831
|
+
extra = Extra.allow
|
1832
|
+
|
1833
|
+
type: Literal["HTTPAPIBudget"]
|
1834
|
+
policies: List[
|
1835
|
+
Union[
|
1836
|
+
FixedWindowCallRatePolicy,
|
1837
|
+
MovingWindowCallRatePolicy,
|
1838
|
+
UnlimitedCallRatePolicy,
|
1839
|
+
]
|
1840
|
+
] = Field(
|
1841
|
+
...,
|
1842
|
+
description="List of call rate policies that define how many calls are allowed.",
|
1843
|
+
title="Policies",
|
1844
|
+
)
|
1845
|
+
ratelimit_reset_header: Optional[str] = Field(
|
1846
|
+
"ratelimit-reset",
|
1847
|
+
description="The HTTP response header name that indicates when the rate limit resets.",
|
1848
|
+
title="Rate Limit Reset Header",
|
1849
|
+
)
|
1850
|
+
ratelimit_remaining_header: Optional[str] = Field(
|
1851
|
+
"ratelimit-remaining",
|
1852
|
+
description="The HTTP response header name that indicates the number of remaining allowed calls.",
|
1853
|
+
title="Rate Limit Remaining Header",
|
1854
|
+
)
|
1855
|
+
status_codes_for_ratelimit_hit: Optional[List[int]] = Field(
|
1856
|
+
[429],
|
1857
|
+
description="List of HTTP status codes that indicate a rate limit has been hit.",
|
1858
|
+
title="Status Codes for Rate Limit Hit",
|
1859
|
+
)
|
1860
|
+
maximum_attempts_to_acquire: Optional[int] = Field(
|
1861
|
+
100000,
|
1862
|
+
description="The maximum number of attempts to acquire a call before giving up.",
|
1863
|
+
title="Maximum Attempts to Acquire",
|
1864
|
+
)
|
1865
|
+
|
1866
|
+
|
1712
1867
|
class ZipfileDecoder(BaseModel):
|
1713
1868
|
class Config:
|
1714
1869
|
extra = Extra.allow
|
@@ -1742,6 +1897,11 @@ class DeclarativeSource1(BaseModel):
|
|
1742
1897
|
definitions: Optional[Dict[str, Any]] = None
|
1743
1898
|
spec: Optional[Spec] = None
|
1744
1899
|
concurrency_level: Optional[ConcurrencyLevel] = None
|
1900
|
+
api_budget: Optional[Union[APIBudget, HTTPAPIBudget]] = Field(
|
1901
|
+
None,
|
1902
|
+
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.",
|
1903
|
+
title="API Budget",
|
1904
|
+
)
|
1745
1905
|
metadata: Optional[Dict[str, Any]] = Field(
|
1746
1906
|
None,
|
1747
1907
|
description="For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.",
|
@@ -1768,6 +1928,11 @@ class DeclarativeSource2(BaseModel):
|
|
1768
1928
|
definitions: Optional[Dict[str, Any]] = None
|
1769
1929
|
spec: Optional[Spec] = None
|
1770
1930
|
concurrency_level: Optional[ConcurrencyLevel] = None
|
1931
|
+
api_budget: Optional[Union[APIBudget, HTTPAPIBudget]] = Field(
|
1932
|
+
None,
|
1933
|
+
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.",
|
1934
|
+
title="API Budget",
|
1935
|
+
)
|
1771
1936
|
metadata: Optional[Dict[str, Any]] = Field(
|
1772
1937
|
None,
|
1773
1938
|
description="For internal Airbyte use only - DO NOT modify manually. Used by consumers of declarative manifests for storing related metadata.",
|
@@ -112,6 +112,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
112
112
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
113
113
|
AddFields as AddFieldsModel,
|
114
114
|
)
|
115
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
116
|
+
APIBudget as APIBudgetModel,
|
117
|
+
)
|
115
118
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
116
119
|
ApiKeyAuthenticator as ApiKeyAuthenticatorModel,
|
117
120
|
)
|
@@ -226,6 +229,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
226
229
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
227
230
|
ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
|
228
231
|
)
|
232
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
233
|
+
FixedWindowCallRatePolicy as FixedWindowCallRatePolicyModel,
|
234
|
+
)
|
229
235
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
230
236
|
FlattenFields as FlattenFieldsModel,
|
231
237
|
)
|
@@ -235,12 +241,18 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
235
241
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
236
242
|
GzipParser as GzipParserModel,
|
237
243
|
)
|
244
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
245
|
+
HTTPAPIBudget as HTTPAPIBudgetModel,
|
246
|
+
)
|
238
247
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
239
248
|
HttpComponentsResolver as HttpComponentsResolverModel,
|
240
249
|
)
|
241
250
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
242
251
|
HttpRequester as HttpRequesterModel,
|
243
252
|
)
|
253
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
254
|
+
HttpRequestMatcher as HttpRequestMatcherModel,
|
255
|
+
)
|
244
256
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
245
257
|
HttpResponseFilter as HttpResponseFilterModel,
|
246
258
|
)
|
@@ -295,6 +307,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
295
307
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
296
308
|
MinMaxDatetime as MinMaxDatetimeModel,
|
297
309
|
)
|
310
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
311
|
+
MovingWindowCallRatePolicy as MovingWindowCallRatePolicyModel,
|
312
|
+
)
|
298
313
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
299
314
|
NoAuth as NoAuthModel,
|
300
315
|
)
|
@@ -313,6 +328,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
313
328
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
314
329
|
ParentStreamConfig as ParentStreamConfigModel,
|
315
330
|
)
|
331
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
332
|
+
Rate as RateModel,
|
333
|
+
)
|
316
334
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
317
335
|
RecordFilter as RecordFilterModel,
|
318
336
|
)
|
@@ -356,6 +374,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
356
374
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
357
375
|
TypesMap as TypesMapModel,
|
358
376
|
)
|
377
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
378
|
+
UnlimitedCallRatePolicy as UnlimitedCallRatePolicyModel,
|
379
|
+
)
|
359
380
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import ValueType
|
360
381
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
361
382
|
WaitTimeFromHeader as WaitTimeFromHeaderModel,
|
@@ -469,6 +490,15 @@ from airbyte_cdk.sources.message import (
|
|
469
490
|
MessageRepository,
|
470
491
|
NoopMessageRepository,
|
471
492
|
)
|
493
|
+
from airbyte_cdk.sources.streams.call_rate import (
|
494
|
+
APIBudget,
|
495
|
+
FixedWindowCallRatePolicy,
|
496
|
+
HttpAPIBudget,
|
497
|
+
HttpRequestMatcher,
|
498
|
+
MovingWindowCallRatePolicy,
|
499
|
+
Rate,
|
500
|
+
UnlimitedCallRatePolicy,
|
501
|
+
)
|
472
502
|
from airbyte_cdk.sources.streams.concurrent.clamping import (
|
473
503
|
ClampingEndProvider,
|
474
504
|
ClampingStrategy,
|
@@ -520,6 +550,7 @@ class ModelToComponentFactory:
|
|
520
550
|
self._evaluate_log_level(emit_connector_builder_messages)
|
521
551
|
)
|
522
552
|
self._connector_state_manager = connector_state_manager or ConnectorStateManager()
|
553
|
+
self._api_budget: Optional[Union[APIBudget, HttpAPIBudget]] = None
|
523
554
|
|
524
555
|
def _init_mappings(self) -> None:
|
525
556
|
self.PYDANTIC_MODEL_TO_CONSTRUCTOR: Mapping[Type[BaseModel], Callable[..., Any]] = {
|
@@ -607,6 +638,13 @@ class ModelToComponentFactory:
|
|
607
638
|
StreamConfigModel: self.create_stream_config,
|
608
639
|
ComponentMappingDefinitionModel: self.create_components_mapping_definition,
|
609
640
|
ZipfileDecoderModel: self.create_zipfile_decoder,
|
641
|
+
APIBudgetModel: self.create_api_budget,
|
642
|
+
HTTPAPIBudgetModel: self.create_http_api_budget,
|
643
|
+
FixedWindowCallRatePolicyModel: self.create_fixed_window_call_rate_policy,
|
644
|
+
MovingWindowCallRatePolicyModel: self.create_moving_window_call_rate_policy,
|
645
|
+
UnlimitedCallRatePolicyModel: self.create_unlimited_call_rate_policy,
|
646
|
+
RateModel: self.create_rate,
|
647
|
+
HttpRequestMatcherModel: self.create_http_request_matcher,
|
610
648
|
}
|
611
649
|
|
612
650
|
# Needed for the case where we need to perform a second parse on the fields of a custom component
|
@@ -1911,6 +1949,8 @@ class ModelToComponentFactory:
|
|
1911
1949
|
)
|
1912
1950
|
)
|
1913
1951
|
|
1952
|
+
api_budget = self._api_budget
|
1953
|
+
|
1914
1954
|
request_options_provider = InterpolatedRequestOptionsProvider(
|
1915
1955
|
request_body_data=model.request_body_data,
|
1916
1956
|
request_body_json=model.request_body_json,
|
@@ -1931,6 +1971,7 @@ class ModelToComponentFactory:
|
|
1931
1971
|
path=model.path,
|
1932
1972
|
authenticator=authenticator,
|
1933
1973
|
error_handler=error_handler,
|
1974
|
+
api_budget=api_budget,
|
1934
1975
|
http_method=HttpMethod[model.http_method.value],
|
1935
1976
|
request_options_provider=request_options_provider,
|
1936
1977
|
config=config,
|
@@ -2919,3 +2960,103 @@ class ModelToComponentFactory:
|
|
2919
2960
|
return isinstance(parser.inner_parser, JsonParser)
|
2920
2961
|
else:
|
2921
2962
|
return False
|
2963
|
+
|
2964
|
+
def create_api_budget(self, model: APIBudgetModel, config: Config, **kwargs: Any) -> APIBudget:
|
2965
|
+
policies = [
|
2966
|
+
self._create_component_from_model(model=policy, config=config)
|
2967
|
+
for policy in model.policies
|
2968
|
+
]
|
2969
|
+
|
2970
|
+
return APIBudget(
|
2971
|
+
policies=policies,
|
2972
|
+
maximum_attempts_to_acquire=model.maximum_attempts_to_acquire or 100000,
|
2973
|
+
)
|
2974
|
+
|
2975
|
+
def create_http_api_budget(
|
2976
|
+
self, model: HTTPAPIBudgetModel, config: Config, **kwargs: Any
|
2977
|
+
) -> HttpAPIBudget:
|
2978
|
+
policies = [
|
2979
|
+
self._create_component_from_model(model=policy, config=config)
|
2980
|
+
for policy in model.policies
|
2981
|
+
]
|
2982
|
+
|
2983
|
+
return HttpAPIBudget(
|
2984
|
+
policies=policies,
|
2985
|
+
maximum_attempts_to_acquire=model.maximum_attempts_to_acquire or 100000,
|
2986
|
+
ratelimit_reset_header=model.ratelimit_reset_header or "ratelimit-reset",
|
2987
|
+
ratelimit_remaining_header=model.ratelimit_remaining_header or "ratelimit-remaining",
|
2988
|
+
status_codes_for_ratelimit_hit=model.status_codes_for_ratelimit_hit or (429,),
|
2989
|
+
)
|
2990
|
+
|
2991
|
+
def create_fixed_window_call_rate_policy(
|
2992
|
+
self, model: FixedWindowCallRatePolicyModel, config: Config, **kwargs: Any
|
2993
|
+
) -> FixedWindowCallRatePolicy:
|
2994
|
+
matchers = [
|
2995
|
+
self._create_component_from_model(model=matcher, config=config)
|
2996
|
+
for matcher in model.matchers
|
2997
|
+
]
|
2998
|
+
return FixedWindowCallRatePolicy(
|
2999
|
+
next_reset_ts=model.next_reset_ts,
|
3000
|
+
period=parse_duration(model.period),
|
3001
|
+
call_limit=model.call_limit,
|
3002
|
+
matchers=matchers,
|
3003
|
+
)
|
3004
|
+
|
3005
|
+
def create_moving_window_call_rate_policy(
|
3006
|
+
self, model: MovingWindowCallRatePolicyModel, config: Config, **kwargs: Any
|
3007
|
+
) -> MovingWindowCallRatePolicy:
|
3008
|
+
rates = [
|
3009
|
+
self._create_component_from_model(model=rate, config=config) for rate in model.rates
|
3010
|
+
]
|
3011
|
+
matchers = [
|
3012
|
+
self._create_component_from_model(model=matcher, config=config)
|
3013
|
+
for matcher in model.matchers
|
3014
|
+
]
|
3015
|
+
return MovingWindowCallRatePolicy(
|
3016
|
+
rates=rates,
|
3017
|
+
matchers=matchers,
|
3018
|
+
)
|
3019
|
+
|
3020
|
+
def create_unlimited_call_rate_policy(
|
3021
|
+
self, model: UnlimitedCallRatePolicyModel, config: Config, **kwargs: Any
|
3022
|
+
) -> UnlimitedCallRatePolicy:
|
3023
|
+
matchers = [
|
3024
|
+
self._create_component_from_model(model=matcher, config=config)
|
3025
|
+
for matcher in model.matchers
|
3026
|
+
]
|
3027
|
+
|
3028
|
+
return UnlimitedCallRatePolicy(
|
3029
|
+
matchers=matchers,
|
3030
|
+
)
|
3031
|
+
|
3032
|
+
def create_rate(self, model: RateModel, config: Config, **kwargs: Any) -> Rate:
|
3033
|
+
return Rate(
|
3034
|
+
limit=model.limit,
|
3035
|
+
interval=model.interval,
|
3036
|
+
)
|
3037
|
+
|
3038
|
+
def create_http_request_matcher(
|
3039
|
+
self, model: HttpRequestMatcherModel, config: Config, **kwargs: Any
|
3040
|
+
) -> HttpRequestMatcher:
|
3041
|
+
return HttpRequestMatcher(
|
3042
|
+
method=model.method,
|
3043
|
+
url_base=model.url_base,
|
3044
|
+
url_path_pattern=model.url_path_pattern,
|
3045
|
+
params=model.params,
|
3046
|
+
headers=model.headers,
|
3047
|
+
)
|
3048
|
+
|
3049
|
+
def set_api_budget(self, component_definition: ComponentDefinition, config: Config) -> None:
|
3050
|
+
model_str = component_definition.get("type")
|
3051
|
+
if model_str == "APIBudget":
|
3052
|
+
# Annotate model_type as a type that is a subclass of BaseModel
|
3053
|
+
model_type: Union[Type[APIBudgetModel], Type[HTTPAPIBudgetModel]] = APIBudgetModel
|
3054
|
+
elif model_str == "HTTPAPIBudget":
|
3055
|
+
model_type = HTTPAPIBudgetModel
|
3056
|
+
else:
|
3057
|
+
raise ValueError(f"Unknown API Budget type: {model_str}")
|
3058
|
+
|
3059
|
+
# create_component expects a type[BaseModel] and returns an instance of that model.
|
3060
|
+
self._api_budget = self.create_component(
|
3061
|
+
model_type=model_type, component_definition=component_definition, config=config
|
3062
|
+
)
|