airbyte-cdk 6.8.3rc1__tar.gz → 6.9.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.9.0.dev0/PKG-INFO +111 -0
- airbyte_cdk-6.9.0.dev0/README.md +34 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +7 -3
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +186 -2
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +53 -2
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +137 -6
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +10 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +167 -21
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +2 -1
- airbyte_cdk-6.9.0.dev0/airbyte_cdk/sources/declarative/resolvers/__init__.py +13 -0
- airbyte_cdk-6.9.0.dev0/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +55 -0
- airbyte_cdk-6.9.0.dev0/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +106 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +2 -1
- airbyte_cdk-6.9.0.dev0/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +219 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/pyproject.toml +4 -4
- airbyte_cdk-6.8.3rc1/PKG-INFO +0 -306
- airbyte_cdk-6.8.3rc1/README.md +0 -229
- airbyte_cdk-6.8.3rc1/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -55
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.8.3rc1 → airbyte_cdk-6.9.0.dev0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -0,0 +1,111 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: airbyte-cdk
|
3
|
+
Version: 6.9.0.dev0
|
4
|
+
Summary: A framework for writing Airbyte Connectors.
|
5
|
+
Home-page: https://airbyte.com
|
6
|
+
License: MIT
|
7
|
+
Keywords: airbyte,connector-development-kit,cdk
|
8
|
+
Author: Airbyte
|
9
|
+
Author-email: contact@airbyte.io
|
10
|
+
Requires-Python: >=3.10,<3.13
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
12
|
+
Classifier: Intended Audience :: Developers
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
18
|
+
Classifier: Topic :: Scientific/Engineering
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
20
|
+
Provides-Extra: file-based
|
21
|
+
Provides-Extra: sphinx-docs
|
22
|
+
Provides-Extra: sql
|
23
|
+
Provides-Extra: vector-db-based
|
24
|
+
Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
|
25
|
+
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
26
|
+
Requires-Dist: Sphinx (>=4.2,<4.3) ; extra == "sphinx-docs"
|
27
|
+
Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
|
28
|
+
Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
|
29
|
+
Requires-Dist: backoff
|
30
|
+
Requires-Dist: cachetools
|
31
|
+
Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
|
32
|
+
Requires-Dist: cryptography (>=42.0.5,<44.0.0)
|
33
|
+
Requires-Dist: dpath (>=2.1.6,<3.0.0)
|
34
|
+
Requires-Dist: dunamai (>=1.22.0,<2.0.0)
|
35
|
+
Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
|
36
|
+
Requires-Dist: genson (==1.3.0)
|
37
|
+
Requires-Dist: isodate (>=0.6.1,<0.7.0)
|
38
|
+
Requires-Dist: jsonref (>=0.2,<0.3)
|
39
|
+
Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
|
40
|
+
Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
|
41
|
+
Requires-Dist: langchain_core (==0.1.42)
|
42
|
+
Requires-Dist: markdown ; extra == "file-based"
|
43
|
+
Requires-Dist: nltk (==3.9.1)
|
44
|
+
Requires-Dist: numpy (<2)
|
45
|
+
Requires-Dist: openai[embeddings] (==0.27.9) ; extra == "vector-db-based"
|
46
|
+
Requires-Dist: orjson (>=3.10.7,<4.0.0)
|
47
|
+
Requires-Dist: pandas (==2.2.2)
|
48
|
+
Requires-Dist: pdf2image (==1.16.3) ; extra == "file-based"
|
49
|
+
Requires-Dist: pdfminer.six (==20221105) ; extra == "file-based"
|
50
|
+
Requires-Dist: pendulum (<3.0.0)
|
51
|
+
Requires-Dist: psutil (==6.1.0)
|
52
|
+
Requires-Dist: pyarrow (>=15.0.0,<15.1.0) ; extra == "file-based"
|
53
|
+
Requires-Dist: pydantic (>=2.7,<3.0)
|
54
|
+
Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
|
55
|
+
Requires-Dist: pyrate-limiter (>=3.1.0,<3.2.0)
|
56
|
+
Requires-Dist: pytesseract (==0.3.10) ; extra == "file-based"
|
57
|
+
Requires-Dist: python-calamine (==0.2.3) ; extra == "file-based"
|
58
|
+
Requires-Dist: python-dateutil
|
59
|
+
Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
|
60
|
+
Requires-Dist: python-ulid (>=3.0.0,<4.0.0)
|
61
|
+
Requires-Dist: pytz (==2024.1)
|
62
|
+
Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
|
63
|
+
Requires-Dist: requests
|
64
|
+
Requires-Dist: requests_cache
|
65
|
+
Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
|
66
|
+
Requires-Dist: sphinx-rtd-theme (>=1.0,<1.1) ; extra == "sphinx-docs"
|
67
|
+
Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
|
68
|
+
Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
|
69
|
+
Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
|
70
|
+
Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
71
|
+
Requires-Dist: wcmatch (==10.0)
|
72
|
+
Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
|
73
|
+
Project-URL: Documentation, https://docs.airbyte.io/
|
74
|
+
Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
|
75
|
+
Description-Content-Type: text/markdown
|
76
|
+
|
77
|
+
# Airbyte Python CDK and Low-Code CDK
|
78
|
+
|
79
|
+
Airbyte Python CDK is a framework for building Airbyte API Source Connectors. It provides a set of
|
80
|
+
classes and helpers that make it easy to build a connector against an HTTP API (REST, GraphQL, etc),
|
81
|
+
or a generic Python source connector.
|
82
|
+
|
83
|
+
## Building Connectors with the CDK
|
84
|
+
|
85
|
+
If you're looking to build a connector, we highly recommend that you first
|
86
|
+
[start with the Connector Builder](https://docs.airbyte.com/connector-development/connector-builder-ui/overview).
|
87
|
+
It should be enough for 90% connectors out there. For more flexible and complex connectors, use the
|
88
|
+
[low-code CDK and `SourceDeclarativeManifest`](https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview).
|
89
|
+
|
90
|
+
For more information on building connectors, please see the [Connector Development](https://docs.airbyte.com/connector-development/) guide on [docs.airbyte.com](https://docs.airbyte.com).
|
91
|
+
|
92
|
+
## Python CDK Overview
|
93
|
+
|
94
|
+
Airbyte CDK code is within `airbyte_cdk` directory. Here's a high level overview of what's inside:
|
95
|
+
|
96
|
+
- `airbyte_cdk/connector_builder`. Internal wrapper that helps the Connector Builder platform run a declarative manifest (low-code connector). You should not use this code directly. If you need to run a `SourceDeclarativeManifest`, take a look at [`source-declarative-manifest`](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-declarative-manifest) connector implementation instead.
|
97
|
+
- `airbyte_cdk/cli/source_declarative_manifest`. This module defines the `source-declarative-manifest` (aka "SDM") connector execution logic and associated CLI.
|
98
|
+
- `airbyte_cdk/destinations`. Basic Destination connector support! If you're building a Destination connector in Python, try that. Some of our vector DB destinations like `destination-pinecone` are using that code.
|
99
|
+
- `airbyte_cdk/models` expose `airbyte_protocol.models` as a part of `airbyte_cdk` package.
|
100
|
+
- `airbyte_cdk/sources/concurrent_source` is the Concurrent CDK implementation. It supports reading data from streams concurrently per slice / partition, useful for connectors with high throughput and high number of records.
|
101
|
+
- `airbyte_cdk/sources/declarative` is the low-code CDK. It works on top of Airbyte Python CDK, but provides a declarative manifest language to define streams, operations, etc. This makes it easier to build connectors without writing Python code.
|
102
|
+
- `airbyte_cdk/sources/file_based` is the CDK for file-based sources. Examples include S3, Azure, GCS, etc.
|
103
|
+
|
104
|
+
## Contributing
|
105
|
+
|
106
|
+
For instructions on how to contribute, please see our [Contributing Guide](docs/CONTRIBUTING.md).
|
107
|
+
|
108
|
+
## Release Management
|
109
|
+
|
110
|
+
Please see the [Release Management](docs/RELEASES.md) guide for information on how to perform releases and pre-releases.
|
111
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Airbyte Python CDK and Low-Code CDK
|
2
|
+
|
3
|
+
Airbyte Python CDK is a framework for building Airbyte API Source Connectors. It provides a set of
|
4
|
+
classes and helpers that make it easy to build a connector against an HTTP API (REST, GraphQL, etc),
|
5
|
+
or a generic Python source connector.
|
6
|
+
|
7
|
+
## Building Connectors with the CDK
|
8
|
+
|
9
|
+
If you're looking to build a connector, we highly recommend that you first
|
10
|
+
[start with the Connector Builder](https://docs.airbyte.com/connector-development/connector-builder-ui/overview).
|
11
|
+
It should be enough for 90% connectors out there. For more flexible and complex connectors, use the
|
12
|
+
[low-code CDK and `SourceDeclarativeManifest`](https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview).
|
13
|
+
|
14
|
+
For more information on building connectors, please see the [Connector Development](https://docs.airbyte.com/connector-development/) guide on [docs.airbyte.com](https://docs.airbyte.com).
|
15
|
+
|
16
|
+
## Python CDK Overview
|
17
|
+
|
18
|
+
Airbyte CDK code is within `airbyte_cdk` directory. Here's a high level overview of what's inside:
|
19
|
+
|
20
|
+
- `airbyte_cdk/connector_builder`. Internal wrapper that helps the Connector Builder platform run a declarative manifest (low-code connector). You should not use this code directly. If you need to run a `SourceDeclarativeManifest`, take a look at [`source-declarative-manifest`](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-declarative-manifest) connector implementation instead.
|
21
|
+
- `airbyte_cdk/cli/source_declarative_manifest`. This module defines the `source-declarative-manifest` (aka "SDM") connector execution logic and associated CLI.
|
22
|
+
- `airbyte_cdk/destinations`. Basic Destination connector support! If you're building a Destination connector in Python, try that. Some of our vector DB destinations like `destination-pinecone` are using that code.
|
23
|
+
- `airbyte_cdk/models` expose `airbyte_protocol.models` as a part of `airbyte_cdk` package.
|
24
|
+
- `airbyte_cdk/sources/concurrent_source` is the Concurrent CDK implementation. It supports reading data from streams concurrently per slice / partition, useful for connectors with high throughput and high number of records.
|
25
|
+
- `airbyte_cdk/sources/declarative` is the low-code CDK. It works on top of Airbyte Python CDK, but provides a declarative manifest language to define streams, operations, etc. This makes it easier to build connectors without writing Python code.
|
26
|
+
- `airbyte_cdk/sources/file_based` is the CDK for file-based sources. Examples include S3, Azure, GCS, etc.
|
27
|
+
|
28
|
+
## Contributing
|
29
|
+
|
30
|
+
For instructions on how to contribute, please see our [Contributing Guide](docs/CONTRIBUTING.md).
|
31
|
+
|
32
|
+
## Release Management
|
33
|
+
|
34
|
+
Please see the [Release Management](docs/RELEASES.md) guide for information on how to perform releases and pre-releases.
|
@@ -192,9 +192,13 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
192
192
|
|
193
193
|
state_manager = ConnectorStateManager(state=self._state) # type: ignore # state is always in the form of List[AirbyteStateMessage]. The ConnectorStateManager should use generics, but this can be done later
|
194
194
|
|
195
|
-
|
196
|
-
|
197
|
-
|
195
|
+
# Combine streams and dynamic_streams. Note: both cannot be empty at the same time,
|
196
|
+
# and this is validated during the initialization of the source.
|
197
|
+
streams = self._stream_configs(self._source_config) + self._dynamic_stream_configs(
|
198
|
+
self._source_config, config
|
199
|
+
)
|
200
|
+
|
201
|
+
name_to_stream_mapping = {stream["name"]: stream for stream in streams}
|
198
202
|
|
199
203
|
for declarative_stream in self.streams(config=config):
|
200
204
|
# Some low-code sources use a combination of DeclarativeStream and regular Python streams. We can't inspect
|
@@ -7,8 +7,12 @@ version: 1.0.0
|
|
7
7
|
required:
|
8
8
|
- type
|
9
9
|
- check
|
10
|
-
- streams
|
11
10
|
- version
|
11
|
+
anyOf:
|
12
|
+
- required:
|
13
|
+
- streams
|
14
|
+
- required:
|
15
|
+
- dynamic_streams
|
12
16
|
properties:
|
13
17
|
type:
|
14
18
|
type: string
|
@@ -19,6 +23,10 @@ properties:
|
|
19
23
|
type: array
|
20
24
|
items:
|
21
25
|
"$ref": "#/definitions/DeclarativeStream"
|
26
|
+
dynamic_streams:
|
27
|
+
type: array
|
28
|
+
items:
|
29
|
+
"$ref": "#/definitions/DynamicDeclarativeStream"
|
22
30
|
version:
|
23
31
|
type: string
|
24
32
|
description: The version of the Airbyte CDK used to build and test the source.
|
@@ -1321,7 +1329,7 @@ definitions:
|
|
1321
1329
|
type: array
|
1322
1330
|
items:
|
1323
1331
|
- type: string
|
1324
|
-
|
1332
|
+
interpolation_context:
|
1325
1333
|
- config
|
1326
1334
|
examples:
|
1327
1335
|
- ["data"]
|
@@ -1676,6 +1684,92 @@ definitions:
|
|
1676
1684
|
$parameters:
|
1677
1685
|
type: object
|
1678
1686
|
additionalProperties: true
|
1687
|
+
TypesMap:
|
1688
|
+
title: Types Map
|
1689
|
+
description: (This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
|
1690
|
+
type: object
|
1691
|
+
required:
|
1692
|
+
- target_type
|
1693
|
+
- current_type
|
1694
|
+
properties:
|
1695
|
+
target_type:
|
1696
|
+
anyOf:
|
1697
|
+
- type: string
|
1698
|
+
- type: array
|
1699
|
+
items:
|
1700
|
+
type: string
|
1701
|
+
current_type:
|
1702
|
+
anyOf:
|
1703
|
+
- type: string
|
1704
|
+
- type: array
|
1705
|
+
items:
|
1706
|
+
type: string
|
1707
|
+
SchemaTypeIdentifier:
|
1708
|
+
title: Schema Type Identifier
|
1709
|
+
description: (This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
|
1710
|
+
type: object
|
1711
|
+
required:
|
1712
|
+
- key_pointer
|
1713
|
+
properties:
|
1714
|
+
type:
|
1715
|
+
type: string
|
1716
|
+
enum: [SchemaTypeIdentifier]
|
1717
|
+
schema_pointer:
|
1718
|
+
title: Schema Path
|
1719
|
+
description: List of nested fields defining the schema field path to extract. Defaults to [].
|
1720
|
+
type: array
|
1721
|
+
default: []
|
1722
|
+
items:
|
1723
|
+
- type: string
|
1724
|
+
interpolation_content:
|
1725
|
+
- config
|
1726
|
+
key_pointer:
|
1727
|
+
title: Key Path
|
1728
|
+
description: List of potentially nested fields describing the full path of the field key to extract.
|
1729
|
+
type: array
|
1730
|
+
items:
|
1731
|
+
- type: string
|
1732
|
+
interpolation_content:
|
1733
|
+
- config
|
1734
|
+
type_pointer:
|
1735
|
+
title: Type Path
|
1736
|
+
description: List of potentially nested fields describing the full path of the field type to extract.
|
1737
|
+
type: array
|
1738
|
+
items:
|
1739
|
+
- type: string
|
1740
|
+
interpolation_content:
|
1741
|
+
- config
|
1742
|
+
types_mapping:
|
1743
|
+
type: array
|
1744
|
+
items:
|
1745
|
+
- "$ref": "#/definitions/TypesMap"
|
1746
|
+
$parameters:
|
1747
|
+
type: object
|
1748
|
+
additionalProperties: true
|
1749
|
+
DynamicSchemaLoader:
|
1750
|
+
title: Dynamic Schema Loader
|
1751
|
+
description: (This component is experimental. Use at your own risk.) Loads a schema by extracting data from retrieved records.
|
1752
|
+
type: object
|
1753
|
+
required:
|
1754
|
+
- type
|
1755
|
+
- retriever
|
1756
|
+
- schema_type_identifier
|
1757
|
+
properties:
|
1758
|
+
type:
|
1759
|
+
type: string
|
1760
|
+
enum: [DynamicSchemaLoader]
|
1761
|
+
retriever:
|
1762
|
+
title: Retriever
|
1763
|
+
description: Component used to coordinate how records are extracted across stream slices and request pages.
|
1764
|
+
anyOf:
|
1765
|
+
- "$ref": "#/definitions/AsyncRetriever"
|
1766
|
+
- "$ref": "#/definitions/CustomRetriever"
|
1767
|
+
- "$ref": "#/definitions/SimpleRetriever"
|
1768
|
+
schema_type_identifier:
|
1769
|
+
"$ref": "#/definitions/SchemaTypeIdentifier"
|
1770
|
+
$parameters:
|
1771
|
+
type: object
|
1772
|
+
additionalProperties: true
|
1679
1773
|
InlineSchemaLoader:
|
1680
1774
|
title: Inline Schema Loader
|
1681
1775
|
description: Loads a schema that is defined directly in the manifest file.
|
@@ -2895,6 +2989,96 @@ definitions:
|
|
2895
2989
|
$parameters:
|
2896
2990
|
type: object
|
2897
2991
|
additionalProperties: true
|
2992
|
+
ComponentMappingDefinition:
|
2993
|
+
title: Component Mapping Definition
|
2994
|
+
description: (This component is experimental. Use at your own risk.) Specifies a mapping definition to update or add fields in a record or configuration. This allows dynamic mapping of data by interpolating values into the template based on provided contexts.
|
2995
|
+
type: object
|
2996
|
+
required:
|
2997
|
+
- type
|
2998
|
+
- field_path
|
2999
|
+
- value
|
3000
|
+
properties:
|
3001
|
+
type:
|
3002
|
+
type: string
|
3003
|
+
enum: [ComponentMappingDefinition]
|
3004
|
+
field_path:
|
3005
|
+
title: Field Path
|
3006
|
+
description: A list of potentially nested fields indicating the full path where value will be added or updated.
|
3007
|
+
type: array
|
3008
|
+
items:
|
3009
|
+
- type: string
|
3010
|
+
interpolation_context:
|
3011
|
+
- config
|
3012
|
+
- components_values
|
3013
|
+
- stream_template_config
|
3014
|
+
examples:
|
3015
|
+
- ["data"]
|
3016
|
+
- ["data", "records"]
|
3017
|
+
- ["data", "{{ parameters.name }}"]
|
3018
|
+
- ["data", "*", "record"]
|
3019
|
+
value:
|
3020
|
+
title: Value
|
3021
|
+
description: The dynamic or static value to assign to the key. Interpolated values can be used to dynamically determine the value during runtime.
|
3022
|
+
type: string
|
3023
|
+
interpolation_context:
|
3024
|
+
- config
|
3025
|
+
- stream_template_config
|
3026
|
+
- components_values
|
3027
|
+
examples:
|
3028
|
+
- "{{ components_values['updates'] }}"
|
3029
|
+
- "{{ components_values['MetaData']['LastUpdatedTime'] }}"
|
3030
|
+
- "{{ config['segment_id'] }}"
|
3031
|
+
value_type:
|
3032
|
+
title: Value Type
|
3033
|
+
description: The expected data type of the value. If omitted, the type will be inferred from the value provided.
|
3034
|
+
"$ref": "#/definitions/ValueType"
|
3035
|
+
$parameters:
|
3036
|
+
type: object
|
3037
|
+
additionalProperties: true
|
3038
|
+
HttpComponentsResolver:
|
3039
|
+
type: object
|
3040
|
+
description: (This component is experimental. Use at your own risk.) Component resolve and populates stream templates with components fetched via an HTTP retriever.
|
3041
|
+
properties:
|
3042
|
+
type:
|
3043
|
+
type: string
|
3044
|
+
enum: [HttpComponentsResolver]
|
3045
|
+
retriever:
|
3046
|
+
title: Retriever
|
3047
|
+
description: Component used to coordinate how records are extracted across stream slices and request pages.
|
3048
|
+
anyOf:
|
3049
|
+
- "$ref": "#/definitions/AsyncRetriever"
|
3050
|
+
- "$ref": "#/definitions/CustomRetriever"
|
3051
|
+
- "$ref": "#/definitions/SimpleRetriever"
|
3052
|
+
components_mapping:
|
3053
|
+
type: array
|
3054
|
+
items:
|
3055
|
+
"$ref": "#/definitions/ComponentMappingDefinition"
|
3056
|
+
$parameters:
|
3057
|
+
type: object
|
3058
|
+
additionalProperties: true
|
3059
|
+
required:
|
3060
|
+
- type
|
3061
|
+
- retriever
|
3062
|
+
- components_mapping
|
3063
|
+
DynamicDeclarativeStream:
|
3064
|
+
type: object
|
3065
|
+
description: (This component is experimental. Use at your own risk.) A component that described how will be created declarative streams based on stream template.
|
3066
|
+
properties:
|
3067
|
+
type:
|
3068
|
+
type: string
|
3069
|
+
enum: [DynamicDeclarativeStream]
|
3070
|
+
stream_template:
|
3071
|
+
title: Stream Template
|
3072
|
+
description: Reference to the stream template.
|
3073
|
+
"$ref": "#/definitions/DeclarativeStream"
|
3074
|
+
components_resolver:
|
3075
|
+
title: Components Resolver
|
3076
|
+
description: Component resolve and populates stream templates with components values.
|
3077
|
+
"$ref": "#/definitions/HttpComponentsResolver"
|
3078
|
+
required:
|
3079
|
+
- type
|
3080
|
+
- stream_template
|
3081
|
+
- components_resolver
|
2898
3082
|
interpolation:
|
2899
3083
|
variables:
|
2900
3084
|
- title: config
|
@@ -39,6 +39,7 @@ from airbyte_cdk.sources.declarative.parsers.manifest_reference_resolver import
|
|
39
39
|
from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
40
40
|
ModelToComponentFactory,
|
41
41
|
)
|
42
|
+
from airbyte_cdk.sources.declarative.resolvers import COMPONENTS_RESOLVER_TYPE_MAPPING
|
42
43
|
from airbyte_cdk.sources.message import MessageRepository
|
43
44
|
from airbyte_cdk.sources.streams.core import Stream
|
44
45
|
from airbyte_cdk.sources.types import ConnectionDefinition
|
@@ -120,7 +121,10 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
120
121
|
self._emit_manifest_debug_message(
|
121
122
|
extra_args={"source_name": self.name, "parsed_config": json.dumps(self._source_config)}
|
122
123
|
)
|
123
|
-
|
124
|
+
|
125
|
+
stream_configs = self._stream_configs(self._source_config) + self._dynamic_stream_configs(
|
126
|
+
self._source_config, config
|
127
|
+
)
|
124
128
|
|
125
129
|
source_streams = [
|
126
130
|
self._constructor.create_component(
|
@@ -234,7 +238,8 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
234
238
|
)
|
235
239
|
|
236
240
|
streams = self._source_config.get("streams")
|
237
|
-
|
241
|
+
dynamic_streams = self._source_config.get("dynamic_streams")
|
242
|
+
if not (streams or dynamic_streams):
|
238
243
|
raise ValidationError(
|
239
244
|
f"A valid manifest should have at least one stream defined. Got {streams}"
|
240
245
|
)
|
@@ -303,5 +308,51 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
303
308
|
s["type"] = "DeclarativeStream"
|
304
309
|
return stream_configs
|
305
310
|
|
311
|
+
def _dynamic_stream_configs(
|
312
|
+
self, manifest: Mapping[str, Any], config: Mapping[str, Any]
|
313
|
+
) -> List[Dict[str, Any]]:
|
314
|
+
dynamic_stream_definitions: List[Dict[str, Any]] = manifest.get("dynamic_streams", [])
|
315
|
+
dynamic_stream_configs: List[Dict[str, Any]] = []
|
316
|
+
|
317
|
+
for dynamic_definition in dynamic_stream_definitions:
|
318
|
+
components_resolver_config = dynamic_definition["components_resolver"]
|
319
|
+
|
320
|
+
if not components_resolver_config:
|
321
|
+
raise ValueError(
|
322
|
+
f"Missing 'components_resolver' in dynamic definition: {dynamic_definition}"
|
323
|
+
)
|
324
|
+
|
325
|
+
resolver_type = components_resolver_config.get("type")
|
326
|
+
if not resolver_type:
|
327
|
+
raise ValueError(
|
328
|
+
f"Missing 'type' in components resolver configuration: {components_resolver_config}"
|
329
|
+
)
|
330
|
+
|
331
|
+
if resolver_type not in COMPONENTS_RESOLVER_TYPE_MAPPING:
|
332
|
+
raise ValueError(
|
333
|
+
f"Invalid components resolver type '{resolver_type}'. "
|
334
|
+
f"Expected one of {list(COMPONENTS_RESOLVER_TYPE_MAPPING.keys())}."
|
335
|
+
)
|
336
|
+
|
337
|
+
if "retriever" in components_resolver_config:
|
338
|
+
components_resolver_config["retriever"]["requester"]["use_cache"] = True
|
339
|
+
|
340
|
+
# Create a resolver for dynamic components based on type
|
341
|
+
components_resolver = self._constructor.create_component(
|
342
|
+
COMPONENTS_RESOLVER_TYPE_MAPPING[resolver_type], components_resolver_config, config
|
343
|
+
)
|
344
|
+
|
345
|
+
stream_template_config = dynamic_definition["stream_template"]
|
346
|
+
|
347
|
+
for dynamic_stream in components_resolver.resolve_components(
|
348
|
+
stream_template_config=stream_template_config
|
349
|
+
):
|
350
|
+
if "type" not in dynamic_stream:
|
351
|
+
dynamic_stream["type"] = "DeclarativeStream"
|
352
|
+
|
353
|
+
dynamic_stream_configs.append(dynamic_stream)
|
354
|
+
|
355
|
+
return dynamic_stream_configs
|
356
|
+
|
306
357
|
def _emit_manifest_debug_message(self, extra_args: dict[str, Any]) -> None:
|
307
358
|
self.logger.debug("declarative source created from manifest", extra=extra_args)
|