airbyte-cdk 6.21.1.dev0__tar.gz → 6.23.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.21.1.dev0 → airbyte_cdk-6.23.0}/PKG-INFO +3 -3
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +6 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +1 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +1 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +26 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +9 -1
- airbyte_cdk-6.23.0/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +59 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +15 -4
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +18 -4
- airbyte_cdk-6.23.0/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +143 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +45 -6
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +1 -2
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/pyproject.toml +5 -9
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/LICENSE.txt +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.
|
3
|
+
Version: 6.23.0
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
License: MIT
|
6
6
|
Keywords: airbyte,connector-development-kit,cdk
|
@@ -23,7 +23,7 @@ Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
|
|
23
23
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
24
24
|
Requires-Dist: Unidecode (>=1.3,<2.0)
|
25
25
|
Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
|
26
|
-
Requires-Dist: avro (>=1.11.2,<1.
|
26
|
+
Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
|
27
27
|
Requires-Dist: backoff
|
28
28
|
Requires-Dist: cachetools
|
29
29
|
Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
|
@@ -66,7 +66,7 @@ Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
|
|
66
66
|
Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
|
67
67
|
Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
|
68
68
|
Requires-Dist: wcmatch (==10.0)
|
69
|
-
Requires-Dist: xmltodict (>=0.13
|
69
|
+
Requires-Dist: xmltodict (>=0.13,<0.15)
|
70
70
|
Project-URL: Documentation, https://docs.airbyte.io/
|
71
71
|
Project-URL: Homepage, https://airbyte.com
|
72
72
|
Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
|
{airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py
RENAMED
@@ -171,6 +171,12 @@ def create_declarative_source(
|
|
171
171
|
"Invalid config: `__injected_declarative_manifest` should be provided at the root "
|
172
172
|
f"of the config but config only has keys: {list(config.keys() if config else [])}"
|
173
173
|
)
|
174
|
+
if not isinstance(config["__injected_declarative_manifest"], dict):
|
175
|
+
raise ValueError(
|
176
|
+
"Invalid config: `__injected_declarative_manifest` should be a dictionary, "
|
177
|
+
f"but got type: {type(config['__injected_declarative_manifest'])}"
|
178
|
+
)
|
179
|
+
|
174
180
|
return ConcurrentDeclarativeSource(
|
175
181
|
config=config,
|
176
182
|
catalog=catalog,
|
@@ -52,6 +52,7 @@ def get_limits(config: Mapping[str, Any]) -> TestReadLimits:
|
|
52
52
|
def create_source(config: Mapping[str, Any], limits: TestReadLimits) -> ManifestDeclarativeSource:
|
53
53
|
manifest = config["__injected_declarative_manifest"]
|
54
54
|
return ManifestDeclarativeSource(
|
55
|
+
config=config,
|
55
56
|
emit_connector_builder_messages=True,
|
56
57
|
source_config=manifest,
|
57
58
|
component_factory=ModelToComponentFactory(
|
@@ -77,6 +77,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
|
|
77
77
|
|
78
78
|
super().__init__(
|
79
79
|
source_config=source_config,
|
80
|
+
config=config,
|
80
81
|
debug=debug,
|
81
82
|
emit_connector_builder_messages=emit_connector_builder_messages,
|
82
83
|
component_factory=component_factory,
|
@@ -1514,6 +1514,7 @@ definitions:
|
|
1514
1514
|
anyOf:
|
1515
1515
|
- "$ref": "#/definitions/JsonDecoder"
|
1516
1516
|
- "$ref": "#/definitions/XmlDecoder"
|
1517
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
1517
1518
|
$parameters:
|
1518
1519
|
type: object
|
1519
1520
|
additionalProperties: true
|
@@ -2100,6 +2101,26 @@ definitions:
|
|
2100
2101
|
$parameters:
|
2101
2102
|
type: object
|
2102
2103
|
additionalProperties: true
|
2104
|
+
ZipfileDecoder:
|
2105
|
+
title: Zipfile Decoder
|
2106
|
+
description: Decoder for response data that is returned as zipfile(s).
|
2107
|
+
type: object
|
2108
|
+
additionalProperties: true
|
2109
|
+
required:
|
2110
|
+
- type
|
2111
|
+
- parser
|
2112
|
+
properties:
|
2113
|
+
type:
|
2114
|
+
type: string
|
2115
|
+
enum: [ZipfileDecoder]
|
2116
|
+
parser:
|
2117
|
+
title: Parser
|
2118
|
+
description: Parser to parse the decompressed data from the zipfile(s).
|
2119
|
+
anyOf:
|
2120
|
+
- "$ref": "#/definitions/GzipParser"
|
2121
|
+
- "$ref": "#/definitions/JsonParser"
|
2122
|
+
- "$ref": "#/definitions/JsonLineParser"
|
2123
|
+
- "$ref": "#/definitions/CsvParser"
|
2103
2124
|
ListPartitionRouter:
|
2104
2125
|
title: List Partition Router
|
2105
2126
|
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.
|
@@ -2928,6 +2949,7 @@ definitions:
|
|
2928
2949
|
- "$ref": "#/definitions/XmlDecoder"
|
2929
2950
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
2930
2951
|
- "$ref": "#/definitions/CompositeRawDecoder"
|
2952
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
2931
2953
|
$parameters:
|
2932
2954
|
type: object
|
2933
2955
|
additionalProperties: true
|
@@ -3126,6 +3148,8 @@ definitions:
|
|
3126
3148
|
- "$ref": "#/definitions/IterableDecoder"
|
3127
3149
|
- "$ref": "#/definitions/XmlDecoder"
|
3128
3150
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3151
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3152
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3129
3153
|
download_decoder:
|
3130
3154
|
title: Download Decoder
|
3131
3155
|
description: Component decoding the download response so records can be extracted.
|
@@ -3136,6 +3160,8 @@ definitions:
|
|
3136
3160
|
- "$ref": "#/definitions/IterableDecoder"
|
3137
3161
|
- "$ref": "#/definitions/XmlDecoder"
|
3138
3162
|
- "$ref": "#/definitions/GzipJsonDecoder"
|
3163
|
+
- "$ref": "#/definitions/CompositeRawDecoder"
|
3164
|
+
- "$ref": "#/definitions/ZipfileDecoder"
|
3139
3165
|
$parameters:
|
3140
3166
|
type: object
|
3141
3167
|
additionalProperties: true
|
{airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.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
|
]
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
import logging
|
6
|
+
import zipfile
|
7
|
+
from dataclasses import dataclass
|
8
|
+
from io import BytesIO
|
9
|
+
from typing import Any, Generator, MutableMapping
|
10
|
+
|
11
|
+
import orjson
|
12
|
+
import requests
|
13
|
+
|
14
|
+
from airbyte_cdk.models import FailureType
|
15
|
+
from airbyte_cdk.sources.declarative.decoders import Decoder
|
16
|
+
from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
|
17
|
+
Parser,
|
18
|
+
)
|
19
|
+
from airbyte_cdk.utils import AirbyteTracedException
|
20
|
+
|
21
|
+
logger = logging.getLogger("airbyte")
|
22
|
+
|
23
|
+
|
24
|
+
@dataclass
|
25
|
+
class ZipfileDecoder(Decoder):
|
26
|
+
parser: Parser
|
27
|
+
|
28
|
+
def is_stream_response(self) -> bool:
|
29
|
+
return False
|
30
|
+
|
31
|
+
def decode(
|
32
|
+
self, response: requests.Response
|
33
|
+
) -> Generator[MutableMapping[str, Any], None, None]:
|
34
|
+
try:
|
35
|
+
with zipfile.ZipFile(BytesIO(response.content)) as zip_file:
|
36
|
+
for file_name in zip_file.namelist():
|
37
|
+
unzipped_content = zip_file.read(file_name)
|
38
|
+
buffered_content = BytesIO(unzipped_content)
|
39
|
+
try:
|
40
|
+
yield from self.parser.parse(buffered_content)
|
41
|
+
except Exception as e:
|
42
|
+
logger.error(
|
43
|
+
f"Failed to parse file: {file_name} from zip file: {response.request.url} with exception {e}."
|
44
|
+
)
|
45
|
+
raise AirbyteTracedException(
|
46
|
+
message=f"Failed to parse file: {file_name} from zip file.",
|
47
|
+
internal_message=f"Failed to parse file: {file_name} from zip file: {response.request.url}.",
|
48
|
+
failure_type=FailureType.system_error,
|
49
|
+
) from e
|
50
|
+
except zipfile.BadZipFile as e:
|
51
|
+
logger.error(
|
52
|
+
f"Received an invalid zip file in response to URL: {response.request.url}. "
|
53
|
+
f"The size of the response body is: {len(response.content)}"
|
54
|
+
)
|
55
|
+
raise AirbyteTracedException(
|
56
|
+
message="Received an invalid zip file in response.",
|
57
|
+
internal_message=f"Received an invalid zip file in response to URL: {response.request.url}.",
|
58
|
+
failure_type=FailureType.system_error,
|
59
|
+
) from e
|
@@ -7,6 +7,7 @@ import logging
|
|
7
7
|
import pkgutil
|
8
8
|
from copy import deepcopy
|
9
9
|
from importlib import metadata
|
10
|
+
from types import ModuleType
|
10
11
|
from typing import Any, Dict, Iterator, List, Mapping, Optional, Set
|
11
12
|
|
12
13
|
import yaml
|
@@ -32,6 +33,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
32
33
|
DeclarativeStream as DeclarativeStreamModel,
|
33
34
|
)
|
34
35
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import Spec as SpecModel
|
36
|
+
from airbyte_cdk.sources.declarative.parsers.custom_code_compiler import (
|
37
|
+
get_registered_components_module,
|
38
|
+
)
|
35
39
|
from airbyte_cdk.sources.declarative.parsers.manifest_component_transformer import (
|
36
40
|
ManifestComponentTransformer,
|
37
41
|
)
|
@@ -59,22 +63,29 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
59
63
|
def __init__(
|
60
64
|
self,
|
61
65
|
source_config: ConnectionDefinition,
|
66
|
+
*,
|
67
|
+
config: Mapping[str, Any] | None = None,
|
62
68
|
debug: bool = False,
|
63
69
|
emit_connector_builder_messages: bool = False,
|
64
70
|
component_factory: Optional[ModelToComponentFactory] = None,
|
65
71
|
):
|
66
72
|
"""
|
67
|
-
:
|
68
|
-
|
69
|
-
|
73
|
+
Args:
|
74
|
+
config: The provided config dict.
|
75
|
+
source_config: The manifest of low-code components that describe the source connector.
|
76
|
+
debug: True if debug mode is enabled.
|
77
|
+
emit_connector_builder_messages: True if messages should be emitted to the connector builder.
|
78
|
+
component_factory: optional factory if ModelToComponentFactory's default behavior needs to be tweaked.
|
70
79
|
"""
|
71
80
|
self.logger = logging.getLogger(f"airbyte.{self.name}")
|
72
|
-
|
73
81
|
# For ease of use we don't require the type to be specified at the top level manifest, but it should be included during processing
|
74
82
|
manifest = dict(source_config)
|
75
83
|
if "type" not in manifest:
|
76
84
|
manifest["type"] = "DeclarativeSource"
|
77
85
|
|
86
|
+
# If custom components are needed, locate and/or register them.
|
87
|
+
self.components_module: ModuleType | None = get_registered_components_module(config=config)
|
88
|
+
|
78
89
|
resolved_source_config = ManifestReferenceResolver().preprocess_manifest(manifest)
|
79
90
|
propagated_source_config = ManifestComponentTransformer().propagate_types_and_parameters(
|
80
91
|
"", resolved_source_config, {}
|
@@ -1242,9 +1242,6 @@ class LegacySessionTokenAuthenticator(BaseModel):
|
|
1242
1242
|
|
1243
1243
|
|
1244
1244
|
class JsonParser(BaseModel):
|
1245
|
-
class Config:
|
1246
|
-
extra = Extra.allow
|
1247
|
-
|
1248
1245
|
type: Literal["JsonParser"]
|
1249
1246
|
encoding: Optional[str] = "utf-8"
|
1250
1247
|
|
@@ -1680,6 +1677,18 @@ class CompositeErrorHandler(BaseModel):
|
|
1680
1677
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
1681
1678
|
|
1682
1679
|
|
1680
|
+
class ZipfileDecoder(BaseModel):
|
1681
|
+
class Config:
|
1682
|
+
extra = Extra.allow
|
1683
|
+
|
1684
|
+
type: Literal["ZipfileDecoder"]
|
1685
|
+
parser: Union[GzipParser, JsonParser, JsonLineParser, CsvParser] = Field(
|
1686
|
+
...,
|
1687
|
+
description="Parser to parse the decompressed data from the zipfile(s).",
|
1688
|
+
title="Parser",
|
1689
|
+
)
|
1690
|
+
|
1691
|
+
|
1683
1692
|
class CompositeRawDecoder(BaseModel):
|
1684
1693
|
type: Literal["CompositeRawDecoder"]
|
1685
1694
|
parser: Union[GzipParser, JsonParser, JsonLineParser, CsvParser]
|
@@ -1886,7 +1895,7 @@ class SessionTokenAuthenticator(BaseModel):
|
|
1886
1895
|
description="Authentication method to use for requests sent to the API, specifying how to inject the session token.",
|
1887
1896
|
title="Data Request Authentication",
|
1888
1897
|
)
|
1889
|
-
decoder: Optional[Union[JsonDecoder, XmlDecoder]] = Field(
|
1898
|
+
decoder: Optional[Union[JsonDecoder, XmlDecoder, CompositeRawDecoder]] = Field(
|
1890
1899
|
None, description="Component used to decode the response.", title="Decoder"
|
1891
1900
|
)
|
1892
1901
|
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
|
@@ -2092,6 +2101,7 @@ class SimpleRetriever(BaseModel):
|
|
2092
2101
|
XmlDecoder,
|
2093
2102
|
GzipJsonDecoder,
|
2094
2103
|
CompositeRawDecoder,
|
2104
|
+
ZipfileDecoder,
|
2095
2105
|
]
|
2096
2106
|
] = Field(
|
2097
2107
|
None,
|
@@ -2168,6 +2178,8 @@ class AsyncRetriever(BaseModel):
|
|
2168
2178
|
IterableDecoder,
|
2169
2179
|
XmlDecoder,
|
2170
2180
|
GzipJsonDecoder,
|
2181
|
+
CompositeRawDecoder,
|
2182
|
+
ZipfileDecoder,
|
2171
2183
|
]
|
2172
2184
|
] = Field(
|
2173
2185
|
None,
|
@@ -2182,6 +2194,8 @@ class AsyncRetriever(BaseModel):
|
|
2182
2194
|
IterableDecoder,
|
2183
2195
|
XmlDecoder,
|
2184
2196
|
GzipJsonDecoder,
|
2197
|
+
CompositeRawDecoder,
|
2198
|
+
ZipfileDecoder,
|
2185
2199
|
]
|
2186
2200
|
] = Field(
|
2187
2201
|
None,
|
@@ -0,0 +1,143 @@
|
|
1
|
+
"""Contains functions to compile custom code from text."""
|
2
|
+
|
3
|
+
import hashlib
|
4
|
+
import os
|
5
|
+
import sys
|
6
|
+
from collections.abc import Mapping
|
7
|
+
from types import ModuleType
|
8
|
+
from typing import Any, cast
|
9
|
+
|
10
|
+
from typing_extensions import Literal
|
11
|
+
|
12
|
+
ChecksumType = Literal["md5", "sha256"]
|
13
|
+
CHECKSUM_FUNCTIONS = {
|
14
|
+
"md5": hashlib.md5,
|
15
|
+
"sha256": hashlib.sha256,
|
16
|
+
}
|
17
|
+
COMPONENTS_MODULE_NAME = "components"
|
18
|
+
SDM_COMPONENTS_MODULE_NAME = "source_declarative_manifest.components"
|
19
|
+
INJECTED_MANIFEST = "__injected_declarative_manifest"
|
20
|
+
INJECTED_COMPONENTS_PY = "__injected_components_py"
|
21
|
+
INJECTED_COMPONENTS_PY_CHECKSUMS = "__injected_components_py_checksums"
|
22
|
+
ENV_VAR_ALLOW_CUSTOM_CODE = "AIRBYTE_ALLOW_CUSTOM_CODE"
|
23
|
+
|
24
|
+
|
25
|
+
class AirbyteCodeTamperedError(Exception):
|
26
|
+
"""Raised when the connector's components module does not match its checksum.
|
27
|
+
|
28
|
+
This is a fatal error, as it can be a sign of code tampering.
|
29
|
+
"""
|
30
|
+
|
31
|
+
|
32
|
+
class AirbyteCustomCodeNotPermittedError(Exception):
|
33
|
+
"""Raised when custom code is attempted to be run in an environment that does not support it."""
|
34
|
+
|
35
|
+
def __init__(self) -> None:
|
36
|
+
super().__init__(
|
37
|
+
"Custom connector code is not permitted in this environment. "
|
38
|
+
"If you need to run custom code, please ask your administrator to set the `AIRBYTE_ALLOW_CUSTOM_CODE` "
|
39
|
+
"environment variable to 'true' in your Airbyte environment. "
|
40
|
+
"If you see this message in Airbyte Cloud, your workspace does not allow executing "
|
41
|
+
"custom connector code."
|
42
|
+
)
|
43
|
+
|
44
|
+
|
45
|
+
def _hash_text(input_text: str, hash_type: str = "md5") -> str:
|
46
|
+
"""Return the hash of the input text using the specified hash type."""
|
47
|
+
if not input_text:
|
48
|
+
raise ValueError("Input text cannot be empty.")
|
49
|
+
|
50
|
+
hash_object = CHECKSUM_FUNCTIONS[hash_type]()
|
51
|
+
hash_object.update(input_text.encode())
|
52
|
+
return hash_object.hexdigest()
|
53
|
+
|
54
|
+
|
55
|
+
def custom_code_execution_permitted() -> bool:
|
56
|
+
"""Return `True` if custom code execution is permitted, otherwise `False`.
|
57
|
+
|
58
|
+
Custom code execution is permitted if the `AIRBYTE_ALLOW_CUSTOM_CODE` environment variable is set to 'true'.
|
59
|
+
"""
|
60
|
+
return os.environ.get(ENV_VAR_ALLOW_CUSTOM_CODE, "").lower() == "true"
|
61
|
+
|
62
|
+
|
63
|
+
def validate_python_code(
|
64
|
+
code_text: str,
|
65
|
+
checksums: dict[str, str] | None,
|
66
|
+
) -> None:
|
67
|
+
"""Validate the provided Python code text against the provided checksums.
|
68
|
+
|
69
|
+
Currently we fail if no checksums are provided, although this may change in the future.
|
70
|
+
"""
|
71
|
+
if not checksums:
|
72
|
+
raise ValueError(f"A checksum is required to validate the code. Received: {checksums}")
|
73
|
+
|
74
|
+
for checksum_type, checksum in checksums.items():
|
75
|
+
if checksum_type not in CHECKSUM_FUNCTIONS:
|
76
|
+
raise ValueError(
|
77
|
+
f"Unsupported checksum type: {checksum_type}. Supported checksum types are: {CHECKSUM_FUNCTIONS.keys()}"
|
78
|
+
)
|
79
|
+
|
80
|
+
if _hash_text(code_text, checksum_type) != checksum:
|
81
|
+
raise AirbyteCodeTamperedError(f"{checksum_type} checksum does not match.")
|
82
|
+
|
83
|
+
|
84
|
+
def get_registered_components_module(
|
85
|
+
config: Mapping[str, Any] | None,
|
86
|
+
) -> ModuleType | None:
|
87
|
+
"""Get a components module object based on the provided config.
|
88
|
+
|
89
|
+
If custom python components is provided, this will be loaded. Otherwise, we will
|
90
|
+
attempt to load from the `components` module already imported/registered in sys.modules.
|
91
|
+
|
92
|
+
If custom `components.py` text is provided in config, it will be registered with sys.modules
|
93
|
+
so that it can be later imported by manifest declarations which reference the provided classes.
|
94
|
+
|
95
|
+
Returns `None` if no components is provided and the `components` module is not found.
|
96
|
+
"""
|
97
|
+
if config and INJECTED_COMPONENTS_PY in config:
|
98
|
+
if not custom_code_execution_permitted():
|
99
|
+
raise AirbyteCustomCodeNotPermittedError
|
100
|
+
|
101
|
+
# Create a new module object and execute the provided Python code text within it
|
102
|
+
python_text: str = config[INJECTED_COMPONENTS_PY]
|
103
|
+
return register_components_module_from_string(
|
104
|
+
components_py_text=python_text,
|
105
|
+
checksums=config.get(INJECTED_COMPONENTS_PY_CHECKSUMS, None),
|
106
|
+
)
|
107
|
+
|
108
|
+
# Check for `components` or `source_declarative_manifest.components`.
|
109
|
+
if SDM_COMPONENTS_MODULE_NAME in sys.modules:
|
110
|
+
return cast(ModuleType, sys.modules.get(SDM_COMPONENTS_MODULE_NAME))
|
111
|
+
|
112
|
+
if COMPONENTS_MODULE_NAME in sys.modules:
|
113
|
+
return cast(ModuleType, sys.modules.get(COMPONENTS_MODULE_NAME))
|
114
|
+
|
115
|
+
# Could not find module 'components' in `sys.modules`
|
116
|
+
# and INJECTED_COMPONENTS_PY was not provided in config.
|
117
|
+
return None
|
118
|
+
|
119
|
+
|
120
|
+
def register_components_module_from_string(
|
121
|
+
components_py_text: str,
|
122
|
+
checksums: dict[str, Any] | None,
|
123
|
+
) -> ModuleType:
|
124
|
+
"""Load and return the components module from a provided string containing the python code."""
|
125
|
+
# First validate the code
|
126
|
+
validate_python_code(
|
127
|
+
code_text=components_py_text,
|
128
|
+
checksums=checksums,
|
129
|
+
)
|
130
|
+
|
131
|
+
# Create a new module object
|
132
|
+
components_module = ModuleType(name=COMPONENTS_MODULE_NAME)
|
133
|
+
|
134
|
+
# Execute the module text in the module's namespace
|
135
|
+
exec(components_py_text, components_module.__dict__)
|
136
|
+
|
137
|
+
# Register the module in `sys.modules`` so it can be imported as
|
138
|
+
# `source_declarative_manifest.components` and/or `components`.
|
139
|
+
sys.modules[SDM_COMPONENTS_MODULE_NAME] = components_module
|
140
|
+
sys.modules[COMPONENTS_MODULE_NAME] = components_module
|
141
|
+
|
142
|
+
# Now you can import and use the module
|
143
|
+
return components_module
|
@@ -8,6 +8,7 @@ import datetime
|
|
8
8
|
import importlib
|
9
9
|
import inspect
|
10
10
|
import re
|
11
|
+
import sys
|
11
12
|
from functools import partial
|
12
13
|
from typing import (
|
13
14
|
Any,
|
@@ -66,6 +67,7 @@ from airbyte_cdk.sources.declarative.decoders import (
|
|
66
67
|
JsonlDecoder,
|
67
68
|
PaginationDecoderDecorator,
|
68
69
|
XmlDecoder,
|
70
|
+
ZipfileDecoder,
|
69
71
|
)
|
70
72
|
from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
|
71
73
|
CompositeRawDecoder,
|
@@ -359,6 +361,13 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
|
|
359
361
|
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
360
362
|
XmlDecoder as XmlDecoderModel,
|
361
363
|
)
|
364
|
+
from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
|
365
|
+
ZipfileDecoder as ZipfileDecoderModel,
|
366
|
+
)
|
367
|
+
from airbyte_cdk.sources.declarative.parsers.custom_code_compiler import (
|
368
|
+
COMPONENTS_MODULE_NAME,
|
369
|
+
SDM_COMPONENTS_MODULE_NAME,
|
370
|
+
)
|
362
371
|
from airbyte_cdk.sources.declarative.partition_routers import (
|
363
372
|
CartesianProductStreamSlicer,
|
364
373
|
ListPartitionRouter,
|
@@ -578,6 +587,7 @@ class ModelToComponentFactory:
|
|
578
587
|
ConfigComponentsResolverModel: self.create_config_components_resolver,
|
579
588
|
StreamConfigModel: self.create_stream_config,
|
580
589
|
ComponentMappingDefinitionModel: self.create_components_mapping_definition,
|
590
|
+
ZipfileDecoderModel: self.create_zipfile_decoder,
|
581
591
|
}
|
582
592
|
|
583
593
|
# Needed for the case where we need to perform a second parse on the fields of a custom component
|
@@ -1097,7 +1107,6 @@ class ModelToComponentFactory:
|
|
1097
1107
|
:param config: The custom defined connector config
|
1098
1108
|
:return: The declarative component built from the Pydantic model to be used at runtime
|
1099
1109
|
"""
|
1100
|
-
|
1101
1110
|
custom_component_class = self._get_class_from_fully_qualified_class_name(model.class_name)
|
1102
1111
|
component_fields = get_type_hints(custom_component_class)
|
1103
1112
|
model_args = model.dict()
|
@@ -1151,14 +1160,38 @@ class ModelToComponentFactory:
|
|
1151
1160
|
return custom_component_class(**kwargs)
|
1152
1161
|
|
1153
1162
|
@staticmethod
|
1154
|
-
def _get_class_from_fully_qualified_class_name(
|
1163
|
+
def _get_class_from_fully_qualified_class_name(
|
1164
|
+
full_qualified_class_name: str,
|
1165
|
+
) -> Any:
|
1166
|
+
"""Get a class from its fully qualified name.
|
1167
|
+
|
1168
|
+
If a custom components module is needed, we assume it is already registered - probably
|
1169
|
+
as `source_declarative_manifest.components` or `components`.
|
1170
|
+
|
1171
|
+
Args:
|
1172
|
+
full_qualified_class_name (str): The fully qualified name of the class (e.g., "module.ClassName").
|
1173
|
+
|
1174
|
+
Returns:
|
1175
|
+
Any: The class object.
|
1176
|
+
|
1177
|
+
Raises:
|
1178
|
+
ValueError: If the class cannot be loaded.
|
1179
|
+
"""
|
1155
1180
|
split = full_qualified_class_name.split(".")
|
1156
|
-
|
1181
|
+
module_name_full = ".".join(split[:-1])
|
1157
1182
|
class_name = split[-1]
|
1183
|
+
|
1184
|
+
try:
|
1185
|
+
module_ref = importlib.import_module(module_name_full)
|
1186
|
+
except ModuleNotFoundError as e:
|
1187
|
+
raise ValueError(f"Could not load module `{module_name_full}`.") from e
|
1188
|
+
|
1158
1189
|
try:
|
1159
|
-
return getattr(
|
1160
|
-
except AttributeError:
|
1161
|
-
raise ValueError(
|
1190
|
+
return getattr(module_ref, class_name)
|
1191
|
+
except AttributeError as e:
|
1192
|
+
raise ValueError(
|
1193
|
+
f"Could not load class `{class_name}` from module `{module_name_full}`.",
|
1194
|
+
) from e
|
1162
1195
|
|
1163
1196
|
@staticmethod
|
1164
1197
|
def _derive_component_type_from_type_hints(field_type: Any) -> Optional[str]:
|
@@ -1820,6 +1853,12 @@ class ModelToComponentFactory:
|
|
1820
1853
|
) -> GzipJsonDecoder:
|
1821
1854
|
return GzipJsonDecoder(parameters={}, encoding=model.encoding)
|
1822
1855
|
|
1856
|
+
def create_zipfile_decoder(
|
1857
|
+
self, model: ZipfileDecoderModel, config: Config, **kwargs: Any
|
1858
|
+
) -> ZipfileDecoder:
|
1859
|
+
parser = self._create_component_from_model(model=model.parser, config=config)
|
1860
|
+
return ZipfileDecoder(parser=parser)
|
1861
|
+
|
1823
1862
|
def create_gzip_parser(
|
1824
1863
|
self, model: GzipParserModel, config: Config, **kwargs: Any
|
1825
1864
|
) -> GzipParser:
|
{airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py
RENAMED
@@ -4,7 +4,6 @@
|
|
4
4
|
import importlib.util
|
5
5
|
from pathlib import Path
|
6
6
|
from types import ModuleType
|
7
|
-
from typing import Optional
|
8
7
|
|
9
8
|
import pytest
|
10
9
|
|
@@ -30,7 +29,7 @@ def connector_dir(request: pytest.FixtureRequest) -> Path:
|
|
30
29
|
|
31
30
|
|
32
31
|
@pytest.fixture(scope="session")
|
33
|
-
def components_module(connector_dir: Path) ->
|
32
|
+
def components_module(connector_dir: Path) -> ModuleType | None:
|
34
33
|
"""Load and return the components module from the connector directory.
|
35
34
|
|
36
35
|
This assumes the components module is located at <connector_dir>/components.py.
|
@@ -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.23.0" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
@@ -53,7 +53,7 @@ requests = "*"
|
|
53
53
|
requests_cache = "*"
|
54
54
|
wcmatch = "10.0"
|
55
55
|
# Extras depedencies
|
56
|
-
avro = { version = "
|
56
|
+
avro = { version = ">=1.11.2,<1.13.0", optional = true }
|
57
57
|
cohere = { version = "4.21", optional = true }
|
58
58
|
fastavro = { version = "~1.8.0", optional = true }
|
59
59
|
langchain = { version = "0.1.16", optional = true }
|
@@ -79,7 +79,7 @@ pytz = "2024.2"
|
|
79
79
|
orjson = "^3.10.7"
|
80
80
|
serpyco-rs = "^1.10.2"
|
81
81
|
sqlalchemy = {version = "^2.0,!=2.0.36", optional = true }
|
82
|
-
xmltodict = "
|
82
|
+
xmltodict = ">=0.13,<0.15"
|
83
83
|
Unidecode = "^1.3"
|
84
84
|
|
85
85
|
[tool.poetry.group.dev.dependencies]
|
@@ -115,16 +115,12 @@ source-declarative-manifest = "airbyte_cdk.cli.source_declarative_manifest:run"
|
|
115
115
|
[tool.isort]
|
116
116
|
skip = ["__init__.py"] # TODO: Remove after this is fixed: https://github.com/airbytehq/airbyte-python-cdk/issues/12
|
117
117
|
|
118
|
-
|
119
|
-
target-version = "py310"
|
120
|
-
line-length = 100
|
121
|
-
|
122
|
-
[tool.ruff.lint]
|
123
|
-
select = ["I"]
|
118
|
+
# Ruff configuration moved to ruff.toml
|
124
119
|
|
125
120
|
[tool.poe.tasks]
|
126
121
|
# Installation
|
127
122
|
install = { shell = "poetry install --all-extras" }
|
123
|
+
lock = { shell = "poetry lock --no-update" }
|
128
124
|
|
129
125
|
# Build tasks
|
130
126
|
assemble = {cmd = "bin/generate-component-manifest-dagger.sh", help = "Generate component manifest files."}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.21.1.dev0 → airbyte_cdk-6.23.0}/airbyte_cdk/connector_builder/message_grouper.py
RENAMED
File without changes
|
File without changes
|
File without changes
|