airbyte-cdk 6.20.2.dev0__tar.gz → 6.21.0__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.20.2.dev0 → airbyte_cdk-6.21.0}/PKG-INFO +1 -1
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/oauth.py +34 -0
- airbyte_cdk-6.21.0/airbyte_cdk/sources/declarative/checks/__init__.py +24 -0
- airbyte_cdk-6.21.0/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +51 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +16 -80
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +123 -21
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +9 -1
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +43 -0
- airbyte_cdk-6.21.0/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +59 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +5 -3
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -6
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -3
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -15
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +2 -1
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +112 -27
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +127 -106
- airbyte_cdk-6.21.0/airbyte_cdk/sources/declarative/requesters/README.md +56 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +33 -4
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +13 -3
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +11 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/exceptions.py +34 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_based_source.py +28 -5
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +18 -4
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +25 -2
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +30 -2
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +21 -30
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +33 -4
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +42 -4
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/types.py +3 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/transform.py +29 -3
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/pyproject.toml +1 -1
- airbyte_cdk-6.20.2.dev0/airbyte_cdk/sources/declarative/checks/__init__.py +0 -8
- airbyte_cdk-6.20.2.dev0/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -331
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/README.md +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/utils/traced_exception.py +0 -0
{airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/auth/oauth.py
RENAMED
@@ -39,6 +39,7 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
39
39
|
token_expiry_date_format str: format of the datetime; provide it if expires_in is returned in datetime instead of seconds
|
40
40
|
token_expiry_is_time_of_expiration bool: set True it if expires_in is returned as time of expiration instead of the number seconds until expiration
|
41
41
|
refresh_request_body (Optional[Mapping[str, Any]]): The request body to send in the refresh request
|
42
|
+
refresh_request_headers (Optional[Mapping[str, Any]]): The request headers to send in the refresh request
|
42
43
|
grant_type: The grant_type to request for access_token. If set to refresh_token, the refresh_token parameter has to be provided
|
43
44
|
message_repository (MessageRepository): the message repository used to emit logs on HTTP requests
|
44
45
|
"""
|
@@ -56,8 +57,13 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
56
57
|
token_expiry_is_time_of_expiration: bool = False
|
57
58
|
access_token_name: Union[InterpolatedString, str] = "access_token"
|
58
59
|
access_token_value: Optional[Union[InterpolatedString, str]] = None
|
60
|
+
client_id_name: Union[InterpolatedString, str] = "client_id"
|
61
|
+
client_secret_name: Union[InterpolatedString, str] = "client_secret"
|
59
62
|
expires_in_name: Union[InterpolatedString, str] = "expires_in"
|
63
|
+
refresh_token_name: Union[InterpolatedString, str] = "refresh_token"
|
60
64
|
refresh_request_body: Optional[Mapping[str, Any]] = None
|
65
|
+
refresh_request_headers: Optional[Mapping[str, Any]] = None
|
66
|
+
grant_type_name: Union[InterpolatedString, str] = "grant_type"
|
61
67
|
grant_type: Union[InterpolatedString, str] = "refresh_token"
|
62
68
|
message_repository: MessageRepository = NoopMessageRepository()
|
63
69
|
|
@@ -69,8 +75,15 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
69
75
|
)
|
70
76
|
else:
|
71
77
|
self._token_refresh_endpoint = None
|
78
|
+
self._client_id_name = InterpolatedString.create(self.client_id_name, parameters=parameters)
|
72
79
|
self._client_id = InterpolatedString.create(self.client_id, parameters=parameters)
|
80
|
+
self._client_secret_name = InterpolatedString.create(
|
81
|
+
self.client_secret_name, parameters=parameters
|
82
|
+
)
|
73
83
|
self._client_secret = InterpolatedString.create(self.client_secret, parameters=parameters)
|
84
|
+
self._refresh_token_name = InterpolatedString.create(
|
85
|
+
self.refresh_token_name, parameters=parameters
|
86
|
+
)
|
74
87
|
if self.refresh_token is not None:
|
75
88
|
self._refresh_token: Optional[InterpolatedString] = InterpolatedString.create(
|
76
89
|
self.refresh_token, parameters=parameters
|
@@ -83,10 +96,16 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
83
96
|
self.expires_in_name = InterpolatedString.create(
|
84
97
|
self.expires_in_name, parameters=parameters
|
85
98
|
)
|
99
|
+
self.grant_type_name = InterpolatedString.create(
|
100
|
+
self.grant_type_name, parameters=parameters
|
101
|
+
)
|
86
102
|
self.grant_type = InterpolatedString.create(self.grant_type, parameters=parameters)
|
87
103
|
self._refresh_request_body = InterpolatedMapping(
|
88
104
|
self.refresh_request_body or {}, parameters=parameters
|
89
105
|
)
|
106
|
+
self._refresh_request_headers = InterpolatedMapping(
|
107
|
+
self.refresh_request_headers or {}, parameters=parameters
|
108
|
+
)
|
90
109
|
self._token_expiry_date: pendulum.DateTime = (
|
91
110
|
pendulum.parse(
|
92
111
|
InterpolatedString.create(self.token_expiry_date, parameters=parameters).eval(
|
@@ -122,18 +141,27 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
122
141
|
return refresh_token_endpoint
|
123
142
|
return None
|
124
143
|
|
144
|
+
def get_client_id_name(self) -> str:
|
145
|
+
return self._client_id_name.eval(self.config) # type: ignore # eval returns a string in this context
|
146
|
+
|
125
147
|
def get_client_id(self) -> str:
|
126
148
|
client_id: str = self._client_id.eval(self.config)
|
127
149
|
if not client_id:
|
128
150
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_id parameter")
|
129
151
|
return client_id
|
130
152
|
|
153
|
+
def get_client_secret_name(self) -> str:
|
154
|
+
return self._client_secret_name.eval(self.config) # type: ignore # eval returns a string in this context
|
155
|
+
|
131
156
|
def get_client_secret(self) -> str:
|
132
157
|
client_secret: str = self._client_secret.eval(self.config)
|
133
158
|
if not client_secret:
|
134
159
|
raise ValueError("OAuthAuthenticator was unable to evaluate client_secret parameter")
|
135
160
|
return client_secret
|
136
161
|
|
162
|
+
def get_refresh_token_name(self) -> str:
|
163
|
+
return self._refresh_token_name.eval(self.config) # type: ignore # eval returns a string in this context
|
164
|
+
|
137
165
|
def get_refresh_token(self) -> Optional[str]:
|
138
166
|
return None if self._refresh_token is None else str(self._refresh_token.eval(self.config))
|
139
167
|
|
@@ -146,12 +174,18 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
|
|
146
174
|
def get_expires_in_name(self) -> str:
|
147
175
|
return self.expires_in_name.eval(self.config) # type: ignore # eval returns a string in this context
|
148
176
|
|
177
|
+
def get_grant_type_name(self) -> str:
|
178
|
+
return self.grant_type_name.eval(self.config) # type: ignore # eval returns a string in this context
|
179
|
+
|
149
180
|
def get_grant_type(self) -> str:
|
150
181
|
return self.grant_type.eval(self.config) # type: ignore # eval returns a string in this context
|
151
182
|
|
152
183
|
def get_refresh_request_body(self) -> Mapping[str, Any]:
|
153
184
|
return self._refresh_request_body.eval(self.config)
|
154
185
|
|
186
|
+
def get_refresh_request_headers(self) -> Mapping[str, Any]:
|
187
|
+
return self._refresh_request_headers.eval(self.config)
|
188
|
+
|
155
189
|
def get_token_expiry_date(self) -> pendulum.DateTime:
|
156
190
|
return self._token_expiry_date # type: ignore # _token_expiry_date is a pendulum.DateTime. It is never None despite what mypy thinks
|
157
191
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
from typing import Mapping
|
6
|
+
|
7
|
+
from pydantic.v1 import BaseModel
|
8
|
+
|
9
|
+
from airbyte_cdk.sources.declarative.checks.check_dynamic_stream import CheckDynamicStream
|
10
|
+
from airbyte_cdk.sources.declarative.checks.check_stream import CheckStream
|
11
|
+
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.declarative.models import (
|
13
|
+
CheckDynamicStream as CheckDynamicStreamModel,
|
14
|
+
)
|
15
|
+
from airbyte_cdk.sources.declarative.models import (
|
16
|
+
CheckStream as CheckStreamModel,
|
17
|
+
)
|
18
|
+
|
19
|
+
COMPONENTS_CHECKER_TYPE_MAPPING: Mapping[str, type[BaseModel]] = {
|
20
|
+
"CheckStream": CheckStreamModel,
|
21
|
+
"CheckDynamicStream": CheckDynamicStreamModel,
|
22
|
+
}
|
23
|
+
|
24
|
+
__all__ = ["CheckStream", "CheckDynamicStream", "ConnectionChecker"]
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
import logging
|
6
|
+
import traceback
|
7
|
+
from dataclasses import InitVar, dataclass
|
8
|
+
from typing import Any, List, Mapping, Tuple
|
9
|
+
|
10
|
+
from airbyte_cdk import AbstractSource
|
11
|
+
from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
|
12
|
+
from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
|
13
|
+
|
14
|
+
|
15
|
+
@dataclass
|
16
|
+
class CheckDynamicStream(ConnectionChecker):
|
17
|
+
"""
|
18
|
+
Checks the connections by checking availability of one or many dynamic streams
|
19
|
+
|
20
|
+
Attributes:
|
21
|
+
stream_count (int): numbers of streams to check
|
22
|
+
"""
|
23
|
+
|
24
|
+
stream_count: int
|
25
|
+
parameters: InitVar[Mapping[str, Any]]
|
26
|
+
|
27
|
+
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
28
|
+
self._parameters = parameters
|
29
|
+
|
30
|
+
def check_connection(
|
31
|
+
self, source: AbstractSource, logger: logging.Logger, config: Mapping[str, Any]
|
32
|
+
) -> Tuple[bool, Any]:
|
33
|
+
streams = source.streams(config=config)
|
34
|
+
if len(streams) == 0:
|
35
|
+
return False, f"No streams to connect to from source {source}"
|
36
|
+
|
37
|
+
for stream_index in range(min(self.stream_count, len(streams))):
|
38
|
+
stream = streams[stream_index]
|
39
|
+
availability_strategy = HttpAvailabilityStrategy()
|
40
|
+
try:
|
41
|
+
stream_is_available, reason = availability_strategy.check_availability(
|
42
|
+
stream, logger
|
43
|
+
)
|
44
|
+
if not stream_is_available:
|
45
|
+
return False, reason
|
46
|
+
except Exception as error:
|
47
|
+
logger.error(
|
48
|
+
f"Encountered an error trying to connect to stream {stream.name}. Error: \n {traceback.format_exc()}"
|
49
|
+
)
|
50
|
+
return False, f"Unable to connect to stream {stream.name} - {error}"
|
51
|
+
return True, None
|
@@ -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 (
|
@@ -35,7 +32,7 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
|
|
35
32
|
ModelToComponentFactory,
|
36
33
|
)
|
37
34
|
from airbyte_cdk.sources.declarative.requesters import HttpRequester
|
38
|
-
from airbyte_cdk.sources.declarative.retrievers import
|
35
|
+
from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
|
39
36
|
from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
|
40
37
|
DeclarativePartitionFactory,
|
41
38
|
StreamSlicerPartitionGenerator,
|
@@ -233,7 +230,21 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
233
230
|
stream_state=stream_state,
|
234
231
|
)
|
235
232
|
|
236
|
-
retriever =
|
233
|
+
retriever = declarative_stream.retriever
|
234
|
+
|
235
|
+
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
236
|
+
# low-code framework because state management is handled through the ConcurrentCursor.
|
237
|
+
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
238
|
+
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
239
|
+
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
240
|
+
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
241
|
+
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
242
|
+
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
243
|
+
if retriever.cursor:
|
244
|
+
retriever.cursor.set_initial_state(stream_state=stream_state)
|
245
|
+
# We zero it out here, but since this is a cursor reference, the state is still properly
|
246
|
+
# instantiated for the other components that reference it
|
247
|
+
retriever.cursor = None
|
237
248
|
|
238
249
|
partition_generator = StreamSlicerPartitionGenerator(
|
239
250
|
DeclarativePartitionFactory(
|
@@ -293,60 +304,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
293
304
|
cursor=final_state_cursor,
|
294
305
|
)
|
295
306
|
)
|
296
|
-
elif (
|
297
|
-
incremental_sync_component_definition
|
298
|
-
and incremental_sync_component_definition.get("type", "")
|
299
|
-
== DatetimeBasedCursorModel.__name__
|
300
|
-
and self._stream_supports_concurrent_partition_processing(
|
301
|
-
declarative_stream=declarative_stream
|
302
|
-
)
|
303
|
-
and hasattr(declarative_stream.retriever, "stream_slicer")
|
304
|
-
and isinstance(
|
305
|
-
declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
|
306
|
-
)
|
307
|
-
):
|
308
|
-
stream_state = state_manager.get_stream_state(
|
309
|
-
stream_name=declarative_stream.name, namespace=declarative_stream.namespace
|
310
|
-
)
|
311
|
-
partition_router = declarative_stream.retriever.stream_slicer._partition_router
|
312
|
-
|
313
|
-
perpartition_cursor = (
|
314
|
-
self._constructor.create_concurrent_cursor_from_perpartition_cursor(
|
315
|
-
state_manager=state_manager,
|
316
|
-
model_type=DatetimeBasedCursorModel,
|
317
|
-
component_definition=incremental_sync_component_definition,
|
318
|
-
stream_name=declarative_stream.name,
|
319
|
-
stream_namespace=declarative_stream.namespace,
|
320
|
-
config=config or {},
|
321
|
-
stream_state=stream_state,
|
322
|
-
partition_router=partition_router,
|
323
|
-
)
|
324
|
-
)
|
325
|
-
|
326
|
-
retriever = self._get_retriever(declarative_stream, stream_state)
|
327
|
-
|
328
|
-
partition_generator = StreamSlicerPartitionGenerator(
|
329
|
-
DeclarativePartitionFactory(
|
330
|
-
declarative_stream.name,
|
331
|
-
declarative_stream.get_json_schema(),
|
332
|
-
retriever,
|
333
|
-
self.message_repository,
|
334
|
-
),
|
335
|
-
perpartition_cursor,
|
336
|
-
)
|
337
|
-
|
338
|
-
concurrent_streams.append(
|
339
|
-
DefaultStream(
|
340
|
-
partition_generator=partition_generator,
|
341
|
-
name=declarative_stream.name,
|
342
|
-
json_schema=declarative_stream.get_json_schema(),
|
343
|
-
availability_strategy=AlwaysAvailableAvailabilityStrategy(),
|
344
|
-
primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
|
345
|
-
cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
|
346
|
-
logger=self.logger,
|
347
|
-
cursor=perpartition_cursor,
|
348
|
-
)
|
349
|
-
)
|
350
307
|
else:
|
351
308
|
synchronous_streams.append(declarative_stream)
|
352
309
|
else:
|
@@ -437,27 +394,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
437
394
|
return False
|
438
395
|
return True
|
439
396
|
|
440
|
-
def _get_retriever(
|
441
|
-
self, declarative_stream: DeclarativeStream, stream_state: Mapping[str, Any]
|
442
|
-
) -> Retriever:
|
443
|
-
retriever = declarative_stream.retriever
|
444
|
-
|
445
|
-
# This is an optimization so that we don't invoke any cursor or state management flows within the
|
446
|
-
# low-code framework because state management is handled through the ConcurrentCursor.
|
447
|
-
if declarative_stream and isinstance(retriever, SimpleRetriever):
|
448
|
-
# Also a temporary hack. In the legacy Stream implementation, as part of the read,
|
449
|
-
# set_initial_state() is called to instantiate incoming state on the cursor. Although we no
|
450
|
-
# longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
|
451
|
-
# like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
|
452
|
-
# still rely on a DatetimeBasedCursor that is properly initialized with state.
|
453
|
-
if retriever.cursor:
|
454
|
-
retriever.cursor.set_initial_state(stream_state=stream_state)
|
455
|
-
# We zero it out here, but since this is a cursor reference, the state is still properly
|
456
|
-
# instantiated for the other components that reference it
|
457
|
-
retriever.cursor = None
|
458
|
-
|
459
|
-
return retriever
|
460
|
-
|
461
397
|
@staticmethod
|
462
398
|
def _select_streams(
|
463
399
|
streams: List[AbstractStream], configured_catalog: ConfiguredAirbyteCatalog
|
@@ -18,7 +18,9 @@ properties:
|
|
18
18
|
type: string
|
19
19
|
enum: [DeclarativeSource]
|
20
20
|
check:
|
21
|
-
|
21
|
+
anyOf:
|
22
|
+
- "$ref": "#/definitions/CheckStream"
|
23
|
+
- "$ref": "#/definitions/CheckDynamicStream"
|
22
24
|
streams:
|
23
25
|
type: array
|
24
26
|
items:
|
@@ -303,6 +305,21 @@ definitions:
|
|
303
305
|
examples:
|
304
306
|
- ["users"]
|
305
307
|
- ["users", "contacts"]
|
308
|
+
CheckDynamicStream:
|
309
|
+
title: Dynamic Streams to Check
|
310
|
+
description: (This component is experimental. Use at your own risk.) Defines the dynamic streams to try reading when running a check operation.
|
311
|
+
type: object
|
312
|
+
required:
|
313
|
+
- type
|
314
|
+
- stream_count
|
315
|
+
properties:
|
316
|
+
type:
|
317
|
+
type: string
|
318
|
+
enum: [CheckDynamicStream]
|
319
|
+
stream_count:
|
320
|
+
title: Stream Count
|
321
|
+
description: Numbers of the streams to try reading from when running a check operation.
|
322
|
+
type: integer
|
306
323
|
CompositeErrorHandler:
|
307
324
|
title: Composite Error Handler
|
308
325
|
description: Error handler that sequentially iterates over a list of error handlers.
|
@@ -678,7 +695,7 @@ definitions:
|
|
678
695
|
properties:
|
679
696
|
type:
|
680
697
|
type: string
|
681
|
-
enum: [
|
698
|
+
enum: [CustomSchemaNormalization]
|
682
699
|
class_name:
|
683
700
|
title: Class Name
|
684
701
|
description: Fully-qualified name of the class that will be implementing the custom normalization. The format is `source_<name>.<package>.<class_name>`.
|
@@ -1047,6 +1064,13 @@ definitions:
|
|
1047
1064
|
type:
|
1048
1065
|
type: string
|
1049
1066
|
enum: [OAuthAuthenticator]
|
1067
|
+
client_id_name:
|
1068
|
+
title: Client ID Property Name
|
1069
|
+
description: The name of the property to use to refresh the `access_token`.
|
1070
|
+
type: string
|
1071
|
+
default: "client_id"
|
1072
|
+
examples:
|
1073
|
+
- custom_app_id
|
1050
1074
|
client_id:
|
1051
1075
|
title: Client ID
|
1052
1076
|
description: The OAuth client ID. Fill it in the user inputs.
|
@@ -1054,6 +1078,13 @@ definitions:
|
|
1054
1078
|
examples:
|
1055
1079
|
- "{{ config['client_id }}"
|
1056
1080
|
- "{{ config['credentials']['client_id }}"
|
1081
|
+
client_secret_name:
|
1082
|
+
title: Client Secret Property Name
|
1083
|
+
description: The name of the property to use to refresh the `access_token`.
|
1084
|
+
type: string
|
1085
|
+
default: "client_secret"
|
1086
|
+
examples:
|
1087
|
+
- custom_app_secret
|
1057
1088
|
client_secret:
|
1058
1089
|
title: Client Secret
|
1059
1090
|
description: The OAuth client secret. Fill it in the user inputs.
|
@@ -1061,6 +1092,13 @@ definitions:
|
|
1061
1092
|
examples:
|
1062
1093
|
- "{{ config['client_secret }}"
|
1063
1094
|
- "{{ config['credentials']['client_secret }}"
|
1095
|
+
refresh_token_name:
|
1096
|
+
title: Refresh Token Property Name
|
1097
|
+
description: The name of the property to use to refresh the `access_token`.
|
1098
|
+
type: string
|
1099
|
+
default: "refresh_token"
|
1100
|
+
examples:
|
1101
|
+
- custom_app_refresh_value
|
1064
1102
|
refresh_token:
|
1065
1103
|
title: Refresh Token
|
1066
1104
|
description: Credential artifact used to get a new access token.
|
@@ -1094,6 +1132,13 @@ definitions:
|
|
1094
1132
|
default: "expires_in"
|
1095
1133
|
examples:
|
1096
1134
|
- expires_in
|
1135
|
+
grant_type_name:
|
1136
|
+
title: Grant Type Property Name
|
1137
|
+
description: The name of the property to use to refresh the `access_token`.
|
1138
|
+
type: string
|
1139
|
+
default: "grant_type"
|
1140
|
+
examples:
|
1141
|
+
- custom_grant_type
|
1097
1142
|
grant_type:
|
1098
1143
|
title: Grant Type
|
1099
1144
|
description: Specifies the OAuth2 grant type. If set to refresh_token, the refresh_token needs to be provided as well. For client_credentials, only client id and secret are required. Other grant types are not officially supported.
|
@@ -1111,6 +1156,14 @@ definitions:
|
|
1111
1156
|
- applicationId: "{{ config['application_id'] }}"
|
1112
1157
|
applicationSecret: "{{ config['application_secret'] }}"
|
1113
1158
|
token: "{{ config['token'] }}"
|
1159
|
+
refresh_request_headers:
|
1160
|
+
title: Refresh Request Headers
|
1161
|
+
description: Headers of the request sent to get a new access token.
|
1162
|
+
type: object
|
1163
|
+
additionalProperties: true
|
1164
|
+
examples:
|
1165
|
+
- Authorization: "<AUTH_TOKEN>"
|
1166
|
+
Content-Type: "application/x-www-form-urlencoded"
|
1114
1167
|
scopes:
|
1115
1168
|
title: Scopes
|
1116
1169
|
description: List of scopes that should be granted to the access token.
|
@@ -1460,6 +1513,7 @@ definitions:
|
|
1460
1513
|
anyOf:
|
1461
1514
|
- "$ref": "#/definitions/JsonDecoder"
|
1462
1515
|
- "$ref": "#/definitions/XmlDecoder"
|
1516
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
1463
1517
|
$parameters:
|
1464
1518
|
type: object
|
1465
1519
|
additionalProperties: true
|
@@ -1735,6 +1789,10 @@ definitions:
|
|
1735
1789
|
- type: array
|
1736
1790
|
items:
|
1737
1791
|
type: string
|
1792
|
+
condition:
|
1793
|
+
type: string
|
1794
|
+
interpolation_context:
|
1795
|
+
- raw_schema
|
1738
1796
|
SchemaTypeIdentifier:
|
1739
1797
|
title: Schema Type Identifier
|
1740
1798
|
description: (This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
|
@@ -2014,6 +2072,26 @@ definitions:
|
|
2014
2072
|
$parameters:
|
2015
2073
|
type: object
|
2016
2074
|
additionalProperties: true
|
2075
|
+
ZipfileDecoder:
|
2076
|
+
title: Zipfile Decoder
|
2077
|
+
description: Decoder for response data that is returned as zipfile(s).
|
2078
|
+
type: object
|
2079
|
+
additionalProperties: true
|
2080
|
+
required:
|
2081
|
+
- type
|
2082
|
+
- parser
|
2083
|
+
properties:
|
2084
|
+
type:
|
2085
|
+
type: string
|
2086
|
+
enum: [ZipfileDecoder]
|
2087
|
+
parser:
|
2088
|
+
title: Parser
|
2089
|
+
description: Parser to parse the decompressed data from the zipfile(s).
|
2090
|
+
anyOf:
|
2091
|
+
- "$ref": "#/definitions/GzipParser"
|
2092
|
+
- "$ref": "#/definitions/JsonParser"
|
2093
|
+
- "$ref": "#/definitions/JsonLineParser"
|
2094
|
+
- "$ref": "#/definitions/CsvParser"
|
2017
2095
|
ListPartitionRouter:
|
2018
2096
|
title: List Partition Router
|
2019
2097
|
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.
|
@@ -2204,15 +2282,15 @@ definitions:
|
|
2204
2282
|
Pertains to the fields defined by the connector relating to the OAuth flow.
|
2205
2283
|
|
2206
2284
|
Interpolation capabilities:
|
2207
|
-
- The variables placeholders are declared as `{my_var}`.
|
2208
|
-
- The nested resolution variables like `{{my_nested_var}}` is allowed as well.
|
2285
|
+
- The variables placeholders are declared as `{{my_var}}`.
|
2286
|
+
- The nested resolution variables like `{{ {{my_nested_var}} }}` is allowed as well.
|
2209
2287
|
|
2210
2288
|
- The allowed interpolation context is:
|
2211
|
-
+ base64Encoder - encode to `base64`, {
|
2212
|
-
+ base64Decorer - decode from `base64` encoded string, {
|
2213
|
-
+ urlEncoder - encode the input string to URL-like format, {
|
2214
|
-
+ urlDecorer - decode the input url-encoded string into text format, {urlDecoder:https%3A%2F%2Fairbyte.io}
|
2215
|
-
+ codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {
|
2289
|
+
+ base64Encoder - encode to `base64`, {{ {{my_var_a}}:{{my_var_b}} | base64Encoder }}
|
2290
|
+
+ base64Decorer - decode from `base64` encoded string, {{ {{my_string_variable_or_string_value}} | base64Decoder }}
|
2291
|
+
+ urlEncoder - encode the input string to URL-like format, {{ https://test.host.com/endpoint | urlEncoder}}
|
2292
|
+
+ urlDecorer - decode the input url-encoded string into text format, {{ urlDecoder:https%3A%2F%2Fairbyte.io | urlDecoder}}
|
2293
|
+
+ codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {{ {{state_value}} | codeChallengeS256 }}
|
2216
2294
|
|
2217
2295
|
Examples:
|
2218
2296
|
- The TikTok Marketing DeclarativeOAuth spec:
|
@@ -2221,12 +2299,12 @@ definitions:
|
|
2221
2299
|
"type": "object",
|
2222
2300
|
"additionalProperties": false,
|
2223
2301
|
"properties": {
|
2224
|
-
"consent_url": "https://ads.tiktok.com/marketing_api/auth?{client_id_key}={{
|
2302
|
+
"consent_url": "https://ads.tiktok.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{ {{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",
|
2225
2303
|
"access_token_url": "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/",
|
2226
2304
|
"access_token_params": {
|
2227
|
-
"{auth_code_key}": "{{
|
2228
|
-
"{client_id_key}": "{{
|
2229
|
-
"{client_secret_key}": "{{
|
2305
|
+
"{{ auth_code_key }}": "{{ auth_code_value }}",
|
2306
|
+
"{{ client_id_key }}": "{{ client_id_value }}",
|
2307
|
+
"{{ client_secret_key }}": "{{ client_secret_value }}"
|
2230
2308
|
},
|
2231
2309
|
"access_token_headers": {
|
2232
2310
|
"Content-Type": "application/json",
|
@@ -2244,7 +2322,6 @@ definitions:
|
|
2244
2322
|
required:
|
2245
2323
|
- consent_url
|
2246
2324
|
- access_token_url
|
2247
|
-
- extract_output
|
2248
2325
|
properties:
|
2249
2326
|
consent_url:
|
2250
2327
|
title: Consent URL
|
@@ -2253,8 +2330,8 @@ definitions:
|
|
2253
2330
|
The DeclarativeOAuth Specific string URL string template to initiate the authentication.
|
2254
2331
|
The placeholders are replaced during the processing to provide neccessary values.
|
2255
2332
|
examples:
|
2256
|
-
- https://domain.host.com/marketing_api/auth?{client_id_key}={{
|
2257
|
-
- https://endpoint.host.com/oauth2/authorize?{client_id_key}={{
|
2333
|
+
- https://domain.host.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}
|
2334
|
+
- https://endpoint.host.com/oauth2/authorize?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}&{{scope_key}}={{{{scope_value}} | urlEncoder}}&{{state_key}}={{state_value}}&subdomain={{subdomain}}
|
2258
2335
|
scope:
|
2259
2336
|
title: Scopes
|
2260
2337
|
type: string
|
@@ -2269,7 +2346,7 @@ definitions:
|
|
2269
2346
|
The DeclarativeOAuth Specific URL templated string to obtain the `access_token`, `refresh_token` etc.
|
2270
2347
|
The placeholders are replaced during the processing to provide neccessary values.
|
2271
2348
|
examples:
|
2272
|
-
- https://auth.host.com/oauth2/token?{client_id_key}={{
|
2349
|
+
- https://auth.host.com/oauth2/token?{{client_id_key}}={{client_id_value}}&{{client_secret_key}}={{client_secret_value}}&{{auth_code_key}}={{auth_code_value}}&{{redirect_uri_key}}={{{{redirect_uri_value}} | urlEncoder}}
|
2273
2350
|
access_token_headers:
|
2274
2351
|
title: Access Token Headers
|
2275
2352
|
type: object
|
@@ -2278,7 +2355,7 @@ definitions:
|
|
2278
2355
|
The DeclarativeOAuth Specific optional headers to inject while exchanging the `auth_code` to `access_token` during `completeOAuthFlow` step.
|
2279
2356
|
examples:
|
2280
2357
|
- {
|
2281
|
-
"Authorization": "Basic {
|
2358
|
+
"Authorization": "Basic {{ {{ client_id_value }}:{{ client_secret_value }} | base64Encoder }}",
|
2282
2359
|
}
|
2283
2360
|
access_token_params:
|
2284
2361
|
title: Access Token Query Params (Json Encoded)
|
@@ -2289,9 +2366,9 @@ definitions:
|
|
2289
2366
|
When this property is provided, the query params will be encoded as `Json` and included in the outgoing API request.
|
2290
2367
|
examples:
|
2291
2368
|
- {
|
2292
|
-
"{auth_code_key}": "{{
|
2293
|
-
"{client_id_key}": "{{
|
2294
|
-
"{client_secret_key}": "{{
|
2369
|
+
"{{ auth_code_key }}": "{{ auth_code_value }}",
|
2370
|
+
"{{ client_id_key }}": "{{ client_id_value }}",
|
2371
|
+
"{{ client_secret_key }}": "{{ client_secret_value }}",
|
2295
2372
|
}
|
2296
2373
|
extract_output:
|
2297
2374
|
title: Extract Output
|
@@ -2843,6 +2920,7 @@ definitions:
|
|
2843
2920
|
- "$ref": "#/definitions/XmlDecoder"
|
2844
2921
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
2845
2922
|
- "$ref": "#/definitions/CompositeRawDecoder"
|
2923
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
2846
2924
|
$parameters:
|
2847
2925
|
type: object
|
2848
2926
|
additionalProperties: true
|
@@ -2859,6 +2937,7 @@ definitions:
|
|
2859
2937
|
parser:
|
2860
2938
|
anyOf:
|
2861
2939
|
- "$ref": "#/definitions/GzipParser"
|
2940
|
+
- "$ref": "#/definitions/JsonParser"
|
2862
2941
|
- "$ref": "#/definitions/JsonLineParser"
|
2863
2942
|
- "$ref": "#/definitions/CsvParser"
|
2864
2943
|
# PARSERS
|
@@ -2875,6 +2954,20 @@ definitions:
|
|
2875
2954
|
anyOf:
|
2876
2955
|
- "$ref": "#/definitions/JsonLineParser"
|
2877
2956
|
- "$ref": "#/definitions/CsvParser"
|
2957
|
+
- "$ref": "#/definitions/JsonParser"
|
2958
|
+
JsonParser:
|
2959
|
+
title: JsonParser
|
2960
|
+
description: Parser used for parsing str, bytes, or bytearray data and returning data in a dictionary format.
|
2961
|
+
type: object
|
2962
|
+
required:
|
2963
|
+
- type
|
2964
|
+
properties:
|
2965
|
+
type:
|
2966
|
+
type: string
|
2967
|
+
enum: [JsonParser]
|
2968
|
+
encoding:
|
2969
|
+
type: string
|
2970
|
+
default: utf-8
|
2878
2971
|
JsonLineParser:
|
2879
2972
|
type: object
|
2880
2973
|
required:
|
@@ -2977,6 +3070,11 @@ definitions:
|
|
2977
3070
|
anyOf:
|
2978
3071
|
- "$ref": "#/definitions/CustomRequester"
|
2979
3072
|
- "$ref": "#/definitions/HttpRequester"
|
3073
|
+
url_requester:
|
3074
|
+
description: Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.
|
3075
|
+
anyOf:
|
3076
|
+
- "$ref": "#/definitions/CustomRequester"
|
3077
|
+
- "$ref": "#/definitions/HttpRequester"
|
2980
3078
|
download_requester:
|
2981
3079
|
description: Requester component that describes how to prepare HTTP requests to send to the source API to download the data provided by the completed async job.
|
2982
3080
|
anyOf:
|
@@ -3021,6 +3119,8 @@ definitions:
|
|
3021
3119
|
- "$ref": "#/definitions/IterableDecoder"
|
3022
3120
|
- "$ref": "#/definitions/XmlDecoder"
|
3023
3121
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3122
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3123
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3024
3124
|
download_decoder:
|
3025
3125
|
title: Download Decoder
|
3026
3126
|
description: Component decoding the download response so records can be extracted.
|
@@ -3031,6 +3131,8 @@ definitions:
|
|
3031
3131
|
- "$ref": "#/definitions/IterableDecoder"
|
3032
3132
|
- "$ref": "#/definitions/XmlDecoder"
|
3033
3133
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3134
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3135
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3034
3136
|
$parameters:
|
3035
3137
|
type: object
|
3036
3138
|
additionalProperties: true
|
{airbyte_cdk-6.20.2.dev0 → airbyte_cdk-6.21.0}/airbyte_cdk/sources/declarative/decoders/__init__.py
RENAMED
@@ -2,7 +2,12 @@
|
|
2
2
|
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
|
3
3
|
#
|
4
4
|
|
5
|
-
from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import
|
5
|
+
from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
|
6
|
+
CompositeRawDecoder,
|
7
|
+
GzipParser,
|
8
|
+
JsonParser,
|
9
|
+
Parser,
|
10
|
+
)
|
6
11
|
from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
|
7
12
|
from airbyte_cdk.sources.declarative.decoders.json_decoder import (
|
8
13
|
GzipJsonDecoder,
|
@@ -15,15 +20,18 @@ from airbyte_cdk.sources.declarative.decoders.pagination_decoder_decorator impor
|
|
15
20
|
PaginationDecoderDecorator,
|
16
21
|
)
|
17
22
|
from airbyte_cdk.sources.declarative.decoders.xml_decoder import XmlDecoder
|
23
|
+
from airbyte_cdk.sources.declarative.decoders.zipfile_decoder import ZipfileDecoder
|
18
24
|
|
19
25
|
__all__ = [
|
20
26
|
"Decoder",
|
21
27
|
"CompositeRawDecoder",
|
22
28
|
"JsonDecoder",
|
29
|
+
"JsonParser",
|
23
30
|
"JsonlDecoder",
|
24
31
|
"IterableDecoder",
|
25
32
|
"GzipJsonDecoder",
|
26
33
|
"NoopDecoder",
|
27
34
|
"PaginationDecoderDecorator",
|
28
35
|
"XmlDecoder",
|
36
|
+
"ZipfileDecoder",
|
29
37
|
]
|