airbyte-cdk 6.34.0.dev2__tar.gz → 6.34.1__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.34.0.dev2 → airbyte_cdk-6.34.1}/PKG-INFO +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -75
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +10 -15
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +13 -66
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +6 -2
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +2 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +2 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +14 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +19 -4
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +1 -4
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -3
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +2 -47
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -2
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +4 -4
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/pyproject.toml +1 -1
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/LICENSE.txt +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.34.0.dev2 → airbyte_cdk-6.34.1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -24,7 +24,6 @@ from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import Da
|
|
24
24
|
from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
|
25
25
|
PerPartitionWithGlobalCursor,
|
26
26
|
)
|
27
|
-
from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
|
28
27
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
29
28
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
30
29
|
ConcurrencyLevel as ConcurrencyLevelModel,
|
@@ -36,13 +35,11 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
|
36
35
|
ModelToComponentFactory,
|
37
36
|
)
|
38
37
|
from airbyte_cdk.sources.declarative.partition_routers import AsyncJobPartitionRouter
|
39
|
-
from airbyte_cdk.sources.declarative.requesters import HttpRequester
|
40
38
|
from airbyte_cdk.sources.declarative.retrievers import AsyncRetriever, Retriever, SimpleRetriever
|
41
39
|
from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
|
42
40
|
DeclarativePartitionFactory,
|
43
41
|
StreamSlicerPartitionGenerator,
|
44
42
|
)
|
45
|
-
from airbyte_cdk.sources.declarative.transformations.add_fields import AddFields
|
46
43
|
from airbyte_cdk.sources.declarative.types import ConnectionDefinition
|
47
44
|
from airbyte_cdk.sources.source import TState
|
48
45
|
from airbyte_cdk.sources.streams import Stream
|
@@ -321,9 +318,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
321
318
|
incremental_sync_component_definition
|
322
319
|
and incremental_sync_component_definition.get("type", "")
|
323
320
|
== DatetimeBasedCursorModel.__name__
|
324
|
-
and self._stream_supports_concurrent_partition_processing(
|
325
|
-
declarative_stream=declarative_stream
|
326
|
-
)
|
327
321
|
and hasattr(declarative_stream.retriever, "stream_slicer")
|
328
322
|
and isinstance(
|
329
323
|
declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
|
@@ -390,9 +384,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
390
384
|
and bool(incremental_sync_component_definition)
|
391
385
|
and incremental_sync_component_definition.get("type", "")
|
392
386
|
== DatetimeBasedCursorModel.__name__
|
393
|
-
and self._stream_supports_concurrent_partition_processing(
|
394
|
-
declarative_stream=declarative_stream
|
395
|
-
)
|
396
387
|
and hasattr(declarative_stream.retriever, "stream_slicer")
|
397
388
|
and (
|
398
389
|
isinstance(declarative_stream.retriever.stream_slicer, DatetimeBasedCursor)
|
@@ -400,72 +391,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
400
391
|
)
|
401
392
|
)
|
402
393
|
|
403
|
-
def _stream_supports_concurrent_partition_processing(
|
404
|
-
self, declarative_stream: DeclarativeStream
|
405
|
-
) -> bool:
|
406
|
-
"""
|
407
|
-
Many connectors make use of stream_state during interpolation on a per-partition basis under the assumption that
|
408
|
-
state is updated sequentially. Because the concurrent CDK engine processes different partitions in parallel,
|
409
|
-
stream_state is no longer a thread-safe interpolation context. It would be a race condition because a cursor's
|
410
|
-
stream_state can be updated in any order depending on which stream partition's finish first.
|
411
|
-
|
412
|
-
We should start to move away from depending on the value of stream_state for low-code components that operate
|
413
|
-
per-partition, but we need to gate this otherwise some connectors will be blocked from publishing. See the
|
414
|
-
cdk-migrations.md for the full list of connectors.
|
415
|
-
"""
|
416
|
-
|
417
|
-
if isinstance(declarative_stream.retriever, SimpleRetriever) and isinstance(
|
418
|
-
declarative_stream.retriever.requester, HttpRequester
|
419
|
-
):
|
420
|
-
http_requester = declarative_stream.retriever.requester
|
421
|
-
if "stream_state" in http_requester._path.string:
|
422
|
-
self.logger.warning(
|
423
|
-
f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the HttpRequester which is not thread-safe. Defaulting to synchronous processing"
|
424
|
-
)
|
425
|
-
return False
|
426
|
-
|
427
|
-
request_options_provider = http_requester._request_options_provider
|
428
|
-
if request_options_provider.request_options_contain_stream_state():
|
429
|
-
self.logger.warning(
|
430
|
-
f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the HttpRequester which is not thread-safe. Defaulting to synchronous processing"
|
431
|
-
)
|
432
|
-
return False
|
433
|
-
|
434
|
-
record_selector = declarative_stream.retriever.record_selector
|
435
|
-
if isinstance(record_selector, RecordSelector):
|
436
|
-
if (
|
437
|
-
record_selector.record_filter
|
438
|
-
and not isinstance(
|
439
|
-
record_selector.record_filter, ClientSideIncrementalRecordFilterDecorator
|
440
|
-
)
|
441
|
-
and "stream_state" in record_selector.record_filter.condition
|
442
|
-
):
|
443
|
-
self.logger.warning(
|
444
|
-
f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the RecordFilter which is not thread-safe. Defaulting to synchronous processing"
|
445
|
-
)
|
446
|
-
return False
|
447
|
-
|
448
|
-
for add_fields in [
|
449
|
-
transformation
|
450
|
-
for transformation in record_selector.transformations
|
451
|
-
if isinstance(transformation, AddFields)
|
452
|
-
]:
|
453
|
-
for field in add_fields.fields:
|
454
|
-
if isinstance(field.value, str) and "stream_state" in field.value:
|
455
|
-
self.logger.warning(
|
456
|
-
f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the AddFields which is not thread-safe. Defaulting to synchronous processing"
|
457
|
-
)
|
458
|
-
return False
|
459
|
-
if (
|
460
|
-
isinstance(field.value, InterpolatedString)
|
461
|
-
and "stream_state" in field.value.string
|
462
|
-
):
|
463
|
-
self.logger.warning(
|
464
|
-
f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the AddFields which is not thread-safe. Defaulting to synchronous processing"
|
465
|
-
)
|
466
|
-
return False
|
467
|
-
return True
|
468
|
-
|
469
394
|
@staticmethod
|
470
395
|
def _get_retriever(
|
471
396
|
declarative_stream: DeclarativeStream, stream_state: Mapping[str, Any]
|
@@ -82,7 +82,6 @@ definitions:
|
|
82
82
|
- stream_interval
|
83
83
|
- stream_partition
|
84
84
|
- stream_slice
|
85
|
-
- stream_state
|
86
85
|
examples:
|
87
86
|
- "{{ record['updates'] }}"
|
88
87
|
- "{{ record['MetaData']['LastUpdatedTime'] }}"
|
@@ -1776,7 +1775,6 @@ definitions:
|
|
1776
1775
|
- stream_interval
|
1777
1776
|
- stream_partition
|
1778
1777
|
- stream_slice
|
1779
|
-
- stream_state
|
1780
1778
|
examples:
|
1781
1779
|
- "/products"
|
1782
1780
|
- "/quotes/{{ stream_partition['id'] }}/quote_line_groups"
|
@@ -1826,7 +1824,6 @@ definitions:
|
|
1826
1824
|
- stream_interval
|
1827
1825
|
- stream_partition
|
1828
1826
|
- stream_slice
|
1829
|
-
- stream_state
|
1830
1827
|
examples:
|
1831
1828
|
- |
|
1832
1829
|
[{"clause": {"type": "timestamp", "operator": 10, "parameters":
|
@@ -1844,7 +1841,6 @@ definitions:
|
|
1844
1841
|
- stream_interval
|
1845
1842
|
- stream_partition
|
1846
1843
|
- stream_slice
|
1847
|
-
- stream_state
|
1848
1844
|
examples:
|
1849
1845
|
- sort_order: "ASC"
|
1850
1846
|
sort_field: "CREATED_AT"
|
@@ -1865,7 +1861,6 @@ definitions:
|
|
1865
1861
|
- stream_interval
|
1866
1862
|
- stream_partition
|
1867
1863
|
- stream_slice
|
1868
|
-
- stream_state
|
1869
1864
|
examples:
|
1870
1865
|
- Output-Format: JSON
|
1871
1866
|
- Version: "{{ config['version'] }}"
|
@@ -1882,7 +1877,6 @@ definitions:
|
|
1882
1877
|
- stream_interval
|
1883
1878
|
- stream_partition
|
1884
1879
|
- stream_slice
|
1885
|
-
- stream_state
|
1886
1880
|
examples:
|
1887
1881
|
- unit: "day"
|
1888
1882
|
- query: 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
|
@@ -2237,7 +2231,6 @@ definitions:
|
|
2237
2231
|
interpolation_context:
|
2238
2232
|
- config
|
2239
2233
|
- record
|
2240
|
-
- stream_state
|
2241
2234
|
- stream_slice
|
2242
2235
|
new:
|
2243
2236
|
type: string
|
@@ -2251,7 +2244,6 @@ definitions:
|
|
2251
2244
|
interpolation_context:
|
2252
2245
|
- config
|
2253
2246
|
- record
|
2254
|
-
- stream_state
|
2255
2247
|
- stream_slice
|
2256
2248
|
$parameters:
|
2257
2249
|
type: object
|
@@ -2901,7 +2893,6 @@ definitions:
|
|
2901
2893
|
- stream_interval
|
2902
2894
|
- stream_partition
|
2903
2895
|
- stream_slice
|
2904
|
-
- stream_state
|
2905
2896
|
examples:
|
2906
2897
|
- "{{ record['created_at'] >= stream_interval['start_time'] }}"
|
2907
2898
|
- "{{ record.status in ['active', 'expired'] }}"
|
@@ -3689,12 +3680,6 @@ interpolation:
|
|
3689
3680
|
- title: stream_slice
|
3690
3681
|
description: This variable is deprecated. Use stream_interval or stream_partition instead.
|
3691
3682
|
type: object
|
3692
|
-
- title: stream_state
|
3693
|
-
description: The current state of the stream. The object's keys are defined by the incremental sync's cursor_field the and partition router's values.
|
3694
|
-
type: object
|
3695
|
-
examples:
|
3696
|
-
- created_at: "2020-01-01 00:00:00.000+00:00"
|
3697
|
-
- updated_at: "2020-01-02 00:00:00.000+00:00"
|
3698
3683
|
macros:
|
3699
3684
|
- title: now_utc
|
3700
3685
|
description: Returns the current date and time in the UTC timezone.
|
@@ -3759,6 +3744,16 @@ interpolation:
|
|
3759
3744
|
- "{{ format_datetime(config['start_time'], '%Y-%m-%d') }}"
|
3760
3745
|
- "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}"
|
3761
3746
|
- "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ', '%a, %d %b %Y %H:%M:%S %z') }}"
|
3747
|
+
- title: str_to_datetime
|
3748
|
+
description: Converts a string to a datetime object with UTC timezone.
|
3749
|
+
arguments:
|
3750
|
+
s: The string to convert.
|
3751
|
+
return_type: datetime.datetime
|
3752
|
+
examples:
|
3753
|
+
- "{{ str_to_datetime('2022-01-14') }}"
|
3754
|
+
- "{{ str_to_datetime('2022-01-01 13:45:30') }}"
|
3755
|
+
- "{{ str_to_datetime('2022-01-01T13:45:30+00:00') }}"
|
3756
|
+
- "{{ str_to_datetime('2022-01-01T13:45:30.123456Z') }}"
|
3762
3757
|
filters:
|
3763
3758
|
- title: hash
|
3764
3759
|
description: Convert the specified value to a hashed string.
|
@@ -95,10 +95,6 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
95
95
|
# the oldest partitions can be efficiently removed, maintaining the most recent partitions.
|
96
96
|
self._cursor_per_partition: OrderedDict[str, ConcurrentCursor] = OrderedDict()
|
97
97
|
self._semaphore_per_partition: OrderedDict[str, threading.Semaphore] = OrderedDict()
|
98
|
-
|
99
|
-
# Parent-state tracking: store each partition’s parent state in creation order
|
100
|
-
self._partition_parent_state_map: OrderedDict[str, Mapping[str, Any]] = OrderedDict()
|
101
|
-
|
102
98
|
self._finished_partitions: set[str] = set()
|
103
99
|
self._lock = threading.Lock()
|
104
100
|
self._timer = Timer()
|
@@ -159,45 +155,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
159
155
|
and self._semaphore_per_partition[partition_key]._value == 0
|
160
156
|
):
|
161
157
|
self._update_global_cursor(cursor.state[self.cursor_field.cursor_field_key])
|
162
|
-
|
163
|
-
self._check_and_update_parent_state()
|
164
|
-
|
165
|
-
self._emit_state_message()
|
166
|
-
|
167
|
-
def _check_and_update_parent_state(self) -> None:
|
168
|
-
"""
|
169
|
-
Pop the leftmost partition state from _partition_parent_state_map only if
|
170
|
-
*all partitions* up to (and including) that partition key in _semaphore_per_partition
|
171
|
-
are fully finished (i.e. in _finished_partitions and semaphore._value == 0).
|
172
|
-
"""
|
173
|
-
last_closed_state = None
|
174
|
-
|
175
|
-
while self._partition_parent_state_map:
|
176
|
-
# Look at the earliest partition key in creation order
|
177
|
-
earliest_key = next(iter(self._partition_parent_state_map))
|
178
|
-
|
179
|
-
# Verify ALL partitions from the left up to earliest_key are finished
|
180
|
-
all_left_finished = True
|
181
|
-
for p_key, sem in self._semaphore_per_partition.items():
|
182
|
-
# If any earlier partition is still not finished, we must stop
|
183
|
-
if p_key not in self._finished_partitions or sem._value != 0:
|
184
|
-
all_left_finished = False
|
185
|
-
break
|
186
|
-
# Once we've reached earliest_key in the semaphore order, we can stop checking
|
187
|
-
if p_key == earliest_key:
|
188
|
-
break
|
189
|
-
|
190
|
-
# If the partitions up to earliest_key are not all finished, break the while-loop
|
191
|
-
if not all_left_finished:
|
192
|
-
break
|
193
|
-
|
194
|
-
# Otherwise, pop the leftmost entry from parent-state map
|
195
|
-
_, closed_parent_state = self._partition_parent_state_map.popitem(last=False)
|
196
|
-
last_closed_state = closed_parent_state
|
197
|
-
|
198
|
-
# Update _parent_state if we actually popped at least one partition
|
199
|
-
if last_closed_state is not None:
|
200
|
-
self._parent_state = last_closed_state
|
158
|
+
self._emit_state_message()
|
201
159
|
|
202
160
|
def ensure_at_least_one_state_emitted(self) -> None:
|
203
161
|
"""
|
@@ -243,19 +201,13 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
243
201
|
|
244
202
|
slices = self._partition_router.stream_slices()
|
245
203
|
self._timer.start()
|
246
|
-
for partition
|
247
|
-
|
248
|
-
):
|
249
|
-
yield from self._generate_slices_from_partition(partition, parent_state)
|
204
|
+
for partition in slices:
|
205
|
+
yield from self._generate_slices_from_partition(partition)
|
250
206
|
|
251
|
-
def _generate_slices_from_partition(
|
252
|
-
self, partition: StreamSlice, parent_state: Mapping[str, Any]
|
253
|
-
) -> Iterable[StreamSlice]:
|
207
|
+
def _generate_slices_from_partition(self, partition: StreamSlice) -> Iterable[StreamSlice]:
|
254
208
|
# Ensure the maximum number of partitions is not exceeded
|
255
209
|
self._ensure_partition_limit()
|
256
210
|
|
257
|
-
partition_key = self._to_partition_key(partition.partition)
|
258
|
-
|
259
211
|
cursor = self._cursor_per_partition.get(self._to_partition_key(partition.partition))
|
260
212
|
if not cursor:
|
261
213
|
cursor = self._create_cursor(
|
@@ -264,26 +216,18 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
264
216
|
)
|
265
217
|
with self._lock:
|
266
218
|
self._number_of_partitions += 1
|
267
|
-
self._cursor_per_partition[
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
if (
|
272
|
-
len(self._partition_parent_state_map) == 0
|
273
|
-
or self._partition_parent_state_map[
|
274
|
-
next(reversed(self._partition_parent_state_map))
|
275
|
-
]
|
276
|
-
!= parent_state
|
277
|
-
):
|
278
|
-
self._partition_parent_state_map[partition_key] = deepcopy(parent_state)
|
219
|
+
self._cursor_per_partition[self._to_partition_key(partition.partition)] = cursor
|
220
|
+
self._semaphore_per_partition[self._to_partition_key(partition.partition)] = (
|
221
|
+
threading.Semaphore(0)
|
222
|
+
)
|
279
223
|
|
280
224
|
for cursor_slice, is_last_slice, _ in iterate_with_last_flag_and_state(
|
281
225
|
cursor.stream_slices(),
|
282
226
|
lambda: None,
|
283
227
|
):
|
284
|
-
self._semaphore_per_partition[
|
228
|
+
self._semaphore_per_partition[self._to_partition_key(partition.partition)].release()
|
285
229
|
if is_last_slice:
|
286
|
-
self._finished_partitions.add(
|
230
|
+
self._finished_partitions.add(self._to_partition_key(partition.partition))
|
287
231
|
yield StreamSlice(
|
288
232
|
partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
|
289
233
|
)
|
@@ -394,6 +338,9 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
394
338
|
self._cursor_per_partition[self._to_partition_key(state["partition"])] = (
|
395
339
|
self._create_cursor(state["cursor"])
|
396
340
|
)
|
341
|
+
self._semaphore_per_partition[self._to_partition_key(state["partition"])] = (
|
342
|
+
threading.Semaphore(0)
|
343
|
+
)
|
397
344
|
|
398
345
|
# set default state for missing partitions if it is per partition with fallback to global
|
399
346
|
if self._GLOBAL_STATE_KEY in stream_state:
|
@@ -115,7 +115,9 @@ class GlobalSubstreamCursor(DeclarativeCursor):
|
|
115
115
|
* Yield the last slice. At that point, once there are as many slices yielded as closes, the global slice will be closed too
|
116
116
|
"""
|
117
117
|
slice_generator = (
|
118
|
-
StreamSlice(
|
118
|
+
StreamSlice(
|
119
|
+
partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
|
120
|
+
)
|
119
121
|
for partition in self._partition_router.stream_slices()
|
120
122
|
for cursor_slice in self._stream_cursor.stream_slices()
|
121
123
|
)
|
@@ -131,7 +133,9 @@ class GlobalSubstreamCursor(DeclarativeCursor):
|
|
131
133
|
|
132
134
|
def generate_slices_from_partition(self, partition: StreamSlice) -> Iterable[StreamSlice]:
|
133
135
|
slice_generator = (
|
134
|
-
StreamSlice(
|
136
|
+
StreamSlice(
|
137
|
+
partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
|
138
|
+
)
|
135
139
|
for cursor_slice in self._stream_cursor.stream_slices()
|
136
140
|
)
|
137
141
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
5
|
import ast
|
@@ -11,10 +11,12 @@ from jinja2.environment import Template
|
|
11
11
|
from jinja2.exceptions import UndefinedError
|
12
12
|
from jinja2.sandbox import SandboxedEnvironment
|
13
13
|
|
14
|
+
from airbyte_cdk.models import FailureType
|
14
15
|
from airbyte_cdk.sources.declarative.interpolation.filters import filters
|
15
16
|
from airbyte_cdk.sources.declarative.interpolation.interpolation import Interpolation
|
16
17
|
from airbyte_cdk.sources.declarative.interpolation.macros import macros
|
17
18
|
from airbyte_cdk.sources.types import Config
|
19
|
+
from airbyte_cdk.utils import AirbyteTracedException
|
18
20
|
|
19
21
|
|
20
22
|
class StreamPartitionAccessEnvironment(SandboxedEnvironment):
|
@@ -36,6 +38,10 @@ _ALIASES = {
|
|
36
38
|
"stream_partition": "stream_slice", # Use stream_partition to access partition router's values
|
37
39
|
}
|
38
40
|
|
41
|
+
_UNSUPPORTED_INTERPOLATION_VARIABLES: Mapping[str, str] = {
|
42
|
+
"stream_state": "`stream_state` is no longer supported for interpolation. We recommend using `stream_interval` instead. Please reference the CDK Migration Guide for more information.",
|
43
|
+
}
|
44
|
+
|
39
45
|
# These extensions are not installed so they're not currently a problem,
|
40
46
|
# but we're still explicitly removing them from the jinja context.
|
41
47
|
# At worst, this is documentation that we do NOT want to include these extensions because of the potential security risks
|
@@ -95,6 +101,13 @@ class JinjaInterpolation(Interpolation):
|
|
95
101
|
elif equivalent in context:
|
96
102
|
context[alias] = context[equivalent]
|
97
103
|
|
104
|
+
for variable_name in _UNSUPPORTED_INTERPOLATION_VARIABLES:
|
105
|
+
if variable_name in input_str:
|
106
|
+
raise AirbyteTracedException(
|
107
|
+
message=_UNSUPPORTED_INTERPOLATION_VARIABLES[variable_name],
|
108
|
+
internal_message=_UNSUPPORTED_INTERPOLATION_VARIABLES[variable_name],
|
109
|
+
failure_type=FailureType.config_error,
|
110
|
+
)
|
98
111
|
try:
|
99
112
|
if isinstance(input_str, str):
|
100
113
|
result = self._eval(input_str, context)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c)
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
5
|
import builtins
|
@@ -63,10 +63,24 @@ def timestamp(dt: Union[float, str]) -> Union[int, float]:
|
|
63
63
|
if isinstance(dt, (int, float)):
|
64
64
|
return int(dt)
|
65
65
|
else:
|
66
|
-
return
|
66
|
+
return str_to_datetime(dt).astimezone(pytz.utc).timestamp()
|
67
67
|
|
68
68
|
|
69
|
-
def
|
69
|
+
def str_to_datetime(s: str) -> datetime.datetime:
|
70
|
+
"""
|
71
|
+
Converts a string to a datetime object with UTC timezone
|
72
|
+
|
73
|
+
If the input string does not contain timezone information, UTC is assumed.
|
74
|
+
Supports both basic date strings like "2022-01-14" and datetime strings with optional timezone
|
75
|
+
like "2022-01-01T13:45:30+00:00".
|
76
|
+
|
77
|
+
Usage:
|
78
|
+
`"{{ str_to_datetime('2022-01-14') }}"`
|
79
|
+
|
80
|
+
:param s: string to parse as datetime
|
81
|
+
:return: datetime object in UTC timezone
|
82
|
+
"""
|
83
|
+
|
70
84
|
parsed_date = parser.isoparse(s)
|
71
85
|
if not parsed_date.tzinfo:
|
72
86
|
# Assume UTC if the input does not contain a timezone
|
@@ -155,7 +169,7 @@ def format_datetime(
|
|
155
169
|
if isinstance(dt, datetime.datetime):
|
156
170
|
return dt.strftime(format)
|
157
171
|
dt_datetime = (
|
158
|
-
datetime.datetime.strptime(dt, input_format) if input_format else
|
172
|
+
datetime.datetime.strptime(dt, input_format) if input_format else str_to_datetime(dt)
|
159
173
|
)
|
160
174
|
if format == "%s":
|
161
175
|
return str(int(dt_datetime.timestamp()))
|
@@ -172,5 +186,6 @@ _macros_list = [
|
|
172
186
|
duration,
|
173
187
|
format_datetime,
|
174
188
|
today_with_timezone,
|
189
|
+
str_to_datetime,
|
175
190
|
]
|
176
191
|
macros = {f.__name__: f for f in _macros_list}
|
@@ -10,7 +10,7 @@ from airbyte_cdk.sources.declarative.interpolation.interpolated_nested_mapping i
|
|
10
10
|
NestedMapping,
|
11
11
|
)
|
12
12
|
from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
|
13
|
-
from airbyte_cdk.sources.types import Config, StreamSlice
|
13
|
+
from airbyte_cdk.sources.types import Config, StreamSlice
|
14
14
|
|
15
15
|
|
16
16
|
@dataclass
|
@@ -42,20 +42,17 @@ class InterpolatedNestedRequestInputProvider:
|
|
42
42
|
|
43
43
|
def eval_request_inputs(
|
44
44
|
self,
|
45
|
-
stream_state: Optional[StreamState] = None,
|
46
45
|
stream_slice: Optional[StreamSlice] = None,
|
47
46
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
48
47
|
) -> Mapping[str, Any]:
|
49
48
|
"""
|
50
49
|
Returns the request inputs to set on an outgoing HTTP request
|
51
50
|
|
52
|
-
:param stream_state: The stream state
|
53
51
|
:param stream_slice: The stream slice
|
54
52
|
:param next_page_token: The pagination token
|
55
53
|
:return: The request inputs to set on an outgoing HTTP request
|
56
54
|
"""
|
57
55
|
kwargs = {
|
58
|
-
"stream_state": stream_state,
|
59
56
|
"stream_slice": stream_slice,
|
60
57
|
"next_page_token": next_page_token,
|
61
58
|
}
|
@@ -37,7 +37,6 @@ class InterpolatedRequestInputProvider:
|
|
37
37
|
|
38
38
|
def eval_request_inputs(
|
39
39
|
self,
|
40
|
-
stream_state: Optional[StreamState] = None,
|
41
40
|
stream_slice: Optional[StreamSlice] = None,
|
42
41
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
43
42
|
valid_key_types: Optional[Tuple[Type[Any]]] = None,
|
@@ -46,7 +45,6 @@ class InterpolatedRequestInputProvider:
|
|
46
45
|
"""
|
47
46
|
Returns the request inputs to set on an outgoing HTTP request
|
48
47
|
|
49
|
-
:param stream_state: The stream state
|
50
48
|
:param stream_slice: The stream slice
|
51
49
|
:param next_page_token: The pagination token
|
52
50
|
:param valid_key_types: A tuple of types that the interpolator should allow
|
@@ -54,7 +52,6 @@ class InterpolatedRequestInputProvider:
|
|
54
52
|
:return: The request inputs to set on an outgoing HTTP request
|
55
53
|
"""
|
56
54
|
kwargs = {
|
57
|
-
"stream_state": stream_state,
|
58
55
|
"stream_slice": stream_slice,
|
59
56
|
"next_page_token": next_page_token,
|
60
57
|
}
|