airbyte-cdk 6.23.0.dev0__tar.gz → 6.23.0.dev1__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.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/PKG-INFO +1 -1
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +23 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +1 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +18 -6
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +78 -2
- airbyte_cdk-6.23.0.dev1/airbyte_cdk/sources/streams/concurrent/clamping.py +99 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py +21 -36
- airbyte_cdk-6.23.0.dev1/airbyte_cdk/sources/streams/concurrent/cursor_types.py +32 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/pyproject.toml +1 -1
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/LICENSE.txt +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -784,6 +784,29 @@ definitions:
|
|
784
784
|
type:
|
785
785
|
type: string
|
786
786
|
enum: [DatetimeBasedCursor]
|
787
|
+
clamping:
|
788
|
+
title: Date Range Clamping
|
789
|
+
description: This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)
|
790
|
+
type: object
|
791
|
+
required:
|
792
|
+
- target
|
793
|
+
properties:
|
794
|
+
target:
|
795
|
+
title: Target
|
796
|
+
description: The period of time that datetime windows will be clamped by
|
797
|
+
# This should ideally be an enum. However, we don't use an enum because we want to allow for connectors
|
798
|
+
# to support interpolation on the connector config to get the target which is an arbitrary string
|
799
|
+
type: string
|
800
|
+
interpolation_context:
|
801
|
+
- config
|
802
|
+
examples:
|
803
|
+
- "DAY"
|
804
|
+
- "WEEK"
|
805
|
+
- "MONTH"
|
806
|
+
- "{{ config['target'] }}"
|
807
|
+
target_details:
|
808
|
+
type: object
|
809
|
+
additionalProperties: true
|
787
810
|
cursor_field:
|
788
811
|
title: Cursor Field
|
789
812
|
description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
|
@@ -147,6 +147,7 @@ class ConcurrentPerPartitionCursor(Cursor):
|
|
147
147
|
< cursor.state[self.cursor_field.cursor_field_key]
|
148
148
|
):
|
149
149
|
self._new_global_cursor = copy.deepcopy(cursor.state)
|
150
|
+
self._emit_state_message()
|
150
151
|
|
151
152
|
def ensure_at_least_one_state_emitted(self) -> None:
|
152
153
|
"""
|
@@ -328,6 +328,16 @@ class LegacyToPerPartitionStateMigration(BaseModel):
|
|
328
328
|
type: Optional[Literal["LegacyToPerPartitionStateMigration"]] = None
|
329
329
|
|
330
330
|
|
331
|
+
class Clamping(BaseModel):
|
332
|
+
target: str = Field(
|
333
|
+
...,
|
334
|
+
description="The period of time that datetime windows will be clamped by",
|
335
|
+
examples=["DAY", "WEEK", "MONTH", "{{ config['target'] }}"],
|
336
|
+
title="Target",
|
337
|
+
)
|
338
|
+
target_details: Optional[Dict[str, Any]] = None
|
339
|
+
|
340
|
+
|
331
341
|
class Algorithm(Enum):
|
332
342
|
HS256 = "HS256"
|
333
343
|
HS384 = "HS384"
|
@@ -719,7 +729,7 @@ class HttpResponseFilter(BaseModel):
|
|
719
729
|
class TypesMap(BaseModel):
|
720
730
|
target_type: Union[str, List[str]]
|
721
731
|
current_type: Union[str, List[str]]
|
722
|
-
condition: Optional[str]
|
732
|
+
condition: Optional[str] = None
|
723
733
|
|
724
734
|
|
725
735
|
class SchemaTypeIdentifier(BaseModel):
|
@@ -797,14 +807,11 @@ class DpathFlattenFields(BaseModel):
|
|
797
807
|
field_path: List[str] = Field(
|
798
808
|
...,
|
799
809
|
description="A path to field that needs to be flattened.",
|
800
|
-
examples=[
|
801
|
-
["data"],
|
802
|
-
["data", "*", "field"],
|
803
|
-
],
|
810
|
+
examples=[["data"], ["data", "*", "field"]],
|
804
811
|
title="Field Path",
|
805
812
|
)
|
806
813
|
delete_origin_value: Optional[bool] = Field(
|
807
|
-
|
814
|
+
None,
|
808
815
|
description="Whether to delete the origin value or keep it. Default is False.",
|
809
816
|
title="Delete Origin Value",
|
810
817
|
)
|
@@ -1454,6 +1461,11 @@ class AuthFlow(BaseModel):
|
|
1454
1461
|
|
1455
1462
|
class DatetimeBasedCursor(BaseModel):
|
1456
1463
|
type: Literal["DatetimeBasedCursor"]
|
1464
|
+
clamping: Optional[Clamping] = Field(
|
1465
|
+
None,
|
1466
|
+
description="This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)",
|
1467
|
+
title="Date Range Clamping",
|
1468
|
+
)
|
1457
1469
|
cursor_field: str = Field(
|
1458
1470
|
...,
|
1459
1471
|
description="The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.",
|
@@ -8,7 +8,6 @@ import datetime
|
|
8
8
|
import importlib
|
9
9
|
import inspect
|
10
10
|
import re
|
11
|
-
import sys
|
12
11
|
from functools import partial
|
13
12
|
from typing import (
|
14
13
|
Any,
|
@@ -104,6 +103,7 @@ from airbyte_cdk.sources.declarative.migrations.legacy_to_per_partition_state_mi
|
|
104
103
|
LegacyToPerPartitionStateMigration,
|
105
104
|
)
|
106
105
|
from airbyte_cdk.sources.declarative.models import (
|
106
|
+
Clamping,
|
107
107
|
CustomStateMigration,
|
108
108
|
)
|
109
109
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
@@ -465,6 +465,15 @@ from airbyte_cdk.sources.message import (
|
|
465
465
|
MessageRepository,
|
466
466
|
NoopMessageRepository,
|
467
467
|
)
|
468
|
+
from airbyte_cdk.sources.streams.concurrent.clamping import (
|
469
|
+
ClampingEndProvider,
|
470
|
+
ClampingStrategy,
|
471
|
+
DayClampingStrategy,
|
472
|
+
MonthClampingStrategy,
|
473
|
+
NoClamping,
|
474
|
+
WeekClampingStrategy,
|
475
|
+
Weekday,
|
476
|
+
)
|
468
477
|
from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, CursorField
|
469
478
|
from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_state_converter import (
|
470
479
|
CustomFormatConcurrentStreamStateConverter,
|
@@ -1065,6 +1074,53 @@ class ModelToComponentFactory:
|
|
1065
1074
|
if evaluated_step:
|
1066
1075
|
step_length = parse_duration(evaluated_step)
|
1067
1076
|
|
1077
|
+
clamping_strategy: ClampingStrategy = NoClamping()
|
1078
|
+
if datetime_based_cursor_model.clamping:
|
1079
|
+
# While it is undesirable to interpolate within the model factory (as opposed to at runtime),
|
1080
|
+
# it is still better than shifting interpolation low-code concept into the ConcurrentCursor runtime
|
1081
|
+
# object which we want to keep agnostic of being low-code
|
1082
|
+
target = InterpolatedString(
|
1083
|
+
string=datetime_based_cursor_model.clamping.target,
|
1084
|
+
parameters=datetime_based_cursor_model.parameters or {},
|
1085
|
+
)
|
1086
|
+
evaluated_target = target.eval(config=config)
|
1087
|
+
match evaluated_target:
|
1088
|
+
case "DAY":
|
1089
|
+
clamping_strategy = DayClampingStrategy()
|
1090
|
+
end_date_provider = ClampingEndProvider(
|
1091
|
+
DayClampingStrategy(is_ceiling=False),
|
1092
|
+
end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
|
1093
|
+
granularity=cursor_granularity or datetime.timedelta(seconds=1),
|
1094
|
+
)
|
1095
|
+
case "WEEK":
|
1096
|
+
if (
|
1097
|
+
not datetime_based_cursor_model.clamping.target_details
|
1098
|
+
or "weekday" not in datetime_based_cursor_model.clamping.target_details
|
1099
|
+
):
|
1100
|
+
raise ValueError(
|
1101
|
+
"Given WEEK clamping, weekday needs to be provided as target_details"
|
1102
|
+
)
|
1103
|
+
weekday = self._assemble_weekday(
|
1104
|
+
datetime_based_cursor_model.clamping.target_details["weekday"]
|
1105
|
+
)
|
1106
|
+
clamping_strategy = WeekClampingStrategy(weekday)
|
1107
|
+
end_date_provider = ClampingEndProvider(
|
1108
|
+
WeekClampingStrategy(weekday, is_ceiling=False),
|
1109
|
+
end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
|
1110
|
+
granularity=cursor_granularity or datetime.timedelta(days=1),
|
1111
|
+
)
|
1112
|
+
case "MONTH":
|
1113
|
+
clamping_strategy = MonthClampingStrategy()
|
1114
|
+
end_date_provider = ClampingEndProvider(
|
1115
|
+
MonthClampingStrategy(is_ceiling=False),
|
1116
|
+
end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
|
1117
|
+
granularity=cursor_granularity or datetime.timedelta(days=1),
|
1118
|
+
)
|
1119
|
+
case _:
|
1120
|
+
raise ValueError(
|
1121
|
+
f"Invalid clamping target {evaluated_target}, expected DAY, WEEK, MONTH"
|
1122
|
+
)
|
1123
|
+
|
1068
1124
|
return ConcurrentCursor(
|
1069
1125
|
stream_name=stream_name,
|
1070
1126
|
stream_namespace=stream_namespace,
|
@@ -1079,7 +1135,27 @@ class ModelToComponentFactory:
|
|
1079
1135
|
lookback_window=lookback_window,
|
1080
1136
|
slice_range=step_length,
|
1081
1137
|
cursor_granularity=cursor_granularity,
|
1082
|
-
|
1138
|
+
clamping_strategy=clamping_strategy,
|
1139
|
+
)
|
1140
|
+
|
1141
|
+
def _assemble_weekday(self, weekday: str) -> Weekday:
|
1142
|
+
match weekday:
|
1143
|
+
case "MONDAY":
|
1144
|
+
return Weekday.MONDAY
|
1145
|
+
case "TUESDAY":
|
1146
|
+
return Weekday.TUESDAY
|
1147
|
+
case "WEDNESDAY":
|
1148
|
+
return Weekday.WEDNESDAY
|
1149
|
+
case "THURSDAY":
|
1150
|
+
return Weekday.THURSDAY
|
1151
|
+
case "FRIDAY":
|
1152
|
+
return Weekday.FRIDAY
|
1153
|
+
case "SATURDAY":
|
1154
|
+
return Weekday.SATURDAY
|
1155
|
+
case "SUNDAY":
|
1156
|
+
return Weekday.SUNDAY
|
1157
|
+
case _:
|
1158
|
+
raise ValueError(f"Unknown weekday {weekday}")
|
1083
1159
|
|
1084
1160
|
def create_concurrent_cursor_from_perpartition_cursor(
|
1085
1161
|
self,
|
@@ -0,0 +1,99 @@
|
|
1
|
+
from abc import ABC
|
2
|
+
from datetime import datetime, timedelta
|
3
|
+
from enum import Enum
|
4
|
+
from typing import Callable
|
5
|
+
|
6
|
+
from airbyte_cdk.sources.streams.concurrent.cursor_types import CursorValueType
|
7
|
+
|
8
|
+
|
9
|
+
class ClampingStrategy(ABC):
|
10
|
+
def clamp(self, value: CursorValueType) -> CursorValueType:
|
11
|
+
raise NotImplementedError()
|
12
|
+
|
13
|
+
|
14
|
+
class NoClamping(ClampingStrategy):
|
15
|
+
def clamp(self, value: CursorValueType) -> CursorValueType:
|
16
|
+
return value
|
17
|
+
|
18
|
+
|
19
|
+
class ClampingEndProvider:
|
20
|
+
def __init__(
|
21
|
+
self,
|
22
|
+
clamping_strategy: ClampingStrategy,
|
23
|
+
end_provider: Callable[[], CursorValueType],
|
24
|
+
granularity: timedelta,
|
25
|
+
) -> None:
|
26
|
+
self._clamping_strategy = clamping_strategy
|
27
|
+
self._end_provider = end_provider
|
28
|
+
self._granularity = granularity
|
29
|
+
|
30
|
+
def __call__(self) -> CursorValueType:
|
31
|
+
return self._clamping_strategy.clamp(self._end_provider()) - self._granularity
|
32
|
+
|
33
|
+
|
34
|
+
class DayClampingStrategy(ClampingStrategy):
|
35
|
+
def __init__(self, is_ceiling: bool = True) -> None:
|
36
|
+
self._is_ceiling = is_ceiling
|
37
|
+
|
38
|
+
def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
|
39
|
+
return_value = value.replace(hour=0, minute=0, second=0, microsecond=0)
|
40
|
+
if self._is_ceiling:
|
41
|
+
return return_value + timedelta(days=1)
|
42
|
+
return return_value
|
43
|
+
|
44
|
+
|
45
|
+
class MonthClampingStrategy(ClampingStrategy):
|
46
|
+
def __init__(self, is_ceiling: bool = True) -> None:
|
47
|
+
self._is_ceiling = is_ceiling
|
48
|
+
|
49
|
+
def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
|
50
|
+
return_value = value.replace(hour=0, minute=0, second=0, microsecond=0)
|
51
|
+
needs_to_round = value.day != 1
|
52
|
+
if not needs_to_round:
|
53
|
+
return return_value
|
54
|
+
|
55
|
+
return self._ceil(return_value) if self._is_ceiling else return_value.replace(day=1)
|
56
|
+
|
57
|
+
def _ceil(self, value: datetime) -> datetime:
|
58
|
+
return value.replace(
|
59
|
+
year=value.year + 1 if value.month == 12 else value.year,
|
60
|
+
month=(value.month % 12) + 1,
|
61
|
+
day=1,
|
62
|
+
hour=0,
|
63
|
+
minute=0,
|
64
|
+
second=0,
|
65
|
+
microsecond=0,
|
66
|
+
)
|
67
|
+
|
68
|
+
|
69
|
+
class Weekday(Enum):
|
70
|
+
"""
|
71
|
+
These integer values map to the same ones used by the Datetime.date.weekday() implementation
|
72
|
+
"""
|
73
|
+
|
74
|
+
MONDAY = 0
|
75
|
+
TUESDAY = 1
|
76
|
+
WEDNESDAY = 2
|
77
|
+
THURSDAY = 3
|
78
|
+
FRIDAY = 4
|
79
|
+
SATURDAY = 5
|
80
|
+
SUNDAY = 6
|
81
|
+
|
82
|
+
|
83
|
+
class WeekClampingStrategy(ClampingStrategy):
|
84
|
+
def __init__(self, day_of_week: Weekday, is_ceiling: bool = True) -> None:
|
85
|
+
self._day_of_week = day_of_week.value
|
86
|
+
self._is_ceiling = is_ceiling
|
87
|
+
|
88
|
+
def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
|
89
|
+
days_diff_to_ceiling = (
|
90
|
+
7 - (value.weekday() - self._day_of_week)
|
91
|
+
if value.weekday() > self._day_of_week
|
92
|
+
else abs(value.weekday() - self._day_of_week)
|
93
|
+
)
|
94
|
+
delta = (
|
95
|
+
timedelta(days_diff_to_ceiling)
|
96
|
+
if self._is_ceiling
|
97
|
+
else timedelta(days_diff_to_ceiling - 7)
|
98
|
+
)
|
99
|
+
return value.replace(hour=0, minute=0, second=0, microsecond=0) + delta
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py
RENAMED
@@ -13,7 +13,6 @@ from typing import (
|
|
13
13
|
Mapping,
|
14
14
|
MutableMapping,
|
15
15
|
Optional,
|
16
|
-
Protocol,
|
17
16
|
Tuple,
|
18
17
|
Union,
|
19
18
|
)
|
@@ -21,6 +20,8 @@ from typing import (
|
|
21
20
|
from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
|
22
21
|
from airbyte_cdk.sources.message import MessageRepository
|
23
22
|
from airbyte_cdk.sources.streams import NO_CURSOR_STATE_KEY
|
23
|
+
from airbyte_cdk.sources.streams.concurrent.clamping import ClampingStrategy, NoClamping
|
24
|
+
from airbyte_cdk.sources.streams.concurrent.cursor_types import CursorValueType, GapType
|
24
25
|
from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
|
25
26
|
from airbyte_cdk.sources.streams.concurrent.partitions.stream_slicer import StreamSlicer
|
26
27
|
from airbyte_cdk.sources.streams.concurrent.state_converters.abstract_stream_state_converter import (
|
@@ -35,36 +36,6 @@ def _extract_value(mapping: Mapping[str, Any], path: List[str]) -> Any:
|
|
35
36
|
return functools.reduce(lambda a, b: a[b], path, mapping)
|
36
37
|
|
37
38
|
|
38
|
-
class GapType(Protocol):
|
39
|
-
"""
|
40
|
-
This is the representation of gaps between two cursor values. Examples:
|
41
|
-
* if cursor values are datetimes, GapType is timedelta
|
42
|
-
* if cursor values are integer, GapType will also be integer
|
43
|
-
"""
|
44
|
-
|
45
|
-
pass
|
46
|
-
|
47
|
-
|
48
|
-
class CursorValueType(Protocol):
|
49
|
-
"""Protocol for annotating comparable types."""
|
50
|
-
|
51
|
-
@abstractmethod
|
52
|
-
def __lt__(self: "CursorValueType", other: "CursorValueType") -> bool:
|
53
|
-
pass
|
54
|
-
|
55
|
-
@abstractmethod
|
56
|
-
def __ge__(self: "CursorValueType", other: "CursorValueType") -> bool:
|
57
|
-
pass
|
58
|
-
|
59
|
-
@abstractmethod
|
60
|
-
def __add__(self: "CursorValueType", other: GapType) -> "CursorValueType":
|
61
|
-
pass
|
62
|
-
|
63
|
-
@abstractmethod
|
64
|
-
def __sub__(self: "CursorValueType", other: GapType) -> "CursorValueType":
|
65
|
-
pass
|
66
|
-
|
67
|
-
|
68
39
|
class CursorField:
|
69
40
|
def __init__(self, cursor_field_key: str) -> None:
|
70
41
|
self.cursor_field_key = cursor_field_key
|
@@ -172,6 +143,7 @@ class ConcurrentCursor(Cursor):
|
|
172
143
|
lookback_window: Optional[GapType] = None,
|
173
144
|
slice_range: Optional[GapType] = None,
|
174
145
|
cursor_granularity: Optional[GapType] = None,
|
146
|
+
clamping_strategy: ClampingStrategy = NoClamping(),
|
175
147
|
) -> None:
|
176
148
|
self._stream_name = stream_name
|
177
149
|
self._stream_namespace = stream_namespace
|
@@ -193,6 +165,7 @@ class ConcurrentCursor(Cursor):
|
|
193
165
|
self._cursor_granularity = cursor_granularity
|
194
166
|
# Flag to track if the logger has been triggered (per stream)
|
195
167
|
self._should_be_synced_logger_triggered = False
|
168
|
+
self._clamping_strategy = clamping_strategy
|
196
169
|
|
197
170
|
@property
|
198
171
|
def state(self) -> MutableMapping[str, Any]:
|
@@ -417,10 +390,12 @@ class ConcurrentCursor(Cursor):
|
|
417
390
|
|
418
391
|
lower = max(lower, self._start) if self._start else lower
|
419
392
|
if not self._slice_range or self._evaluate_upper_safely(lower, self._slice_range) >= upper:
|
393
|
+
clamped_lower = self._clamping_strategy.clamp(lower)
|
394
|
+
clamped_upper = self._clamping_strategy.clamp(upper)
|
420
395
|
start_value, end_value = (
|
421
|
-
(
|
396
|
+
(clamped_lower, clamped_upper - self._cursor_granularity)
|
422
397
|
if self._cursor_granularity and not upper_is_end
|
423
|
-
else (
|
398
|
+
else (clamped_lower, clamped_upper)
|
424
399
|
)
|
425
400
|
yield StreamSlice(
|
426
401
|
partition={},
|
@@ -442,11 +417,21 @@ class ConcurrentCursor(Cursor):
|
|
442
417
|
)
|
443
418
|
has_reached_upper_boundary = current_upper_boundary >= upper
|
444
419
|
|
420
|
+
clamped_upper = (
|
421
|
+
self._clamping_strategy.clamp(current_upper_boundary)
|
422
|
+
if current_upper_boundary != upper
|
423
|
+
else current_upper_boundary
|
424
|
+
)
|
425
|
+
clamped_lower = self._clamping_strategy.clamp(current_lower_boundary)
|
426
|
+
if clamped_lower >= clamped_upper:
|
427
|
+
# clamping collapsed both values which means that it is time to stop processing
|
428
|
+
# FIXME should this be replace by proper end_provider
|
429
|
+
break
|
445
430
|
start_value, end_value = (
|
446
|
-
(
|
431
|
+
(clamped_lower, clamped_upper - self._cursor_granularity)
|
447
432
|
if self._cursor_granularity
|
448
433
|
and (not upper_is_end or not has_reached_upper_boundary)
|
449
|
-
else (
|
434
|
+
else (clamped_lower, clamped_upper)
|
450
435
|
)
|
451
436
|
yield StreamSlice(
|
452
437
|
partition={},
|
@@ -459,7 +444,7 @@ class ConcurrentCursor(Cursor):
|
|
459
444
|
]: self._connector_state_converter.output_format(end_value),
|
460
445
|
},
|
461
446
|
)
|
462
|
-
current_lower_boundary =
|
447
|
+
current_lower_boundary = clamped_upper
|
463
448
|
if current_upper_boundary >= upper:
|
464
449
|
stop_processing = True
|
465
450
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
from abc import abstractmethod
|
2
|
+
from typing import Protocol
|
3
|
+
|
4
|
+
|
5
|
+
class GapType(Protocol):
|
6
|
+
"""
|
7
|
+
This is the representation of gaps between two cursor values. Examples:
|
8
|
+
* if cursor values are datetimes, GapType is timedelta
|
9
|
+
* if cursor values are integer, GapType will also be integer
|
10
|
+
"""
|
11
|
+
|
12
|
+
pass
|
13
|
+
|
14
|
+
|
15
|
+
class CursorValueType(Protocol):
|
16
|
+
"""Protocol for annotating comparable types."""
|
17
|
+
|
18
|
+
@abstractmethod
|
19
|
+
def __lt__(self: "CursorValueType", other: "CursorValueType") -> bool:
|
20
|
+
pass
|
21
|
+
|
22
|
+
@abstractmethod
|
23
|
+
def __ge__(self: "CursorValueType", other: "CursorValueType") -> bool:
|
24
|
+
pass
|
25
|
+
|
26
|
+
@abstractmethod
|
27
|
+
def __add__(self: "CursorValueType", other: GapType) -> "CursorValueType":
|
28
|
+
pass
|
29
|
+
|
30
|
+
@abstractmethod
|
31
|
+
def __sub__(self: "CursorValueType", other: GapType) -> "CursorValueType":
|
32
|
+
pass
|
@@ -23,7 +23,7 @@ classifiers = [
|
|
23
23
|
keywords = ["airbyte", "connector-development-kit", "cdk"]
|
24
24
|
|
25
25
|
# Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
|
26
|
-
version = "6.23.
|
26
|
+
version = "6.23.0dev1" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/message_grouper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/connector_state_manager.py
RENAMED
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/__init__.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py
RENAMED
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/token.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|