airbyte-cdk 6.17.1.dev0__tar.gz → 6.18.0.dev0__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/PKG-INFO +1 -1
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -69
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +15 -1
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +30 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +5 -3
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -6
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -14
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +30 -12
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +24 -78
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/pyproject.toml +1 -1
- airbyte_cdk-6.17.1.dev0/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -346
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/README.md +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.17.1.dev0 → airbyte_cdk-6.18.0.dev0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -20,9 +20,6 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
|
|
20
20
|
ClientSideIncrementalRecordFilterDecorator,
|
21
21
|
)
|
22
22
|
from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
|
23
|
-
from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
|
24
|
-
PerPartitionWithGlobalCursor,
|
25
|
-
)
|
26
23
|
from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
|
27
24
|
from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
|
28
25
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
@@ -307,72 +304,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
307
304
|
cursor=final_state_cursor,
|
308
305
|
)
|
309
306
|
)
|
310
|
-
elif (
|
311
|
-
incremental_sync_component_definition
|
312
|
-
and incremental_sync_component_definition.get("type", "")
|
313
|
-
== DatetimeBasedCursorModel.__name__
|
314
|
-
and self._stream_supports_concurrent_partition_processing(
|
315
|
-
declarative_stream=declarative_stream
|
316
|
-
)
|
317
|
-
and hasattr(declarative_stream.retriever, "stream_slicer")
|
318
|
-
and isinstance(
|
319
|
-
declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
|
320
|
-
)
|
321
|
-
):
|
322
|
-
stream_state = state_manager.get_stream_state(
|
323
|
-
stream_name=declarative_stream.name, namespace=declarative_stream.namespace
|
324
|
-
)
|
325
|
-
partition_router = declarative_stream.retriever.stream_slicer._partition_router
|
326
|
-
|
327
|
-
cursor = self._constructor.create_concurrent_cursor_from_perpartition_cursor(
|
328
|
-
state_manager=state_manager,
|
329
|
-
model_type=DatetimeBasedCursorModel,
|
330
|
-
component_definition=incremental_sync_component_definition,
|
331
|
-
stream_name=declarative_stream.name,
|
332
|
-
stream_namespace=declarative_stream.namespace,
|
333
|
-
config=config or {},
|
334
|
-
stream_state=stream_state,
|
335
|
-
partition_router=partition_router,
|
336
|
-
)
|
337
|
-
|
338
|
-
retriever = declarative_stream.retriever
|
339
|
-
|
340
|
-
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
341
|
-
# low-code framework because state management is handled through the ConcurrentCursor.
|
342
|
-
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
343
|
-
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
344
|
-
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
345
|
-
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
346
|
-
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
347
|
-
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
348
|
-
if retriever.cursor:
|
349
|
-
retriever.cursor.set_initial_state(stream_state=stream_state)
|
350
|
-
# We zero it out here, but since this is a cursor reference, the state is still properly
|
351
|
-
# instantiated for the other components that reference it
|
352
|
-
retriever.cursor = None
|
353
|
-
|
354
|
-
partition_generator = StreamSlicerPartitionGenerator(
|
355
|
-
DeclarativePartitionFactory(
|
356
|
-
declarative_stream.name,
|
357
|
-
declarative_stream.get_json_schema(),
|
358
|
-
retriever,
|
359
|
-
self.message_repository,
|
360
|
-
),
|
361
|
-
cursor,
|
362
|
-
)
|
363
|
-
|
364
|
-
concurrent_streams.append(
|
365
|
-
DefaultStream(
|
366
|
-
partition_generator=partition_generator,
|
367
|
-
name=declarative_stream.name,
|
368
|
-
json_schema=declarative_stream.get_json_schema(),
|
369
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
370
|
-
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
371
|
-
cursor_field=cursor.cursor_field.cursor_field_key,
|
372
|
-
logger=self.logger,
|
373
|
-
cursor=cursor,
|
374
|
-
)
|
375
|
-
)
|
376
307
|
else:
|
377
308
|
synchronous_streams.append(declarative_stream)
|
378
309
|
else:
|
@@ -678,7 +678,7 @@ definitions:
|
|
678
678
|
properties:
|
679
679
|
type:
|
680
680
|
type: string
|
681
|
-
enum: [
|
681
|
+
enum: [CustomSchemaNormalization]
|
682
682
|
class_name:
|
683
683
|
title: Class Name
|
684
684
|
description: Fully-qualified name of the class that will be implementing the custom normalization. The format is `source_<name>.<package>.<class_name>`.
|
@@ -2014,6 +2014,20 @@ definitions:
|
|
2014
2014
|
$parameters:
|
2015
2015
|
type: object
|
2016
2016
|
additionalProperties: true
|
2017
|
+
JsonParser:
|
2018
|
+
title: JsonParser
|
2019
|
+
description: Parser used for parsing str, bytes, or bytearray data and returning data in a dictionary format.
|
2020
|
+
type: object
|
2021
|
+
additionalProperties: true
|
2022
|
+
required:
|
2023
|
+
- type
|
2024
|
+
properties:
|
2025
|
+
type:
|
2026
|
+
type: string
|
2027
|
+
enum: [JsonParser]
|
2028
|
+
encoding:
|
2029
|
+
type: string
|
2030
|
+
default: utf-8
|
2017
2031
|
ListPartitionRouter:
|
2018
2032
|
title: List Partition Router
|
2019
2033
|
description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
|
@@ -9,7 +9,9 @@ from typing import Any, Generator, MutableMapping, Optional
|
|
9
9
|
|
10
10
|
import requests
|
11
11
|
|
12
|
+
from airbyte_cdk.models import FailureType
|
12
13
|
from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
|
14
|
+
from airbyte_cdk.utils import AirbyteTracedException
|
13
15
|
|
14
16
|
logger = logging.getLogger("airbyte")
|
15
17
|
|
@@ -42,6 +44,34 @@ class GzipParser(Parser):
|
|
42
44
|
yield from self.inner_parser.parse(gzipobj)
|
43
45
|
|
44
46
|
|
47
|
+
@dataclass
|
48
|
+
class JsonParser(Parser):
|
49
|
+
"""
|
50
|
+
Parser strategy for converting JSON-structure str, bytes, or bytearray data into MutableMapping[str, Any].
|
51
|
+
"""
|
52
|
+
|
53
|
+
encoding: str = "utf-8"
|
54
|
+
|
55
|
+
def parse(self, data: BufferedIOBase) -> Generator[MutableMapping[str, Any], None, None]:
|
56
|
+
raw_data = data.read()
|
57
|
+
try:
|
58
|
+
body_json = json.loads(raw_data.decode(self.encoding))
|
59
|
+
except json.JSONDecodeError as exc:
|
60
|
+
raise AirbyteTracedException(
|
61
|
+
message="JSON data failed to be parsed. See logs for more inforation.",
|
62
|
+
internal_message=f"JSON data faild to be parsed: {exc=}",
|
63
|
+
failure_type=FailureType.system_error,
|
64
|
+
exception=exc,
|
65
|
+
)
|
66
|
+
|
67
|
+
if not isinstance(body_json, list):
|
68
|
+
body_json = [body_json]
|
69
|
+
if len(body_json) == 0:
|
70
|
+
yield {}
|
71
|
+
else:
|
72
|
+
yield from body_json
|
73
|
+
|
74
|
+
|
45
75
|
@dataclass
|
46
76
|
class JsonLineParser(Parser):
|
47
77
|
encoding: Optional[str] = "utf-8"
|
@@ -59,11 +59,13 @@ class ClientSideIncrementalRecordFilterDecorator(RecordFilter):
|
|
59
59
|
|
60
60
|
def __init__(
|
61
61
|
self,
|
62
|
-
|
62
|
+
date_time_based_cursor: DatetimeBasedCursor,
|
63
|
+
substream_cursor: Optional[Union[PerPartitionWithGlobalCursor, GlobalSubstreamCursor]],
|
63
64
|
**kwargs: Any,
|
64
65
|
):
|
65
66
|
super().__init__(**kwargs)
|
66
|
-
self.
|
67
|
+
self._date_time_based_cursor = date_time_based_cursor
|
68
|
+
self._substream_cursor = substream_cursor
|
67
69
|
|
68
70
|
def filter_records(
|
69
71
|
self,
|
@@ -75,7 +77,7 @@ class ClientSideIncrementalRecordFilterDecorator(RecordFilter):
|
|
75
77
|
records = (
|
76
78
|
record
|
77
79
|
for record in records
|
78
|
-
if self.
|
80
|
+
if (self._substream_cursor or self._date_time_based_cursor).should_be_synced(
|
79
81
|
# Record is created on the fly to align with cursors interface; stream name is ignored as we don't need it here
|
80
82
|
# Record stream name is empty cause it is not used durig the filtering
|
81
83
|
Record(data=record, associated_slice=stream_slice, stream_name="")
|
@@ -2,10 +2,6 @@
|
|
2
2
|
# Copyright (c) 2022 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
|
-
from airbyte_cdk.sources.declarative.incremental.concurrent_partition_cursor import (
|
6
|
-
ConcurrentCursorFactory,
|
7
|
-
ConcurrentPerPartitionCursor,
|
8
|
-
)
|
9
5
|
from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
|
10
6
|
from airbyte_cdk.sources.declarative.incremental.declarative_cursor import DeclarativeCursor
|
11
7
|
from airbyte_cdk.sources.declarative.incremental.global_substream_cursor import (
|
@@ -25,8 +21,6 @@ from airbyte_cdk.sources.declarative.incremental.resumable_full_refresh_cursor i
|
|
25
21
|
|
26
22
|
__all__ = [
|
27
23
|
"CursorFactory",
|
28
|
-
"ConcurrentCursorFactory",
|
29
|
-
"ConcurrentPerPartitionCursor",
|
30
24
|
"DatetimeBasedCursor",
|
31
25
|
"DeclarativeCursor",
|
32
26
|
"GlobalSubstreamCursor",
|
@@ -303,20 +303,6 @@ class PerPartitionCursor(DeclarativeCursor):
|
|
303
303
|
raise ValueError("A partition needs to be provided in order to get request body json")
|
304
304
|
|
305
305
|
def should_be_synced(self, record: Record) -> bool:
|
306
|
-
if (
|
307
|
-
self._to_partition_key(record.associated_slice.partition)
|
308
|
-
not in self._cursor_per_partition
|
309
|
-
):
|
310
|
-
partition_state = (
|
311
|
-
self._state_to_migrate_from
|
312
|
-
if self._state_to_migrate_from
|
313
|
-
else self._NO_CURSOR_STATE
|
314
|
-
)
|
315
|
-
cursor = self._create_cursor(partition_state)
|
316
|
-
|
317
|
-
self._cursor_per_partition[
|
318
|
-
self._to_partition_key(record.associated_slice.partition)
|
319
|
-
] = cursor
|
320
306
|
return self._get_cursor(record).should_be_synced(
|
321
307
|
self._convert_record_to_cursor_record(record)
|
322
308
|
)
|
@@ -737,33 +737,43 @@ class KeysToSnakeCase(BaseModel):
|
|
737
737
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
738
738
|
|
739
739
|
|
740
|
+
class FlattenFields(BaseModel):
|
741
|
+
type: Literal["FlattenFields"]
|
742
|
+
flatten_lists: Optional[bool] = Field(
|
743
|
+
True,
|
744
|
+
description="Whether to flatten lists or leave it as is. Default is True.",
|
745
|
+
title="Flatten Lists",
|
746
|
+
)
|
747
|
+
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
748
|
+
|
749
|
+
|
740
750
|
class KeysReplace(BaseModel):
|
741
751
|
type: Literal["KeysReplace"]
|
742
752
|
old: str = Field(
|
743
753
|
...,
|
744
754
|
description="Old value to replace.",
|
745
|
-
examples=[
|
755
|
+
examples=[
|
756
|
+
" ",
|
757
|
+
"{{ record.id }}",
|
758
|
+
"{{ config['id'] }}",
|
759
|
+
"{{ stream_slice['id'] }}",
|
760
|
+
],
|
746
761
|
title="Old value",
|
747
762
|
)
|
748
763
|
new: str = Field(
|
749
764
|
...,
|
750
765
|
description="New value to set.",
|
751
|
-
examples=[
|
766
|
+
examples=[
|
767
|
+
"_",
|
768
|
+
"{{ record.id }}",
|
769
|
+
"{{ config['id'] }}",
|
770
|
+
"{{ stream_slice['id'] }}",
|
771
|
+
],
|
752
772
|
title="New value",
|
753
773
|
)
|
754
774
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
755
775
|
|
756
776
|
|
757
|
-
class FlattenFields(BaseModel):
|
758
|
-
type: Literal["FlattenFields"]
|
759
|
-
flatten_lists: Optional[bool] = Field(
|
760
|
-
True,
|
761
|
-
description="Whether to flatten lists or leave it as is. Default is True.",
|
762
|
-
title="Flatten Lists",
|
763
|
-
)
|
764
|
-
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
765
|
-
|
766
|
-
|
767
777
|
class IterableDecoder(BaseModel):
|
768
778
|
type: Literal["IterableDecoder"]
|
769
779
|
|
@@ -795,6 +805,14 @@ class GzipJsonDecoder(BaseModel):
|
|
795
805
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
796
806
|
|
797
807
|
|
808
|
+
class JsonParser(BaseModel):
|
809
|
+
class Config:
|
810
|
+
extra = Extra.allow
|
811
|
+
|
812
|
+
type: Literal["JsonParser"]
|
813
|
+
encoding: Optional[str] = "utf-8"
|
814
|
+
|
815
|
+
|
798
816
|
class MinMaxDatetime(BaseModel):
|
799
817
|
type: Literal["MinMaxDatetime"]
|
800
818
|
datetime: str = Field(
|
@@ -72,6 +72,7 @@ from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
|
|
72
72
|
CsvParser,
|
73
73
|
GzipParser,
|
74
74
|
JsonLineParser,
|
75
|
+
JsonParser,
|
75
76
|
)
|
76
77
|
from airbyte_cdk.sources.declarative.extractors import (
|
77
78
|
DpathExtractor,
|
@@ -84,8 +85,6 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
|
|
84
85
|
)
|
85
86
|
from airbyte_cdk.sources.declarative.incremental import (
|
86
87
|
ChildPartitionResumableFullRefreshCursor,
|
87
|
-
ConcurrentCursorFactory,
|
88
|
-
ConcurrentPerPartitionCursor,
|
89
88
|
CursorFactory,
|
90
89
|
DatetimeBasedCursor,
|
91
90
|
DeclarativeCursor,
|
@@ -249,6 +248,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
249
248
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
250
249
|
JsonLineParser as JsonLineParserModel,
|
251
250
|
)
|
251
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
252
|
+
JsonParser as JsonParserModel,
|
253
|
+
)
|
252
254
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
253
255
|
JwtAuthenticator as JwtAuthenticatorModel,
|
254
256
|
)
|
@@ -440,7 +442,6 @@ from airbyte_cdk.sources.message import (
|
|
440
442
|
InMemoryMessageRepository,
|
441
443
|
LogAppenderMessageRepositoryDecorator,
|
442
444
|
MessageRepository,
|
443
|
-
NoopMessageRepository,
|
444
445
|
)
|
445
446
|
from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, CursorField
|
446
447
|
from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_state_converter import (
|
@@ -525,6 +526,7 @@ class ModelToComponentFactory:
|
|
525
526
|
JsonDecoderModel: self.create_json_decoder,
|
526
527
|
JsonlDecoderModel: self.create_jsonl_decoder,
|
527
528
|
JsonLineParserModel: self.create_json_line_parser,
|
529
|
+
JsonParserModel: self.create_json_parser,
|
528
530
|
GzipJsonDecoderModel: self.create_gzipjson_decoder,
|
529
531
|
GzipParserModel: self.create_gzip_parser,
|
530
532
|
KeysToLowerModel: self.create_keys_to_lower_transformation,
|
@@ -874,8 +876,6 @@ class ModelToComponentFactory:
|
|
874
876
|
stream_namespace: Optional[str],
|
875
877
|
config: Config,
|
876
878
|
stream_state: MutableMapping[str, Any],
|
877
|
-
message_repository: Optional[MessageRepository] = None,
|
878
|
-
runtime_lookback_window: Optional[int] = None,
|
879
879
|
**kwargs: Any,
|
880
880
|
) -> ConcurrentCursor:
|
881
881
|
component_type = component_definition.get("type")
|
@@ -933,11 +933,6 @@ class ModelToComponentFactory:
|
|
933
933
|
if evaluated_lookback_window:
|
934
934
|
lookback_window = parse_duration(evaluated_lookback_window)
|
935
935
|
|
936
|
-
if runtime_lookback_window and lookback_window:
|
937
|
-
lookback_window = max(lookback_window, runtime_lookback_window)
|
938
|
-
elif runtime_lookback_window:
|
939
|
-
lookback_window = runtime_lookback_window
|
940
|
-
|
941
936
|
connector_state_converter: DateTimeStreamStateConverter
|
942
937
|
connector_state_converter = CustomFormatConcurrentStreamStateConverter(
|
943
938
|
datetime_format=datetime_format,
|
@@ -1016,7 +1011,7 @@ class ModelToComponentFactory:
|
|
1016
1011
|
stream_name=stream_name,
|
1017
1012
|
stream_namespace=stream_namespace,
|
1018
1013
|
stream_state=stream_state,
|
1019
|
-
message_repository=
|
1014
|
+
message_repository=self._message_repository,
|
1020
1015
|
connector_state_manager=state_manager,
|
1021
1016
|
connector_state_converter=connector_state_converter,
|
1022
1017
|
cursor_field=cursor_field,
|
@@ -1028,63 +1023,6 @@ class ModelToComponentFactory:
|
|
1028
1023
|
cursor_granularity=cursor_granularity,
|
1029
1024
|
)
|
1030
1025
|
|
1031
|
-
def create_concurrent_cursor_from_perpartition_cursor(
|
1032
|
-
self,
|
1033
|
-
state_manager: ConnectorStateManager,
|
1034
|
-
model_type: Type[BaseModel],
|
1035
|
-
component_definition: ComponentDefinition,
|
1036
|
-
stream_name: str,
|
1037
|
-
stream_namespace: Optional[str],
|
1038
|
-
config: Config,
|
1039
|
-
stream_state: MutableMapping[str, Any],
|
1040
|
-
partition_router,
|
1041
|
-
**kwargs: Any,
|
1042
|
-
) -> ConcurrentPerPartitionCursor:
|
1043
|
-
component_type = component_definition.get("type")
|
1044
|
-
if component_definition.get("type") != model_type.__name__:
|
1045
|
-
raise ValueError(
|
1046
|
-
f"Expected manifest component of type {model_type.__name__}, but received {component_type} instead"
|
1047
|
-
)
|
1048
|
-
|
1049
|
-
datetime_based_cursor_model = model_type.parse_obj(component_definition)
|
1050
|
-
|
1051
|
-
if not isinstance(datetime_based_cursor_model, DatetimeBasedCursorModel):
|
1052
|
-
raise ValueError(
|
1053
|
-
f"Expected {model_type.__name__} component, but received {datetime_based_cursor_model.__class__.__name__}"
|
1054
|
-
)
|
1055
|
-
|
1056
|
-
interpolated_cursor_field = InterpolatedString.create(
|
1057
|
-
datetime_based_cursor_model.cursor_field,
|
1058
|
-
parameters=datetime_based_cursor_model.parameters or {},
|
1059
|
-
)
|
1060
|
-
cursor_field = CursorField(interpolated_cursor_field.eval(config=config))
|
1061
|
-
|
1062
|
-
# Create the cursor factory
|
1063
|
-
cursor_factory = ConcurrentCursorFactory(
|
1064
|
-
partial(
|
1065
|
-
self.create_concurrent_cursor_from_datetime_based_cursor,
|
1066
|
-
state_manager=state_manager,
|
1067
|
-
model_type=model_type,
|
1068
|
-
component_definition=component_definition,
|
1069
|
-
stream_name=stream_name,
|
1070
|
-
stream_namespace=stream_namespace,
|
1071
|
-
config=config,
|
1072
|
-
message_repository=NoopMessageRepository(),
|
1073
|
-
)
|
1074
|
-
)
|
1075
|
-
|
1076
|
-
# Return the concurrent cursor and state converter
|
1077
|
-
return ConcurrentPerPartitionCursor(
|
1078
|
-
cursor_factory=cursor_factory,
|
1079
|
-
partition_router=partition_router,
|
1080
|
-
stream_name=stream_name,
|
1081
|
-
stream_namespace=stream_namespace,
|
1082
|
-
stream_state=stream_state,
|
1083
|
-
message_repository=self._message_repository, # type: ignore
|
1084
|
-
connector_state_manager=state_manager,
|
1085
|
-
cursor_field=cursor_field,
|
1086
|
-
)
|
1087
|
-
|
1088
1026
|
@staticmethod
|
1089
1027
|
def create_constant_backoff_strategy(
|
1090
1028
|
model: ConstantBackoffStrategyModel, config: Config, **kwargs: Any
|
@@ -1367,15 +1305,18 @@ class ModelToComponentFactory:
|
|
1367
1305
|
raise ValueError(
|
1368
1306
|
"Unsupported Slicer is used. PerPartitionWithGlobalCursor should be used here instead"
|
1369
1307
|
)
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1308
|
+
client_side_incremental_sync = {
|
1309
|
+
"date_time_based_cursor": self._create_component_from_model(
|
1310
|
+
model=model.incremental_sync, config=config
|
1311
|
+
),
|
1312
|
+
"substream_cursor": (
|
1313
|
+
combined_slicers
|
1314
|
+
if isinstance(
|
1315
|
+
combined_slicers, (PerPartitionWithGlobalCursor, GlobalSubstreamCursor)
|
1316
|
+
)
|
1317
|
+
else None
|
1318
|
+
),
|
1319
|
+
}
|
1379
1320
|
|
1380
1321
|
if model.incremental_sync and isinstance(model.incremental_sync, DatetimeBasedCursorModel):
|
1381
1322
|
cursor_model = model.incremental_sync
|
@@ -1812,6 +1753,11 @@ class ModelToComponentFactory:
|
|
1812
1753
|
def create_json_decoder(model: JsonDecoderModel, config: Config, **kwargs: Any) -> JsonDecoder:
|
1813
1754
|
return JsonDecoder(parameters={})
|
1814
1755
|
|
1756
|
+
@staticmethod
|
1757
|
+
def create_json_parser(model: JsonParserModel, config: Config, **kwargs: Any) -> JsonParser:
|
1758
|
+
encoding = model.encoding or "utf-8"
|
1759
|
+
return JsonParser(encoding=encoding)
|
1760
|
+
|
1815
1761
|
@staticmethod
|
1816
1762
|
def create_jsonl_decoder(
|
1817
1763
|
model: JsonlDecoderModel, config: Config, **kwargs: Any
|
@@ -2191,7 +2137,7 @@ class ModelToComponentFactory:
|
|
2191
2137
|
if (
|
2192
2138
|
not isinstance(stream_slicer, DatetimeBasedCursor)
|
2193
2139
|
or type(stream_slicer) is not DatetimeBasedCursor
|
2194
|
-
)
|
2140
|
+
):
|
2195
2141
|
# Many of the custom component implementations of DatetimeBasedCursor override get_request_params() (or other methods).
|
2196
2142
|
# Because we're decoupling RequestOptionsProvider from the Cursor, custom components will eventually need to reimplement
|
2197
2143
|
# their own RequestOptionsProvider. However, right now the existing StreamSlicer/Cursor still can act as the SimpleRetriever's
|
@@ -160,7 +160,7 @@ class SimpleRetriever(Retriever):
|
|
160
160
|
stream_slice,
|
161
161
|
next_page_token,
|
162
162
|
self._paginator.get_request_headers,
|
163
|
-
self.
|
163
|
+
self.stream_slicer.get_request_headers,
|
164
164
|
)
|
165
165
|
if isinstance(headers, str):
|
166
166
|
raise ValueError("Request headers cannot be a string")
|
@@ -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.
|
26
|
+
version = "6.18.0dev0" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|