airbyte-cdk 6.19.1__tar.gz → 6.26.0.dev3__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.19.1 → airbyte_cdk-6.26.0.dev3}/PKG-INFO +3 -3
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/_run.py +6 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/connector_builder_handler.py +1 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/oauth.py +68 -11
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/checks/__init__.py +24 -0
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +51 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +81 -16
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +123 -3
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/__init__.py +9 -1
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +59 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +3 -5
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/__init__.py +6 -0
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +360 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +3 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +35 -3
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +17 -5
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +84 -11
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +143 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +279 -26
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +46 -12
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/README.md +2 -3
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +22 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/__init__.py +2 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +56 -8
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +55 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/http_logger.py +1 -1
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/streams/concurrent/clamping.py +99 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/cursor.py +51 -57
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/streams/concurrent/cursor_types.py +32 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +20 -20
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/transform.py +29 -3
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/manifest_only_fixtures.py +1 -2
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/pyproject.toml +5 -9
- airbyte_cdk-6.19.1/airbyte_cdk/sources/declarative/checks/__init__.py +0 -8
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/LICENSE.txt +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/README.md +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.26.0.dev3
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
License: MIT
|
6
6
|
Keywords: airbyte,connector-development-kit,cdk
|
@@ -23,7 +23,7 @@ Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
|
|
23
23
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
24
24
|
Requires-Dist: Unidecode (>=1.3,<2.0)
|
25
25
|
Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
|
26
|
-
Requires-Dist: avro (>=1.11.2,<1.
|
26
|
+
Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
|
27
27
|
Requires-Dist: backoff
|
28
28
|
Requires-Dist: cachetools
|
29
29
|
Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
|
@@ -66,7 +66,7 @@ Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
|
|
66
66
|
Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
|
67
67
|
Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
68
68
|
Requires-Dist: wcmatch (==10.0)
|
69
|
-
Requires-Dist: xmltodict (>=0.13
|
69
|
+
Requires-Dist: xmltodict (>=0.13,<0.15)
|
70
70
|
Project-URL: Documentation, https://docs.airbyte.io/
|
71
71
|
Project-URL: Homepage, https://airbyte.com
|
72
72
|
Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
|
{airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/_run.py
RENAMED
@@ -171,6 +171,12 @@ def create_declarative_source(
|
|
171
171
|
"Invalid config: `__injected_declarative_manifest` should be provided at the root "
|
172
172
|
f"of the config but config only has keys: {list(config.keys() if config else [])}"
|
173
173
|
)
|
174
|
+
if not isinstance(config["__injected_declarative_manifest"], dict):
|
175
|
+
raise ValueError(
|
176
|
+
"Invalid config: `__injected_declarative_manifest` should be a dictionary, "
|
177
|
+
f"but got type: {type(config['__injected_declarative_manifest'])}"
|
178
|
+
)
|
179
|
+
|
174
180
|
return ConcurrentDeclarativeSource(
|
175
181
|
config=config,
|
176
182
|
catalog=catalog,
|
@@ -52,6 +52,7 @@ def get_limits(config: Mapping[str, Any]) -> TestReadLimits:
|
|
52
52
|
def create_source(config: Mapping[str, Any], limits: TestReadLimits) -> ManifestDeclarativeSource:
|
53
53
|
manifest = config["__injected_declarative_manifest"]
|
54
54
|
return ManifestDeclarativeSource(
|
55
|
+
config=config,
|
55
56
|
emit_connector_builder_messages=True,
|
56
57
|
source_config=manifest,
|
57
58
|
component_factory=ModelToComponentFactory(
|
{airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
@@ -3,11 +3,12 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
from dataclasses import InitVar, dataclass, field
|
6
|
-
from typing import Any, List, Mapping, Optional, Union
|
6
|
+
from typing import Any, List, Mapping, MutableMapping, Optional, Union
|
7
7
|
|
8
8
|
import pendulum
|
9
9
|
|
10
10
|
from airbyte_cdk.sources.declarative.auth.declarative_authenticator import DeclarativeAuthenticator
|
11
|
+
from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean
|
11
12
|
from airbyte_cdk.sources.declarative.interpolation.interpolated_mapping import InterpolatedMapping
|
12
13
|
from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
|
13
14
|
from airbyte_cdk.sources.message import MessageRepository, NoopMessageRepository
|
@@ -44,10 +45,10 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
44
45
|
message_repository (MessageRepository): the message repository used to emit logs on HTTP requests
|
45
46
|
"""
|
46
47
|
|
47
|
-
client_id: Union[InterpolatedString, str]
|
48
|
-
client_secret: Union[InterpolatedString, str]
|
49
48
|
config: Mapping[str, Any]
|
50
49
|
parameters: InitVar[Mapping[str, Any]]
|
50
|
+
client_id: Optional[Union[InterpolatedString, str]] = None
|
51
|
+
client_secret: Optional[Union[InterpolatedString, str]] = None
|
51
52
|
token_refresh_endpoint: Optional[Union[InterpolatedString, str]] = None
|
52
53
|
refresh_token: Optional[Union[InterpolatedString, str]] = None
|
53
54
|
scopes: Optional[List[str]] = None
|
@@ -66,6 +67,8 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
66
67
|
grant_type_name: Union[InterpolatedString, str] = "grant_type"
|
67
68
|
grant_type: Union[InterpolatedString, str] = "refresh_token"
|
68
69
|
message_repository: MessageRepository = NoopMessageRepository()
|
70
|
+
profile_assertion: Optional[DeclarativeAuthenticator] = None
|
71
|
+
use_profile_assertion: Optional[Union[InterpolatedBoolean, str, bool]] = False
|
69
72
|
|
70
73
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
71
74
|
super().__init__()
|
@@ -76,11 +79,19 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
76
79
|
else:
|
77
80
|
self._token_refresh_endpoint = None
|
78
81
|
self._client_id_name = InterpolatedString.create(self.client_id_name, parameters=parameters)
|
79
|
-
self._client_id =
|
82
|
+
self._client_id = (
|
83
|
+
InterpolatedString.create(self.client_id, parameters=parameters)
|
84
|
+
if self.client_id
|
85
|
+
else self.client_id
|
86
|
+
)
|
80
87
|
self._client_secret_name = InterpolatedString.create(
|
81
88
|
self.client_secret_name, parameters=parameters
|
82
89
|
)
|
83
|
-
self._client_secret =
|
90
|
+
self._client_secret = (
|
91
|
+
InterpolatedString.create(self.client_secret, parameters=parameters)
|
92
|
+
if self.client_secret
|
93
|
+
else self.client_secret
|
94
|
+
)
|
84
95
|
self._refresh_token_name = InterpolatedString.create(
|
85
96
|
self.refresh_token_name, parameters=parameters
|
86
97
|
)
|
@@ -99,7 +110,12 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
99
110
|
self.grant_type_name = InterpolatedString.create(
|
100
111
|
self.grant_type_name, parameters=parameters
|
101
112
|
)
|
102
|
-
self.grant_type = InterpolatedString.create(
|
113
|
+
self.grant_type = InterpolatedString.create(
|
114
|
+
"urn:ietf:params:oauth:grant-type:jwt-bearer"
|
115
|
+
if self.use_profile_assertion
|
116
|
+
else self.grant_type,
|
117
|
+
parameters=parameters,
|
118
|
+
)
|
103
119
|
self._refresh_request_body = InterpolatedMapping(
|
104
120
|
self.refresh_request_body or {}, parameters=parameters
|
105
121
|
)
|
@@ -115,6 +131,13 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
115
131
|
if self.token_expiry_date
|
116
132
|
else pendulum.now().subtract(days=1) # type: ignore # substract does not have type hints
|
117
133
|
)
|
134
|
+
self.use_profile_assertion = (
|
135
|
+
InterpolatedBoolean(self.use_profile_assertion, parameters=parameters)
|
136
|
+
if isinstance(self.use_profile_assertion, str)
|
137
|
+
else self.use_profile_assertion
|
138
|
+
)
|
139
|
+
self.assertion_name = "assertion"
|
140
|
+
|
118
141
|
if self.access_token_value is not None:
|
119
142
|
self._access_token_value = InterpolatedString.create(
|
120
143
|
self.access_token_value, parameters=parameters
|
@@ -126,9 +149,20 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
126
149
|
self._access_token_value if self.access_token_value else None
|
127
150
|
)
|
128
151
|
|
152
|
+
if not self.use_profile_assertion and any(
|
153
|
+
client_creds is None for client_creds in [self.client_id, self.client_secret]
|
154
|
+
):
|
155
|
+
raise ValueError(
|
156
|
+
"OAuthAuthenticator configuration error: Both 'client_id' and 'client_secret' are required for the "
|
157
|
+
"basic OAuth flow."
|
158
|
+
)
|
159
|
+
if self.profile_assertion is None and self.use_profile_assertion:
|
160
|
+
raise ValueError(
|
161
|
+
"OAuthAuthenticator configuration error: 'profile_assertion' is required when using the profile assertion flow."
|
162
|
+
)
|
129
163
|
if self.get_grant_type() == "refresh_token" and self._refresh_token is None:
|
130
164
|
raise ValueError(
|
131
|
-
"OAuthAuthenticator
|
165
|
+
"OAuthAuthenticator configuration error: A 'refresh_token' is required when the 'grant_type' is set to 'refresh_token'."
|
132
166
|
)
|
133
167
|
|
134
168
|
def get_token_refresh_endpoint(self) -> Optional[str]:
|
@@ -145,19 +179,21 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
145
179
|
return self._client_id_name.eval(self.config) # type: ignore # eval returns a string in this context
|
146
180
|
|
147
181
|
def get_client_id(self) -> str:
|
148
|
-
client_id
|
182
|
+
client_id = self._client_id.eval(self.config) if self._client_id else self._client_id
|
149
183
|
if not client_id:
|
150
184
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_id parameter")
|
151
|
-
return client_id
|
185
|
+
return client_id # type: ignore # value will be returned as a string, or an error will be raised
|
152
186
|
|
153
187
|
def get_client_secret_name(self) -> str:
|
154
188
|
return self._client_secret_name.eval(self.config) # type: ignore # eval returns a string in this context
|
155
189
|
|
156
190
|
def get_client_secret(self) -> str:
|
157
|
-
client_secret
|
191
|
+
client_secret = (
|
192
|
+
self._client_secret.eval(self.config) if self._client_secret else self._client_secret
|
193
|
+
)
|
158
194
|
if not client_secret:
|
159
195
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_secret parameter")
|
160
|
-
return client_secret
|
196
|
+
return client_secret # type: ignore # value will be returned as a string, or an error will be raised
|
161
197
|
|
162
198
|
def get_refresh_token_name(self) -> str:
|
163
199
|
return self._refresh_token_name.eval(self.config) # type: ignore # eval returns a string in this context
|
@@ -192,6 +228,27 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
192
228
|
def set_token_expiry_date(self, value: Union[str, int]) -> None:
|
193
229
|
self._token_expiry_date = self._parse_token_expiration_date(value)
|
194
230
|
|
231
|
+
def get_assertion_name(self) -> str:
|
232
|
+
return self.assertion_name
|
233
|
+
|
234
|
+
def get_assertion(self) -> str:
|
235
|
+
if self.profile_assertion is None:
|
236
|
+
raise ValueError("profile_assertion is not set")
|
237
|
+
return self.profile_assertion.token
|
238
|
+
|
239
|
+
def build_refresh_request_body(self) -> Mapping[str, Any]:
|
240
|
+
"""
|
241
|
+
Returns the request body to set on the refresh request
|
242
|
+
|
243
|
+
Override to define additional parameters
|
244
|
+
"""
|
245
|
+
if self.use_profile_assertion:
|
246
|
+
return {
|
247
|
+
self.get_grant_type_name(): self.get_grant_type(),
|
248
|
+
self.get_assertion_name(): self.get_assertion(),
|
249
|
+
}
|
250
|
+
return super().build_refresh_request_body()
|
251
|
+
|
195
252
|
@property
|
196
253
|
def access_token(self) -> str:
|
197
254
|
if self._access_token is None:
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
from typing import Mapping
|
6
|
+
|
7
|
+
from pydantic.v1 import BaseModel
|
8
|
+
|
9
|
+
from airbyte_cdk.sources.declarative.checks.check_dynamic_stream import CheckDynamicStream
|
10
|
+
from airbyte_cdk.sources.declarative.checks.check_stream import CheckStream
|
11
|
+
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.declarative.models import (
|
13
|
+
CheckDynamicStream as CheckDynamicStreamModel,
|
14
|
+
)
|
15
|
+
from airbyte_cdk.sources.declarative.models import (
|
16
|
+
CheckStream as CheckStreamModel,
|
17
|
+
)
|
18
|
+
|
19
|
+
COMPONENTS_CHECKER_TYPE_MAPPING: Mapping[str, type[BaseModel]] = {
|
20
|
+
"CheckStream": CheckStreamModel,
|
21
|
+
"CheckDynamicStream": CheckDynamicStreamModel,
|
22
|
+
}
|
23
|
+
|
24
|
+
__all__ = ["CheckStream", "CheckDynamicStream", "ConnectionChecker"]
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
import logging
|
6
|
+
import traceback
|
7
|
+
from dataclasses import InitVar, dataclass
|
8
|
+
from typing import Any, List, Mapping, Tuple
|
9
|
+
|
10
|
+
from airbyte_cdk import AbstractSource
|
11
|
+
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
|
13
|
+
|
14
|
+
|
15
|
+
@dataclass
|
16
|
+
class CheckDynamicStream(ConnectionChecker):
|
17
|
+
"""
|
18
|
+
Checks the connections by checking availability of one or many dynamic streams
|
19
|
+
|
20
|
+
Attributes:
|
21
|
+
stream_count (int): numbers of streams to check
|
22
|
+
"""
|
23
|
+
|
24
|
+
stream_count: int
|
25
|
+
parameters: InitVar[Mapping[str, Any]]
|
26
|
+
|
27
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
28
|
+
self._parameters = parameters
|
29
|
+
|
30
|
+
def check_connection(
|
31
|
+
self, source: AbstractSource, logger: logging.Logger, config: Mapping[str, Any]
|
32
|
+
) -> Tuple[bool, Any]:
|
33
|
+
streams = source.streams(config=config)
|
34
|
+
if len(streams) == 0:
|
35
|
+
return False, f"No streams to connect to from source {source}"
|
36
|
+
|
37
|
+
for stream_index in range(min(self.stream_count, len(streams))):
|
38
|
+
stream = streams[stream_index]
|
39
|
+
availability_strategy = HttpAvailabilityStrategy()
|
40
|
+
try:
|
41
|
+
stream_is_available, reason = availability_strategy.check_availability(
|
42
|
+
stream, logger
|
43
|
+
)
|
44
|
+
if not stream_is_available:
|
45
|
+
return False, reason
|
46
|
+
except Exception as error:
|
47
|
+
logger.error(
|
48
|
+
f"Encountered an error trying to connect to stream {stream.name}. Error: \n {traceback.format_exc()}"
|
49
|
+
)
|
50
|
+
return False, f"Unable to connect to stream {stream.name} - {error}"
|
51
|
+
return True, None
|
@@ -20,6 +20,9 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
|
|
20
20
|
ClientSideIncrementalRecordFilterDecorator,
|
21
21
|
)
|
22
22
|
from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
|
23
|
+
from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
|
24
|
+
PerPartitionWithGlobalCursor,
|
25
|
+
)
|
23
26
|
from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
|
24
27
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
25
28
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
@@ -32,7 +35,7 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
|
32
35
|
ModelToComponentFactory,
|
33
36
|
)
|
34
37
|
from airbyte_cdk.sources.declarative.requesters import HttpRequester
|
35
|
-
from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
|
38
|
+
from airbyte_cdk.sources.declarative.retrievers import Retriever, SimpleRetriever
|
36
39
|
from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
|
37
40
|
DeclarativePartitionFactory,
|
38
41
|
StreamSlicerPartitionGenerator,
|
@@ -77,6 +80,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
77
80
|
|
78
81
|
super().__init__(
|
79
82
|
source_config=source_config,
|
83
|
+
config=config,
|
80
84
|
debug=debug,
|
81
85
|
emit_connector_builder_messages=emit_connector_builder_messages,
|
82
86
|
component_factory=component_factory,
|
@@ -230,21 +234,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
230
234
|
stream_state=stream_state,
|
231
235
|
)
|
232
236
|
|
233
|
-
retriever = declarative_stream
|
234
|
-
|
235
|
-
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
236
|
-
# low-code framework because state management is handled through the ConcurrentCursor.
|
237
|
-
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
238
|
-
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
239
|
-
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
240
|
-
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
241
|
-
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
242
|
-
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
243
|
-
if retriever.cursor:
|
244
|
-
retriever.cursor.set_initial_state(stream_state=stream_state)
|
245
|
-
# We zero it out here, but since this is a cursor reference, the state is still properly
|
246
|
-
# instantiated for the other components that reference it
|
247
|
-
retriever.cursor = None
|
237
|
+
retriever = self._get_retriever(declarative_stream, stream_state)
|
248
238
|
|
249
239
|
partition_generator = StreamSlicerPartitionGenerator(
|
250
240
|
DeclarativePartitionFactory(
|
@@ -304,6 +294,60 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
304
294
|
cursor=final_state_cursor,
|
305
295
|
)
|
306
296
|
)
|
297
|
+
elif (
|
298
|
+
incremental_sync_component_definition
|
299
|
+
and incremental_sync_component_definition.get("type", "")
|
300
|
+
== DatetimeBasedCursorModel.__name__
|
301
|
+
and self._stream_supports_concurrent_partition_processing(
|
302
|
+
declarative_stream=declarative_stream
|
303
|
+
)
|
304
|
+
and hasattr(declarative_stream.retriever, "stream_slicer")
|
305
|
+
and isinstance(
|
306
|
+
declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
|
307
|
+
)
|
308
|
+
):
|
309
|
+
stream_state = state_manager.get_stream_state(
|
310
|
+
stream_name=declarative_stream.name, namespace=declarative_stream.namespace
|
311
|
+
)
|
312
|
+
partition_router = declarative_stream.retriever.stream_slicer._partition_router
|
313
|
+
|
314
|
+
perpartition_cursor = (
|
315
|
+
self._constructor.create_concurrent_cursor_from_perpartition_cursor(
|
316
|
+
state_manager=state_manager,
|
317
|
+
model_type=DatetimeBasedCursorModel,
|
318
|
+
component_definition=incremental_sync_component_definition,
|
319
|
+
stream_name=declarative_stream.name,
|
320
|
+
stream_namespace=declarative_stream.namespace,
|
321
|
+
config=config or {},
|
322
|
+
stream_state=stream_state,
|
323
|
+
partition_router=partition_router,
|
324
|
+
)
|
325
|
+
)
|
326
|
+
|
327
|
+
retriever = self._get_retriever(declarative_stream, stream_state)
|
328
|
+
|
329
|
+
partition_generator = StreamSlicerPartitionGenerator(
|
330
|
+
DeclarativePartitionFactory(
|
331
|
+
declarative_stream.name,
|
332
|
+
declarative_stream.get_json_schema(),
|
333
|
+
retriever,
|
334
|
+
self.message_repository,
|
335
|
+
),
|
336
|
+
perpartition_cursor,
|
337
|
+
)
|
338
|
+
|
339
|
+
concurrent_streams.append(
|
340
|
+
DefaultStream(
|
341
|
+
partition_generator=partition_generator,
|
342
|
+
name=declarative_stream.name,
|
343
|
+
json_schema=declarative_stream.get_json_schema(),
|
344
|
+
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
345
|
+
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
346
|
+
cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
|
347
|
+
logger=self.logger,
|
348
|
+
cursor=perpartition_cursor,
|
349
|
+
)
|
350
|
+
)
|
307
351
|
else:
|
308
352
|
synchronous_streams.append(declarative_stream)
|
309
353
|
else:
|
@@ -394,6 +438,27 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
394
438
|
return False
|
395
439
|
return True
|
396
440
|
|
441
|
+
def _get_retriever(
|
442
|
+
self, declarative_stream: DeclarativeStream, stream_state: Mapping[str, Any]
|
443
|
+
) -> Retriever:
|
444
|
+
retriever = declarative_stream.retriever
|
445
|
+
|
446
|
+
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
447
|
+
# low-code framework because state management is handled through the ConcurrentCursor.
|
448
|
+
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
449
|
+
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
450
|
+
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
451
|
+
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
452
|
+
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
453
|
+
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
454
|
+
if retriever.cursor:
|
455
|
+
retriever.cursor.set_initial_state(stream_state=stream_state)
|
456
|
+
# We zero it out here, but since this is a cursor reference, the state is still properly
|
457
|
+
# instantiated for the other components that reference it
|
458
|
+
retriever.cursor = None
|
459
|
+
|
460
|
+
return retriever
|
461
|
+
|
397
462
|
@staticmethod
|
398
463
|
def _select_streams(
|
399
464
|
streams: List[AbstractStream], configured_catalog: ConfiguredAirbyteCatalog
|
@@ -18,7 +18,9 @@ properties:
|
|
18
18
|
type: string
|
19
19
|
enum: [DeclarativeSource]
|
20
20
|
check:
|
21
|
-
|
21
|
+
anyOf:
|
22
|
+
- "$ref": "#/definitions/CheckStream"
|
23
|
+
- "$ref": "#/definitions/CheckDynamicStream"
|
22
24
|
streams:
|
23
25
|
type: array
|
24
26
|
items:
|
@@ -303,6 +305,21 @@ definitions:
|
|
303
305
|
examples:
|
304
306
|
- ["users"]
|
305
307
|
- ["users", "contacts"]
|
308
|
+
CheckDynamicStream:
|
309
|
+
title: Dynamic Streams to Check
|
310
|
+
description: (This component is experimental. Use at your own risk.) Defines the dynamic streams to try reading when running a check operation.
|
311
|
+
type: object
|
312
|
+
required:
|
313
|
+
- type
|
314
|
+
- stream_count
|
315
|
+
properties:
|
316
|
+
type:
|
317
|
+
type: string
|
318
|
+
enum: [CheckDynamicStream]
|
319
|
+
stream_count:
|
320
|
+
title: Stream Count
|
321
|
+
description: Numbers of the streams to try reading from when running a check operation.
|
322
|
+
type: integer
|
306
323
|
CompositeErrorHandler:
|
307
324
|
title: Composite Error Handler
|
308
325
|
description: Error handler that sequentially iterates over a list of error handlers.
|
@@ -767,6 +784,29 @@ definitions:
|
|
767
784
|
type:
|
768
785
|
type: string
|
769
786
|
enum: [DatetimeBasedCursor]
|
787
|
+
clamping:
|
788
|
+
title: Date Range Clamping
|
789
|
+
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)
|
790
|
+
type: object
|
791
|
+
required:
|
792
|
+
- target
|
793
|
+
properties:
|
794
|
+
target:
|
795
|
+
title: Target
|
796
|
+
description: The period of time that datetime windows will be clamped by
|
797
|
+
# This should ideally be an enum. However, we don't use an enum because we want to allow for connectors
|
798
|
+
# to support interpolation on the connector config to get the target which is an arbitrary string
|
799
|
+
type: string
|
800
|
+
interpolation_context:
|
801
|
+
- config
|
802
|
+
examples:
|
803
|
+
- "DAY"
|
804
|
+
- "WEEK"
|
805
|
+
- "MONTH"
|
806
|
+
- "{{ config['target'] }}"
|
807
|
+
target_details:
|
808
|
+
type: object
|
809
|
+
additionalProperties: true
|
770
810
|
cursor_field:
|
771
811
|
title: Cursor Field
|
772
812
|
description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
|
@@ -1041,8 +1081,6 @@ definitions:
|
|
1041
1081
|
type: object
|
1042
1082
|
required:
|
1043
1083
|
- type
|
1044
|
-
- client_id
|
1045
|
-
- client_secret
|
1046
1084
|
properties:
|
1047
1085
|
type:
|
1048
1086
|
type: string
|
@@ -1237,6 +1275,15 @@ definitions:
|
|
1237
1275
|
default: []
|
1238
1276
|
examples:
|
1239
1277
|
- ["invalid_grant", "invalid_permissions"]
|
1278
|
+
profile_assertion:
|
1279
|
+
title: Profile Assertion
|
1280
|
+
description: The authenticator being used to authenticate the client authenticator.
|
1281
|
+
"$ref": "#/definitions/JwtAuthenticator"
|
1282
|
+
use_profile_assertion:
|
1283
|
+
title: Use Profile Assertion
|
1284
|
+
description: Enable using profile assertion as a flow for OAuth authorization.
|
1285
|
+
type: boolean
|
1286
|
+
default: false
|
1240
1287
|
$parameters:
|
1241
1288
|
type: object
|
1242
1289
|
additionalProperties: true
|
@@ -1299,6 +1346,7 @@ definitions:
|
|
1299
1346
|
- "$ref": "#/definitions/KeysToLower"
|
1300
1347
|
- "$ref": "#/definitions/KeysToSnakeCase"
|
1301
1348
|
- "$ref": "#/definitions/FlattenFields"
|
1349
|
+
- "$ref": "#/definitions/DpathFlattenFields"
|
1302
1350
|
- "$ref": "#/definitions/KeysReplace"
|
1303
1351
|
state_migrations:
|
1304
1352
|
title: State Migrations
|
@@ -1496,6 +1544,7 @@ definitions:
|
|
1496
1544
|
anyOf:
|
1497
1545
|
- "$ref": "#/definitions/JsonDecoder"
|
1498
1546
|
- "$ref": "#/definitions/XmlDecoder"
|
1547
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
1499
1548
|
$parameters:
|
1500
1549
|
type: object
|
1501
1550
|
additionalProperties: true
|
@@ -1751,6 +1800,19 @@ definitions:
|
|
1751
1800
|
$parameters:
|
1752
1801
|
type: object
|
1753
1802
|
additionalProperties: true
|
1803
|
+
ComplexFieldType:
|
1804
|
+
title: Schema Field Type
|
1805
|
+
description: (This component is experimental. Use at your own risk.) Represents a complex field type.
|
1806
|
+
type: object
|
1807
|
+
required:
|
1808
|
+
- field_type
|
1809
|
+
properties:
|
1810
|
+
field_type:
|
1811
|
+
type: string
|
1812
|
+
items:
|
1813
|
+
anyOf:
|
1814
|
+
- type: string
|
1815
|
+
- "$ref": "#/definitions/ComplexFieldType"
|
1754
1816
|
TypesMap:
|
1755
1817
|
title: Types Map
|
1756
1818
|
description: (This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
|
@@ -1765,12 +1827,17 @@ definitions:
|
|
1765
1827
|
- type: array
|
1766
1828
|
items:
|
1767
1829
|
type: string
|
1830
|
+
- "$ref": "#/definitions/ComplexFieldType"
|
1768
1831
|
current_type:
|
1769
1832
|
anyOf:
|
1770
1833
|
- type: string
|
1771
1834
|
- type: array
|
1772
1835
|
items:
|
1773
1836
|
type: string
|
1837
|
+
condition:
|
1838
|
+
type: string
|
1839
|
+
interpolation_context:
|
1840
|
+
- raw_schema
|
1774
1841
|
SchemaTypeIdentifier:
|
1775
1842
|
title: Schema Type Identifier
|
1776
1843
|
description: (This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
|
@@ -1844,6 +1911,7 @@ definitions:
|
|
1844
1911
|
- "$ref": "#/definitions/KeysToLower"
|
1845
1912
|
- "$ref": "#/definitions/KeysToSnakeCase"
|
1846
1913
|
- "$ref": "#/definitions/FlattenFields"
|
1914
|
+
- "$ref": "#/definitions/DpathFlattenFields"
|
1847
1915
|
- "$ref": "#/definitions/KeysReplace"
|
1848
1916
|
schema_type_identifier:
|
1849
1917
|
"$ref": "#/definitions/SchemaTypeIdentifier"
|
@@ -1948,6 +2016,33 @@ definitions:
|
|
1948
2016
|
$parameters:
|
1949
2017
|
type: object
|
1950
2018
|
additionalProperties: true
|
2019
|
+
DpathFlattenFields:
|
2020
|
+
title: Dpath Flatten Fields
|
2021
|
+
description: A transformation that flatten field values to the to top of the record.
|
2022
|
+
type: object
|
2023
|
+
required:
|
2024
|
+
- type
|
2025
|
+
- field_path
|
2026
|
+
properties:
|
2027
|
+
type:
|
2028
|
+
type: string
|
2029
|
+
enum: [DpathFlattenFields]
|
2030
|
+
field_path:
|
2031
|
+
title: Field Path
|
2032
|
+
description: A path to field that needs to be flattened.
|
2033
|
+
type: array
|
2034
|
+
items:
|
2035
|
+
- type: string
|
2036
|
+
examples:
|
2037
|
+
- ["data"]
|
2038
|
+
- ["data", "*", "field"]
|
2039
|
+
delete_origin_value:
|
2040
|
+
title: Delete Origin Value
|
2041
|
+
description: Whether to delete the origin value or keep it. Default is False.
|
2042
|
+
type: boolean
|
2043
|
+
$parameters:
|
2044
|
+
type: object
|
2045
|
+
additionalProperties: true
|
1951
2046
|
KeysReplace:
|
1952
2047
|
title: Keys Replace
|
1953
2048
|
description: A transformation that replaces symbols in keys.
|
@@ -2050,6 +2145,26 @@ definitions:
|
|
2050
2145
|
$parameters:
|
2051
2146
|
type: object
|
2052
2147
|
additionalProperties: true
|
2148
|
+
ZipfileDecoder:
|
2149
|
+
title: Zipfile Decoder
|
2150
|
+
description: Decoder for response data that is returned as zipfile(s).
|
2151
|
+
type: object
|
2152
|
+
additionalProperties: true
|
2153
|
+
required:
|
2154
|
+
- type
|
2155
|
+
- parser
|
2156
|
+
properties:
|
2157
|
+
type:
|
2158
|
+
type: string
|
2159
|
+
enum: [ZipfileDecoder]
|
2160
|
+
parser:
|
2161
|
+
title: Parser
|
2162
|
+
description: Parser to parse the decompressed data from the zipfile(s).
|
2163
|
+
anyOf:
|
2164
|
+
- "$ref": "#/definitions/GzipParser"
|
2165
|
+
- "$ref": "#/definitions/JsonParser"
|
2166
|
+
- "$ref": "#/definitions/JsonLineParser"
|
2167
|
+
- "$ref": "#/definitions/CsvParser"
|
2053
2168
|
ListPartitionRouter:
|
2054
2169
|
title: List Partition Router
|
2055
2170
|
description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
|
@@ -2878,6 +2993,7 @@ definitions:
|
|
2878
2993
|
- "$ref": "#/definitions/XmlDecoder"
|
2879
2994
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
2880
2995
|
- "$ref": "#/definitions/CompositeRawDecoder"
|
2996
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
2881
2997
|
$parameters:
|
2882
2998
|
type: object
|
2883
2999
|
additionalProperties: true
|
@@ -3076,6 +3192,8 @@ definitions:
|
|
3076
3192
|
- "$ref": "#/definitions/IterableDecoder"
|
3077
3193
|
- "$ref": "#/definitions/XmlDecoder"
|
3078
3194
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3195
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3196
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3079
3197
|
download_decoder:
|
3080
3198
|
title: Download Decoder
|
3081
3199
|
description: Component decoding the download response so records can be extracted.
|
@@ -3086,6 +3204,8 @@ definitions:
|
|
3086
3204
|
- "$ref": "#/definitions/IterableDecoder"
|
3087
3205
|
- "$ref": "#/definitions/XmlDecoder"
|
3088
3206
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3207
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3208
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3089
3209
|
$parameters:
|
3090
3210
|
type: object
|
3091
3211
|
additionalProperties: true
|