airbyte-cdk 6.60.9__tar.gz → 6.60.11__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.60.9 → airbyte_cdk-6.60.11}/PKG-INFO +1 -1
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/_connector.py +10 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/_image.py +12 -1
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +6 -9
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/checks/check_stream.py +31 -12
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -6
- airbyte_cdk-6.60.11/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +7 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +1 -27
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -1
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -2
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/availability_strategy.py +1 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +6 -6
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -43
- airbyte_cdk-6.60.11/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +37 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/default_stream.py +32 -9
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/models/scenario.py +5 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/pytest_hooks.py +18 -3
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/pyproject.toml +1 -1
- airbyte_cdk-6.60.9/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -11
- airbyte_cdk-6.60.9/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -94
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/LICENSE.txt +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/_manifest.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/_secrets.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/_version.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/airbyte_cdk/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/source_declarative_manifest/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/manifest_migration.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migration_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations/http_requester_path_to_url.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data_to_request_body.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations/registry.yaml +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/manifest_migrations/migrations_registry.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/models/connector_metadata.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/connector_builder_file_uploader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/default_file_uploader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_uploader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_writer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_writer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/composite_schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer_test_read_decorator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/config_transformations/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/config_transformations/add_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/config_transformations/config_transformation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/config_transformations/remap_field.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/config_transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/dpath_validator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/predicate_validator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/validate_adheres_to_schema.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/validation_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/validators/validator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_record_data.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/files_directory.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/models/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/models/outcome.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/_job_runner.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/connector_base.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/declarative_sources.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/destination_base.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/docker_base.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/source_base.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/standard_tests/util.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/connector_paths.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/docker.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -123,11 +123,18 @@ def connector_cli_group() -> None:
|
|
123
123
|
multiple=True,
|
124
124
|
help="Additional argument(s) to pass to pytest. Can be specified multiple times.",
|
125
125
|
)
|
126
|
+
@click.option(
|
127
|
+
"--no-creds",
|
128
|
+
is_flag=True,
|
129
|
+
default=False,
|
130
|
+
help="Skip tests that require credentials (marked with 'requires_creds').",
|
131
|
+
)
|
126
132
|
def connector_test(
|
127
133
|
connector: str | Path | None = None,
|
128
134
|
*,
|
129
135
|
collect_only: bool = False,
|
130
136
|
pytest_args: list[str] | None = None,
|
137
|
+
no_creds: bool = False,
|
131
138
|
) -> None:
|
132
139
|
"""Run connector tests.
|
133
140
|
|
@@ -147,6 +154,9 @@ def connector_test(
|
|
147
154
|
if collect_only:
|
148
155
|
pytest_args.append("--collect-only")
|
149
156
|
|
157
|
+
if no_creds:
|
158
|
+
pytest_args.extend(["-m", "not requires_creds"])
|
159
|
+
|
150
160
|
run_connector_tests(
|
151
161
|
connector_name=connector_name,
|
152
162
|
connector_directory=connector_directory,
|
@@ -100,10 +100,17 @@ def build(
|
|
100
100
|
"--image",
|
101
101
|
help="Image to test, instead of building a new one.",
|
102
102
|
)
|
103
|
+
@click.option(
|
104
|
+
"--no-creds",
|
105
|
+
is_flag=True,
|
106
|
+
default=False,
|
107
|
+
help="Skip tests that require credentials (marked with 'requires_creds').",
|
108
|
+
)
|
103
109
|
def image_test( # "image test" command
|
104
110
|
connector: str | None = None,
|
105
111
|
*,
|
106
112
|
image: str | None = None,
|
113
|
+
no_creds: bool = False,
|
107
114
|
) -> None:
|
108
115
|
"""Test a connector Docker image.
|
109
116
|
|
@@ -124,7 +131,11 @@ def image_test( # "image test" command
|
|
124
131
|
connector_name, connector_directory = resolve_connector_name_and_directory(connector)
|
125
132
|
|
126
133
|
# Select only tests with the 'image_tests' mark
|
127
|
-
|
134
|
+
pytest_filter = "image_tests"
|
135
|
+
if no_creds:
|
136
|
+
pytest_filter += " and not requires_creds"
|
137
|
+
|
138
|
+
pytest_args = ["-m", pytest_filter]
|
128
139
|
if not image:
|
129
140
|
metadata_file_path: Path = connector_directory / "metadata.yaml"
|
130
141
|
try:
|
@@ -3,12 +3,13 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
import logging
|
6
|
-
import traceback
|
7
6
|
from dataclasses import InitVar, dataclass
|
8
|
-
from typing import Any, List, Mapping, Tuple
|
7
|
+
from typing import Any, List, Mapping, Tuple, Union
|
9
8
|
|
10
|
-
from airbyte_cdk import AbstractSource
|
9
|
+
from airbyte_cdk.sources.abstract_source import AbstractSource
|
10
|
+
from airbyte_cdk.sources.declarative.checks.check_stream import evaluate_availability
|
11
11
|
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
12
13
|
from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
|
13
14
|
|
14
15
|
|
@@ -34,20 +35,16 @@ class CheckDynamicStream(ConnectionChecker):
|
|
34
35
|
def check_connection(
|
35
36
|
self, source: AbstractSource, logger: logging.Logger, config: Mapping[str, Any]
|
36
37
|
) -> Tuple[bool, Any]:
|
37
|
-
streams = source.streams(config=config)
|
38
|
+
streams: List[Union[Stream, AbstractStream]] = source.streams(config=config) # type: ignore # this is a migration step and we expect the declarative CDK to migrate off of ConnectionChecker
|
38
39
|
|
39
40
|
if len(streams) == 0:
|
40
41
|
return False, f"No streams to connect to from source {source}"
|
41
42
|
if not self.use_check_availability:
|
42
43
|
return True, None
|
43
44
|
|
44
|
-
availability_strategy = HttpAvailabilityStrategy()
|
45
|
-
|
46
45
|
try:
|
47
46
|
for stream in streams[: min(self.stream_count, len(streams))]:
|
48
|
-
stream_is_available, reason =
|
49
|
-
stream, logger
|
50
|
-
)
|
47
|
+
stream_is_available, reason = evaluate_availability(stream, logger)
|
51
48
|
if not stream_is_available:
|
52
49
|
logger.warning(f"Stream {stream.name} is not available: {reason}")
|
53
50
|
return False, reason
|
{airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/declarative/checks/check_stream.py
RENAMED
@@ -5,13 +5,30 @@
|
|
5
5
|
import logging
|
6
6
|
import traceback
|
7
7
|
from dataclasses import InitVar, dataclass
|
8
|
-
from typing import Any, Dict, List, Mapping, Optional, Tuple
|
8
|
+
from typing import Any, Dict, List, Mapping, Optional, Tuple, Union
|
9
9
|
|
10
|
-
from airbyte_cdk import AbstractSource
|
10
|
+
from airbyte_cdk.sources.abstract_source import AbstractSource
|
11
11
|
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
13
|
+
from airbyte_cdk.sources.streams.core import Stream
|
12
14
|
from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
|
13
15
|
|
14
16
|
|
17
|
+
def evaluate_availability(
|
18
|
+
stream: Union[Stream, AbstractStream], logger: logging.Logger
|
19
|
+
) -> Tuple[bool, Optional[str]]:
|
20
|
+
"""
|
21
|
+
As a transition period, we want to support both Stream and AbstractStream until we migrate everything to AbstractStream.
|
22
|
+
"""
|
23
|
+
if isinstance(stream, Stream):
|
24
|
+
return HttpAvailabilityStrategy().check_availability(stream, logger)
|
25
|
+
elif isinstance(stream, AbstractStream):
|
26
|
+
availability = stream.check_availability()
|
27
|
+
return availability.is_available, availability.reason
|
28
|
+
else:
|
29
|
+
raise ValueError(f"Unsupported stream type {type(stream)}")
|
30
|
+
|
31
|
+
|
15
32
|
@dataclass(frozen=True)
|
16
33
|
class DynamicStreamCheckConfig:
|
17
34
|
"""Defines the configuration for dynamic stream during connection checking. This class specifies
|
@@ -51,7 +68,7 @@ class CheckStream(ConnectionChecker):
|
|
51
68
|
) -> Tuple[bool, Any]:
|
52
69
|
"""Checks the connection to the source and its streams."""
|
53
70
|
try:
|
54
|
-
streams = source.streams(config=config)
|
71
|
+
streams: List[Union[Stream, AbstractStream]] = source.streams(config=config) # type: ignore # this is a migration step and we expect the declarative CDK to migrate off of ConnectionChecker
|
55
72
|
if not streams:
|
56
73
|
return False, f"No streams to connect to from source {source}"
|
57
74
|
except Exception as error:
|
@@ -82,13 +99,15 @@ class CheckStream(ConnectionChecker):
|
|
82
99
|
return True, None
|
83
100
|
|
84
101
|
def _check_stream_availability(
|
85
|
-
self,
|
102
|
+
self,
|
103
|
+
stream_name_to_stream: Dict[str, Union[Stream, AbstractStream]],
|
104
|
+
stream_name: str,
|
105
|
+
logger: logging.Logger,
|
86
106
|
) -> Tuple[bool, Any]:
|
87
107
|
"""Checks if streams are available."""
|
88
|
-
availability_strategy = HttpAvailabilityStrategy()
|
89
108
|
try:
|
90
109
|
stream = stream_name_to_stream[stream_name]
|
91
|
-
stream_is_available, reason =
|
110
|
+
stream_is_available, reason = evaluate_availability(stream, logger)
|
92
111
|
if not stream_is_available:
|
93
112
|
message = f"Stream {stream_name} is not available: {reason}"
|
94
113
|
logger.warning(message)
|
@@ -98,7 +117,10 @@ class CheckStream(ConnectionChecker):
|
|
98
117
|
return True, None
|
99
118
|
|
100
119
|
def _check_dynamic_streams_availability(
|
101
|
-
self,
|
120
|
+
self,
|
121
|
+
source: AbstractSource,
|
122
|
+
stream_name_to_stream: Dict[str, Union[Stream, AbstractStream]],
|
123
|
+
logger: logging.Logger,
|
102
124
|
) -> Tuple[bool, Any]:
|
103
125
|
"""Checks the availability of dynamic streams."""
|
104
126
|
dynamic_streams = source.resolved_manifest.get("dynamic_streams", []) # type: ignore[attr-defined] # The source's resolved_manifest manifest is checked before calling this method
|
@@ -135,18 +157,15 @@ class CheckStream(ConnectionChecker):
|
|
135
157
|
def _check_generated_streams_availability(
|
136
158
|
self,
|
137
159
|
generated_streams: List[Dict[str, Any]],
|
138
|
-
stream_name_to_stream: Dict[str,
|
160
|
+
stream_name_to_stream: Dict[str, Union[Stream, AbstractStream]],
|
139
161
|
logger: logging.Logger,
|
140
162
|
max_count: int,
|
141
163
|
) -> Tuple[bool, Any]:
|
142
164
|
"""Checks availability of generated dynamic streams."""
|
143
|
-
availability_strategy = HttpAvailabilityStrategy()
|
144
165
|
for declarative_stream in generated_streams[: min(max_count, len(generated_streams))]:
|
145
166
|
stream = stream_name_to_stream[declarative_stream["name"]]
|
146
167
|
try:
|
147
|
-
stream_is_available, reason =
|
148
|
-
stream, logger
|
149
|
-
)
|
168
|
+
stream_is_available, reason = evaluate_availability(stream, logger)
|
150
169
|
if not stream_is_available:
|
151
170
|
message = f"Dynamic Stream {stream.name} is not available: {reason}"
|
152
171
|
logger.warning(message)
|
@@ -52,9 +52,6 @@ from airbyte_cdk.sources.source import TState
|
|
52
52
|
from airbyte_cdk.sources.streams import Stream
|
53
53
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
54
54
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream_facade import AbstractStreamFacade
|
55
|
-
from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
|
56
|
-
AlwaysAvailableAvailabilityStrategy,
|
57
|
-
)
|
58
55
|
from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, FinalStateCursor
|
59
56
|
from airbyte_cdk.sources.streams.concurrent.default_stream import DefaultStream
|
60
57
|
from airbyte_cdk.sources.streams.concurrent.helpers import get_primary_key_from_stream
|
@@ -325,7 +322,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
325
322
|
partition_generator=partition_generator,
|
326
323
|
name=declarative_stream.name,
|
327
324
|
json_schema=declarative_stream.get_json_schema(),
|
328
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
329
325
|
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
330
326
|
cursor_field=cursor.cursor_field.cursor_field_key
|
331
327
|
if hasattr(cursor, "cursor_field")
|
@@ -362,7 +358,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
362
358
|
partition_generator=partition_generator,
|
363
359
|
name=declarative_stream.name,
|
364
360
|
json_schema=declarative_stream.get_json_schema(),
|
365
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
366
361
|
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
367
362
|
cursor_field=None,
|
368
363
|
logger=self.logger,
|
@@ -417,7 +412,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
417
412
|
partition_generator=partition_generator,
|
418
413
|
name=declarative_stream.name,
|
419
414
|
json_schema=declarative_stream.get_json_schema(),
|
420
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
421
415
|
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
422
416
|
cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
|
423
417
|
logger=self.logger,
|
@@ -0,0 +1,7 @@
|
|
1
|
+
from .abstract_file_based_availability_strategy import AbstractFileBasedAvailabilityStrategy
|
2
|
+
from .default_file_based_availability_strategy import DefaultFileBasedAvailabilityStrategy
|
3
|
+
|
4
|
+
__all__ = [
|
5
|
+
"AbstractFileBasedAvailabilityStrategy",
|
6
|
+
"DefaultFileBasedAvailabilityStrategy",
|
7
|
+
]
|
@@ -10,12 +10,6 @@ from typing import TYPE_CHECKING, Optional, Tuple
|
|
10
10
|
|
11
11
|
from airbyte_cdk.sources import Source
|
12
12
|
from airbyte_cdk.sources.streams.availability_strategy import AvailabilityStrategy
|
13
|
-
from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
|
14
|
-
AbstractAvailabilityStrategy,
|
15
|
-
StreamAvailability,
|
16
|
-
StreamAvailable,
|
17
|
-
StreamUnavailable,
|
18
|
-
)
|
19
13
|
from airbyte_cdk.sources.streams.core import Stream
|
20
14
|
|
21
15
|
if TYPE_CHECKING:
|
@@ -28,7 +22,7 @@ class AbstractFileBasedAvailabilityStrategy(AvailabilityStrategy):
|
|
28
22
|
self,
|
29
23
|
stream: Stream,
|
30
24
|
logger: logging.Logger,
|
31
|
-
|
25
|
+
source: Optional[Source] = None,
|
32
26
|
) -> Tuple[bool, Optional[str]]:
|
33
27
|
"""
|
34
28
|
Perform a connection check for the stream.
|
@@ -51,23 +45,3 @@ class AbstractFileBasedAvailabilityStrategy(AvailabilityStrategy):
|
|
51
45
|
Returns (True, None) if successful, otherwise (False, <error message>).
|
52
46
|
"""
|
53
47
|
...
|
54
|
-
|
55
|
-
|
56
|
-
class AbstractFileBasedAvailabilityStrategyWrapper(AbstractAvailabilityStrategy):
|
57
|
-
def __init__(self, stream: AbstractFileBasedStream) -> None:
|
58
|
-
self.stream = stream
|
59
|
-
|
60
|
-
def check_availability(self, logger: logging.Logger) -> StreamAvailability:
|
61
|
-
is_available, reason = self.stream.availability_strategy.check_availability(
|
62
|
-
self.stream, logger, None
|
63
|
-
)
|
64
|
-
if is_available:
|
65
|
-
return StreamAvailable()
|
66
|
-
return StreamUnavailable(reason or "")
|
67
|
-
|
68
|
-
def check_availability_and_parsability(
|
69
|
-
self, logger: logging.Logger
|
70
|
-
) -> Tuple[bool, Optional[str]]:
|
71
|
-
return self.stream.availability_strategy.check_availability_and_parsability(
|
72
|
-
self.stream, logger, None
|
73
|
-
)
|
@@ -21,7 +21,6 @@ from airbyte_cdk.sources import AbstractSource
|
|
21
21
|
from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
22
22
|
from airbyte_cdk.sources.file_based.availability_strategy import (
|
23
23
|
AbstractFileBasedAvailabilityStrategy,
|
24
|
-
AbstractFileBasedAvailabilityStrategyWrapper,
|
25
24
|
)
|
26
25
|
from airbyte_cdk.sources.file_based.config.file_based_stream_config import PrimaryKeyType
|
27
26
|
from airbyte_cdk.sources.file_based.file_types.file_type_parser import FileTypeParser
|
@@ -97,7 +96,6 @@ class FileBasedStreamFacade(AbstractStreamFacade[DefaultStream], AbstractFileBas
|
|
97
96
|
),
|
98
97
|
name=stream.name,
|
99
98
|
json_schema=stream.get_json_schema(),
|
100
|
-
availability_strategy=AbstractFileBasedAvailabilityStrategyWrapper(stream),
|
101
99
|
primary_key=pk,
|
102
100
|
cursor_field=cursor_field,
|
103
101
|
logger=logger,
|
{airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py
RENAMED
@@ -64,12 +64,6 @@ class AbstractStream(ABC):
|
|
64
64
|
:return: The name of the field used as a cursor. Nested cursor fields are not supported.
|
65
65
|
"""
|
66
66
|
|
67
|
-
@abstractmethod
|
68
|
-
def check_availability(self) -> StreamAvailability:
|
69
|
-
"""
|
70
|
-
:return: The stream's availability
|
71
|
-
"""
|
72
|
-
|
73
67
|
@abstractmethod
|
74
68
|
def get_json_schema(self) -> Mapping[str, Any]:
|
75
69
|
"""
|
@@ -94,3 +88,9 @@ class AbstractStream(ABC):
|
|
94
88
|
"""
|
95
89
|
:return: The cursor associated with this stream.
|
96
90
|
"""
|
91
|
+
|
92
|
+
@abstractmethod
|
93
|
+
def check_availability(self) -> StreamAvailability:
|
94
|
+
"""
|
95
|
+
:return: If the stream is available and if not, why
|
96
|
+
"""
|
{airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/adapters.py
RENAMED
@@ -24,12 +24,7 @@ from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
|
24
24
|
from airbyte_cdk.sources.message import MessageRepository
|
25
25
|
from airbyte_cdk.sources.source import ExperimentalClassWarning
|
26
26
|
from airbyte_cdk.sources.streams import Stream
|
27
|
-
from airbyte_cdk.sources.streams.availability_strategy import AvailabilityStrategy
|
28
27
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream_facade import AbstractStreamFacade
|
29
|
-
from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
|
30
|
-
AbstractAvailabilityStrategy,
|
31
|
-
AlwaysAvailableAvailabilityStrategy,
|
32
|
-
)
|
33
28
|
from airbyte_cdk.sources.streams.concurrent.cursor import Cursor, FinalStateCursor
|
34
29
|
from airbyte_cdk.sources.streams.concurrent.default_stream import DefaultStream
|
35
30
|
from airbyte_cdk.sources.streams.concurrent.exceptions import ExceptionWithDisplayMessage
|
@@ -101,7 +96,6 @@ class StreamFacade(AbstractStreamFacade[DefaultStream], Stream):
|
|
101
96
|
name=stream.name,
|
102
97
|
namespace=stream.namespace,
|
103
98
|
json_schema=stream.get_json_schema(),
|
104
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
105
99
|
primary_key=pk,
|
106
100
|
cursor_field=cursor_field,
|
107
101
|
logger=logger,
|
@@ -210,18 +204,6 @@ class StreamFacade(AbstractStreamFacade[DefaultStream], Stream):
|
|
210
204
|
def supports_incremental(self) -> bool:
|
211
205
|
return self._legacy_stream.supports_incremental
|
212
206
|
|
213
|
-
def check_availability(
|
214
|
-
self, logger: logging.Logger, source: Optional["Source"] = None
|
215
|
-
) -> Tuple[bool, Optional[str]]:
|
216
|
-
"""
|
217
|
-
Verifies the stream is available. Delegates to the underlying AbstractStream and ignores the parameters
|
218
|
-
:param logger: (ignored)
|
219
|
-
:param source: (ignored)
|
220
|
-
:return:
|
221
|
-
"""
|
222
|
-
availability = self._abstract_stream.check_availability()
|
223
|
-
return availability.is_available(), availability.message()
|
224
|
-
|
225
207
|
def as_airbyte_stream(self) -> AirbyteStream:
|
226
208
|
return self._abstract_stream.as_airbyte_stream()
|
227
209
|
|
@@ -370,28 +352,3 @@ class StreamPartitionGenerator(PartitionGenerator):
|
|
370
352
|
self._cursor_field,
|
371
353
|
self._state,
|
372
354
|
)
|
373
|
-
|
374
|
-
|
375
|
-
@deprecated(
|
376
|
-
"Availability strategy has been soft deprecated. Do not use. Class is subject to removal",
|
377
|
-
category=ExperimentalClassWarning,
|
378
|
-
)
|
379
|
-
class AvailabilityStrategyFacade(AvailabilityStrategy):
|
380
|
-
def __init__(self, abstract_availability_strategy: AbstractAvailabilityStrategy):
|
381
|
-
self._abstract_availability_strategy = abstract_availability_strategy
|
382
|
-
|
383
|
-
def check_availability(
|
384
|
-
self, stream: Stream, logger: logging.Logger, source: Optional["Source"] = None
|
385
|
-
) -> Tuple[bool, Optional[str]]:
|
386
|
-
"""
|
387
|
-
Checks stream availability.
|
388
|
-
|
389
|
-
Important to note that the stream and source parameters are not used by the underlying AbstractAvailabilityStrategy.
|
390
|
-
|
391
|
-
:param stream: (unused)
|
392
|
-
:param logger: logger object to use
|
393
|
-
:param source: (unused)
|
394
|
-
:return: A tuple of (boolean, str). If boolean is true, then the stream
|
395
|
-
"""
|
396
|
-
stream_availability = self._abstract_availability_strategy.check_availability(logger)
|
397
|
-
return stream_availability.is_available(), stream_availability.message()
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
from abc import ABC, abstractmethod
|
6
|
+
from typing import Optional
|
7
|
+
|
8
|
+
|
9
|
+
class StreamAvailability:
|
10
|
+
@classmethod
|
11
|
+
def available(cls) -> "StreamAvailability":
|
12
|
+
return cls(True)
|
13
|
+
|
14
|
+
@classmethod
|
15
|
+
def unavailable(cls, reason: str) -> "StreamAvailability":
|
16
|
+
return cls(False, reason)
|
17
|
+
|
18
|
+
def __init__(self, available: bool, reason: Optional[str] = None) -> None:
|
19
|
+
self._available = available
|
20
|
+
self._reason = reason
|
21
|
+
|
22
|
+
if not available:
|
23
|
+
assert reason, "A reason needs to be provided if the stream is not available"
|
24
|
+
|
25
|
+
@property
|
26
|
+
def is_available(self) -> bool:
|
27
|
+
"""
|
28
|
+
:return: True if the stream is available. False if the stream is not
|
29
|
+
"""
|
30
|
+
return self._available
|
31
|
+
|
32
|
+
@property
|
33
|
+
def reason(self) -> Optional[str]:
|
34
|
+
"""
|
35
|
+
:return: A message describing why the stream is not available. If the stream is available, this should return None.
|
36
|
+
"""
|
37
|
+
return self._reason
|
{airbyte_cdk-6.60.9 → airbyte_cdk-6.60.11}/airbyte_cdk/sources/streams/concurrent/default_stream.py
RENAMED
@@ -8,13 +8,11 @@ from typing import Any, Iterable, List, Mapping, Optional
|
|
8
8
|
|
9
9
|
from airbyte_cdk.models import AirbyteStream, SyncMode
|
10
10
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
11
|
-
from airbyte_cdk.sources.streams.concurrent.availability_strategy import
|
12
|
-
AbstractAvailabilityStrategy,
|
13
|
-
StreamAvailability,
|
14
|
-
)
|
11
|
+
from airbyte_cdk.sources.streams.concurrent.availability_strategy import StreamAvailability
|
15
12
|
from airbyte_cdk.sources.streams.concurrent.cursor import Cursor
|
16
13
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
|
17
14
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition_generator import PartitionGenerator
|
15
|
+
from airbyte_cdk.utils.traced_exception import AirbyteTracedException
|
18
16
|
|
19
17
|
|
20
18
|
class DefaultStream(AbstractStream):
|
@@ -23,7 +21,6 @@ class DefaultStream(AbstractStream):
|
|
23
21
|
partition_generator: PartitionGenerator,
|
24
22
|
name: str,
|
25
23
|
json_schema: Mapping[str, Any],
|
26
|
-
availability_strategy: AbstractAvailabilityStrategy,
|
27
24
|
primary_key: List[str],
|
28
25
|
cursor_field: Optional[str],
|
29
26
|
logger: Logger,
|
@@ -34,7 +31,6 @@ class DefaultStream(AbstractStream):
|
|
34
31
|
self._stream_partition_generator = partition_generator
|
35
32
|
self._name = name
|
36
33
|
self._json_schema = json_schema
|
37
|
-
self._availability_strategy = availability_strategy
|
38
34
|
self._primary_key = primary_key
|
39
35
|
self._cursor_field = cursor_field
|
40
36
|
self._logger = logger
|
@@ -53,9 +49,6 @@ class DefaultStream(AbstractStream):
|
|
53
49
|
def namespace(self) -> Optional[str]:
|
54
50
|
return self._namespace
|
55
51
|
|
56
|
-
def check_availability(self) -> StreamAvailability:
|
57
|
-
return self._availability_strategy.check_availability(self._logger)
|
58
|
-
|
59
52
|
@property
|
60
53
|
def cursor_field(self) -> Optional[str]:
|
61
54
|
return self._cursor_field
|
@@ -100,3 +93,33 @@ class DefaultStream(AbstractStream):
|
|
100
93
|
@property
|
101
94
|
def cursor(self) -> Cursor:
|
102
95
|
return self._cursor
|
96
|
+
|
97
|
+
def check_availability(self) -> StreamAvailability:
|
98
|
+
"""
|
99
|
+
Check stream availability by attempting to read the first record of the stream.
|
100
|
+
"""
|
101
|
+
try:
|
102
|
+
partition = next(iter(self.generate_partitions()))
|
103
|
+
except StopIteration:
|
104
|
+
# NOTE: The following comment was copied from legacy stuff and I don't know how relevant it is:
|
105
|
+
# If stream_slices has no `next()` item (Note - this is different from stream_slices returning [None]!)
|
106
|
+
# This can happen when a substream's `stream_slices` method does a `for record in parent_records: yield <something>`
|
107
|
+
# without accounting for the case in which the parent stream is empty.
|
108
|
+
return StreamAvailability.unavailable(
|
109
|
+
f"Cannot attempt to connect to stream {self.name} - no stream slices were found"
|
110
|
+
)
|
111
|
+
except AirbyteTracedException as error:
|
112
|
+
return StreamAvailability.unavailable(
|
113
|
+
error.message or error.internal_message or "<no error message>"
|
114
|
+
)
|
115
|
+
|
116
|
+
try:
|
117
|
+
next(iter(partition.read()))
|
118
|
+
return StreamAvailability.available()
|
119
|
+
except StopIteration:
|
120
|
+
self._logger.info(f"Successfully connected to stream {self.name}, but got 0 records.")
|
121
|
+
return StreamAvailability.available()
|
122
|
+
except AirbyteTracedException as error:
|
123
|
+
return StreamAvailability.unavailable(
|
124
|
+
error.message or error.internal_message or "<no error message>"
|
125
|
+
)
|
@@ -186,3 +186,8 @@ class ConnectorTestScenario(BaseModel):
|
|
186
186
|
**self.model_dump(exclude={"status"}),
|
187
187
|
status="succeed",
|
188
188
|
)
|
189
|
+
|
190
|
+
@property
|
191
|
+
def requires_creds(self) -> bool:
|
192
|
+
"""Return True if the scenario requires credentials to run."""
|
193
|
+
return bool(self.config_path and "secrets" in self.config_path.parts)
|
@@ -161,7 +161,7 @@ def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
|
|
161
161
|
if test_class is None:
|
162
162
|
return
|
163
163
|
|
164
|
-
#
|
164
|
+
# Check that the class is compatible with our test suite
|
165
165
|
scenarios_attr = getattr(test_class, "get_scenarios", None)
|
166
166
|
if scenarios_attr is None:
|
167
167
|
raise ValueError(
|
@@ -169,6 +169,21 @@ def pytest_generate_tests(metafunc: pytest.Metafunc) -> None:
|
|
169
169
|
"Please define the 'scenarios' attribute in the test class."
|
170
170
|
)
|
171
171
|
|
172
|
+
# Get the scenarios defined or discovered in the test class
|
172
173
|
scenarios = test_class.get_scenarios()
|
173
|
-
|
174
|
-
|
174
|
+
|
175
|
+
# Create pytest.param objects with special marks as needed
|
176
|
+
parametrized_scenarios = [
|
177
|
+
pytest.param(
|
178
|
+
scenario,
|
179
|
+
marks=[pytest.mark.requires_creds] if scenario.requires_creds else [],
|
180
|
+
)
|
181
|
+
for scenario in scenarios
|
182
|
+
]
|
183
|
+
|
184
|
+
# Parametrize the 'scenario' argument with the scenarios
|
185
|
+
metafunc.parametrize(
|
186
|
+
"scenario",
|
187
|
+
parametrized_scenarios,
|
188
|
+
ids=[str(scenario) for scenario in scenarios],
|
189
|
+
)
|
@@ -23,7 +23,7 @@ classifiers = [
|
|
23
23
|
keywords = ["airbyte", "connector-development-kit", "cdk"]
|
24
24
|
|
25
25
|
# Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
|
26
|
-
version = "6.60.
|
26
|
+
version = "6.60.11" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
@@ -1,11 +0,0 @@
|
|
1
|
-
from .abstract_file_based_availability_strategy import (
|
2
|
-
AbstractFileBasedAvailabilityStrategy,
|
3
|
-
AbstractFileBasedAvailabilityStrategyWrapper,
|
4
|
-
)
|
5
|
-
from .default_file_based_availability_strategy import DefaultFileBasedAvailabilityStrategy
|
6
|
-
|
7
|
-
__all__ = [
|
8
|
-
"AbstractFileBasedAvailabilityStrategy",
|
9
|
-
"AbstractFileBasedAvailabilityStrategyWrapper",
|
10
|
-
"DefaultFileBasedAvailabilityStrategy",
|
11
|
-
]
|