airbyte-cdk 6.17.1.dev1__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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/PKG-INFO +3 -3
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/_run.py +6 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/connector_builder_handler.py +1 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/oauth.py +102 -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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +39 -43
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +198 -23
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/__init__.py +9 -1
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +43 -0
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +59 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +123 -103
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +3 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +35 -18
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +17 -5
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +166 -32
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +143 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +296 -47
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +46 -12
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/requesters/README.md +56 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +22 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +33 -4
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/__init__.py +2 -0
- {airbyte_cdk-6.17.1.dev1 → 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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +11 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/exceptions.py +34 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_source.py +28 -5
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +18 -4
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +25 -2
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +30 -2
- {airbyte_cdk-6.17.1.dev1 → 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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/cursor.py +21 -36
- airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/streams/concurrent/cursor_types.py +32 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +33 -4
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +61 -23
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/types.py +3 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/transform.py +29 -3
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/manifest_only_fixtures.py +1 -2
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/pyproject.toml +5 -9
- airbyte_cdk-6.17.1.dev1/airbyte_cdk/sources/declarative/checks/__init__.py +0 -8
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/LICENSE.txt +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/README.md +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → 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.17.1.dev1 → 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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → 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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → 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.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev1 → 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
|
@@ -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.17.1.dev1 → 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
|
@@ -39,14 +40,15 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
39
40
|
token_expiry_date_format str: format of the datetime; provide it if expires_in is returned in datetime instead of seconds
|
40
41
|
token_expiry_is_time_of_expiration bool: set True it if expires_in is returned as time of expiration instead of the number seconds until expiration
|
41
42
|
refresh_request_body (Optional[Mapping[str, Any]]): The request body to send in the refresh request
|
43
|
+
refresh_request_headers (Optional[Mapping[str, Any]]): The request headers to send in the refresh request
|
42
44
|
grant_type: The grant_type to request for access_token. If set to refresh_token, the refresh_token parameter has to be provided
|
43
45
|
message_repository (MessageRepository): the message repository used to emit logs on HTTP requests
|
44
46
|
"""
|
45
47
|
|
46
|
-
client_id: Union[InterpolatedString, str]
|
47
|
-
client_secret: Union[InterpolatedString, str]
|
48
48
|
config: Mapping[str, Any]
|
49
49
|
parameters: InitVar[Mapping[str, Any]]
|
50
|
+
client_id: Optional[Union[InterpolatedString, str]] = None
|
51
|
+
client_secret: Optional[Union[InterpolatedString, str]] = None
|
50
52
|
token_refresh_endpoint: Optional[Union[InterpolatedString, str]] = None
|
51
53
|
refresh_token: Optional[Union[InterpolatedString, str]] = None
|
52
54
|
scopes: Optional[List[str]] = None
|
@@ -56,10 +58,17 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
56
58
|
token_expiry_is_time_of_expiration: bool = False
|
57
59
|
access_token_name: Union[InterpolatedString, str] = "access_token"
|
58
60
|
access_token_value: Optional[Union[InterpolatedString, str]] = None
|
61
|
+
client_id_name: Union[InterpolatedString, str] = "client_id"
|
62
|
+
client_secret_name: Union[InterpolatedString, str] = "client_secret"
|
59
63
|
expires_in_name: Union[InterpolatedString, str] = "expires_in"
|
64
|
+
refresh_token_name: Union[InterpolatedString, str] = "refresh_token"
|
60
65
|
refresh_request_body: Optional[Mapping[str, Any]] = None
|
66
|
+
refresh_request_headers: Optional[Mapping[str, Any]] = None
|
67
|
+
grant_type_name: Union[InterpolatedString, str] = "grant_type"
|
61
68
|
grant_type: Union[InterpolatedString, str] = "refresh_token"
|
62
69
|
message_repository: MessageRepository = NoopMessageRepository()
|
70
|
+
profile_assertion: Optional[DeclarativeAuthenticator] = None
|
71
|
+
use_profile_assertion: Optional[Union[InterpolatedBoolean, str, bool]] = False
|
63
72
|
|
64
73
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
65
74
|
super().__init__()
|
@@ -69,8 +78,23 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
69
78
|
)
|
70
79
|
else:
|
71
80
|
self._token_refresh_endpoint = None
|
72
|
-
self.
|
73
|
-
self.
|
81
|
+
self._client_id_name = InterpolatedString.create(self.client_id_name, parameters=parameters)
|
82
|
+
self._client_id = (
|
83
|
+
InterpolatedString.create(self.client_id, parameters=parameters)
|
84
|
+
if self.client_id
|
85
|
+
else self.client_id
|
86
|
+
)
|
87
|
+
self._client_secret_name = InterpolatedString.create(
|
88
|
+
self.client_secret_name, parameters=parameters
|
89
|
+
)
|
90
|
+
self._client_secret = (
|
91
|
+
InterpolatedString.create(self.client_secret, parameters=parameters)
|
92
|
+
if self.client_secret
|
93
|
+
else self.client_secret
|
94
|
+
)
|
95
|
+
self._refresh_token_name = InterpolatedString.create(
|
96
|
+
self.refresh_token_name, parameters=parameters
|
97
|
+
)
|
74
98
|
if self.refresh_token is not None:
|
75
99
|
self._refresh_token: Optional[InterpolatedString] = InterpolatedString.create(
|
76
100
|
self.refresh_token, parameters=parameters
|
@@ -83,10 +107,21 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
83
107
|
self.expires_in_name = InterpolatedString.create(
|
84
108
|
self.expires_in_name, parameters=parameters
|
85
109
|
)
|
86
|
-
self.
|
110
|
+
self.grant_type_name = InterpolatedString.create(
|
111
|
+
self.grant_type_name, parameters=parameters
|
112
|
+
)
|
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
|
+
)
|
87
119
|
self._refresh_request_body = InterpolatedMapping(
|
88
120
|
self.refresh_request_body or {}, parameters=parameters
|
89
121
|
)
|
122
|
+
self._refresh_request_headers = InterpolatedMapping(
|
123
|
+
self.refresh_request_headers or {}, parameters=parameters
|
124
|
+
)
|
90
125
|
self._token_expiry_date: pendulum.DateTime = (
|
91
126
|
pendulum.parse(
|
92
127
|
InterpolatedString.create(self.token_expiry_date, parameters=parameters).eval(
|
@@ -96,6 +131,13 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
96
131
|
if self.token_expiry_date
|
97
132
|
else pendulum.now().subtract(days=1) # type: ignore # substract does not have type hints
|
98
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
|
+
|
99
141
|
if self.access_token_value is not None:
|
100
142
|
self._access_token_value = InterpolatedString.create(
|
101
143
|
self.access_token_value, parameters=parameters
|
@@ -107,9 +149,20 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
107
149
|
self._access_token_value if self.access_token_value else None
|
108
150
|
)
|
109
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
|
+
)
|
110
163
|
if self.get_grant_type() == "refresh_token" and self._refresh_token is None:
|
111
164
|
raise ValueError(
|
112
|
-
"OAuthAuthenticator
|
165
|
+
"OAuthAuthenticator configuration error: A 'refresh_token' is required when the 'grant_type' is set to 'refresh_token'."
|
113
166
|
)
|
114
167
|
|
115
168
|
def get_token_refresh_endpoint(self) -> Optional[str]:
|
@@ -122,17 +175,28 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
122
175
|
return refresh_token_endpoint
|
123
176
|
return None
|
124
177
|
|
178
|
+
def get_client_id_name(self) -> str:
|
179
|
+
return self._client_id_name.eval(self.config) # type: ignore # eval returns a string in this context
|
180
|
+
|
125
181
|
def get_client_id(self) -> str:
|
126
|
-
client_id
|
182
|
+
client_id = self._client_id.eval(self.config) if self._client_id else self._client_id
|
127
183
|
if not client_id:
|
128
184
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_id parameter")
|
129
|
-
return client_id
|
185
|
+
return client_id # type: ignore # value will be returned as a string, or an error will be raised
|
186
|
+
|
187
|
+
def get_client_secret_name(self) -> str:
|
188
|
+
return self._client_secret_name.eval(self.config) # type: ignore # eval returns a string in this context
|
130
189
|
|
131
190
|
def get_client_secret(self) -> str:
|
132
|
-
client_secret
|
191
|
+
client_secret = (
|
192
|
+
self._client_secret.eval(self.config) if self._client_secret else self._client_secret
|
193
|
+
)
|
133
194
|
if not client_secret:
|
134
195
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_secret parameter")
|
135
|
-
return client_secret
|
196
|
+
return client_secret # type: ignore # value will be returned as a string, or an error will be raised
|
197
|
+
|
198
|
+
def get_refresh_token_name(self) -> str:
|
199
|
+
return self._refresh_token_name.eval(self.config) # type: ignore # eval returns a string in this context
|
136
200
|
|
137
201
|
def get_refresh_token(self) -> Optional[str]:
|
138
202
|
return None if self._refresh_token is None else str(self._refresh_token.eval(self.config))
|
@@ -146,18 +210,45 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
146
210
|
def get_expires_in_name(self) -> str:
|
147
211
|
return self.expires_in_name.eval(self.config) # type: ignore # eval returns a string in this context
|
148
212
|
|
213
|
+
def get_grant_type_name(self) -> str:
|
214
|
+
return self.grant_type_name.eval(self.config) # type: ignore # eval returns a string in this context
|
215
|
+
|
149
216
|
def get_grant_type(self) -> str:
|
150
217
|
return self.grant_type.eval(self.config) # type: ignore # eval returns a string in this context
|
151
218
|
|
152
219
|
def get_refresh_request_body(self) -> Mapping[str, Any]:
|
153
220
|
return self._refresh_request_body.eval(self.config)
|
154
221
|
|
222
|
+
def get_refresh_request_headers(self) -> Mapping[str, Any]:
|
223
|
+
return self._refresh_request_headers.eval(self.config)
|
224
|
+
|
155
225
|
def get_token_expiry_date(self) -> pendulum.DateTime:
|
156
226
|
return self._token_expiry_date # type: ignore # _token_expiry_date is a pendulum.DateTime. It is never None despite what mypy thinks
|
157
227
|
|
158
228
|
def set_token_expiry_date(self, value: Union[str, int]) -> None:
|
159
229
|
self._token_expiry_date = self._parse_token_expiration_date(value)
|
160
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
|
+
|
161
252
|
@property
|
162
253
|
def access_token(self) -> str:
|
163
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
|
@@ -35,7 +35,7 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
|
35
35
|
ModelToComponentFactory,
|
36
36
|
)
|
37
37
|
from airbyte_cdk.sources.declarative.requesters import HttpRequester
|
38
|
-
from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
|
38
|
+
from airbyte_cdk.sources.declarative.retrievers import Retriever, SimpleRetriever
|
39
39
|
from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
|
40
40
|
DeclarativePartitionFactory,
|
41
41
|
StreamSlicerPartitionGenerator,
|
@@ -80,6 +80,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
80
80
|
|
81
81
|
super().__init__(
|
82
82
|
source_config=source_config,
|
83
|
+
config=config,
|
83
84
|
debug=debug,
|
84
85
|
emit_connector_builder_messages=emit_connector_builder_messages,
|
85
86
|
component_factory=component_factory,
|
@@ -233,21 +234,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
233
234
|
stream_state=stream_state,
|
234
235
|
)
|
235
236
|
|
236
|
-
retriever = declarative_stream
|
237
|
-
|
238
|
-
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
239
|
-
# low-code framework because state management is handled through the ConcurrentCursor.
|
240
|
-
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
241
|
-
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
242
|
-
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
243
|
-
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
244
|
-
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
245
|
-
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
246
|
-
if retriever.cursor:
|
247
|
-
retriever.cursor.set_initial_state(stream_state=stream_state)
|
248
|
-
# We zero it out here, but since this is a cursor reference, the state is still properly
|
249
|
-
# instantiated for the other components that reference it
|
250
|
-
retriever.cursor = None
|
237
|
+
retriever = self._get_retriever(declarative_stream, stream_state)
|
251
238
|
|
252
239
|
partition_generator = StreamSlicerPartitionGenerator(
|
253
240
|
DeclarativePartitionFactory(
|
@@ -324,32 +311,20 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
324
311
|
)
|
325
312
|
partition_router = declarative_stream.retriever.stream_slicer._partition_router
|
326
313
|
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
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
|
+
)
|
336
325
|
)
|
337
326
|
|
338
|
-
retriever = declarative_stream
|
339
|
-
|
340
|
-
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
341
|
-
# low-code framework because state management is handled through the ConcurrentCursor.
|
342
|
-
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
343
|
-
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
344
|
-
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
345
|
-
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
346
|
-
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
347
|
-
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
348
|
-
if retriever.cursor:
|
349
|
-
retriever.cursor.set_initial_state(stream_state=stream_state)
|
350
|
-
# We zero it out here, but since this is a cursor reference, the state is still properly
|
351
|
-
# instantiated for the other components that reference it
|
352
|
-
retriever.cursor = None
|
327
|
+
retriever = self._get_retriever(declarative_stream, stream_state)
|
353
328
|
|
354
329
|
partition_generator = StreamSlicerPartitionGenerator(
|
355
330
|
DeclarativePartitionFactory(
|
@@ -358,7 +333,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
358
333
|
retriever,
|
359
334
|
self.message_repository,
|
360
335
|
),
|
361
|
-
|
336
|
+
perpartition_cursor,
|
362
337
|
)
|
363
338
|
|
364
339
|
concurrent_streams.append(
|
@@ -368,9 +343,9 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
368
343
|
json_schema=declarative_stream.get_json_schema(),
|
369
344
|
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
370
345
|
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
371
|
-
cursor_field=
|
346
|
+
cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
|
372
347
|
logger=self.logger,
|
373
|
-
cursor=
|
348
|
+
cursor=perpartition_cursor,
|
374
349
|
)
|
375
350
|
)
|
376
351
|
else:
|
@@ -463,6 +438,27 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
463
438
|
return False
|
464
439
|
return True
|
465
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
|
+
|
466
462
|
@staticmethod
|
467
463
|
def _select_streams(
|
468
464
|
streams: List[AbstractStream], configured_catalog: ConfiguredAirbyteCatalog
|