airbyte-cdk 6.60.7__tar.gz → 6.60.9__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.7 → airbyte_cdk-6.60.9}/PKG-INFO +1 -1
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/connector_builder_handler.py +36 -32
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/main.py +3 -3
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/helpers.py +2 -24
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +21 -14
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +18 -29
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +3 -54
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -4
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +1 -8
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -20
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer_test_read_decorator.py +2 -2
- airbyte_cdk-6.60.9/airbyte_cdk/sources/streams/concurrent/partition_reader.py +45 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +1 -7
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/slice_logger.py +0 -4
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/pyproject.toml +1 -1
- airbyte_cdk-6.60.7/airbyte_cdk/sources/message/concurrent_repository.py +0 -43
- airbyte_cdk-6.60.7/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -84
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/LICENSE.txt +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/_connector.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/_image.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/_manifest.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/_secrets.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/_version.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/airbyte_cdk/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/source_declarative_manifest/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/manifest_migration.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migration_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_path_to_url.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data_to_request_body.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations/registry.yaml +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/manifest_migrations/migrations_registry.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/models/connector_metadata.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/connector_builder_file_uploader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/default_file_uploader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_uploader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_writer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_writer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/composite_schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/config_transformations/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/config_transformations/add_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/config_transformations/config_transformation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/config_transformations/remap_field.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/config_transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/dpath_validator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/predicate_validator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/validate_adheres_to_schema.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/validation_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/validators/validator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_record_data.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/files_directory.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/models/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/models/outcome.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/models/scenario.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/_job_runner.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/connector_base.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/declarative_sources.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/destination_base.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/docker_base.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/pytest_hooks.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/source_base.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/standard_tests/util.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/connector_paths.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/docker.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/utils/traced_exception.py +0 -0
{airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/connector_builder_handler.py
RENAMED
@@ -3,8 +3,8 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
|
6
|
-
from dataclasses import asdict
|
7
|
-
from typing import Any, Dict, List, Mapping
|
6
|
+
from dataclasses import asdict, dataclass, field
|
7
|
+
from typing import Any, ClassVar, Dict, List, Mapping
|
8
8
|
|
9
9
|
from airbyte_cdk.connector_builder.test_reader import TestReader
|
10
10
|
from airbyte_cdk.models import (
|
@@ -15,32 +15,45 @@ from airbyte_cdk.models import (
|
|
15
15
|
Type,
|
16
16
|
)
|
17
17
|
from airbyte_cdk.models import Type as MessageType
|
18
|
-
from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
|
19
|
-
ConcurrentDeclarativeSource,
|
20
|
-
TestLimits,
|
21
|
-
)
|
22
18
|
from airbyte_cdk.sources.declarative.declarative_source import DeclarativeSource
|
23
19
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
20
|
+
from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
21
|
+
ModelToComponentFactory,
|
22
|
+
)
|
24
23
|
from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
|
25
24
|
from airbyte_cdk.utils.datetime_helpers import ab_datetime_now
|
26
25
|
from airbyte_cdk.utils.traced_exception import AirbyteTracedException
|
27
26
|
|
27
|
+
DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE = 5
|
28
|
+
DEFAULT_MAXIMUM_NUMBER_OF_SLICES = 5
|
29
|
+
DEFAULT_MAXIMUM_RECORDS = 100
|
30
|
+
DEFAULT_MAXIMUM_STREAMS = 100
|
31
|
+
|
28
32
|
MAX_PAGES_PER_SLICE_KEY = "max_pages_per_slice"
|
29
33
|
MAX_SLICES_KEY = "max_slices"
|
30
34
|
MAX_RECORDS_KEY = "max_records"
|
31
35
|
MAX_STREAMS_KEY = "max_streams"
|
32
36
|
|
33
37
|
|
38
|
+
@dataclass
|
39
|
+
class TestLimits:
|
40
|
+
__test__: ClassVar[bool] = False # Tell Pytest this is not a Pytest class, despite its name
|
41
|
+
|
42
|
+
max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
|
43
|
+
max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
|
44
|
+
max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
|
45
|
+
max_streams: int = field(default=DEFAULT_MAXIMUM_STREAMS)
|
46
|
+
|
47
|
+
|
34
48
|
def get_limits(config: Mapping[str, Any]) -> TestLimits:
|
35
49
|
command_config = config.get("__test_read_config", {})
|
36
|
-
|
37
|
-
|
38
|
-
max_pages_per_slice=command_config.get(
|
39
|
-
MAX_PAGES_PER_SLICE_KEY, TestLimits.DEFAULT_MAX_PAGES_PER_SLICE
|
40
|
-
),
|
41
|
-
max_slices=command_config.get(MAX_SLICES_KEY, TestLimits.DEFAULT_MAX_SLICES),
|
42
|
-
max_streams=command_config.get(MAX_STREAMS_KEY, TestLimits.DEFAULT_MAX_STREAMS),
|
50
|
+
max_pages_per_slice = (
|
51
|
+
command_config.get(MAX_PAGES_PER_SLICE_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE
|
43
52
|
)
|
53
|
+
max_slices = command_config.get(MAX_SLICES_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_SLICES
|
54
|
+
max_records = command_config.get(MAX_RECORDS_KEY) or DEFAULT_MAXIMUM_RECORDS
|
55
|
+
max_streams = command_config.get(MAX_STREAMS_KEY) or DEFAULT_MAXIMUM_STREAMS
|
56
|
+
return TestLimits(max_records, max_pages_per_slice, max_slices, max_streams)
|
44
57
|
|
45
58
|
|
46
59
|
def should_migrate_manifest(config: Mapping[str, Any]) -> bool:
|
@@ -62,30 +75,21 @@ def should_normalize_manifest(config: Mapping[str, Any]) -> bool:
|
|
62
75
|
return config.get("__should_normalize", False)
|
63
76
|
|
64
77
|
|
65
|
-
def create_source(
|
66
|
-
config: Mapping[str, Any],
|
67
|
-
limits: TestLimits,
|
68
|
-
catalog: Optional[ConfiguredAirbyteCatalog],
|
69
|
-
state: Optional[List[AirbyteStateMessage]],
|
70
|
-
) -> ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]:
|
78
|
+
def create_source(config: Mapping[str, Any], limits: TestLimits) -> ManifestDeclarativeSource:
|
71
79
|
manifest = config["__injected_declarative_manifest"]
|
72
|
-
|
73
|
-
# We enforce a concurrency level of 1 so that the stream is processed on a single thread
|
74
|
-
# to retain ordering for the grouping of the builder message responses.
|
75
|
-
if "concurrency_level" in manifest:
|
76
|
-
manifest["concurrency_level"]["default_concurrency"] = 1
|
77
|
-
else:
|
78
|
-
manifest["concurrency_level"] = {"type": "ConcurrencyLevel", "default_concurrency": 1}
|
79
|
-
|
80
|
-
return ConcurrentDeclarativeSource(
|
81
|
-
catalog=catalog,
|
80
|
+
return ManifestDeclarativeSource(
|
82
81
|
config=config,
|
83
|
-
state=state,
|
84
|
-
source_config=manifest,
|
85
82
|
emit_connector_builder_messages=True,
|
83
|
+
source_config=manifest,
|
86
84
|
migrate_manifest=should_migrate_manifest(config),
|
87
85
|
normalize_manifest=should_normalize_manifest(config),
|
88
|
-
|
86
|
+
component_factory=ModelToComponentFactory(
|
87
|
+
emit_connector_builder_messages=True,
|
88
|
+
limit_pages_fetched_per_slice=limits.max_pages_per_slice,
|
89
|
+
limit_slices_fetched=limits.max_slices,
|
90
|
+
disable_retries=True,
|
91
|
+
disable_cache=True,
|
92
|
+
),
|
89
93
|
)
|
90
94
|
|
91
95
|
|
@@ -91,12 +91,12 @@ def handle_connector_builder_request(
|
|
91
91
|
def handle_request(args: List[str]) -> str:
|
92
92
|
command, config, catalog, state = get_config_and_catalog_from_args(args)
|
93
93
|
limits = get_limits(config)
|
94
|
-
source = create_source(config
|
95
|
-
return orjson.dumps(
|
94
|
+
source = create_source(config, limits)
|
95
|
+
return orjson.dumps(
|
96
96
|
AirbyteMessageSerializer.dump(
|
97
97
|
handle_connector_builder_request(source, command, config, catalog, state, limits)
|
98
98
|
)
|
99
|
-
).decode()
|
99
|
+
).decode() # type: ignore[no-any-return] # Serializer.dump() always returns AirbyteMessage
|
100
100
|
|
101
101
|
|
102
102
|
if __name__ == "__main__":
|
{airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/connector_builder/test_reader/helpers.py
RENAMED
@@ -5,7 +5,7 @@
|
|
5
5
|
import json
|
6
6
|
from copy import deepcopy
|
7
7
|
from json import JSONDecodeError
|
8
|
-
from typing import Any, Dict, List, Mapping, Optional
|
8
|
+
from typing import Any, Dict, List, Mapping, Optional
|
9
9
|
|
10
10
|
from airbyte_cdk.connector_builder.models import (
|
11
11
|
AuxiliaryRequest,
|
@@ -17,8 +17,6 @@ from airbyte_cdk.connector_builder.models import (
|
|
17
17
|
from airbyte_cdk.models import (
|
18
18
|
AirbyteLogMessage,
|
19
19
|
AirbyteMessage,
|
20
|
-
AirbyteStateBlob,
|
21
|
-
AirbyteStateMessage,
|
22
20
|
OrchestratorType,
|
23
21
|
TraceType,
|
24
22
|
)
|
@@ -468,7 +466,7 @@ def handle_current_slice(
|
|
468
466
|
return StreamReadSlices(
|
469
467
|
pages=current_slice_pages,
|
470
468
|
slice_descriptor=current_slice_descriptor,
|
471
|
-
state=[
|
469
|
+
state=[latest_state_message] if latest_state_message else [],
|
472
470
|
auxiliary_requests=auxiliary_requests if auxiliary_requests else [],
|
473
471
|
)
|
474
472
|
|
@@ -720,23 +718,3 @@ def get_auxiliary_request_type(stream: dict, http: dict) -> str: # type: ignore
|
|
720
718
|
Determines the type of the auxiliary request based on the stream and HTTP properties.
|
721
719
|
"""
|
722
720
|
return "PARENT_STREAM" if stream.get("is_substream", False) else str(http.get("type", None))
|
723
|
-
|
724
|
-
|
725
|
-
def convert_state_blob_to_mapping(
|
726
|
-
state_message: Union[AirbyteStateMessage, Dict[str, Any]],
|
727
|
-
) -> Dict[str, Any]:
|
728
|
-
"""
|
729
|
-
The AirbyteStreamState stores state as an AirbyteStateBlob which deceivingly is not
|
730
|
-
a dictionary, but rather a list of kwargs fields. This in turn causes it to not be
|
731
|
-
properly turned into a dictionary when translating this back into response output
|
732
|
-
by the connector_builder_handler using asdict()
|
733
|
-
"""
|
734
|
-
|
735
|
-
if isinstance(state_message, AirbyteStateMessage) and state_message.stream:
|
736
|
-
state_value = state_message.stream.stream_state
|
737
|
-
if isinstance(state_value, AirbyteStateBlob):
|
738
|
-
state_value_mapping = {k: v for k, v in state_value.__dict__.items()}
|
739
|
-
state_message.stream.stream_state = state_value_mapping # type: ignore # we intentionally set this as a Dict so that StreamReadSlices is translated properly in the resulting HTTP response
|
740
|
-
return state_message # type: ignore # See above, but when this is an AirbyteStateMessage we must convert AirbyteStateBlob to a Dict
|
741
|
-
else:
|
742
|
-
return state_message # type: ignore # This is guaranteed to be a Dict since we check isinstance AirbyteStateMessage above
|
@@ -95,14 +95,11 @@ class ConcurrentReadProcessor:
|
|
95
95
|
"""
|
96
96
|
stream_name = partition.stream_name()
|
97
97
|
self._streams_to_running_partitions[stream_name].add(partition)
|
98
|
-
cursor = self._stream_name_to_instance[stream_name].cursor
|
99
98
|
if self._slice_logger.should_log_slice_message(self._logger):
|
100
99
|
self._message_repository.emit_message(
|
101
100
|
self._slice_logger.create_slice_log_message(partition.to_slice())
|
102
101
|
)
|
103
|
-
self._thread_pool_manager.submit(
|
104
|
-
self._partition_reader.process_partition, partition, cursor
|
105
|
-
)
|
102
|
+
self._thread_pool_manager.submit(self._partition_reader.process_partition, partition)
|
106
103
|
|
107
104
|
def on_partition_complete_sentinel(
|
108
105
|
self, sentinel: PartitionCompleteSentinel
|
@@ -115,16 +112,26 @@ class ConcurrentReadProcessor:
|
|
115
112
|
"""
|
116
113
|
partition = sentinel.partition
|
117
114
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
115
|
+
try:
|
116
|
+
if sentinel.is_successful:
|
117
|
+
stream = self._stream_name_to_instance[partition.stream_name()]
|
118
|
+
stream.cursor.close_partition(partition)
|
119
|
+
except Exception as exception:
|
120
|
+
self._flag_exception(partition.stream_name(), exception)
|
121
|
+
yield AirbyteTracedException.from_exception(
|
122
|
+
exception, stream_descriptor=StreamDescriptor(name=partition.stream_name())
|
123
|
+
).as_sanitized_airbyte_message()
|
124
|
+
finally:
|
125
|
+
partitions_running = self._streams_to_running_partitions[partition.stream_name()]
|
126
|
+
if partition in partitions_running:
|
127
|
+
partitions_running.remove(partition)
|
128
|
+
# If all partitions were generated and this was the last one, the stream is done
|
129
|
+
if (
|
130
|
+
partition.stream_name() not in self._streams_currently_generating_partitions
|
131
|
+
and len(partitions_running) == 0
|
132
|
+
):
|
133
|
+
yield from self._on_stream_is_done(partition.stream_name())
|
134
|
+
yield from self._message_repository.consume_queue()
|
128
135
|
|
129
136
|
def on_record(self, record: Record) -> Iterable[AirbyteMessage]:
|
130
137
|
"""
|
{airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/concurrent_source/concurrent_source.py
RENAMED
@@ -4,7 +4,7 @@
|
|
4
4
|
import concurrent
|
5
5
|
import logging
|
6
6
|
from queue import Queue
|
7
|
-
from typing import Iterable, Iterator, List
|
7
|
+
from typing import Iterable, Iterator, List
|
8
8
|
|
9
9
|
from airbyte_cdk.models import AirbyteMessage
|
10
10
|
from airbyte_cdk.sources.concurrent_source.concurrent_read_processor import ConcurrentReadProcessor
|
@@ -16,7 +16,7 @@ from airbyte_cdk.sources.concurrent_source.thread_pool_manager import ThreadPool
|
|
16
16
|
from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository
|
17
17
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
18
18
|
from airbyte_cdk.sources.streams.concurrent.partition_enqueuer import PartitionEnqueuer
|
19
|
-
from airbyte_cdk.sources.streams.concurrent.partition_reader import
|
19
|
+
from airbyte_cdk.sources.streams.concurrent.partition_reader import PartitionReader
|
20
20
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
|
21
21
|
from airbyte_cdk.sources.streams.concurrent.partitions.types import (
|
22
22
|
PartitionCompleteSentinel,
|
@@ -43,7 +43,6 @@ class ConcurrentSource:
|
|
43
43
|
logger: logging.Logger,
|
44
44
|
slice_logger: SliceLogger,
|
45
45
|
message_repository: MessageRepository,
|
46
|
-
queue: Optional[Queue[QueueItem]] = None,
|
47
46
|
timeout_seconds: int = DEFAULT_TIMEOUT_SECONDS,
|
48
47
|
) -> "ConcurrentSource":
|
49
48
|
is_single_threaded = initial_number_of_partitions_to_generate == 1 and num_workers == 1
|
@@ -60,13 +59,12 @@ class ConcurrentSource:
|
|
60
59
|
logger,
|
61
60
|
)
|
62
61
|
return ConcurrentSource(
|
63
|
-
threadpool
|
64
|
-
logger
|
65
|
-
slice_logger
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
timeout_seconds=timeout_seconds,
|
62
|
+
threadpool,
|
63
|
+
logger,
|
64
|
+
slice_logger,
|
65
|
+
message_repository,
|
66
|
+
initial_number_of_partitions_to_generate,
|
67
|
+
timeout_seconds,
|
70
68
|
)
|
71
69
|
|
72
70
|
def __init__(
|
@@ -74,7 +72,6 @@ class ConcurrentSource:
|
|
74
72
|
threadpool: ThreadPoolManager,
|
75
73
|
logger: logging.Logger,
|
76
74
|
slice_logger: SliceLogger = DebugSliceLogger(),
|
77
|
-
queue: Optional[Queue[QueueItem]] = None,
|
78
75
|
message_repository: MessageRepository = InMemoryMessageRepository(),
|
79
76
|
initial_number_partitions_to_generate: int = 1,
|
80
77
|
timeout_seconds: int = DEFAULT_TIMEOUT_SECONDS,
|
@@ -94,28 +91,25 @@ class ConcurrentSource:
|
|
94
91
|
self._initial_number_partitions_to_generate = initial_number_partitions_to_generate
|
95
92
|
self._timeout_seconds = timeout_seconds
|
96
93
|
|
97
|
-
# We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
|
98
|
-
# threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
|
99
|
-
# partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
|
100
|
-
# information and might even need to be configurable depending on the source
|
101
|
-
self._queue = queue or Queue(maxsize=10_000)
|
102
|
-
|
103
94
|
def read(
|
104
95
|
self,
|
105
96
|
streams: List[AbstractStream],
|
106
97
|
) -> Iterator[AirbyteMessage]:
|
107
98
|
self._logger.info("Starting syncing")
|
99
|
+
|
100
|
+
# We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
|
101
|
+
# threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
|
102
|
+
# partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
|
103
|
+
# information and might even need to be configurable depending on the source
|
104
|
+
queue: Queue[QueueItem] = Queue(maxsize=10_000)
|
108
105
|
concurrent_stream_processor = ConcurrentReadProcessor(
|
109
106
|
streams,
|
110
|
-
PartitionEnqueuer(
|
107
|
+
PartitionEnqueuer(queue, self._threadpool),
|
111
108
|
self._threadpool,
|
112
109
|
self._logger,
|
113
110
|
self._slice_logger,
|
114
111
|
self._message_repository,
|
115
|
-
PartitionReader(
|
116
|
-
self._queue,
|
117
|
-
PartitionLogger(self._slice_logger, self._logger, self._message_repository),
|
118
|
-
),
|
112
|
+
PartitionReader(queue),
|
119
113
|
)
|
120
114
|
|
121
115
|
# Enqueue initial partition generation tasks
|
@@ -123,7 +117,7 @@ class ConcurrentSource:
|
|
123
117
|
|
124
118
|
# Read from the queue until all partitions were generated and read
|
125
119
|
yield from self._consume_from_queue(
|
126
|
-
|
120
|
+
queue,
|
127
121
|
concurrent_stream_processor,
|
128
122
|
)
|
129
123
|
self._threadpool.check_for_errors_and_shutdown()
|
@@ -147,10 +141,7 @@ class ConcurrentSource:
|
|
147
141
|
airbyte_message_or_record_or_exception,
|
148
142
|
concurrent_stream_processor,
|
149
143
|
)
|
150
|
-
|
151
|
-
# the queue will be missed because is_done() can raise an exception and exit
|
152
|
-
# out of this loop before remaining items are consumed
|
153
|
-
if queue.empty() and concurrent_stream_processor.is_done():
|
144
|
+
if concurrent_stream_processor.is_done() and queue.empty():
|
154
145
|
# all partitions were generated and processed. we're done here
|
155
146
|
break
|
156
147
|
|
@@ -170,7 +161,5 @@ class ConcurrentSource:
|
|
170
161
|
yield from concurrent_stream_processor.on_partition_complete_sentinel(queue_item)
|
171
162
|
elif isinstance(queue_item, Record):
|
172
163
|
yield from concurrent_stream_processor.on_record(queue_item)
|
173
|
-
elif isinstance(queue_item, AirbyteMessage):
|
174
|
-
yield queue_item
|
175
164
|
else:
|
176
165
|
raise ValueError(f"Unknown queue item type: {type(queue_item)}")
|
@@ -3,11 +3,7 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
import logging
|
6
|
-
from
|
7
|
-
from queue import Queue
|
8
|
-
from typing import Any, ClassVar, Generic, Iterator, List, Mapping, MutableMapping, Optional, Tuple
|
9
|
-
|
10
|
-
from airbyte_protocol_dataclasses.models import Level
|
6
|
+
from typing import Any, Generic, Iterator, List, Mapping, MutableMapping, Optional, Tuple
|
11
7
|
|
12
8
|
from airbyte_cdk.models import (
|
13
9
|
AirbyteCatalog,
|
@@ -52,8 +48,6 @@ from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_genera
|
|
52
48
|
StreamSlicerPartitionGenerator,
|
53
49
|
)
|
54
50
|
from airbyte_cdk.sources.declarative.types import ConnectionDefinition
|
55
|
-
from airbyte_cdk.sources.message.concurrent_repository import ConcurrentMessageRepository
|
56
|
-
from airbyte_cdk.sources.message.repository import InMemoryMessageRepository, MessageRepository
|
57
51
|
from airbyte_cdk.sources.source import TState
|
58
52
|
from airbyte_cdk.sources.streams import Stream
|
59
53
|
from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
|
@@ -64,22 +58,6 @@ from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
|
|
64
58
|
from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, FinalStateCursor
|
65
59
|
from airbyte_cdk.sources.streams.concurrent.default_stream import DefaultStream
|
66
60
|
from airbyte_cdk.sources.streams.concurrent.helpers import get_primary_key_from_stream
|
67
|
-
from airbyte_cdk.sources.streams.concurrent.partitions.types import QueueItem
|
68
|
-
|
69
|
-
|
70
|
-
@dataclass
|
71
|
-
class TestLimits:
|
72
|
-
__test__: ClassVar[bool] = False # Tell Pytest this is not a Pytest class, despite its name
|
73
|
-
|
74
|
-
DEFAULT_MAX_PAGES_PER_SLICE: ClassVar[int] = 5
|
75
|
-
DEFAULT_MAX_SLICES: ClassVar[int] = 5
|
76
|
-
DEFAULT_MAX_RECORDS: ClassVar[int] = 100
|
77
|
-
DEFAULT_MAX_STREAMS: ClassVar[int] = 100
|
78
|
-
|
79
|
-
max_records: int = field(default=DEFAULT_MAX_RECORDS)
|
80
|
-
max_pages_per_slice: int = field(default=DEFAULT_MAX_PAGES_PER_SLICE)
|
81
|
-
max_slices: int = field(default=DEFAULT_MAX_SLICES)
|
82
|
-
max_streams: int = field(default=DEFAULT_MAX_STREAMS)
|
83
61
|
|
84
62
|
|
85
63
|
class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
@@ -95,9 +73,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
95
73
|
source_config: ConnectionDefinition,
|
96
74
|
debug: bool = False,
|
97
75
|
emit_connector_builder_messages: bool = False,
|
98
|
-
|
99
|
-
normalize_manifest: bool = False,
|
100
|
-
limits: Optional[TestLimits] = None,
|
76
|
+
component_factory: Optional[ModelToComponentFactory] = None,
|
101
77
|
config_path: Optional[str] = None,
|
102
78
|
**kwargs: Any,
|
103
79
|
) -> None:
|
@@ -105,40 +81,22 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
105
81
|
# no longer needs to store the original incoming state. But maybe there's an edge case?
|
106
82
|
self._connector_state_manager = ConnectorStateManager(state=state) # type: ignore # state is always in the form of List[AirbyteStateMessage]. The ConnectorStateManager should use generics, but this can be done later
|
107
83
|
|
108
|
-
# We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
|
109
|
-
# threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
|
110
|
-
# partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
|
111
|
-
# information and might even need to be configurable depending on the source
|
112
|
-
queue: Queue[QueueItem] = Queue(maxsize=10_000)
|
113
|
-
message_repository = InMemoryMessageRepository(
|
114
|
-
Level.DEBUG if emit_connector_builder_messages else Level.INFO
|
115
|
-
)
|
116
|
-
|
117
84
|
# To reduce the complexity of the concurrent framework, we are not enabling RFR with synthetic
|
118
85
|
# cursors. We do this by no longer automatically instantiating RFR cursors when converting
|
119
86
|
# the declarative models into runtime components. Concurrent sources will continue to checkpoint
|
120
87
|
# incremental streams running in full refresh.
|
121
|
-
component_factory = ModelToComponentFactory(
|
88
|
+
component_factory = component_factory or ModelToComponentFactory(
|
122
89
|
emit_connector_builder_messages=emit_connector_builder_messages,
|
123
90
|
disable_resumable_full_refresh=True,
|
124
|
-
message_repository=ConcurrentMessageRepository(queue, message_repository),
|
125
91
|
connector_state_manager=self._connector_state_manager,
|
126
92
|
max_concurrent_async_job_count=source_config.get("max_concurrent_async_job_count"),
|
127
|
-
limit_pages_fetched_per_slice=limits.max_pages_per_slice if limits else None,
|
128
|
-
limit_slices_fetched=limits.max_slices if limits else None,
|
129
|
-
disable_retries=True if limits else False,
|
130
|
-
disable_cache=True if limits else False,
|
131
93
|
)
|
132
94
|
|
133
|
-
self._limits = limits
|
134
|
-
|
135
95
|
super().__init__(
|
136
96
|
source_config=source_config,
|
137
97
|
config=config,
|
138
98
|
debug=debug,
|
139
99
|
emit_connector_builder_messages=emit_connector_builder_messages,
|
140
|
-
migrate_manifest=migrate_manifest,
|
141
|
-
normalize_manifest=normalize_manifest,
|
142
100
|
component_factory=component_factory,
|
143
101
|
config_path=config_path,
|
144
102
|
)
|
@@ -168,7 +126,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
168
126
|
initial_number_of_partitions_to_generate=initial_number_of_partitions_to_generate,
|
169
127
|
logger=self.logger,
|
170
128
|
slice_logger=self._slice_logger,
|
171
|
-
queue=queue,
|
172
129
|
message_repository=self.message_repository,
|
173
130
|
)
|
174
131
|
|
@@ -330,9 +287,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
330
287
|
self.message_repository,
|
331
288
|
),
|
332
289
|
stream_slicer=declarative_stream.retriever.stream_slicer,
|
333
|
-
slice_limit=self._limits.max_slices
|
334
|
-
if self._limits
|
335
|
-
else None, # technically not needed because create_declarative_stream() -> create_simple_retriever() will apply the decorator. But for consistency and depending how we build create_default_stream, this may be needed later
|
336
290
|
)
|
337
291
|
else:
|
338
292
|
if (
|
@@ -364,7 +318,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
364
318
|
self.message_repository,
|
365
319
|
),
|
366
320
|
stream_slicer=cursor,
|
367
|
-
slice_limit=self._limits.max_slices if self._limits else None,
|
368
321
|
)
|
369
322
|
|
370
323
|
concurrent_streams.append(
|
@@ -396,9 +349,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
396
349
|
self.message_repository,
|
397
350
|
),
|
398
351
|
declarative_stream.retriever.stream_slicer,
|
399
|
-
slice_limit=self._limits.max_slices
|
400
|
-
if self._limits
|
401
|
-
else None, # technically not needed because create_declarative_stream() -> create_simple_retriever() will apply the decorator. But for consistency and depending how we build create_default_stream, this may be needed later
|
402
352
|
)
|
403
353
|
|
404
354
|
final_state_cursor = FinalStateCursor(
|
@@ -460,7 +410,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
460
410
|
self.message_repository,
|
461
411
|
),
|
462
412
|
perpartition_cursor,
|
463
|
-
slice_limit=self._limits.max_slices if self._limits else None,
|
464
413
|
)
|
465
414
|
|
466
415
|
concurrent_streams.append(
|
@@ -622,10 +622,6 @@ SCHEMA_TRANSFORMER_TYPE_MAPPING = {
|
|
622
622
|
SchemaNormalizationModel.Default: TransformConfig.DefaultSchemaNormalization,
|
623
623
|
}
|
624
624
|
|
625
|
-
# Ideally this should use the value defined in ConcurrentDeclarativeSource, but
|
626
|
-
# this would be a circular import
|
627
|
-
MAX_SLICES = 5
|
628
|
-
|
629
625
|
|
630
626
|
class ModelToComponentFactory:
|
631
627
|
EPOCH_DATETIME_FORMAT = "%s"
|
@@ -159,14 +159,7 @@ class DefaultPaginator(Paginator):
|
|
159
159
|
) -> Optional[str]:
|
160
160
|
token = next_page_token.get("next_page_token") if next_page_token else None
|
161
161
|
if token and self.page_token_option and isinstance(self.page_token_option, RequestPath):
|
162
|
-
|
163
|
-
interpolation_context = get_interpolation_context(
|
164
|
-
stream_state=stream_state,
|
165
|
-
stream_slice=stream_slice,
|
166
|
-
next_page_token=next_page_token,
|
167
|
-
)
|
168
|
-
# Replace url base to only return the path
|
169
|
-
return str(token).replace(self.url_base.eval(self.config, **interpolation_context), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
|
162
|
+
return str(token)
|
170
163
|
else:
|
171
164
|
return None
|
172
165
|
|
@@ -1,11 +1,8 @@
|
|
1
|
-
# Copyright (c)
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
2
|
|
3
|
-
from typing import Any, Iterable, Mapping, Optional
|
3
|
+
from typing import Any, Iterable, Mapping, Optional
|
4
4
|
|
5
5
|
from airbyte_cdk.sources.declarative.retrievers import Retriever
|
6
|
-
from airbyte_cdk.sources.declarative.stream_slicers.stream_slicer_test_read_decorator import (
|
7
|
-
StreamSlicerTestReadDecorator,
|
8
|
-
)
|
9
6
|
from airbyte_cdk.sources.message import MessageRepository
|
10
7
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
|
11
8
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition_generator import PartitionGenerator
|
@@ -86,23 +83,10 @@ class DeclarativePartition(Partition):
|
|
86
83
|
|
87
84
|
class StreamSlicerPartitionGenerator(PartitionGenerator):
|
88
85
|
def __init__(
|
89
|
-
self,
|
90
|
-
partition_factory: DeclarativePartitionFactory,
|
91
|
-
stream_slicer: StreamSlicer,
|
92
|
-
slice_limit: Optional[int] = None,
|
86
|
+
self, partition_factory: DeclarativePartitionFactory, stream_slicer: StreamSlicer
|
93
87
|
) -> None:
|
94
88
|
self._partition_factory = partition_factory
|
95
|
-
|
96
|
-
if slice_limit:
|
97
|
-
self._stream_slicer = cast(
|
98
|
-
StreamSlicer,
|
99
|
-
StreamSlicerTestReadDecorator(
|
100
|
-
wrapped_slicer=stream_slicer,
|
101
|
-
maximum_number_of_slices=slice_limit,
|
102
|
-
),
|
103
|
-
)
|
104
|
-
else:
|
105
|
-
self._stream_slicer = stream_slicer
|
89
|
+
self._stream_slicer = stream_slicer
|
106
90
|
|
107
91
|
def generate(self) -> Iterable[Partition]:
|
108
92
|
for stream_slice in self._stream_slicer.stream_slices():
|
@@ -4,10 +4,10 @@
|
|
4
4
|
|
5
5
|
from dataclasses import dataclass
|
6
6
|
from itertools import islice
|
7
|
-
from typing import Any, Iterable
|
7
|
+
from typing import Any, Iterable, Mapping, Optional, Union
|
8
8
|
|
9
9
|
from airbyte_cdk.sources.streams.concurrent.partitions.stream_slicer import StreamSlicer
|
10
|
-
from airbyte_cdk.sources.types import StreamSlice
|
10
|
+
from airbyte_cdk.sources.types import StreamSlice, StreamState
|
11
11
|
|
12
12
|
|
13
13
|
@dataclass
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
from queue import Queue
|
5
|
+
|
6
|
+
from airbyte_cdk.sources.concurrent_source.stream_thread_exception import StreamThreadException
|
7
|
+
from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
|
8
|
+
from airbyte_cdk.sources.streams.concurrent.partitions.types import (
|
9
|
+
PartitionCompleteSentinel,
|
10
|
+
QueueItem,
|
11
|
+
)
|
12
|
+
|
13
|
+
|
14
|
+
class PartitionReader:
|
15
|
+
"""
|
16
|
+
Generates records from a partition and puts them in a queue.
|
17
|
+
"""
|
18
|
+
|
19
|
+
_IS_SUCCESSFUL = True
|
20
|
+
|
21
|
+
def __init__(self, queue: Queue[QueueItem]) -> None:
|
22
|
+
"""
|
23
|
+
:param queue: The queue to put the records in.
|
24
|
+
"""
|
25
|
+
self._queue = queue
|
26
|
+
|
27
|
+
def process_partition(self, partition: Partition) -> None:
|
28
|
+
"""
|
29
|
+
Process a partition and put the records in the output queue.
|
30
|
+
When all the partitions are added to the queue, a sentinel is added to the queue to indicate that all the partitions have been generated.
|
31
|
+
|
32
|
+
If an exception is encountered, the exception will be caught and put in the queue. This is very important because if we don't, the
|
33
|
+
main thread will have no way to know that something when wrong and will wait until the timeout is reached
|
34
|
+
|
35
|
+
This method is meant to be called from a thread.
|
36
|
+
:param partition: The partition to read data from
|
37
|
+
:return: None
|
38
|
+
"""
|
39
|
+
try:
|
40
|
+
for record in partition.read():
|
41
|
+
self._queue.put(record)
|
42
|
+
self._queue.put(PartitionCompleteSentinel(partition, self._IS_SUCCESSFUL))
|
43
|
+
except Exception as e:
|
44
|
+
self._queue.put(StreamThreadException(e, partition.stream_name()))
|
45
|
+
self._queue.put(PartitionCompleteSentinel(partition, not self._IS_SUCCESSFUL))
|
{airbyte_cdk-6.60.7 → airbyte_cdk-6.60.9}/airbyte_cdk/sources/streams/concurrent/partitions/types.py
RENAMED
@@ -4,7 +4,6 @@
|
|
4
4
|
|
5
5
|
from typing import Any, Union
|
6
6
|
|
7
|
-
from airbyte_cdk.models import AirbyteMessage
|
8
7
|
from airbyte_cdk.sources.concurrent_source.partition_generation_completed_sentinel import (
|
9
8
|
PartitionGenerationCompletedSentinel,
|
10
9
|
)
|
@@ -35,10 +34,5 @@ class PartitionCompleteSentinel:
|
|
35
34
|
Typedef representing the items that can be added to the ThreadBasedConcurrentStream
|
36
35
|
"""
|
37
36
|
QueueItem = Union[
|
38
|
-
Record,
|
39
|
-
Partition,
|
40
|
-
PartitionCompleteSentinel,
|
41
|
-
PartitionGenerationCompletedSentinel,
|
42
|
-
Exception,
|
43
|
-
AirbyteMessage,
|
37
|
+
Record, Partition, PartitionCompleteSentinel, PartitionGenerationCompletedSentinel, Exception
|
44
38
|
]
|
@@ -11,10 +11,6 @@ from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, Level
|
|
11
11
|
from airbyte_cdk.models import Type as MessageType
|
12
12
|
|
13
13
|
|
14
|
-
# Once everything runs on the concurrent CDK and we've cleaned up the legacy flows, we should try to remove
|
15
|
-
# this class and write messages directly to the message_repository instead of through the logger because for
|
16
|
-
# cases like the connector builder where ordering of messages is important, using the logger can cause
|
17
|
-
# messages to be grouped out of order. Alas work for a different day.
|
18
14
|
class SliceLogger(ABC):
|
19
15
|
"""
|
20
16
|
SliceLogger is an interface that allows us to log slices of data in a uniform way.
|