airbyte-cdk 6.45.0__tar.gz → 6.45.0.dev4100__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.0 → airbyte_cdk-6.45.0.dev4100}/PKG-INFO +2 -2
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/connector_builder_handler.py +6 -45
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/main.py +2 -5
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/models/__init__.py +1 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/models/airbyte_protocol.py +1 -3
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +1 -1
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/job.py +0 -6
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +18 -18
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +6 -22
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/checks/__init__.py +2 -5
- airbyte_cdk-6.45.0.dev4100/airbyte_cdk/sources/declarative/checks/check_stream.py +56 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +8 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +50 -210
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/record_selector.py +6 -1
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +1 -2
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/macros.py +4 -8
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +2 -23
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +43 -142
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +4 -16
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +50 -263
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -4
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +1 -5
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +2 -25
- airbyte_cdk-6.45.0.dev4100/airbyte_cdk/sources/declarative/retrievers/file_uploader.py +89 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +30 -101
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +9 -4
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/add_fields.py +1 -3
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +9 -9
- airbyte_cdk-6.45.0.dev4100/airbyte_cdk/sources/file_based/file_record_data.py +24 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +8 -15
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/schema_helpers.py +11 -1
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -1
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +16 -31
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +1 -3
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/default_stream.py +3 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -4
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/types.py +11 -2
- airbyte_cdk-6.45.0.dev4100/airbyte_cdk/sources/utils/files_directory.py +15 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/record_helper.py +8 -8
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/pyproject.toml +8 -2
- airbyte_cdk-6.45.0/airbyte_cdk/models/file_transfer_record_message.py +0 -13
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -158
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -150
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -13
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -40
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -69
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -58
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -10
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -33
- airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -19
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/LICENSE.txt +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/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.0
|
3
|
+
Version: 6.45.0.dev4100
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -22,7 +22,7 @@ Provides-Extra: sql
|
|
22
22
|
Provides-Extra: vector-db-based
|
23
23
|
Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
|
24
24
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
25
|
-
Requires-Dist: airbyte-protocol-models-dataclasses (
|
25
|
+
Requires-Dist: airbyte-protocol-models-dataclasses (==0.14.4.dev1743719077)
|
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
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
from dataclasses import asdict, dataclass, field
|
7
|
-
from typing import Any,
|
7
|
+
from typing import Any, List, Mapping
|
8
8
|
|
9
9
|
from airbyte_cdk.connector_builder.test_reader import TestReader
|
10
10
|
from airbyte_cdk.models import (
|
@@ -27,34 +27,30 @@ from airbyte_cdk.utils.traced_exception import AirbyteTracedException
|
|
27
27
|
DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE = 5
|
28
28
|
DEFAULT_MAXIMUM_NUMBER_OF_SLICES = 5
|
29
29
|
DEFAULT_MAXIMUM_RECORDS = 100
|
30
|
-
DEFAULT_MAXIMUM_STREAMS = 100
|
31
30
|
|
32
31
|
MAX_PAGES_PER_SLICE_KEY = "max_pages_per_slice"
|
33
32
|
MAX_SLICES_KEY = "max_slices"
|
34
33
|
MAX_RECORDS_KEY = "max_records"
|
35
|
-
MAX_STREAMS_KEY = "max_streams"
|
36
34
|
|
37
35
|
|
38
36
|
@dataclass
|
39
|
-
class
|
37
|
+
class TestReadLimits:
|
40
38
|
max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
|
41
39
|
max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
|
42
40
|
max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
|
43
|
-
max_streams: int = field(default=DEFAULT_MAXIMUM_STREAMS)
|
44
41
|
|
45
42
|
|
46
|
-
def get_limits(config: Mapping[str, Any]) ->
|
43
|
+
def get_limits(config: Mapping[str, Any]) -> TestReadLimits:
|
47
44
|
command_config = config.get("__test_read_config", {})
|
48
45
|
max_pages_per_slice = (
|
49
46
|
command_config.get(MAX_PAGES_PER_SLICE_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE
|
50
47
|
)
|
51
48
|
max_slices = command_config.get(MAX_SLICES_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_SLICES
|
52
49
|
max_records = command_config.get(MAX_RECORDS_KEY) or DEFAULT_MAXIMUM_RECORDS
|
53
|
-
|
54
|
-
return TestLimits(max_records, max_pages_per_slice, max_slices, max_streams)
|
50
|
+
return TestReadLimits(max_records, max_pages_per_slice, max_slices)
|
55
51
|
|
56
52
|
|
57
|
-
def create_source(config: Mapping[str, Any], limits:
|
53
|
+
def create_source(config: Mapping[str, Any], limits: TestReadLimits) -> ManifestDeclarativeSource:
|
58
54
|
manifest = config["__injected_declarative_manifest"]
|
59
55
|
return ManifestDeclarativeSource(
|
60
56
|
config=config,
|
@@ -75,7 +71,7 @@ def read_stream(
|
|
75
71
|
config: Mapping[str, Any],
|
76
72
|
configured_catalog: ConfiguredAirbyteCatalog,
|
77
73
|
state: List[AirbyteStateMessage],
|
78
|
-
limits:
|
74
|
+
limits: TestReadLimits,
|
79
75
|
) -> AirbyteMessage:
|
80
76
|
try:
|
81
77
|
test_read_handler = TestReader(
|
@@ -121,40 +117,5 @@ def resolve_manifest(source: ManifestDeclarativeSource) -> AirbyteMessage:
|
|
121
117
|
return error.as_airbyte_message()
|
122
118
|
|
123
119
|
|
124
|
-
def full_resolve_manifest(source: ManifestDeclarativeSource, limits: TestLimits) -> AirbyteMessage:
|
125
|
-
try:
|
126
|
-
manifest = {**source.resolved_manifest}
|
127
|
-
streams = manifest.get("streams", [])
|
128
|
-
for stream in streams:
|
129
|
-
stream["dynamic_stream_name"] = None
|
130
|
-
|
131
|
-
mapped_streams: Dict[str, List[Dict[str, Any]]] = {}
|
132
|
-
for stream in source.dynamic_streams:
|
133
|
-
generated_streams = mapped_streams.setdefault(stream["dynamic_stream_name"], [])
|
134
|
-
|
135
|
-
if len(generated_streams) < limits.max_streams:
|
136
|
-
generated_streams += [stream]
|
137
|
-
|
138
|
-
for generated_streams_list in mapped_streams.values():
|
139
|
-
streams.extend(generated_streams_list)
|
140
|
-
|
141
|
-
manifest["streams"] = streams
|
142
|
-
return AirbyteMessage(
|
143
|
-
type=Type.RECORD,
|
144
|
-
record=AirbyteRecordMessage(
|
145
|
-
data={"manifest": manifest},
|
146
|
-
emitted_at=_emitted_at(),
|
147
|
-
stream="full_resolve_manifest",
|
148
|
-
),
|
149
|
-
)
|
150
|
-
except AirbyteTracedException as exc:
|
151
|
-
return exc.as_airbyte_message()
|
152
|
-
except Exception as exc:
|
153
|
-
error = AirbyteTracedException.from_exception(
|
154
|
-
exc, message=f"Error full resolving manifest: {str(exc)}"
|
155
|
-
)
|
156
|
-
return error.as_airbyte_message()
|
157
|
-
|
158
|
-
|
159
120
|
def _emitted_at() -> int:
|
160
121
|
return ab_datetime_now().to_epoch_millis()
|
@@ -10,9 +10,8 @@ import orjson
|
|
10
10
|
|
11
11
|
from airbyte_cdk.connector import BaseConnector
|
12
12
|
from airbyte_cdk.connector_builder.connector_builder_handler import (
|
13
|
-
|
13
|
+
TestReadLimits,
|
14
14
|
create_source,
|
15
|
-
full_resolve_manifest,
|
16
15
|
get_limits,
|
17
16
|
read_stream,
|
18
17
|
resolve_manifest,
|
@@ -73,7 +72,7 @@ def handle_connector_builder_request(
|
|
73
72
|
config: Mapping[str, Any],
|
74
73
|
catalog: Optional[ConfiguredAirbyteCatalog],
|
75
74
|
state: List[AirbyteStateMessage],
|
76
|
-
limits:
|
75
|
+
limits: TestReadLimits,
|
77
76
|
) -> AirbyteMessage:
|
78
77
|
if command == "resolve_manifest":
|
79
78
|
return resolve_manifest(source)
|
@@ -82,8 +81,6 @@ def handle_connector_builder_request(
|
|
82
81
|
catalog is not None
|
83
82
|
), "`test_read` requires a valid `ConfiguredAirbyteCatalog`, got None."
|
84
83
|
return read_stream(source, config, catalog, state, limits)
|
85
|
-
elif command == "full_resolve_manifest":
|
86
|
-
return full_resolve_manifest(source, limits)
|
87
84
|
else:
|
88
85
|
raise ValueError(f"Unrecognized command {command}.")
|
89
86
|
|
@@ -8,8 +8,6 @@ from typing import Annotated, Any, Dict, List, Mapping, Optional, Union
|
|
8
8
|
from airbyte_protocol_dataclasses.models import * # noqa: F403 # Allow '*'
|
9
9
|
from serpyco_rs.metadata import Alias
|
10
10
|
|
11
|
-
from airbyte_cdk.models.file_transfer_record_message import AirbyteFileTransferRecordMessage
|
12
|
-
|
13
11
|
# ruff: noqa: F405 # ignore fuzzy import issues with 'import *'
|
14
12
|
|
15
13
|
|
@@ -84,7 +82,7 @@ class AirbyteMessage:
|
|
84
82
|
spec: Optional[ConnectorSpecification] = None # type: ignore [name-defined]
|
85
83
|
connectionStatus: Optional[AirbyteConnectionStatus] = None # type: ignore [name-defined]
|
86
84
|
catalog: Optional[AirbyteCatalog] = None # type: ignore [name-defined]
|
87
|
-
record: Optional[
|
85
|
+
record: Optional[AirbyteRecordMessage] = None # type: ignore [name-defined]
|
88
86
|
state: Optional[AirbyteStateMessage] = None
|
89
87
|
trace: Optional[AirbyteTraceMessage] = None # type: ignore [name-defined]
|
90
88
|
control: Optional[AirbyteControlMessage] = None # type: ignore [name-defined]
|
@@ -149,7 +149,7 @@ class ConcurrentReadProcessor:
|
|
149
149
|
message = stream_data_to_airbyte_message(
|
150
150
|
stream_name=record.stream_name,
|
151
151
|
data_or_message=record.data,
|
152
|
-
|
152
|
+
file_reference=record.file_reference,
|
153
153
|
)
|
154
154
|
stream = self._stream_name_to_instance[record.stream_name]
|
155
155
|
|
{airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/async_job/job.py
RENAMED
@@ -34,12 +34,6 @@ class AsyncJob:
|
|
34
34
|
|
35
35
|
def status(self) -> AsyncJobStatus:
|
36
36
|
if self._timer.has_timed_out():
|
37
|
-
# TODO: we should account the fact that,
|
38
|
-
# certain APIs could send the `Timeout` status,
|
39
|
-
# thus we should not return `Timeout` in that case,
|
40
|
-
# but act based on the scenario.
|
41
|
-
|
42
|
-
# the default behavior is to return `Timeout` status and retry.
|
43
37
|
return AsyncJobStatus.TIMED_OUT
|
44
38
|
return self._status
|
45
39
|
|
@@ -44,21 +44,16 @@ class AsyncPartition:
|
|
44
44
|
This bucket of api_jobs is a bit useless for this iteration but should become interesting when we will be able to split jobs
|
45
45
|
"""
|
46
46
|
|
47
|
-
|
47
|
+
_MAX_NUMBER_OF_ATTEMPTS = 3
|
48
48
|
|
49
|
-
def __init__(
|
50
|
-
self, jobs: List[AsyncJob], stream_slice: StreamSlice, job_max_retry: Optional[int] = None
|
51
|
-
) -> None:
|
49
|
+
def __init__(self, jobs: List[AsyncJob], stream_slice: StreamSlice) -> None:
|
52
50
|
self._attempts_per_job = {job: 1 for job in jobs}
|
53
51
|
self._stream_slice = stream_slice
|
54
|
-
self._job_max_retry = (
|
55
|
-
job_max_retry if job_max_retry is not None else self._DEFAULT_MAX_JOB_RETRY
|
56
|
-
)
|
57
52
|
|
58
53
|
def has_reached_max_attempt(self) -> bool:
|
59
54
|
return any(
|
60
55
|
map(
|
61
|
-
lambda attempt_count: attempt_count >= self.
|
56
|
+
lambda attempt_count: attempt_count >= self._MAX_NUMBER_OF_ATTEMPTS,
|
62
57
|
self._attempts_per_job.values(),
|
63
58
|
)
|
64
59
|
)
|
@@ -67,7 +62,7 @@ class AsyncPartition:
|
|
67
62
|
current_attempt_count = self._attempts_per_job.pop(job_to_replace, None)
|
68
63
|
if current_attempt_count is None:
|
69
64
|
raise ValueError("Could not find job to replace")
|
70
|
-
elif current_attempt_count >= self.
|
65
|
+
elif current_attempt_count >= self._MAX_NUMBER_OF_ATTEMPTS:
|
71
66
|
raise ValueError(f"Max attempt reached for job in partition {self._stream_slice}")
|
72
67
|
|
73
68
|
new_attempt_count = current_attempt_count + 1
|
@@ -160,7 +155,6 @@ class AsyncJobOrchestrator:
|
|
160
155
|
message_repository: MessageRepository,
|
161
156
|
exceptions_to_break_on: Iterable[Type[Exception]] = tuple(),
|
162
157
|
has_bulk_parent: bool = False,
|
163
|
-
job_max_retry: Optional[int] = None,
|
164
158
|
) -> None:
|
165
159
|
"""
|
166
160
|
If the stream slices provided as a parameters relies on a async job streams that relies on the same JobTracker, `has_bulk_parent`
|
@@ -181,12 +175,11 @@ class AsyncJobOrchestrator:
|
|
181
175
|
self._message_repository = message_repository
|
182
176
|
self._exceptions_to_break_on: Tuple[Type[Exception], ...] = tuple(exceptions_to_break_on)
|
183
177
|
self._has_bulk_parent = has_bulk_parent
|
184
|
-
self._job_max_retry = job_max_retry
|
185
178
|
|
186
179
|
self._non_breaking_exceptions: List[Exception] = []
|
187
180
|
|
188
181
|
def _replace_failed_jobs(self, partition: AsyncPartition) -> None:
|
189
|
-
failed_status_jobs = (AsyncJobStatus.FAILED,
|
182
|
+
failed_status_jobs = (AsyncJobStatus.FAILED,)
|
190
183
|
jobs_to_replace = [job for job in partition.jobs if job.status() in failed_status_jobs]
|
191
184
|
for job in jobs_to_replace:
|
192
185
|
new_job = self._start_job(job.job_parameters(), job.api_job_id())
|
@@ -221,7 +214,7 @@ class AsyncJobOrchestrator:
|
|
221
214
|
for _slice in self._slice_iterator:
|
222
215
|
at_least_one_slice_consumed_from_slice_iterator_during_current_iteration = True
|
223
216
|
job = self._start_job(_slice)
|
224
|
-
self._running_partitions.append(AsyncPartition([job], _slice
|
217
|
+
self._running_partitions.append(AsyncPartition([job], _slice))
|
225
218
|
if self._has_bulk_parent and self._slice_iterator.has_next():
|
226
219
|
break
|
227
220
|
except ConcurrentJobLimitReached:
|
@@ -370,7 +363,7 @@ class AsyncJobOrchestrator:
|
|
370
363
|
self._reallocate_partition(current_running_partitions, partition)
|
371
364
|
|
372
365
|
# We only remove completed / timeout jobs jobs as we want failed jobs to be re-allocated in priority
|
373
|
-
self.
|
366
|
+
self._remove_completed_or_timed_out_jobs(partition)
|
374
367
|
|
375
368
|
# update the referenced list with running partitions
|
376
369
|
self._running_partitions = current_running_partitions
|
@@ -385,7 +378,11 @@ class AsyncJobOrchestrator:
|
|
385
378
|
def _stop_timed_out_jobs(self, partition: AsyncPartition) -> None:
|
386
379
|
for job in partition.jobs:
|
387
380
|
if job.status() == AsyncJobStatus.TIMED_OUT:
|
388
|
-
self._abort_job(job, free_job_allocation=
|
381
|
+
self._abort_job(job, free_job_allocation=True)
|
382
|
+
raise AirbyteTracedException(
|
383
|
+
internal_message=f"Job {job.api_job_id()} has timed out. Try increasing the `polling job timeout`.",
|
384
|
+
failure_type=FailureType.config_error,
|
385
|
+
)
|
389
386
|
|
390
387
|
def _abort_job(self, job: AsyncJob, free_job_allocation: bool = True) -> None:
|
391
388
|
try:
|
@@ -395,7 +392,7 @@ class AsyncJobOrchestrator:
|
|
395
392
|
except Exception as exception:
|
396
393
|
LOGGER.warning(f"Could not free budget for job {job.api_job_id()}: {exception}")
|
397
394
|
|
398
|
-
def
|
395
|
+
def _remove_completed_or_timed_out_jobs(self, partition: AsyncPartition) -> None:
|
399
396
|
"""
|
400
397
|
Remove completed or timed out jobs from the partition.
|
401
398
|
|
@@ -403,7 +400,7 @@ class AsyncJobOrchestrator:
|
|
403
400
|
partition (AsyncPartition): The partition to process.
|
404
401
|
"""
|
405
402
|
for job in partition.jobs:
|
406
|
-
if job.status()
|
403
|
+
if job.status() in [AsyncJobStatus.COMPLETED, AsyncJobStatus.TIMED_OUT]:
|
407
404
|
self._job_tracker.remove_job(job.api_job_id())
|
408
405
|
|
409
406
|
def _reallocate_partition(
|
@@ -418,7 +415,10 @@ class AsyncJobOrchestrator:
|
|
418
415
|
current_running_partitions (list): The list of currently running partitions.
|
419
416
|
partition (AsyncPartition): The partition to reallocate.
|
420
417
|
"""
|
421
|
-
|
418
|
+
for job in partition.jobs:
|
419
|
+
if job.status() != AsyncJobStatus.TIMED_OUT:
|
420
|
+
# allow the FAILED jobs to be re-allocated for partition
|
421
|
+
current_running_partitions.insert(0, partition)
|
422
422
|
|
423
423
|
def _process_partitions_with_errors(self, partition: AsyncPartition) -> None:
|
424
424
|
"""
|
@@ -3,11 +3,9 @@
|
|
3
3
|
import logging
|
4
4
|
import threading
|
5
5
|
import uuid
|
6
|
-
from
|
7
|
-
from typing import Any, Mapping, Set, Union
|
6
|
+
from typing import Set
|
8
7
|
|
9
8
|
from airbyte_cdk.logger import lazy_log
|
10
|
-
from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
|
11
9
|
|
12
10
|
LOGGER = logging.getLogger("airbyte")
|
13
11
|
|
@@ -16,29 +14,15 @@ class ConcurrentJobLimitReached(Exception):
|
|
16
14
|
pass
|
17
15
|
|
18
16
|
|
19
|
-
@dataclass
|
20
17
|
class JobTracker:
|
21
|
-
limit:
|
22
|
-
config: Mapping[str, Any] = field(default_factory=dict)
|
23
|
-
|
24
|
-
def __post_init__(self) -> None:
|
18
|
+
def __init__(self, limit: int):
|
25
19
|
self._jobs: Set[str] = set()
|
26
|
-
|
27
|
-
if isinstance(self.limit, str):
|
28
|
-
try:
|
29
|
-
self.limit = int(
|
30
|
-
InterpolatedString(self.limit, parameters={}).eval(config=self.config)
|
31
|
-
)
|
32
|
-
except Exception as e:
|
33
|
-
LOGGER.warning(
|
34
|
-
f"Error interpolating max job count: {self.limit}. Setting to 1. {e}"
|
35
|
-
)
|
36
|
-
self.limit = 1
|
37
|
-
if self.limit < 1:
|
20
|
+
if limit < 1:
|
38
21
|
LOGGER.warning(
|
39
|
-
f"The `max_concurrent_async_job_count` property is less than 1: {
|
22
|
+
f"The `max_concurrent_async_job_count` property is less than 1: {limit}. Setting to 1. Please update the source manifest to set a valid value."
|
40
23
|
)
|
41
|
-
self._limit =
|
24
|
+
self._limit = 1 if limit < 1 else limit
|
25
|
+
self._lock = threading.Lock()
|
42
26
|
|
43
27
|
def try_to_get_intent(self) -> str:
|
44
28
|
lazy_log(
|
{airbyte_cdk-6.45.0 → airbyte_cdk-6.45.0.dev4100}/airbyte_cdk/sources/declarative/checks/__init__.py
RENAMED
@@ -7,10 +7,7 @@ from typing import Mapping
|
|
7
7
|
from pydantic.v1 import BaseModel
|
8
8
|
|
9
9
|
from airbyte_cdk.sources.declarative.checks.check_dynamic_stream import CheckDynamicStream
|
10
|
-
from airbyte_cdk.sources.declarative.checks.check_stream import
|
11
|
-
CheckStream,
|
12
|
-
DynamicStreamCheckConfig,
|
13
|
-
)
|
10
|
+
from airbyte_cdk.sources.declarative.checks.check_stream import CheckStream
|
14
11
|
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
15
12
|
from airbyte_cdk.sources.declarative.models import (
|
16
13
|
CheckDynamicStream as CheckDynamicStreamModel,
|
@@ -24,4 +21,4 @@ COMPONENTS_CHECKER_TYPE_MAPPING: Mapping[str, type[BaseModel]] = {
|
|
24
21
|
"CheckDynamicStream": CheckDynamicStreamModel,
|
25
22
|
}
|
26
23
|
|
27
|
-
__all__ = ["CheckStream", "CheckDynamicStream", "ConnectionChecker"
|
24
|
+
__all__ = ["CheckStream", "CheckDynamicStream", "ConnectionChecker"]
|
@@ -0,0 +1,56 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
import logging
|
6
|
+
import traceback
|
7
|
+
from dataclasses import InitVar, dataclass
|
8
|
+
from typing import Any, List, Mapping, Tuple
|
9
|
+
|
10
|
+
from airbyte_cdk import AbstractSource
|
11
|
+
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
|
13
|
+
|
14
|
+
|
15
|
+
@dataclass
|
16
|
+
class CheckStream(ConnectionChecker):
|
17
|
+
"""
|
18
|
+
Checks the connections by checking availability of one or many streams selected by the developer
|
19
|
+
|
20
|
+
Attributes:
|
21
|
+
stream_name (List[str]): names of streams to check
|
22
|
+
"""
|
23
|
+
|
24
|
+
stream_names: List[str]
|
25
|
+
parameters: InitVar[Mapping[str, Any]]
|
26
|
+
|
27
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
28
|
+
self._parameters = parameters
|
29
|
+
|
30
|
+
def check_connection(
|
31
|
+
self, source: AbstractSource, logger: logging.Logger, config: Mapping[str, Any]
|
32
|
+
) -> Tuple[bool, Any]:
|
33
|
+
streams = source.streams(config=config)
|
34
|
+
stream_name_to_stream = {s.name: s for s in streams}
|
35
|
+
if len(streams) == 0:
|
36
|
+
return False, f"No streams to connect to from source {source}"
|
37
|
+
for stream_name in self.stream_names:
|
38
|
+
if stream_name not in stream_name_to_stream.keys():
|
39
|
+
raise ValueError(
|
40
|
+
f"{stream_name} is not part of the catalog. Expected one of {stream_name_to_stream.keys()}."
|
41
|
+
)
|
42
|
+
|
43
|
+
stream = stream_name_to_stream[stream_name]
|
44
|
+
availability_strategy = HttpAvailabilityStrategy()
|
45
|
+
try:
|
46
|
+
stream_is_available, reason = availability_strategy.check_availability(
|
47
|
+
stream, logger
|
48
|
+
)
|
49
|
+
if not stream_is_available:
|
50
|
+
return False, reason
|
51
|
+
except Exception as error:
|
52
|
+
logger.error(
|
53
|
+
f"Encountered an error trying to connect to stream {stream_name}. Error: \n {traceback.format_exc()}"
|
54
|
+
)
|
55
|
+
return False, f"Unable to connect to stream {stream_name} - {error}"
|
56
|
+
return True, None
|
@@ -25,6 +25,7 @@ from airbyte_cdk.sources.declarative.incremental.per_partition_with_global impor
|
|
25
25
|
PerPartitionWithGlobalCursor,
|
26
26
|
)
|
27
27
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
28
|
+
from airbyte_cdk.sources.declarative.models import FileUploader
|
28
29
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
29
30
|
ConcurrencyLevel as ConcurrencyLevelModel,
|
30
31
|
)
|
@@ -206,6 +207,10 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
206
207
|
# these legacy Python streams the way we do low-code streams to determine if they are concurrent compatible,
|
207
208
|
# so we need to treat them as synchronous
|
208
209
|
|
210
|
+
supports_file_transfer = (
|
211
|
+
"file_uploader" in name_to_stream_mapping[declarative_stream.name]
|
212
|
+
)
|
213
|
+
|
209
214
|
if (
|
210
215
|
isinstance(declarative_stream, DeclarativeStream)
|
211
216
|
and name_to_stream_mapping[declarative_stream.name]["type"]
|
@@ -322,6 +327,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
322
327
|
else None,
|
323
328
|
logger=self.logger,
|
324
329
|
cursor=cursor,
|
330
|
+
supports_file_transfer=supports_file_transfer,
|
325
331
|
)
|
326
332
|
)
|
327
333
|
elif (
|
@@ -353,6 +359,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
353
359
|
cursor_field=None,
|
354
360
|
logger=self.logger,
|
355
361
|
cursor=final_state_cursor,
|
362
|
+
supports_file_transfer=supports_file_transfer,
|
356
363
|
)
|
357
364
|
)
|
358
365
|
elif (
|
@@ -406,6 +413,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
406
413
|
cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
|
407
414
|
logger=self.logger,
|
408
415
|
cursor=perpartition_cursor,
|
416
|
+
supports_file_transfer=supports_file_transfer,
|
409
417
|
)
|
410
418
|
)
|
411
419
|
else:
|