airbyte-cdk 6.45.1__tar.gz → 6.45.1.post46.dev14423672753__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.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/PKG-INFO +2 -1
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/connector_builder_handler.py +12 -3
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/main.py +3 -3
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/test_reader/reader.py +2 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +3 -3
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_based_source.py +3 -3
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +1 -1
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +3 -3
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/shared/sql_processor.py +8 -9
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/__init__.py +6 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/models/__init__.py +7 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/models/scenario.py +74 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/__init__.py +25 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/connector_base.py +223 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/declarative_sources.py +74 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/destination_base.py +12 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/source_base.py +128 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/utils/__init__.py +0 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/utils/job_runner.py +150 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/entrypoint_wrapper.py +4 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/fixtures/__init__.py +0 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/fixtures/auto.py +14 -0
- airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/pytest_config/plugin.py +46 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/pyproject.toml +9 -5
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/LICENSE.txt +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.45.1 → airbyte_cdk-6.45.1.post46.dev14423672753}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.45.1
|
3
|
+
Version: 6.45.1.post46.dev14423672753
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -26,6 +26,7 @@ Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
|
|
26
26
|
Requires-Dist: anyascii (>=0.3.2,<0.4.0)
|
27
27
|
Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
|
28
28
|
Requires-Dist: backoff
|
29
|
+
Requires-Dist: boltons (>=25.0.0,<26.0.0)
|
29
30
|
Requires-Dist: cachetools
|
30
31
|
Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
|
31
32
|
Requires-Dist: cryptography (>=44.0.0,<45.0.0)
|
@@ -35,8 +35,10 @@ MAX_RECORDS_KEY = "max_records"
|
|
35
35
|
MAX_STREAMS_KEY = "max_streams"
|
36
36
|
|
37
37
|
|
38
|
-
@dataclass
|
38
|
+
@dataclass(kw_only=True)
|
39
39
|
class TestLimits:
|
40
|
+
__test__: bool = False # Prevent pytest from treating this as a test case, despite its name
|
41
|
+
|
40
42
|
max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
|
41
43
|
max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
|
42
44
|
max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
|
@@ -51,7 +53,12 @@ def get_limits(config: Mapping[str, Any]) -> TestLimits:
|
|
51
53
|
max_slices = command_config.get(MAX_SLICES_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_SLICES
|
52
54
|
max_records = command_config.get(MAX_RECORDS_KEY) or DEFAULT_MAXIMUM_RECORDS
|
53
55
|
max_streams = command_config.get(MAX_STREAMS_KEY) or DEFAULT_MAXIMUM_STREAMS
|
54
|
-
return TestLimits(
|
56
|
+
return TestLimits(
|
57
|
+
max_records=max_records,
|
58
|
+
max_pages_per_slice=max_pages_per_slice,
|
59
|
+
max_slices=max_slices,
|
60
|
+
max_streams=max_streams,
|
61
|
+
)
|
55
62
|
|
56
63
|
|
57
64
|
def create_source(config: Mapping[str, Any], limits: TestLimits) -> ManifestDeclarativeSource:
|
@@ -79,7 +86,9 @@ def read_stream(
|
|
79
86
|
) -> AirbyteMessage:
|
80
87
|
try:
|
81
88
|
test_read_handler = TestReader(
|
82
|
-
limits.max_pages_per_slice,
|
89
|
+
max_pages_per_slice=limits.max_pages_per_slice,
|
90
|
+
max_slices=limits.max_slices,
|
91
|
+
max_record_limit=limits.max_records,
|
83
92
|
)
|
84
93
|
# The connector builder only supports a single stream
|
85
94
|
stream_name = configured_catalog.streams[0].stream.name
|
@@ -78,9 +78,9 @@ def handle_connector_builder_request(
|
|
78
78
|
if command == "resolve_manifest":
|
79
79
|
return resolve_manifest(source)
|
80
80
|
elif command == "test_read":
|
81
|
-
assert (
|
82
|
-
|
83
|
-
)
|
81
|
+
assert catalog is not None, (
|
82
|
+
"`test_read` requires a valid `ConfiguredAirbyteCatalog`, got None."
|
83
|
+
)
|
84
84
|
return read_stream(source, config, catalog, state, limits)
|
85
85
|
elif command == "full_resolve_manifest":
|
86
86
|
return full_resolve_manifest(source, limits)
|
@@ -49,9 +49,9 @@ class ConcurrentSource:
|
|
49
49
|
too_many_generator = (
|
50
50
|
not is_single_threaded and initial_number_of_partitions_to_generate >= num_workers
|
51
51
|
)
|
52
|
-
assert (
|
53
|
-
|
54
|
-
)
|
52
|
+
assert not too_many_generator, (
|
53
|
+
"It is required to have more workers than threads generating partitions"
|
54
|
+
)
|
55
55
|
threadpool = ThreadPoolManager(
|
56
56
|
concurrent.futures.ThreadPoolExecutor(
|
57
57
|
max_workers=num_workers, thread_name_prefix="workerpool"
|
@@ -282,9 +282,9 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
282
282
|
and hasattr(self, "_concurrency_level")
|
283
283
|
and self._concurrency_level is not None
|
284
284
|
):
|
285
|
-
assert (
|
286
|
-
|
287
|
-
)
|
285
|
+
assert state_manager is not None, (
|
286
|
+
"No ConnectorStateManager was created, but it is required for incremental syncs. This is unexpected. Please contact Support."
|
287
|
+
)
|
288
288
|
|
289
289
|
cursor = self.cursor_cls(
|
290
290
|
stream_config,
|
@@ -154,7 +154,7 @@ class AvroParser(FileTypeParser):
|
|
154
154
|
# For example: ^-?\d{1,5}(?:\.\d{1,3})?$ would accept 12345.123 and 123456.12345 would be rejected
|
155
155
|
return {
|
156
156
|
"type": "string",
|
157
|
-
"pattern": f"^-?\\d{{{1,max_whole_number_range}}}(?:\\.\\d{1,decimal_range})?$",
|
157
|
+
"pattern": f"^-?\\d{{{1, max_whole_number_range}}}(?:\\.\\d{1, decimal_range})?$",
|
158
158
|
}
|
159
159
|
elif "logicalType" in avro_field:
|
160
160
|
if avro_field["logicalType"] not in AVRO_LOGICAL_TYPE_TO_JSON:
|
@@ -284,9 +284,9 @@ class FileBasedStreamPartition(Partition):
|
|
284
284
|
def to_slice(self) -> Optional[Mapping[str, Any]]:
|
285
285
|
if self._slice is None:
|
286
286
|
return None
|
287
|
-
assert (
|
288
|
-
len(self._slice[
|
289
|
-
)
|
287
|
+
assert len(self._slice["files"]) == 1, (
|
288
|
+
f"Expected 1 file per partition but got {len(self._slice['files'])} for stream {self.stream_name()}"
|
289
|
+
)
|
290
290
|
file = self._slice["files"][0]
|
291
291
|
return {"files": [file]}
|
292
292
|
|
@@ -326,9 +326,9 @@ class SqlProcessorBase(abc.ABC):
|
|
326
326
|
|
327
327
|
if DEBUG_MODE:
|
328
328
|
found_schemas = schemas_list
|
329
|
-
assert (
|
330
|
-
schema_name
|
331
|
-
)
|
329
|
+
assert schema_name in found_schemas, (
|
330
|
+
f"Schema {schema_name} was not created. Found: {found_schemas}"
|
331
|
+
)
|
332
332
|
|
333
333
|
def _quote_identifier(self, identifier: str) -> str:
|
334
334
|
"""Return the given identifier, quoted."""
|
@@ -617,10 +617,10 @@ class SqlProcessorBase(abc.ABC):
|
|
617
617
|
self._execute_sql(
|
618
618
|
f"""
|
619
619
|
INSERT INTO {self._fully_qualified(final_table_name)} (
|
620
|
-
{f
|
620
|
+
{f",{nl} ".join(columns)}
|
621
621
|
)
|
622
622
|
SELECT
|
623
|
-
{f
|
623
|
+
{f",{nl} ".join(columns)}
|
624
624
|
FROM {self._fully_qualified(temp_table_name)}
|
625
625
|
""",
|
626
626
|
)
|
@@ -645,8 +645,7 @@ class SqlProcessorBase(abc.ABC):
|
|
645
645
|
deletion_name = f"{final_table_name}_deleteme"
|
646
646
|
commands = "\n".join(
|
647
647
|
[
|
648
|
-
f"ALTER TABLE {self._fully_qualified(final_table_name)} RENAME "
|
649
|
-
f"TO {deletion_name};",
|
648
|
+
f"ALTER TABLE {self._fully_qualified(final_table_name)} RENAME TO {deletion_name};",
|
650
649
|
f"ALTER TABLE {self._fully_qualified(temp_table_name)} RENAME "
|
651
650
|
f"TO {final_table_name};",
|
652
651
|
f"DROP TABLE {self._fully_qualified(deletion_name)};",
|
@@ -686,10 +685,10 @@ class SqlProcessorBase(abc.ABC):
|
|
686
685
|
{set_clause}
|
687
686
|
WHEN NOT MATCHED THEN INSERT
|
688
687
|
(
|
689
|
-
{f
|
688
|
+
{f",{nl} ".join(columns)}
|
690
689
|
)
|
691
690
|
VALUES (
|
692
|
-
tmp.{f
|
691
|
+
tmp.{f",{nl} tmp.".join(columns)}
|
693
692
|
);
|
694
693
|
""",
|
695
694
|
)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
+
"""Run acceptance tests in PyTest.
|
3
|
+
|
4
|
+
These tests leverage the same `acceptance-test-config.yml` configuration files as the
|
5
|
+
acceptance tests in CAT, but they run in PyTest instead of CAT. This allows us to run
|
6
|
+
the acceptance tests in the same local environment as we are developing in, speeding
|
7
|
+
up iteration cycles.
|
8
|
+
"""
|
9
|
+
|
10
|
+
from __future__ import annotations
|
11
|
+
|
12
|
+
from pathlib import Path
|
13
|
+
from typing import Any, Literal, cast
|
14
|
+
|
15
|
+
import yaml
|
16
|
+
from pydantic import BaseModel
|
17
|
+
|
18
|
+
|
19
|
+
class ConnectorTestScenario(BaseModel):
|
20
|
+
"""Acceptance test instance, as a Pydantic model.
|
21
|
+
|
22
|
+
This class represents an acceptance test instance, which is a single test case
|
23
|
+
that can be run against a connector. It is used to deserialize and validate the
|
24
|
+
acceptance test configuration file.
|
25
|
+
"""
|
26
|
+
|
27
|
+
class AcceptanceTestExpectRecords(BaseModel):
|
28
|
+
path: Path
|
29
|
+
exact_order: bool = False
|
30
|
+
|
31
|
+
class AcceptanceTestFileTypes(BaseModel):
|
32
|
+
skip_test: bool
|
33
|
+
bypass_reason: str
|
34
|
+
|
35
|
+
config_path: Path | None = None
|
36
|
+
config_dict: dict[str, Any] | None = None
|
37
|
+
|
38
|
+
id: str | None = None
|
39
|
+
|
40
|
+
configured_catalog_path: Path | None = None
|
41
|
+
timeout_seconds: int | None = None
|
42
|
+
expect_records: AcceptanceTestExpectRecords | None = None
|
43
|
+
file_types: AcceptanceTestFileTypes | None = None
|
44
|
+
status: Literal["succeed", "failed"] | None = None
|
45
|
+
|
46
|
+
def get_config_dict(self) -> dict[str, Any]:
|
47
|
+
"""Return the config dictionary.
|
48
|
+
|
49
|
+
If a config dictionary has already been loaded, return it. Otherwise, load
|
50
|
+
the config file and return the dictionary.
|
51
|
+
"""
|
52
|
+
if self.config_dict:
|
53
|
+
return self.config_dict
|
54
|
+
|
55
|
+
if self.config_path:
|
56
|
+
return cast(dict[str, Any], yaml.safe_load(self.config_path.read_text()))
|
57
|
+
|
58
|
+
raise ValueError("No config dictionary or path provided.")
|
59
|
+
|
60
|
+
@property
|
61
|
+
def expect_exception(self) -> bool:
|
62
|
+
return self.status and self.status == "failed" or False
|
63
|
+
|
64
|
+
@property
|
65
|
+
def instance_name(self) -> str:
|
66
|
+
return self.config_path.stem if self.config_path else "Unnamed Scenario"
|
67
|
+
|
68
|
+
def __str__(self) -> str:
|
69
|
+
if self.id:
|
70
|
+
return f"'{self.id}' Test Scenario"
|
71
|
+
if self.config_path:
|
72
|
+
return f"'{self.config_path.name}' Test Scenario"
|
73
|
+
|
74
|
+
return f"'{hash(self)}' Test Scenario"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
+
"""Declarative test suites.
|
3
|
+
|
4
|
+
Here we have base classes for a robust set of declarative connector test suites.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from airbyte_cdk.test.declarative.test_suites.connector_base import (
|
8
|
+
ConnectorTestScenario,
|
9
|
+
ConnectorTestSuiteBase,
|
10
|
+
generate_tests,
|
11
|
+
)
|
12
|
+
from airbyte_cdk.test.declarative.test_suites.declarative_sources import (
|
13
|
+
DeclarativeSourceTestSuite,
|
14
|
+
)
|
15
|
+
from airbyte_cdk.test.declarative.test_suites.destination_base import DestinationTestSuiteBase
|
16
|
+
from airbyte_cdk.test.declarative.test_suites.source_base import SourceTestSuiteBase
|
17
|
+
|
18
|
+
__all__ = [
|
19
|
+
"ConnectorTestScenario",
|
20
|
+
"ConnectorTestSuiteBase",
|
21
|
+
"DeclarativeSourceTestSuite",
|
22
|
+
"DestinationTestSuiteBase",
|
23
|
+
"SourceTestSuiteBase",
|
24
|
+
"generate_tests",
|
25
|
+
]
|
airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/connector_base.py
ADDED
@@ -0,0 +1,223 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
+
"""Base class for connector test suites."""
|
3
|
+
|
4
|
+
from __future__ import annotations
|
5
|
+
|
6
|
+
import abc
|
7
|
+
import inspect
|
8
|
+
import sys
|
9
|
+
from collections.abc import Callable
|
10
|
+
from pathlib import Path
|
11
|
+
from typing import Any, Literal, cast
|
12
|
+
|
13
|
+
import pytest
|
14
|
+
import yaml
|
15
|
+
from boltons.typeutils import classproperty
|
16
|
+
|
17
|
+
from airbyte_cdk import Connector
|
18
|
+
from airbyte_cdk.models import (
|
19
|
+
AirbyteMessage,
|
20
|
+
Type,
|
21
|
+
)
|
22
|
+
from airbyte_cdk.test import entrypoint_wrapper
|
23
|
+
from airbyte_cdk.test.declarative.models import (
|
24
|
+
ConnectorTestScenario,
|
25
|
+
)
|
26
|
+
from airbyte_cdk.test.declarative.utils.job_runner import IConnector, run_test_job
|
27
|
+
|
28
|
+
ACCEPTANCE_TEST_CONFIG = "acceptance-test-config.yml"
|
29
|
+
MANIFEST_YAML = "manifest.yaml"
|
30
|
+
|
31
|
+
|
32
|
+
class JavaClass(str):
|
33
|
+
"""A string that represents a Java class."""
|
34
|
+
|
35
|
+
|
36
|
+
class DockerImage(str):
|
37
|
+
"""A string that represents a Docker image."""
|
38
|
+
|
39
|
+
|
40
|
+
class RunnableConnector(abc.ABC):
|
41
|
+
"""A connector that can be run in a test scenario."""
|
42
|
+
|
43
|
+
@abc.abstractmethod
|
44
|
+
def launch(cls, args: list[str] | None) -> None: ...
|
45
|
+
|
46
|
+
|
47
|
+
def generate_tests(metafunc: pytest.Metafunc) -> None:
|
48
|
+
"""
|
49
|
+
A helper for pytest_generate_tests hook.
|
50
|
+
|
51
|
+
If a test method (in a class subclassed from our base class)
|
52
|
+
declares an argument 'instance', this function retrieves the
|
53
|
+
'scenarios' attribute from the test class and parametrizes that
|
54
|
+
test with the values from 'scenarios'.
|
55
|
+
|
56
|
+
## Usage
|
57
|
+
|
58
|
+
```python
|
59
|
+
from airbyte_cdk.test.declarative.test_suites.connector_base import (
|
60
|
+
generate_tests,
|
61
|
+
ConnectorTestSuiteBase,
|
62
|
+
)
|
63
|
+
|
64
|
+
def pytest_generate_tests(metafunc):
|
65
|
+
generate_tests(metafunc)
|
66
|
+
|
67
|
+
class TestMyConnector(ConnectorTestSuiteBase):
|
68
|
+
...
|
69
|
+
|
70
|
+
```
|
71
|
+
"""
|
72
|
+
# Check if the test function requires an 'instance' argument
|
73
|
+
if "instance" in metafunc.fixturenames:
|
74
|
+
# Retrieve the test class
|
75
|
+
test_class = metafunc.cls
|
76
|
+
if test_class is None:
|
77
|
+
raise ValueError("Expected a class here.")
|
78
|
+
# Get the 'scenarios' attribute from the class
|
79
|
+
scenarios_attr = getattr(test_class, "get_scenarios", None)
|
80
|
+
if scenarios_attr is None:
|
81
|
+
raise ValueError(
|
82
|
+
f"Test class {test_class} does not have a 'scenarios' attribute. "
|
83
|
+
"Please define the 'scenarios' attribute in the test class."
|
84
|
+
)
|
85
|
+
|
86
|
+
scenarios = test_class.get_scenarios()
|
87
|
+
ids = [str(scenario) for scenario in scenarios]
|
88
|
+
metafunc.parametrize("instance", scenarios, ids=ids)
|
89
|
+
|
90
|
+
|
91
|
+
class ConnectorTestSuiteBase(abc.ABC):
|
92
|
+
"""Base class for connector test suites."""
|
93
|
+
|
94
|
+
connector: type[IConnector] | Callable[[], IConnector] | None = None
|
95
|
+
"""The connector class or a factory function that returns an instance of IConnector."""
|
96
|
+
|
97
|
+
@classmethod
|
98
|
+
def get_test_class_dir(cls) -> Path:
|
99
|
+
"""Get the file path that contains the class."""
|
100
|
+
module = sys.modules[cls.__module__]
|
101
|
+
# Get the directory containing the test file
|
102
|
+
return Path(inspect.getfile(module)).parent
|
103
|
+
|
104
|
+
@classmethod
|
105
|
+
def create_connector(
|
106
|
+
cls,
|
107
|
+
scenario: ConnectorTestScenario,
|
108
|
+
) -> IConnector:
|
109
|
+
"""Instantiate the connector class."""
|
110
|
+
connector = cls.connector # type: ignore
|
111
|
+
if connector:
|
112
|
+
if callable(connector) or isinstance(connector, type):
|
113
|
+
# If the connector is a class or factory function, instantiate it:
|
114
|
+
return cast(IConnector, connector()) # type: ignore [redundant-cast]
|
115
|
+
|
116
|
+
# Otherwise, we can't instantiate the connector. Fail with a clear error message.
|
117
|
+
raise NotImplementedError(
|
118
|
+
"No connector class or connector factory function provided. "
|
119
|
+
"Please provide a class or factory function in `cls.connector`, or "
|
120
|
+
"override `cls.create_connector()` to define a custom initialization process."
|
121
|
+
)
|
122
|
+
|
123
|
+
def run_test_scenario(
|
124
|
+
self,
|
125
|
+
verb: Literal["read", "check", "discover"],
|
126
|
+
test_scenario: ConnectorTestScenario,
|
127
|
+
*,
|
128
|
+
catalog: dict[str, Any] | None = None,
|
129
|
+
) -> entrypoint_wrapper.EntrypointOutput:
|
130
|
+
"""Run a test job from provided CLI args and return the result."""
|
131
|
+
return run_test_job(
|
132
|
+
self.create_connector(test_scenario),
|
133
|
+
verb,
|
134
|
+
test_instance=test_scenario,
|
135
|
+
catalog=catalog,
|
136
|
+
)
|
137
|
+
|
138
|
+
# Test Definitions
|
139
|
+
|
140
|
+
def test_check(
|
141
|
+
self,
|
142
|
+
instance: ConnectorTestScenario,
|
143
|
+
) -> None:
|
144
|
+
"""Run `connection` acceptance tests."""
|
145
|
+
result = self.run_test_scenario(
|
146
|
+
"check",
|
147
|
+
test_scenario=instance,
|
148
|
+
)
|
149
|
+
conn_status_messages: list[AirbyteMessage] = [
|
150
|
+
msg for msg in result._messages if msg.type == Type.CONNECTION_STATUS
|
151
|
+
] # noqa: SLF001 # Non-public API
|
152
|
+
assert len(conn_status_messages) == 1, (
|
153
|
+
f"Expected exactly one CONNECTION_STATUS message. Got: {result._messages}"
|
154
|
+
)
|
155
|
+
|
156
|
+
@classmethod
|
157
|
+
def get_connector_root_dir(cls) -> Path:
|
158
|
+
"""Get the root directory of the connector."""
|
159
|
+
for parent in cls.get_test_class_dir().parents:
|
160
|
+
if (parent / MANIFEST_YAML).exists():
|
161
|
+
return parent
|
162
|
+
if (parent / ACCEPTANCE_TEST_CONFIG).exists():
|
163
|
+
return parent
|
164
|
+
if parent.name == "airbyte_cdk":
|
165
|
+
break
|
166
|
+
# If we reach here, we didn't find the manifest file in any parent directory
|
167
|
+
# Check if the manifest file exists in the current directory
|
168
|
+
for parent in Path.cwd().parents:
|
169
|
+
if (parent / MANIFEST_YAML).exists():
|
170
|
+
return parent
|
171
|
+
if (parent / ACCEPTANCE_TEST_CONFIG).exists():
|
172
|
+
return parent
|
173
|
+
if parent.name == "airbyte_cdk":
|
174
|
+
break
|
175
|
+
|
176
|
+
raise FileNotFoundError(
|
177
|
+
"Could not find connector root directory relative to "
|
178
|
+
f"'{str(cls.get_test_class_dir())}' or '{str(Path.cwd())}'."
|
179
|
+
)
|
180
|
+
|
181
|
+
@classproperty
|
182
|
+
def acceptance_test_config_path(cls) -> Path:
|
183
|
+
"""Get the path to the acceptance test config file."""
|
184
|
+
result = cls.get_connector_root_dir() / ACCEPTANCE_TEST_CONFIG
|
185
|
+
if result.exists():
|
186
|
+
return result
|
187
|
+
|
188
|
+
raise FileNotFoundError(f"Acceptance test config file not found at: {str(result)}")
|
189
|
+
|
190
|
+
@classmethod
|
191
|
+
def get_scenarios(
|
192
|
+
cls,
|
193
|
+
) -> list[ConnectorTestScenario]:
|
194
|
+
"""Get acceptance tests for a given category.
|
195
|
+
|
196
|
+
This has to be a separate function because pytest does not allow
|
197
|
+
parametrization of fixtures with arguments from the test class itself.
|
198
|
+
"""
|
199
|
+
category = "connection"
|
200
|
+
all_tests_config = yaml.safe_load(cls.acceptance_test_config_path.read_text())
|
201
|
+
if "acceptance_tests" not in all_tests_config:
|
202
|
+
raise ValueError(
|
203
|
+
f"Acceptance tests config not found in {cls.acceptance_test_config_path}."
|
204
|
+
f" Found only: {str(all_tests_config)}."
|
205
|
+
)
|
206
|
+
if category not in all_tests_config["acceptance_tests"]:
|
207
|
+
return []
|
208
|
+
if "tests" not in all_tests_config["acceptance_tests"][category]:
|
209
|
+
raise ValueError(f"No tests found for category {category}")
|
210
|
+
|
211
|
+
tests_scenarios = [
|
212
|
+
ConnectorTestScenario.model_validate(test)
|
213
|
+
for test in all_tests_config["acceptance_tests"][category]["tests"]
|
214
|
+
if "iam_role" not in test["config_path"]
|
215
|
+
]
|
216
|
+
connector_root = cls.get_connector_root_dir().absolute()
|
217
|
+
for test in tests_scenarios:
|
218
|
+
if test.config_path:
|
219
|
+
test.config_path = connector_root / test.config_path
|
220
|
+
if test.configured_catalog_path:
|
221
|
+
test.configured_catalog_path = connector_root / test.configured_catalog_path
|
222
|
+
|
223
|
+
return tests_scenarios
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import os
|
2
|
+
from hashlib import md5
|
3
|
+
from pathlib import Path
|
4
|
+
from typing import Any, cast
|
5
|
+
|
6
|
+
import yaml
|
7
|
+
from boltons.typeutils import classproperty
|
8
|
+
|
9
|
+
from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
|
10
|
+
ConcurrentDeclarativeSource,
|
11
|
+
)
|
12
|
+
from airbyte_cdk.test.declarative.models import ConnectorTestScenario
|
13
|
+
from airbyte_cdk.test.declarative.test_suites.connector_base import MANIFEST_YAML
|
14
|
+
from airbyte_cdk.test.declarative.test_suites.source_base import (
|
15
|
+
SourceTestSuiteBase,
|
16
|
+
)
|
17
|
+
from airbyte_cdk.test.declarative.utils.job_runner import IConnector
|
18
|
+
|
19
|
+
|
20
|
+
def md5_checksum(file_path: Path) -> str:
|
21
|
+
with open(file_path, "rb") as file:
|
22
|
+
return md5(file.read()).hexdigest()
|
23
|
+
|
24
|
+
|
25
|
+
class DeclarativeSourceTestSuite(SourceTestSuiteBase):
|
26
|
+
@classproperty
|
27
|
+
def manifest_yaml_path(cls) -> Path:
|
28
|
+
"""Get the path to the manifest.yaml file."""
|
29
|
+
result = cls.get_connector_root_dir() / MANIFEST_YAML
|
30
|
+
if result.exists():
|
31
|
+
return result
|
32
|
+
|
33
|
+
raise FileNotFoundError(
|
34
|
+
f"Manifest YAML file not found at {result}. "
|
35
|
+
"Please ensure that the test suite is run in the correct directory.",
|
36
|
+
)
|
37
|
+
|
38
|
+
@classproperty
|
39
|
+
def components_py_path(cls) -> Path | None:
|
40
|
+
"""Get the path to the components.py file."""
|
41
|
+
result = cls.get_connector_root_dir() / "components.py"
|
42
|
+
if result.exists():
|
43
|
+
return result
|
44
|
+
|
45
|
+
return None
|
46
|
+
|
47
|
+
@classmethod
|
48
|
+
def create_connector(
|
49
|
+
cls,
|
50
|
+
scenario: ConnectorTestScenario,
|
51
|
+
) -> IConnector:
|
52
|
+
"""Create a connector instance for the test suite."""
|
53
|
+
config: dict[str, Any] = scenario.get_config_dict()
|
54
|
+
# catalog = scenario.get_catalog()
|
55
|
+
# state = scenario.get_state()
|
56
|
+
# source_config = scenario.get_source_config()
|
57
|
+
|
58
|
+
manifest_dict = yaml.safe_load(cls.manifest_yaml_path.read_text())
|
59
|
+
if cls.components_py_path and cls.components_py_path.exists():
|
60
|
+
os.environ["AIRBYTE_ENABLE_UNSAFE_CODE"] = "true"
|
61
|
+
config["__injected_components_py"] = cls.components_py_path.read_text()
|
62
|
+
config["__injected_components_py_checksums"] = {
|
63
|
+
"md5": md5_checksum(cls.components_py_path),
|
64
|
+
}
|
65
|
+
|
66
|
+
return cast(
|
67
|
+
IConnector,
|
68
|
+
ConcurrentDeclarativeSource(
|
69
|
+
config=config,
|
70
|
+
catalog=None,
|
71
|
+
state=None,
|
72
|
+
source_config=manifest_dict,
|
73
|
+
),
|
74
|
+
)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
+
"""Base class for destination test suites."""
|
3
|
+
|
4
|
+
from airbyte_cdk.test.declarative.test_suites.connector_base import ConnectorTestSuiteBase
|
5
|
+
|
6
|
+
|
7
|
+
class DestinationTestSuiteBase(ConnectorTestSuiteBase):
|
8
|
+
"""Base class for destination test suites.
|
9
|
+
|
10
|
+
This class provides a base set of functionality for testing destination connectors, and it
|
11
|
+
inherits all generic connector tests from the `ConnectorTestSuiteBase` class.
|
12
|
+
"""
|