airbyte-cdk 0.67.1__tar.gz → 0.67.3__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/PKG-INFO +3 -3
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/abstract_source.py +30 -69
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/connector_state_manager.py +12 -26
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +32 -14
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +3 -19
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +1 -3
- airbyte-cdk-0.67.3/airbyte_cdk/sources/streams/__init__.py +8 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/adapters.py +3 -19
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/cursor.py +1 -3
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/core.py +36 -34
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk.egg-info/PKG-INFO +3 -3
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk.egg-info/requires.txt +2 -2
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/setup.py +2 -2
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/concurrent_source/test_concurrent_source_adapter.py +2 -1
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/test_parquet_parser.py +51 -6
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/concurrent_incremental_scenarios.py +139 -199
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/incremental_scenarios.py +91 -133
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/concurrent/test_adapters.py +2 -13
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/concurrent/test_file_based_concurrent_cursor.py +2 -2
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/test_scenarios.py +2 -2
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/incremental_scenarios.py +9 -9
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/stream_facade_scenarios.py +5 -5
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_adapters.py +2 -13
- airbyte-cdk-0.67.3/unit_tests/sources/streams/test_stream_read.py +404 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_abstract_source.py +142 -130
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_connector_state_manager.py +3 -124
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_source.py +18 -14
- airbyte-cdk-0.67.1/airbyte_cdk/sources/streams/__init__.py +0 -8
- airbyte-cdk-0.67.1/unit_tests/sources/streams/test_stream_read.py +0 -194
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/LICENSE.txt +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/README.md +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/config_observation.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/logger.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/py.typed +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/create_partial.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/incremental/cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/class_types_registry.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/response_action.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/response_status.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/stream_slicers/cartesian_product_stream_slicer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/deprecated/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/deprecated/base_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/deprecated/client.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_noop_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/singer/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/singer/singer_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/singer/source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partitions/record.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/auth/core.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/auth/oauth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/auth/token.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/utils/stream_helper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/catalog_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/schema_models.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/utils/traced_exception.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk.egg-info/SOURCES.txt +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk.egg-info/dependency_links.txt +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk.egg-info/top_level.txt +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/pyproject.toml +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/setup.cfg +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/source_declarative_manifest/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/source_declarative_manifest/main.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/connector_builder/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/connector_builder/test_connector_builder_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/connector_builder/test_message_grouper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/connector_builder/utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/destinations/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/destinations/test_destination.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/singer/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/singer/test_singer_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/singer/test_singer_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/concurrent_source/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/test_oauth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/test_selective_authenticator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/test_session_token_auth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/test_token_auth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/auth/test_token_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/checks/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/checks/test_check_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/decoders/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/decoders/test_json_decoder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/external_component.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/extractors/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/extractors/test_dpath_extractor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/extractors/test_record_filter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/extractors/test_record_selector.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/incremental/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/incremental/test_datetime_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/incremental/test_per_partition_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/incremental/test_per_partition_cursor_integration.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_filters.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_interpolated_boolean.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_interpolated_mapping.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_interpolated_nested_mapping.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_interpolated_string.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_jinja.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/interpolation/test_macros.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/parsers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/parsers/test_manifest_component_transformer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/parsers/test_manifest_reference_resolver.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/parsers/testing_components.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/partition_routers/test_list_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/partition_routers/test_single_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/partition_routers/test_substream_partition_router.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_constant_backoff.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_exponential_backoff.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_header_helper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_wait_time_from_header.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_wait_until_time_from_header.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/test_composite_error_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/test_default_error_handler.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/test_http_response_filter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/error_handlers/test_response_status.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_cursor_pagination_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_no_paginator.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_offset_increment.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_page_increment.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_request_option.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/paginators/test_stop_condition.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/request_options/test_interpolated_request_options_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/test_http_requester.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/requesters/test_interpolated_request_input_provider.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/retrievers/test_simple_retriever.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/source_test/SourceTest.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/source_test/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/test_default_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/test_inline_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/schema/test_json_file_schema_loader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/states/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/stream_slicers/test_cartesian_product_stream_slicer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/test_create_partial.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/test_declarative_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/test_manifest_declarative_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/declarative/test_yaml_declarative_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/availability_strategy/test_default_file_based_availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/config/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/config/test_abstract_file_based_spec.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/config/test_csv_format.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/config/test_file_based_stream_config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/discovery_policy/test_default_discovery_policy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/test_avro_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/test_csv_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/test_jsonl_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/file_types/test_unstructured_parser.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/in_memory_files_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/avro_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/check_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/csv_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/file_based_source_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/jsonl_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/parquet_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/scenario_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/unstructured_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/user_input_schema_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/scenarios/validation_policy_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/test_default_file_based_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/stream/test_default_file_based_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/test_file_based_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/test_file_based_stream_reader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/file_based/test_schema_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/fixtures/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/fixtures/source_test_fixture.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/message/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/message/test_repository.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/stream_facade_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/test_concurrent_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_scenarios.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/thread_based_concurrent_stream_source_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/scenarios/utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_concurrent_read_processor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_cursor.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_datetime_state_converter.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_default_stream.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_partition_enqueuer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_partition_reader.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/concurrent/test_thread_pool_manager.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/auth/test_auth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/test_availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/http/test_http.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/test_availability_strategy.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/test_call_rate.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/streams/test_streams_core.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_concurrent_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_config.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_http_logger.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_integration_source.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/sources/test_source_read.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/mock_http/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/mock_http/test_matcher.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/mock_http/test_mocker.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/mock_http/test_request.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/mock_http/test_response_builder.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/test/test_entrypoint_wrapper.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/__init__.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_datetime_format_inferrer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_mapping_helpers.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_rate_limiting.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_schema_inferrer.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_secret_utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_stream_status_utils.py +0 -0
- {airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/unit_tests/utils/test_traced_exception.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 0.67.
|
3
|
+
Version: 0.67.3
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://github.com/airbytehq/airbyte
|
6
6
|
Author: Airbyte
|
@@ -48,7 +48,7 @@ Requires-Dist: pytest-mock; extra == "dev"
|
|
48
48
|
Requires-Dist: requests-mock; extra == "dev"
|
49
49
|
Requires-Dist: pytest-httpserver; extra == "dev"
|
50
50
|
Requires-Dist: pandas==2.0.3; extra == "dev"
|
51
|
-
Requires-Dist: pyarrow
|
51
|
+
Requires-Dist: pyarrow~=15.0.0; extra == "dev"
|
52
52
|
Requires-Dist: langchain==0.0.271; extra == "dev"
|
53
53
|
Requires-Dist: openai[embeddings]==0.27.9; extra == "dev"
|
54
54
|
Requires-Dist: cohere==4.21; extra == "dev"
|
@@ -66,7 +66,7 @@ Requires-Dist: sphinx-rtd-theme~=1.0; extra == "sphinx-docs"
|
|
66
66
|
Provides-Extra: file-based
|
67
67
|
Requires-Dist: avro~=1.11.2; extra == "file-based"
|
68
68
|
Requires-Dist: fastavro~=1.8.0; extra == "file-based"
|
69
|
-
Requires-Dist: pyarrow
|
69
|
+
Requires-Dist: pyarrow~=15.0.0; extra == "file-based"
|
70
70
|
Requires-Dist: unstructured==0.10.27; extra == "file-based"
|
71
71
|
Requires-Dist: unstructured[docx,pptx]==0.10.27; extra == "file-based"
|
72
72
|
Requires-Dist: pdf2image==1.16.3; extra == "file-based"
|
@@ -23,7 +23,7 @@ from airbyte_cdk.models import Type as MessageType
|
|
23
23
|
from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
24
24
|
from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository
|
25
25
|
from airbyte_cdk.sources.source import Source
|
26
|
-
from airbyte_cdk.sources.streams import Stream
|
26
|
+
from airbyte_cdk.sources.streams import FULL_REFRESH_SENTINEL_STATE_KEY, Stream
|
27
27
|
from airbyte_cdk.sources.streams.core import StreamData
|
28
28
|
from airbyte_cdk.sources.streams.http.http import HttpStream
|
29
29
|
from airbyte_cdk.sources.utils.record_helper import stream_data_to_airbyte_message
|
@@ -181,10 +181,6 @@ class AbstractSource(Source, ABC):
|
|
181
181
|
def raise_exception_on_missing_stream(self) -> bool:
|
182
182
|
return True
|
183
183
|
|
184
|
-
@property
|
185
|
-
def per_stream_state_enabled(self) -> bool:
|
186
|
-
return True
|
187
|
-
|
188
184
|
def _read_stream(
|
189
185
|
self,
|
190
186
|
logger: logging.Logger,
|
@@ -206,22 +202,32 @@ class AbstractSource(Source, ABC):
|
|
206
202
|
)
|
207
203
|
stream_instance.log_stream_sync_configuration()
|
208
204
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
205
|
+
stream_name = configured_stream.stream.name
|
206
|
+
# The platform always passes stream state regardless of sync mode. We shouldn't need to consider this case within the
|
207
|
+
# connector, but right now we need to prevent accidental usage of the previous stream state
|
208
|
+
stream_state = (
|
209
|
+
state_manager.get_stream_state(stream_name, stream_instance.namespace)
|
210
|
+
if configured_stream.sync_mode == SyncMode.incremental
|
211
|
+
else {}
|
212
|
+
)
|
213
|
+
|
214
|
+
if stream_state and "state" in dir(stream_instance) and not self._stream_state_is_full_refresh(stream_state):
|
215
|
+
stream_instance.state = stream_state # type: ignore # we check that state in the dir(stream_instance)
|
216
|
+
logger.info(f"Setting state of {self.name} stream to {stream_state}")
|
217
|
+
|
218
|
+
record_iterator = stream_instance.read(
|
219
|
+
configured_stream,
|
220
|
+
logger,
|
221
|
+
self._slice_logger,
|
222
|
+
stream_state,
|
223
|
+
state_manager,
|
224
|
+
internal_config,
|
225
|
+
)
|
220
226
|
|
221
227
|
record_counter = 0
|
222
|
-
stream_name = configured_stream.stream.name
|
223
228
|
logger.info(f"Syncing stream: {stream_name} ")
|
224
|
-
for
|
229
|
+
for record_data_or_message in record_iterator:
|
230
|
+
record = self._get_message(record_data_or_message, stream_instance)
|
225
231
|
if record.type == MessageType.RECORD:
|
226
232
|
record_counter += 1
|
227
233
|
if record_counter == 1:
|
@@ -233,62 +239,11 @@ class AbstractSource(Source, ABC):
|
|
233
239
|
|
234
240
|
logger.info(f"Read {record_counter} records from {stream_name} stream")
|
235
241
|
|
236
|
-
def _read_incremental(
|
237
|
-
self,
|
238
|
-
logger: logging.Logger,
|
239
|
-
stream_instance: Stream,
|
240
|
-
configured_stream: ConfiguredAirbyteStream,
|
241
|
-
state_manager: ConnectorStateManager,
|
242
|
-
internal_config: InternalConfig,
|
243
|
-
) -> Iterator[AirbyteMessage]:
|
244
|
-
"""Read stream using incremental algorithm
|
245
|
-
|
246
|
-
:param logger:
|
247
|
-
:param stream_instance:
|
248
|
-
:param configured_stream:
|
249
|
-
:param state_manager:
|
250
|
-
:param internal_config:
|
251
|
-
:return:
|
252
|
-
"""
|
253
|
-
stream_name = configured_stream.stream.name
|
254
|
-
stream_state = state_manager.get_stream_state(stream_name, stream_instance.namespace)
|
255
|
-
|
256
|
-
if stream_state and "state" in dir(stream_instance):
|
257
|
-
stream_instance.state = stream_state # type: ignore # we check that state in the dir(stream_instance)
|
258
|
-
logger.info(f"Setting state of {self.name} stream to {stream_state}")
|
259
|
-
|
260
|
-
for record_data_or_message in stream_instance.read_incremental(
|
261
|
-
configured_stream.cursor_field,
|
262
|
-
logger,
|
263
|
-
self._slice_logger,
|
264
|
-
stream_state,
|
265
|
-
state_manager,
|
266
|
-
self.per_stream_state_enabled,
|
267
|
-
internal_config,
|
268
|
-
):
|
269
|
-
yield self._get_message(record_data_or_message, stream_instance)
|
270
|
-
|
271
242
|
def _emit_queued_messages(self) -> Iterable[AirbyteMessage]:
|
272
243
|
if self.message_repository:
|
273
244
|
yield from self.message_repository.consume_queue()
|
274
245
|
return
|
275
246
|
|
276
|
-
def _read_full_refresh(
|
277
|
-
self,
|
278
|
-
logger: logging.Logger,
|
279
|
-
stream_instance: Stream,
|
280
|
-
configured_stream: ConfiguredAirbyteStream,
|
281
|
-
internal_config: InternalConfig,
|
282
|
-
) -> Iterator[AirbyteMessage]:
|
283
|
-
total_records_counter = 0
|
284
|
-
for record_data_or_message in stream_instance.read_full_refresh(configured_stream.cursor_field, logger, self._slice_logger):
|
285
|
-
message = self._get_message(record_data_or_message, stream_instance)
|
286
|
-
yield message
|
287
|
-
if message.type == MessageType.RECORD:
|
288
|
-
total_records_counter += 1
|
289
|
-
if internal_config.is_limit_reached(total_records_counter):
|
290
|
-
return
|
291
|
-
|
292
247
|
def _get_message(self, record_data_or_message: Union[StreamData, AirbyteMessage], stream: Stream) -> AirbyteMessage:
|
293
248
|
"""
|
294
249
|
Converts the input to an AirbyteMessage if it is a StreamData. Returns the input as is if it is already an AirbyteMessage
|
@@ -317,3 +272,9 @@ class AbstractSource(Source, ABC):
|
|
317
272
|
def _generate_failed_streams_error_message(stream_failures: Mapping[str, AirbyteTracedException]) -> str:
|
318
273
|
failures = ", ".join([f"{stream}: {filter_secrets(exception.__repr__())}" for stream, exception in stream_failures.items()])
|
319
274
|
return f"During the sync, the following streams did not sync successfully: {failures}"
|
275
|
+
|
276
|
+
@staticmethod
|
277
|
+
def _stream_state_is_full_refresh(stream_state: Mapping[str, Any]) -> bool:
|
278
|
+
# For full refresh syncs that don't have a suitable cursor value, we emit a state that contains a sentinel key.
|
279
|
+
# This key is never used by a connector and is needed during a read to skip assigning the incoming state.
|
280
|
+
return FULL_REFRESH_SENTINEL_STATE_KEY in stream_state
|
@@ -77,7 +77,7 @@ class ConnectorStateManager:
|
|
77
77
|
stream_descriptor = HashableStreamDescriptor(name=stream_name, namespace=namespace)
|
78
78
|
self.per_stream_states[stream_descriptor] = AirbyteStateBlob.parse_obj(value)
|
79
79
|
|
80
|
-
def create_state_message(self, stream_name: str, namespace: Optional[str]
|
80
|
+
def create_state_message(self, stream_name: str, namespace: Optional[str]) -> AirbyteMessage:
|
81
81
|
"""
|
82
82
|
Generates an AirbyteMessage using the current per-stream state of a specified stream in either the per-stream or legacy format
|
83
83
|
:param stream_name: The name of the stream for the message that is being created
|
@@ -85,25 +85,18 @@ class ConnectorStateManager:
|
|
85
85
|
:param send_per_stream_state: Decides which state format the message should be generated as
|
86
86
|
:return: The Airbyte state message to be emitted by the connector during a sync
|
87
87
|
"""
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
return AirbyteMessage(
|
99
|
-
type=MessageType.STATE,
|
100
|
-
state=AirbyteStateMessage(
|
101
|
-
type=AirbyteStateType.STREAM,
|
102
|
-
stream=AirbyteStreamState(stream_descriptor=stream_descriptor, stream_state=stream_state),
|
103
|
-
data=dict(self._get_legacy_state()),
|
88
|
+
hashable_descriptor = HashableStreamDescriptor(name=stream_name, namespace=namespace)
|
89
|
+
stream_state = self.per_stream_states.get(hashable_descriptor) or AirbyteStateBlob()
|
90
|
+
|
91
|
+
return AirbyteMessage(
|
92
|
+
type=MessageType.STATE,
|
93
|
+
state=AirbyteStateMessage(
|
94
|
+
type=AirbyteStateType.STREAM,
|
95
|
+
stream=AirbyteStreamState(
|
96
|
+
stream_descriptor=StreamDescriptor(name=stream_name, namespace=namespace), stream_state=stream_state
|
104
97
|
),
|
105
|
-
)
|
106
|
-
|
98
|
+
),
|
99
|
+
)
|
107
100
|
|
108
101
|
@classmethod
|
109
102
|
def _extract_from_state_message(
|
@@ -176,13 +169,6 @@ class ConnectorStateManager:
|
|
176
169
|
streams[stream_descriptor] = AirbyteStateBlob.parse_obj(state_value or {})
|
177
170
|
return streams
|
178
171
|
|
179
|
-
def _get_legacy_state(self) -> Mapping[str, Any]:
|
180
|
-
"""
|
181
|
-
Using the current per-stream state, creates a mapping of all the stream states for the connector being synced
|
182
|
-
:return: A deep copy of the mapping of stream name to stream state value
|
183
|
-
"""
|
184
|
-
return {descriptor.name: state.dict() if state else {} for descriptor, state in self.per_stream_states.items()}
|
185
|
-
|
186
172
|
@staticmethod
|
187
173
|
def _is_legacy_dict_state(state: Union[List[AirbyteStateMessage], MutableMapping[str, Any]]) -> bool:
|
188
174
|
return isinstance(state, dict)
|
@@ -5,7 +5,7 @@
|
|
5
5
|
import json
|
6
6
|
import logging
|
7
7
|
import os
|
8
|
-
from typing import Any, Dict, Iterable, List, Mapping, Optional, Tuple
|
8
|
+
from typing import Any, Dict, Iterable, List, Mapping, Optional, Tuple, Union
|
9
9
|
from urllib.parse import unquote
|
10
10
|
|
11
11
|
import pyarrow as pa
|
@@ -16,7 +16,7 @@ from airbyte_cdk.sources.file_based.file_based_stream_reader import AbstractFile
|
|
16
16
|
from airbyte_cdk.sources.file_based.file_types.file_type_parser import FileTypeParser
|
17
17
|
from airbyte_cdk.sources.file_based.remote_file import RemoteFile
|
18
18
|
from airbyte_cdk.sources.file_based.schema_helpers import SchemaType
|
19
|
-
from pyarrow import Scalar
|
19
|
+
from pyarrow import DictionaryArray, Scalar
|
20
20
|
|
21
21
|
|
22
22
|
class ParquetParser(FileTypeParser):
|
@@ -95,10 +95,23 @@ class ParquetParser(FileTypeParser):
|
|
95
95
|
return FileReadMode.READ_BINARY
|
96
96
|
|
97
97
|
@staticmethod
|
98
|
-
def _to_output_value(parquet_value: Scalar, parquet_format: ParquetFormat) -> Any:
|
98
|
+
def _to_output_value(parquet_value: Union[Scalar, DictionaryArray], parquet_format: ParquetFormat) -> Any:
|
99
|
+
"""
|
100
|
+
Convert an entry in a pyarrow table to a value that can be output by the source.
|
101
|
+
"""
|
102
|
+
if isinstance(parquet_value, DictionaryArray):
|
103
|
+
return ParquetParser._dictionary_array_to_python_value(parquet_value)
|
104
|
+
else:
|
105
|
+
return ParquetParser._scalar_to_python_value(parquet_value, parquet_format)
|
106
|
+
|
107
|
+
@staticmethod
|
108
|
+
def _scalar_to_python_value(parquet_value: Scalar, parquet_format: ParquetFormat) -> Any:
|
99
109
|
"""
|
100
110
|
Convert a pyarrow scalar to a value that can be output by the source.
|
101
111
|
"""
|
112
|
+
if parquet_value.as_py() is None:
|
113
|
+
return None
|
114
|
+
|
102
115
|
# Convert date and datetime objects to isoformat strings
|
103
116
|
if pa.types.is_time(parquet_value.type) or pa.types.is_timestamp(parquet_value.type) or pa.types.is_date(parquet_value.type):
|
104
117
|
return parquet_value.as_py().isoformat()
|
@@ -109,23 +122,14 @@ class ParquetParser(FileTypeParser):
|
|
109
122
|
|
110
123
|
# Decode binary strings to utf-8
|
111
124
|
if ParquetParser._is_binary(parquet_value.type):
|
112
|
-
|
113
|
-
|
114
|
-
return py_value
|
115
|
-
return py_value.decode("utf-8")
|
125
|
+
return parquet_value.as_py().decode("utf-8")
|
126
|
+
|
116
127
|
if pa.types.is_decimal(parquet_value.type):
|
117
128
|
if parquet_format.decimal_as_float:
|
118
129
|
return parquet_value.as_py()
|
119
130
|
else:
|
120
131
|
return str(parquet_value.as_py())
|
121
132
|
|
122
|
-
# Dictionaries are stored as two columns: indices and values
|
123
|
-
# The indices column is an array of integers that maps to the values column
|
124
|
-
if pa.types.is_dictionary(parquet_value.type):
|
125
|
-
return {
|
126
|
-
"indices": parquet_value.indices.tolist(),
|
127
|
-
"values": parquet_value.dictionary.tolist(),
|
128
|
-
}
|
129
133
|
if pa.types.is_map(parquet_value.type):
|
130
134
|
return {k: v for k, v in parquet_value.as_py()}
|
131
135
|
|
@@ -149,6 +153,20 @@ class ParquetParser(FileTypeParser):
|
|
149
153
|
else:
|
150
154
|
return parquet_value.as_py()
|
151
155
|
|
156
|
+
@staticmethod
|
157
|
+
def _dictionary_array_to_python_value(parquet_value: DictionaryArray) -> Dict[str, Any]:
|
158
|
+
"""
|
159
|
+
Convert a pyarrow dictionary array to a value that can be output by the source.
|
160
|
+
|
161
|
+
Dictionaries are stored as two columns: indices and values
|
162
|
+
The indices column is an array of integers that maps to the values column
|
163
|
+
"""
|
164
|
+
|
165
|
+
return {
|
166
|
+
"indices": parquet_value.indices.tolist(),
|
167
|
+
"values": parquet_value.dictionary.tolist(),
|
168
|
+
}
|
169
|
+
|
152
170
|
@staticmethod
|
153
171
|
def parquet_type_to_schema_type(parquet_type: pa.DataType, parquet_format: ParquetFormat) -> Mapping[str, str]:
|
154
172
|
"""
|
@@ -7,7 +7,7 @@ import logging
|
|
7
7
|
from functools import lru_cache
|
8
8
|
from typing import TYPE_CHECKING, Any, Iterable, List, Mapping, MutableMapping, Optional, Union
|
9
9
|
|
10
|
-
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, Level, SyncMode, Type
|
10
|
+
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, ConfiguredAirbyteStream, Level, SyncMode, Type
|
11
11
|
from airbyte_cdk.sources import AbstractSource
|
12
12
|
from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
13
13
|
from airbyte_cdk.sources.file_based.availability_strategy import (
|
@@ -156,29 +156,13 @@ class FileBasedStreamFacade(AbstractStreamFacade[DefaultStream], AbstractFileBas
|
|
156
156
|
def get_underlying_stream(self) -> DefaultStream:
|
157
157
|
return self._abstract_stream
|
158
158
|
|
159
|
-
def
|
159
|
+
def read(
|
160
160
|
self,
|
161
|
-
|
162
|
-
logger: logging.Logger,
|
163
|
-
slice_logger: SliceLogger,
|
164
|
-
) -> Iterable[StreamData]:
|
165
|
-
"""
|
166
|
-
Read full refresh. Delegate to the underlying AbstractStream, ignoring all the parameters
|
167
|
-
:param cursor_field: (ignored)
|
168
|
-
:param logger: (ignored)
|
169
|
-
:param slice_logger: (ignored)
|
170
|
-
:return: Iterable of StreamData
|
171
|
-
"""
|
172
|
-
yield from self._read_records()
|
173
|
-
|
174
|
-
def read_incremental(
|
175
|
-
self,
|
176
|
-
cursor_field: Optional[List[str]],
|
161
|
+
configured_stream: ConfiguredAirbyteStream,
|
177
162
|
logger: logging.Logger,
|
178
163
|
slice_logger: SliceLogger,
|
179
164
|
stream_state: MutableMapping[str, Any],
|
180
165
|
state_manager: ConnectorStateManager,
|
181
|
-
per_stream_state_enabled: bool,
|
182
166
|
internal_config: InternalConfig,
|
183
167
|
) -> Iterable[StreamData]:
|
184
168
|
yield from self._read_records()
|
@@ -155,9 +155,7 @@ class FileBasedConcurrentCursor(AbstractConcurrentFileBasedCursor):
|
|
155
155
|
self._stream_namespace,
|
156
156
|
new_state,
|
157
157
|
)
|
158
|
-
state_message = self._connector_state_manager.create_state_message(
|
159
|
-
self._stream_name, self._stream_namespace, send_per_stream_state=True
|
160
|
-
)
|
158
|
+
state_message = self._connector_state_manager.create_state_message(self._stream_name, self._stream_namespace)
|
161
159
|
self._message_repository.emit_message(state_message)
|
162
160
|
|
163
161
|
def _get_new_cursor_value(self) -> str:
|
{airbyte-cdk-0.67.1 → airbyte-cdk-0.67.3}/airbyte_cdk/sources/streams/concurrent/adapters.py
RENAMED
@@ -8,7 +8,7 @@ import logging
|
|
8
8
|
from functools import lru_cache
|
9
9
|
from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple, Union
|
10
10
|
|
11
|
-
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, AirbyteStream, Level, SyncMode, Type
|
11
|
+
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, AirbyteStream, ConfiguredAirbyteStream, Level, SyncMode, Type
|
12
12
|
from airbyte_cdk.sources import AbstractSource, Source
|
13
13
|
from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
14
14
|
from airbyte_cdk.sources.message import MessageRepository
|
@@ -116,29 +116,13 @@ class StreamFacade(AbstractStreamFacade[DefaultStream], Stream):
|
|
116
116
|
self._slice_logger = slice_logger
|
117
117
|
self._logger = logger
|
118
118
|
|
119
|
-
def
|
119
|
+
def read(
|
120
120
|
self,
|
121
|
-
|
122
|
-
logger: logging.Logger,
|
123
|
-
slice_logger: SliceLogger,
|
124
|
-
) -> Iterable[StreamData]:
|
125
|
-
"""
|
126
|
-
Read full refresh. Delegate to the underlying AbstractStream, ignoring all the parameters
|
127
|
-
:param cursor_field: (ignored)
|
128
|
-
:param logger: (ignored)
|
129
|
-
:param slice_logger: (ignored)
|
130
|
-
:return: Iterable of StreamData
|
131
|
-
"""
|
132
|
-
yield from self._read_records()
|
133
|
-
|
134
|
-
def read_incremental(
|
135
|
-
self,
|
136
|
-
cursor_field: Optional[List[str]],
|
121
|
+
configured_stream: ConfiguredAirbyteStream,
|
137
122
|
logger: logging.Logger,
|
138
123
|
slice_logger: SliceLogger,
|
139
124
|
stream_state: MutableMapping[str, Any],
|
140
125
|
state_manager: ConnectorStateManager,
|
141
|
-
per_stream_state_enabled: bool,
|
142
126
|
internal_config: InternalConfig,
|
143
127
|
) -> Iterable[StreamData]:
|
144
128
|
yield from self._read_records()
|
@@ -184,9 +184,7 @@ class ConcurrentCursor(Cursor):
|
|
184
184
|
# TODO: if we migrate stored state to the concurrent state format
|
185
185
|
# (aka stop calling self._connector_state_converter.convert_to_sequential_state`), we'll need to cast datetimes to string or
|
186
186
|
# int before emitting state
|
187
|
-
state_message = self._connector_state_manager.create_state_message(
|
188
|
-
self._stream_name, self._stream_namespace, send_per_stream_state=True
|
189
|
-
)
|
187
|
+
state_message = self._connector_state_manager.create_state_message(self._stream_name, self._stream_namespace)
|
190
188
|
self._message_repository.emit_message(state_message)
|
191
189
|
|
192
190
|
def _merge_partitions(self) -> None:
|
@@ -11,7 +11,7 @@ from functools import lru_cache
|
|
11
11
|
from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple, Union
|
12
12
|
|
13
13
|
import airbyte_cdk.sources.utils.casing as casing
|
14
|
-
from airbyte_cdk.models import AirbyteMessage, AirbyteStream, SyncMode
|
14
|
+
from airbyte_cdk.models import AirbyteMessage, AirbyteStream, ConfiguredAirbyteStream, SyncMode
|
15
15
|
from airbyte_cdk.models import Type as MessageType
|
16
16
|
|
17
17
|
# list of all possible HTTP methods which can be used for sending of request bodies
|
@@ -31,6 +31,10 @@ StreamData = Union[Mapping[str, Any], AirbyteMessage]
|
|
31
31
|
|
32
32
|
JsonSchema = Mapping[str, Any]
|
33
33
|
|
34
|
+
# Streams that only support full refresh don't have a suitable cursor so this sentinel
|
35
|
+
# value is used to indicate that stream should not load the incoming state value
|
36
|
+
FULL_REFRESH_SENTINEL_STATE_KEY = "__ab_full_refresh_state_message"
|
37
|
+
|
34
38
|
|
35
39
|
def package_name_from_class(cls: object) -> str:
|
36
40
|
"""Find the package name given a class name"""
|
@@ -107,39 +111,24 @@ class Stream(ABC):
|
|
107
111
|
"""
|
108
112
|
return None
|
109
113
|
|
110
|
-
def
|
111
|
-
self,
|
112
|
-
cursor_field: Optional[List[str]],
|
113
|
-
logger: logging.Logger,
|
114
|
-
slice_logger: SliceLogger,
|
115
|
-
) -> Iterable[StreamData]:
|
116
|
-
slices = self.stream_slices(sync_mode=SyncMode.full_refresh, cursor_field=cursor_field)
|
117
|
-
logger.debug(f"Processing stream slices for {self.name} (sync_mode: full_refresh)", extra={"stream_slices": slices})
|
118
|
-
for _slice in slices:
|
119
|
-
if slice_logger.should_log_slice_message(logger):
|
120
|
-
yield slice_logger.create_slice_log_message(_slice)
|
121
|
-
yield from self.read_records(
|
122
|
-
stream_slice=_slice,
|
123
|
-
sync_mode=SyncMode.full_refresh,
|
124
|
-
cursor_field=cursor_field,
|
125
|
-
)
|
126
|
-
|
127
|
-
def read_incremental( # type: ignore # ignoring typing for ConnectorStateManager because of circular dependencies
|
114
|
+
def read( # type: ignore # ignoring typing for ConnectorStateManager because of circular dependencies
|
128
115
|
self,
|
129
|
-
|
116
|
+
configured_stream: ConfiguredAirbyteStream,
|
130
117
|
logger: logging.Logger,
|
131
118
|
slice_logger: SliceLogger,
|
132
119
|
stream_state: MutableMapping[str, Any],
|
133
120
|
state_manager,
|
134
|
-
per_stream_state_enabled: bool,
|
135
121
|
internal_config: InternalConfig,
|
136
122
|
) -> Iterable[StreamData]:
|
123
|
+
sync_mode = configured_stream.sync_mode
|
124
|
+
cursor_field = configured_stream.cursor_field
|
125
|
+
|
137
126
|
slices = self.stream_slices(
|
138
127
|
cursor_field=cursor_field,
|
139
|
-
sync_mode=
|
128
|
+
sync_mode=sync_mode, # todo: change this interface to no longer rely on sync_mode for behavior
|
140
129
|
stream_state=stream_state,
|
141
130
|
)
|
142
|
-
logger.debug(f"Processing stream slices for {self.name} (sync_mode:
|
131
|
+
logger.debug(f"Processing stream slices for {self.name} (sync_mode: {sync_mode.name})", extra={"stream_slices": slices})
|
143
132
|
|
144
133
|
has_slices = False
|
145
134
|
record_counter = 0
|
@@ -148,7 +137,7 @@ class Stream(ABC):
|
|
148
137
|
if slice_logger.should_log_slice_message(logger):
|
149
138
|
yield slice_logger.create_slice_log_message(_slice)
|
150
139
|
records = self.read_records(
|
151
|
-
sync_mode=
|
140
|
+
sync_mode=sync_mode, # todo: change this interface to no longer rely on sync_mode for behavior
|
152
141
|
stream_slice=_slice,
|
153
142
|
stream_state=stream_state,
|
154
143
|
cursor_field=cursor_field or None,
|
@@ -160,20 +149,34 @@ class Stream(ABC):
|
|
160
149
|
):
|
161
150
|
record_data = record_data_or_message if isinstance(record_data_or_message, Mapping) else record_data_or_message.record
|
162
151
|
stream_state = self.get_updated_state(stream_state, record_data)
|
163
|
-
checkpoint_interval = self.state_checkpoint_interval
|
164
152
|
record_counter += 1
|
165
|
-
|
166
|
-
|
153
|
+
|
154
|
+
if sync_mode == SyncMode.incremental:
|
155
|
+
# Checkpoint intervals are a bit controversial, but see below comment about why we're gating it right now
|
156
|
+
checkpoint_interval = self.state_checkpoint_interval
|
157
|
+
if checkpoint_interval and record_counter % checkpoint_interval == 0:
|
158
|
+
airbyte_state_message = self._checkpoint_state(stream_state, state_manager)
|
159
|
+
yield airbyte_state_message
|
167
160
|
|
168
161
|
if internal_config.is_limit_reached(record_counter):
|
169
162
|
break
|
170
163
|
|
171
|
-
|
164
|
+
if sync_mode == SyncMode.incremental:
|
165
|
+
# Even though right now, only incremental streams running as incremental mode will emit periodic checkpoints. Rather than
|
166
|
+
# overhaul how refresh interacts with the platform, this positions the code so that once we want to start emitting
|
167
|
+
# periodic checkpoints in full refresh mode it can be done here
|
168
|
+
airbyte_state_message = self._checkpoint_state(stream_state, state_manager)
|
169
|
+
yield airbyte_state_message
|
170
|
+
|
171
|
+
if not has_slices or sync_mode == SyncMode.full_refresh:
|
172
|
+
if sync_mode == SyncMode.full_refresh:
|
173
|
+
# We use a dummy state if there is no suitable value provided by full_refresh streams that do not have a valid cursor.
|
174
|
+
# Incremental streams running full_refresh mode emit a meaningful state
|
175
|
+
stream_state = stream_state or {FULL_REFRESH_SENTINEL_STATE_KEY: True}
|
172
176
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
yield checkpoint
|
177
|
+
# We should always emit a final state message for full refresh sync or streams that do not have any slices
|
178
|
+
airbyte_state_message = self._checkpoint_state(stream_state, state_manager)
|
179
|
+
yield airbyte_state_message
|
177
180
|
|
178
181
|
@abstractmethod
|
179
182
|
def read_records(
|
@@ -361,7 +364,6 @@ class Stream(ABC):
|
|
361
364
|
self,
|
362
365
|
stream_state: Mapping[str, Any],
|
363
366
|
state_manager,
|
364
|
-
per_stream_state_enabled: bool,
|
365
367
|
) -> AirbyteMessage:
|
366
368
|
# First attempt to retrieve the current state using the stream's state property. We receive an AttributeError if the state
|
367
369
|
# property is not implemented by the stream instance and as a fallback, use the stream_state retrieved from the stream
|
@@ -373,4 +375,4 @@ class Stream(ABC):
|
|
373
375
|
|
374
376
|
except AttributeError:
|
375
377
|
state_manager.update_state_for_stream(self.name, self.namespace, stream_state)
|
376
|
-
return state_manager.create_state_message(self.name, self.namespace
|
378
|
+
return state_manager.create_state_message(self.name, self.namespace)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 0.67.
|
3
|
+
Version: 0.67.3
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://github.com/airbytehq/airbyte
|
6
6
|
Author: Airbyte
|
@@ -48,7 +48,7 @@ Requires-Dist: pytest-mock; extra == "dev"
|
|
48
48
|
Requires-Dist: requests-mock; extra == "dev"
|
49
49
|
Requires-Dist: pytest-httpserver; extra == "dev"
|
50
50
|
Requires-Dist: pandas==2.0.3; extra == "dev"
|
51
|
-
Requires-Dist: pyarrow
|
51
|
+
Requires-Dist: pyarrow~=15.0.0; extra == "dev"
|
52
52
|
Requires-Dist: langchain==0.0.271; extra == "dev"
|
53
53
|
Requires-Dist: openai[embeddings]==0.27.9; extra == "dev"
|
54
54
|
Requires-Dist: cohere==4.21; extra == "dev"
|
@@ -66,7 +66,7 @@ Requires-Dist: sphinx-rtd-theme~=1.0; extra == "sphinx-docs"
|
|
66
66
|
Provides-Extra: file-based
|
67
67
|
Requires-Dist: avro~=1.11.2; extra == "file-based"
|
68
68
|
Requires-Dist: fastavro~=1.8.0; extra == "file-based"
|
69
|
-
Requires-Dist: pyarrow
|
69
|
+
Requires-Dist: pyarrow~=15.0.0; extra == "file-based"
|
70
70
|
Requires-Dist: unstructured==0.10.27; extra == "file-based"
|
71
71
|
Requires-Dist: unstructured[docx,pptx]==0.10.27; extra == "file-based"
|
72
72
|
Requires-Dist: pdf2image==1.16.3; extra == "file-based"
|
@@ -28,7 +28,7 @@ pytest-mock
|
|
28
28
|
requests-mock
|
29
29
|
pytest-httpserver
|
30
30
|
pandas==2.0.3
|
31
|
-
pyarrow
|
31
|
+
pyarrow~=15.0.0
|
32
32
|
langchain==0.0.271
|
33
33
|
openai[embeddings]==0.27.9
|
34
34
|
cohere==4.21
|
@@ -44,7 +44,7 @@ markdown
|
|
44
44
|
[file-based]
|
45
45
|
avro~=1.11.2
|
46
46
|
fastavro~=1.8.0
|
47
|
-
pyarrow
|
47
|
+
pyarrow~=15.0.0
|
48
48
|
unstructured==0.10.27
|
49
49
|
unstructured[docx,pptx]==0.10.27
|
50
50
|
pdf2image==1.16.3
|
@@ -15,7 +15,7 @@ README = (HERE / "README.md").read_text()
|
|
15
15
|
|
16
16
|
avro_dependency = "avro~=1.11.2"
|
17
17
|
fastavro_dependency = "fastavro~=1.8.0"
|
18
|
-
pyarrow_dependency = "pyarrow
|
18
|
+
pyarrow_dependency = "pyarrow~=15.0.0"
|
19
19
|
|
20
20
|
langchain_dependency = "langchain==0.0.271"
|
21
21
|
openai_dependency = "openai[embeddings]==0.27.9"
|
@@ -36,7 +36,7 @@ setup(
|
|
36
36
|
name="airbyte-cdk",
|
37
37
|
# The version of the airbyte-cdk package is used at runtime to validate manifests. That validation must be
|
38
38
|
# updated if our semver format changes such as using release candidate versions.
|
39
|
-
version="0.67.
|
39
|
+
version="0.67.3",
|
40
40
|
description="A framework for writing Airbyte Connectors.",
|
41
41
|
long_description=README,
|
42
42
|
long_description_content_type="text/markdown",
|
@@ -81,13 +81,14 @@ def test_concurrent_source_adapter():
|
|
81
81
|
def _mock_stream(name: str, data=[], available: bool = True):
|
82
82
|
s = Mock()
|
83
83
|
s.name = name
|
84
|
+
s.namespace = None
|
84
85
|
s.as_airbyte_stream.return_value = AirbyteStream(
|
85
86
|
name=name,
|
86
87
|
json_schema={},
|
87
88
|
supported_sync_modes=[SyncMode.full_refresh],
|
88
89
|
)
|
89
90
|
s.check_availability.return_value = (True, None) if available else (False, "not available")
|
90
|
-
s.
|
91
|
+
s.read.return_value = iter(data)
|
91
92
|
s.primary_key = None
|
92
93
|
return s
|
93
94
|
|