airbyte-cdk 6.7.0rc1__tar.gz → 6.7.0rc3__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.7.0rc1 → airbyte_cdk-6.7.0rc3}/PKG-INFO +5 -5
- airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/__init__.py +6 -0
- airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/_run.py +223 -0
- airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/spec.json +17 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +13 -13
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +33 -24
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +69 -19
- airbyte_cdk-6.7.0rc3/airbyte_cdk/test/utils/__init__.py +1 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/pyproject.toml +9 -4
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/LICENSE.txt +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/README.md +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1/airbyte_cdk/test/utils → airbyte_cdk-6.7.0rc3/airbyte_cdk/cli}/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/entrypoint.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/logger.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/runner.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/tools.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/record.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,13 +1,13 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.7.
|
3
|
+
Version: 6.7.0rc3
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
7
7
|
Keywords: airbyte,connector-development-kit,cdk
|
8
8
|
Author: Airbyte
|
9
9
|
Author-email: contact@airbyte.io
|
10
|
-
Requires-Python: >=3.10,<
|
10
|
+
Requires-Python: >=3.10,<3.13
|
11
11
|
Classifier: Development Status :: 3 - Alpha
|
12
12
|
Classifier: Intended Audience :: Developers
|
13
13
|
Classifier: License :: OSI Approved :: MIT License
|
@@ -15,7 +15,6 @@ Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
18
|
-
Classifier: Programming Language :: Python :: 3.13
|
19
18
|
Classifier: Topic :: Scientific/Engineering
|
20
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
21
20
|
Provides-Extra: file-based
|
@@ -38,11 +37,11 @@ Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
|
|
38
37
|
Requires-Dist: genson (==1.3.0)
|
39
38
|
Requires-Dist: isodate (>=0.6.1,<0.7.0)
|
40
39
|
Requires-Dist: jsonref (>=0.2,<0.3)
|
41
|
-
Requires-Dist: jsonschema (>=
|
40
|
+
Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
|
42
41
|
Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
|
43
42
|
Requires-Dist: langchain_core (==0.1.42)
|
44
43
|
Requires-Dist: markdown ; extra == "file-based"
|
45
|
-
Requires-Dist: nltk (==3.
|
44
|
+
Requires-Dist: nltk (==3.9.1)
|
46
45
|
Requires-Dist: numpy (<2)
|
47
46
|
Requires-Dist: openai[embeddings] (==0.27.9) ; extra == "vector-db-based"
|
48
47
|
Requires-Dist: orjson (>=3.10.7,<4.0.0)
|
@@ -61,6 +60,7 @@ Requires-Dist: python-dateutil
|
|
61
60
|
Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
|
62
61
|
Requires-Dist: python-ulid (>=3.0.0,<4.0.0)
|
63
62
|
Requires-Dist: pytz (==2024.1)
|
63
|
+
Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
|
64
64
|
Requires-Dist: requests
|
65
65
|
Requires-Dist: requests_cache
|
66
66
|
Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
|
@@ -0,0 +1,223 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|
2
|
+
"""Defines the `source-declarative-manifest` connector, which installs alongside CDK.
|
3
|
+
|
4
|
+
This file was originally imported from the dedicated connector directory, under the
|
5
|
+
`airbyte` monorepo.
|
6
|
+
|
7
|
+
Usage:
|
8
|
+
|
9
|
+
```
|
10
|
+
pipx install airbyte-cdk
|
11
|
+
source-declarative-manifest --help
|
12
|
+
source-declarative-manifest spec
|
13
|
+
...
|
14
|
+
```
|
15
|
+
"""
|
16
|
+
|
17
|
+
from __future__ import annotations
|
18
|
+
|
19
|
+
import json
|
20
|
+
import pkgutil
|
21
|
+
import sys
|
22
|
+
import traceback
|
23
|
+
from collections.abc import Mapping
|
24
|
+
from datetime import datetime
|
25
|
+
from pathlib import Path
|
26
|
+
from typing import Any, cast
|
27
|
+
|
28
|
+
from airbyte_cdk.entrypoint import AirbyteEntrypoint, launch
|
29
|
+
from airbyte_cdk.models import (
|
30
|
+
AirbyteErrorTraceMessage,
|
31
|
+
AirbyteMessage,
|
32
|
+
AirbyteMessageSerializer,
|
33
|
+
AirbyteStateMessage,
|
34
|
+
AirbyteTraceMessage,
|
35
|
+
ConfiguredAirbyteCatalog,
|
36
|
+
ConnectorSpecificationSerializer,
|
37
|
+
TraceType,
|
38
|
+
Type,
|
39
|
+
)
|
40
|
+
from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
|
41
|
+
ConcurrentDeclarativeSource,
|
42
|
+
)
|
43
|
+
from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource
|
44
|
+
from airbyte_cdk.sources.source import TState
|
45
|
+
from orjson import orjson
|
46
|
+
|
47
|
+
|
48
|
+
class SourceLocalYaml(YamlDeclarativeSource):
|
49
|
+
"""
|
50
|
+
Declarative source defined by a yaml file in the local filesystem
|
51
|
+
"""
|
52
|
+
|
53
|
+
def __init__(
|
54
|
+
self,
|
55
|
+
catalog: ConfiguredAirbyteCatalog | None,
|
56
|
+
config: Mapping[str, Any] | None,
|
57
|
+
state: TState,
|
58
|
+
**kwargs: Any,
|
59
|
+
) -> None:
|
60
|
+
"""
|
61
|
+
HACK!
|
62
|
+
Problem: YamlDeclarativeSource relies on the calling module name/path to find the yaml file.
|
63
|
+
Implication: If you call YamlDeclarativeSource directly it will look for the yaml file in the wrong place. (e.g. the airbyte-cdk package)
|
64
|
+
Solution: Subclass YamlDeclarativeSource from the same location as the manifest to load.
|
65
|
+
|
66
|
+
When can we remove this?
|
67
|
+
When the airbyte-cdk is updated to not rely on the calling module name/path to find the yaml file.
|
68
|
+
When all manifest connectors are updated to use the new airbyte-cdk.
|
69
|
+
When all manifest connectors are updated to use the source-declarative-manifest as the base image.
|
70
|
+
"""
|
71
|
+
super().__init__(
|
72
|
+
catalog=catalog,
|
73
|
+
config=config,
|
74
|
+
state=state,
|
75
|
+
path_to_yaml="manifest.yaml",
|
76
|
+
)
|
77
|
+
|
78
|
+
|
79
|
+
def _is_local_manifest_command(args: list[str]) -> bool:
|
80
|
+
# Check for a local manifest.yaml file
|
81
|
+
return Path("/airbyte/integration_code/source_declarative_manifest/manifest.yaml").exists()
|
82
|
+
|
83
|
+
|
84
|
+
def handle_command(args: list[str]) -> None:
|
85
|
+
if _is_local_manifest_command(args):
|
86
|
+
handle_local_manifest_command(args)
|
87
|
+
else:
|
88
|
+
handle_remote_manifest_command(args)
|
89
|
+
|
90
|
+
|
91
|
+
def _get_local_yaml_source(args: list[str]) -> SourceLocalYaml:
|
92
|
+
try:
|
93
|
+
config, catalog, state = _parse_inputs_into_config_catalog_state(args)
|
94
|
+
return SourceLocalYaml(config=config, catalog=catalog, state=state)
|
95
|
+
except Exception as error:
|
96
|
+
print(
|
97
|
+
orjson.dumps(
|
98
|
+
AirbyteMessageSerializer.dump(
|
99
|
+
AirbyteMessage(
|
100
|
+
type=Type.TRACE,
|
101
|
+
trace=AirbyteTraceMessage(
|
102
|
+
type=TraceType.ERROR,
|
103
|
+
emitted_at=int(datetime.now().timestamp() * 1000),
|
104
|
+
error=AirbyteErrorTraceMessage(
|
105
|
+
message=f"Error starting the sync. This could be due to an invalid configuration or catalog. Please contact Support for assistance. Error: {error}",
|
106
|
+
stack_trace=traceback.format_exc(),
|
107
|
+
),
|
108
|
+
),
|
109
|
+
)
|
110
|
+
)
|
111
|
+
).decode()
|
112
|
+
)
|
113
|
+
raise error
|
114
|
+
|
115
|
+
|
116
|
+
def handle_local_manifest_command(args: list[str]) -> None:
|
117
|
+
source = _get_local_yaml_source(args)
|
118
|
+
launch(
|
119
|
+
source=source,
|
120
|
+
args=args,
|
121
|
+
)
|
122
|
+
|
123
|
+
|
124
|
+
def handle_remote_manifest_command(args: list[str]) -> None:
|
125
|
+
"""Overrides the spec command to return the generalized spec for the declarative manifest source.
|
126
|
+
|
127
|
+
This is different from a typical low-code, but built and published separately source built as a ManifestDeclarativeSource,
|
128
|
+
because that will have a spec method that returns the spec for that specific source. Other than spec,
|
129
|
+
the generalized connector behaves the same as any other, since the manifest is provided in the config.
|
130
|
+
"""
|
131
|
+
if args[0] == "spec":
|
132
|
+
json_spec = pkgutil.get_data(
|
133
|
+
"airbyte_cdk.cli.source_declarative_manifest",
|
134
|
+
"spec.json",
|
135
|
+
)
|
136
|
+
if json_spec is None:
|
137
|
+
raise FileNotFoundError(
|
138
|
+
"Could not find `spec.json` file for source-declarative-manifest"
|
139
|
+
)
|
140
|
+
|
141
|
+
spec_obj = json.loads(json_spec)
|
142
|
+
spec = ConnectorSpecificationSerializer.load(spec_obj)
|
143
|
+
|
144
|
+
message = AirbyteMessage(type=Type.SPEC, spec=spec)
|
145
|
+
print(AirbyteEntrypoint.airbyte_message_to_string(message))
|
146
|
+
else:
|
147
|
+
source = create_declarative_source(args)
|
148
|
+
launch(
|
149
|
+
source=source,
|
150
|
+
args=args,
|
151
|
+
)
|
152
|
+
|
153
|
+
|
154
|
+
def create_declarative_source(args: list[str]) -> ConcurrentDeclarativeSource:
|
155
|
+
"""Creates the source with the injected config.
|
156
|
+
|
157
|
+
This essentially does what other low-code sources do at build time, but at runtime,
|
158
|
+
with a user-provided manifest in the config. This better reflects what happens in the
|
159
|
+
connector builder.
|
160
|
+
"""
|
161
|
+
try:
|
162
|
+
config, catalog, state = _parse_inputs_into_config_catalog_state(args)
|
163
|
+
if "__injected_declarative_manifest" not in config:
|
164
|
+
raise ValueError(
|
165
|
+
f"Invalid config: `__injected_declarative_manifest` should be provided at the root of the config but config only has keys {list(config.keys())}"
|
166
|
+
)
|
167
|
+
return ConcurrentDeclarativeSource(
|
168
|
+
config=config,
|
169
|
+
catalog=catalog,
|
170
|
+
state=state,
|
171
|
+
source_config=cast(dict[str, Any], config["__injected_declarative_manifest"]),
|
172
|
+
)
|
173
|
+
except Exception as error:
|
174
|
+
print(
|
175
|
+
orjson.dumps(
|
176
|
+
AirbyteMessageSerializer.dump(
|
177
|
+
AirbyteMessage(
|
178
|
+
type=Type.TRACE,
|
179
|
+
trace=AirbyteTraceMessage(
|
180
|
+
type=TraceType.ERROR,
|
181
|
+
emitted_at=int(datetime.now().timestamp() * 1000),
|
182
|
+
error=AirbyteErrorTraceMessage(
|
183
|
+
message=f"Error starting the sync. This could be due to an invalid configuration or catalog. Please contact Support for assistance. Error: {error}",
|
184
|
+
stack_trace=traceback.format_exc(),
|
185
|
+
),
|
186
|
+
),
|
187
|
+
)
|
188
|
+
)
|
189
|
+
).decode()
|
190
|
+
)
|
191
|
+
raise error
|
192
|
+
|
193
|
+
|
194
|
+
def _parse_inputs_into_config_catalog_state(
|
195
|
+
args: list[str],
|
196
|
+
) -> tuple[
|
197
|
+
Mapping[str, Any] | None,
|
198
|
+
ConfiguredAirbyteCatalog | None,
|
199
|
+
list[AirbyteStateMessage],
|
200
|
+
]:
|
201
|
+
parsed_args = AirbyteEntrypoint.parse_args(args)
|
202
|
+
config = (
|
203
|
+
ConcurrentDeclarativeSource.read_config(parsed_args.config)
|
204
|
+
if hasattr(parsed_args, "config")
|
205
|
+
else None
|
206
|
+
)
|
207
|
+
catalog = (
|
208
|
+
ConcurrentDeclarativeSource.read_catalog(parsed_args.catalog)
|
209
|
+
if hasattr(parsed_args, "catalog")
|
210
|
+
else None
|
211
|
+
)
|
212
|
+
state = (
|
213
|
+
ConcurrentDeclarativeSource.read_state(parsed_args.state)
|
214
|
+
if hasattr(parsed_args, "state")
|
215
|
+
else []
|
216
|
+
)
|
217
|
+
|
218
|
+
return config, catalog, state
|
219
|
+
|
220
|
+
|
221
|
+
def run() -> None:
|
222
|
+
args: list[str] = sys.argv[1:]
|
223
|
+
handle_command(args)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"documentationUrl": "https://docs.airbyte.com/integrations/sources/low-code",
|
3
|
+
"connectionSpecification": {
|
4
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
5
|
+
"title": "Low-code source spec",
|
6
|
+
"type": "object",
|
7
|
+
"required": ["__injected_declarative_manifest"],
|
8
|
+
"additionalProperties": true,
|
9
|
+
"properties": {
|
10
|
+
"__injected_declarative_manifest": {
|
11
|
+
"title": "Low-code manifest",
|
12
|
+
"type": "object",
|
13
|
+
"description": "The low-code manifest that defines the components of the source."
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
@@ -2790,21 +2790,21 @@ interpolation:
|
|
2790
2790
|
- created_at: "2020-01-01 00:00:00.000+00:00"
|
2791
2791
|
- updated_at: "2020-01-02 00:00:00.000+00:00"
|
2792
2792
|
macros:
|
2793
|
-
- title:
|
2793
|
+
- title: now_utc
|
2794
2794
|
description: Returns the current date and time in the UTC timezone.
|
2795
2795
|
arguments: {}
|
2796
2796
|
return_type: Datetime
|
2797
2797
|
examples:
|
2798
2798
|
- "'{{ now_utc() }}' -> '2021-09-01 00:00:00+00:00'"
|
2799
2799
|
- "'{{ now_utc().strftime('%Y-%m-%d') }}' -> '2021-09-01'"
|
2800
|
-
- title:
|
2800
|
+
- title: today_utc
|
2801
2801
|
description: Returns the current date in UTC timezone. The output is a date object.
|
2802
2802
|
arguments: {}
|
2803
2803
|
return_type: Date
|
2804
2804
|
examples:
|
2805
2805
|
- "'{{ today_utc() }}' -> '2021-09-01'"
|
2806
2806
|
- "'{{ today_utc().strftime('%Y/%m/%d')}}' -> '2021/09/01'"
|
2807
|
-
- title:
|
2807
|
+
- title: timestamp
|
2808
2808
|
description: Converts a number or a string representing a datetime (formatted as ISO8601) to a timestamp. If the input is a number, it is converted to an int. If no timezone is specified, the string is interpreted as UTC.
|
2809
2809
|
arguments:
|
2810
2810
|
datetime: A string formatted as ISO8601 or an integer representing a unix timestamp
|
@@ -2815,7 +2815,7 @@ interpolation:
|
|
2815
2815
|
- "'{{ timestamp('2022-02-28T00:00:00Z') }}' -> 1646006400"
|
2816
2816
|
- "'{{ timestamp('2022-02-28 00:00:00Z') }}' -> 1646006400"
|
2817
2817
|
- "'{{ timestamp('2022-02-28T00:00:00-08:00') }}' -> 1646035200"
|
2818
|
-
- title:
|
2818
|
+
- title: max
|
2819
2819
|
description: Returns the largest object of a iterable, or or two or more arguments.
|
2820
2820
|
arguments:
|
2821
2821
|
args: iterable or a sequence of two or more arguments
|
@@ -2823,7 +2823,7 @@ interpolation:
|
|
2823
2823
|
examples:
|
2824
2824
|
- "'{{ max(2, 3) }}' -> 3"
|
2825
2825
|
- "'{{ max([2, 3]) }}' -> 3"
|
2826
|
-
- title:
|
2826
|
+
- title: day_delta
|
2827
2827
|
description: Returns the datetime of now() + num_days.
|
2828
2828
|
arguments:
|
2829
2829
|
num_days: The number of days to add to now
|
@@ -2833,8 +2833,8 @@ interpolation:
|
|
2833
2833
|
- "'{{ day_delta(1) }}' -> '2021-09-02T00:00:00.000000+0000'"
|
2834
2834
|
- "'{{ day_delta(-1) }}' -> '2021-08-31:00:00.000000+0000'"
|
2835
2835
|
- "'{{ day_delta(25, format='%Y-%m-%d') }}' -> '2021-09-02'"
|
2836
|
-
- title:
|
2837
|
-
description: Converts an ISO8601
|
2836
|
+
- title: duration
|
2837
|
+
description: Converts an ISO8601 duration to datetime timedelta.
|
2838
2838
|
arguments:
|
2839
2839
|
duration_string: "A string representing an ISO8601 duration. See https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm for more details."
|
2840
2840
|
return_type: datetime.timedelta
|
@@ -2842,7 +2842,7 @@ interpolation:
|
|
2842
2842
|
- "'{{ duration('P1D') }}' -> '1 day, 0:00:00'"
|
2843
2843
|
- "'{{ duration('P6DT23H') }}' -> '6 days, 23:00:00'"
|
2844
2844
|
- "'{{ (now_utc() - duration('P1D')).strftime('%Y-%m-%dT%H:%M:%SZ') }}' -> '2021-08-31T00:00:00Z'"
|
2845
|
-
- title:
|
2845
|
+
- title: format_datetime
|
2846
2846
|
description: Converts a datetime or a datetime-string to the specified format.
|
2847
2847
|
arguments:
|
2848
2848
|
datetime: The datetime object or a string to convert. If datetime is a string, it must be formatted as ISO8601.
|
@@ -2854,7 +2854,7 @@ interpolation:
|
|
2854
2854
|
- "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}"
|
2855
2855
|
- "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ', '%a, %d %b %Y %H:%M:%S %z') }}"
|
2856
2856
|
filters:
|
2857
|
-
- title:
|
2857
|
+
- title: hash
|
2858
2858
|
description: Convert the specified value to a hashed string.
|
2859
2859
|
arguments:
|
2860
2860
|
hash_type: Valid hash type for converts ('md5' as default value).
|
@@ -2864,26 +2864,26 @@ interpolation:
|
|
2864
2864
|
- "{{ 'Test client_secret' | hash() }} -> '3032d57a12f76b61a820e47b9a5a0cbb'"
|
2865
2865
|
- "{{ 'Test client_secret' | hash('md5') }} -> '3032d57a12f76b61a820e47b9a5a0cbb'"
|
2866
2866
|
- "{{ 'Test client_secret' | hash('md5', salt='salt') }} -> '5011a0168579c2d94cbbe1c6ad14327c'"
|
2867
|
-
- title:
|
2867
|
+
- title: base64encode
|
2868
2868
|
description: Convert the specified value to a string in the base64 format.
|
2869
2869
|
arguments: {}
|
2870
2870
|
return_type: str
|
2871
2871
|
examples:
|
2872
2872
|
- "{{ 'Test client_secret' | base64encode }} -> 'VGVzdCBjbGllbnRfc2VjcmV0'"
|
2873
|
-
- title:
|
2873
|
+
- title: base64decode
|
2874
2874
|
description: Decodes the specified base64 format value into a common string.
|
2875
2875
|
arguments: {}
|
2876
2876
|
return_type: str
|
2877
2877
|
examples:
|
2878
2878
|
- "{{ 'ZmFrZSByZWZyZXNoX3Rva2VuIHZhbHVl' | base64decode }} -> 'fake refresh_token value'"
|
2879
|
-
- title:
|
2879
|
+
- title: string
|
2880
2880
|
description: Converts the specified value to a string.
|
2881
2881
|
arguments: {}
|
2882
2882
|
return_type: str
|
2883
2883
|
examples:
|
2884
2884
|
- '{{ 1 | string }} -> "1"'
|
2885
2885
|
- '{{ ["hello", "world" | string }} -> "["hello", "world"]"'
|
2886
|
-
- title:
|
2886
|
+
- title: regex_search
|
2887
2887
|
description: Match the input string against a regular expression and return the first match.
|
2888
2888
|
arguments:
|
2889
2889
|
regex: The regular expression to search for. It must include a capture group.
|
@@ -5,10 +5,10 @@
|
|
5
5
|
import json
|
6
6
|
import logging
|
7
7
|
import pkgutil
|
8
|
-
import re
|
9
8
|
from copy import deepcopy
|
10
9
|
from importlib import metadata
|
11
|
-
from typing import Any, Dict, Iterator, List, Mapping, Optional
|
10
|
+
from typing import Any, Dict, Iterator, List, Mapping, Optional
|
11
|
+
from packaging.version import Version, InvalidVersion
|
12
12
|
|
13
13
|
import yaml
|
14
14
|
from airbyte_cdk.models import (
|
@@ -245,45 +245,54 @@ class ManifestDeclarativeSource(DeclarativeSource):
|
|
245
245
|
"Validation against json schema defined in declarative_component_schema.yaml schema failed"
|
246
246
|
) from e
|
247
247
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
if
|
248
|
+
cdk_version_str = metadata.version("airbyte_cdk")
|
249
|
+
cdk_version = self._parse_version(cdk_version_str, "airbyte-cdk")
|
250
|
+
manifest_version_str = self._source_config.get("version")
|
251
|
+
if manifest_version_str is None:
|
252
252
|
raise RuntimeError(
|
253
253
|
"Manifest version is not defined in the manifest. This is unexpected since it should be a required field. Please contact support."
|
254
254
|
)
|
255
|
-
|
256
|
-
manifest_version, "manifest"
|
257
|
-
)
|
255
|
+
manifest_version = self._parse_version(manifest_version_str, "manifest")
|
258
256
|
|
259
|
-
if cdk_version.
|
257
|
+
if (cdk_version.major, cdk_version.minor, cdk_version.micro) == (0, 0, 0):
|
260
258
|
# Skipping version compatibility check on unreleased dev branch
|
261
259
|
pass
|
262
|
-
elif
|
263
|
-
|
260
|
+
elif (cdk_version.major, cdk_version.minor) < (
|
261
|
+
manifest_version.major,
|
262
|
+
manifest_version.minor,
|
264
263
|
):
|
265
264
|
raise ValidationError(
|
266
|
-
f"The manifest version {manifest_version} is greater than the airbyte-cdk package version ({cdk_version}). Your "
|
265
|
+
f"The manifest version {manifest_version!s} is greater than the airbyte-cdk package version ({cdk_version!s}). Your "
|
267
266
|
f"manifest may contain features that are not in the current CDK version."
|
268
267
|
)
|
269
|
-
elif
|
268
|
+
elif (manifest_version.major, manifest_version.minor) < (0, 29):
|
270
269
|
raise ValidationError(
|
271
270
|
f"The low-code framework was promoted to Beta in airbyte-cdk version 0.29.0 and contains many breaking changes to the "
|
272
|
-
f"language. The manifest version {manifest_version} is incompatible with the airbyte-cdk package version "
|
273
|
-
f"{cdk_version} which contains these breaking changes."
|
271
|
+
f"language. The manifest version {manifest_version!s} is incompatible with the airbyte-cdk package version "
|
272
|
+
f"{cdk_version!s} which contains these breaking changes."
|
274
273
|
)
|
275
274
|
|
276
275
|
@staticmethod
|
277
|
-
def
|
278
|
-
|
279
|
-
|
276
|
+
def _parse_version(
|
277
|
+
version: str,
|
278
|
+
version_type: str,
|
279
|
+
) -> Version:
|
280
|
+
"""Takes a semantic version represented as a string and splits it into a tuple.
|
281
|
+
|
282
|
+
The fourth part (prerelease) is not returned in the tuple.
|
283
|
+
|
284
|
+
Returns:
|
285
|
+
Version: the parsed version object
|
280
286
|
"""
|
281
|
-
|
282
|
-
|
287
|
+
try:
|
288
|
+
parsed_version = Version(version)
|
289
|
+
except InvalidVersion as ex:
|
283
290
|
raise ValidationError(
|
284
|
-
f"The {version_type} version {version}
|
285
|
-
)
|
286
|
-
|
291
|
+
f"The {version_type} version '{version}' is not a valid version format."
|
292
|
+
) from ex
|
293
|
+
else:
|
294
|
+
# No exception
|
295
|
+
return parsed_version
|
287
296
|
|
288
297
|
def _stream_configs(self, manifest: Mapping[str, Any]) -> List[Dict[str, Any]]:
|
289
298
|
# This has a warning flag for static, but after we finish part 4 we'll replace manifest with self._source_config
|
@@ -29,16 +29,25 @@ from airbyte_cdk.sources.file_based.schema_helpers import SchemaType
|
|
29
29
|
from airbyte_cdk.utils import is_cloud_environment
|
30
30
|
from airbyte_cdk.utils.traced_exception import AirbyteTracedException
|
31
31
|
from unstructured.file_utils.filetype import (
|
32
|
+
EXT_TO_FILETYPE,
|
32
33
|
FILETYPE_TO_MIMETYPE,
|
33
34
|
STR_TO_FILETYPE,
|
34
35
|
FileType,
|
35
36
|
detect_filetype,
|
36
37
|
)
|
38
|
+
import nltk
|
37
39
|
|
38
40
|
unstructured_partition_pdf = None
|
39
41
|
unstructured_partition_docx = None
|
40
42
|
unstructured_partition_pptx = None
|
41
43
|
|
44
|
+
try:
|
45
|
+
nltk.data.find("tokenizers/punkt.zip")
|
46
|
+
nltk.data.find("tokenizers/punkt_tab.zip")
|
47
|
+
except LookupError:
|
48
|
+
nltk.download("punkt")
|
49
|
+
nltk.download("punkt_tab")
|
50
|
+
|
42
51
|
|
43
52
|
def optional_decode(contents: Union[str, bytes]) -> str:
|
44
53
|
if isinstance(contents, bytes):
|
@@ -108,9 +117,11 @@ class UnstructuredParser(FileTypeParser):
|
|
108
117
|
format = _extract_format(config)
|
109
118
|
with stream_reader.open_file(file, self.file_read_mode, None, logger) as file_handle:
|
110
119
|
filetype = self._get_filetype(file_handle, file)
|
111
|
-
|
112
120
|
if filetype not in self._supported_file_types() and not format.skip_unprocessable_files:
|
113
|
-
raise self._create_parse_error(
|
121
|
+
raise self._create_parse_error(
|
122
|
+
file,
|
123
|
+
self._get_file_type_error_message(filetype),
|
124
|
+
)
|
114
125
|
|
115
126
|
return {
|
116
127
|
"content": {
|
@@ -159,6 +170,10 @@ class UnstructuredParser(FileTypeParser):
|
|
159
170
|
logger.warn(f"File {file.uri} cannot be parsed. Skipping it.")
|
160
171
|
else:
|
161
172
|
raise e
|
173
|
+
except Exception as e:
|
174
|
+
exception_str = str(e)
|
175
|
+
logger.error(f"File {file.uri} caused an error during parsing: {exception_str}.")
|
176
|
+
raise e
|
162
177
|
|
163
178
|
def _read_file(
|
164
179
|
self,
|
@@ -176,20 +191,32 @@ class UnstructuredParser(FileTypeParser):
|
|
176
191
|
# check whether unstructured library is actually available for better error message and to ensure proper typing (can't be None after this point)
|
177
192
|
raise Exception("unstructured library is not available")
|
178
193
|
|
179
|
-
filetype = self._get_filetype(file_handle, remote_file)
|
194
|
+
filetype: FileType | None = self._get_filetype(file_handle, remote_file)
|
180
195
|
|
181
|
-
if filetype
|
196
|
+
if filetype is None or filetype not in self._supported_file_types():
|
197
|
+
raise self._create_parse_error(
|
198
|
+
remote_file,
|
199
|
+
self._get_file_type_error_message(filetype),
|
200
|
+
)
|
201
|
+
if filetype in {FileType.MD, FileType.TXT}:
|
182
202
|
file_content: bytes = file_handle.read()
|
183
203
|
decoded_content: str = optional_decode(file_content)
|
184
204
|
return decoded_content
|
185
|
-
if filetype not in self._supported_file_types():
|
186
|
-
raise self._create_parse_error(remote_file, self._get_file_type_error_message(filetype))
|
187
205
|
if format.processing.mode == "local":
|
188
|
-
return self._read_file_locally(
|
206
|
+
return self._read_file_locally(
|
207
|
+
file_handle,
|
208
|
+
filetype,
|
209
|
+
format.strategy,
|
210
|
+
remote_file,
|
211
|
+
)
|
189
212
|
elif format.processing.mode == "api":
|
190
213
|
try:
|
191
214
|
result: str = self._read_file_remotely_with_retries(
|
192
|
-
file_handle,
|
215
|
+
file_handle,
|
216
|
+
format.processing,
|
217
|
+
filetype,
|
218
|
+
format.strategy,
|
219
|
+
remote_file,
|
193
220
|
)
|
194
221
|
except Exception as e:
|
195
222
|
# If a parser error happens during remotely processing the file, this means the file is corrupted. This case is handled by the parse_records method, so just rethrow.
|
@@ -336,7 +363,11 @@ class UnstructuredParser(FileTypeParser):
|
|
336
363
|
|
337
364
|
return self._render_markdown([element.to_dict() for element in elements])
|
338
365
|
|
339
|
-
def _create_parse_error(
|
366
|
+
def _create_parse_error(
|
367
|
+
self,
|
368
|
+
remote_file: RemoteFile,
|
369
|
+
message: str,
|
370
|
+
) -> RecordParseError:
|
340
371
|
return RecordParseError(
|
341
372
|
FileBasedSourceError.ERROR_PARSING_RECORD, filename=remote_file.uri, message=message
|
342
373
|
)
|
@@ -360,32 +391,51 @@ class UnstructuredParser(FileTypeParser):
|
|
360
391
|
# detect_filetype is either using the file name or file content
|
361
392
|
# if possible, try to leverage the file name to detect the file type
|
362
393
|
# if the file name is not available, use the file content
|
363
|
-
file_type =
|
364
|
-
|
365
|
-
|
366
|
-
|
394
|
+
file_type: FileType | None = None
|
395
|
+
try:
|
396
|
+
file_type = detect_filetype(
|
397
|
+
filename=remote_file.uri,
|
398
|
+
)
|
399
|
+
except Exception:
|
400
|
+
# Path doesn't exist locally. Try something else...
|
401
|
+
pass
|
402
|
+
|
403
|
+
if file_type and file_type != FileType.UNK:
|
367
404
|
return file_type
|
368
405
|
|
369
406
|
type_based_on_content = detect_filetype(file=file)
|
407
|
+
file.seek(0) # detect_filetype is reading to read the file content, so we need to reset
|
370
408
|
|
371
|
-
|
372
|
-
|
409
|
+
if type_based_on_content and type_based_on_content != FileType.UNK:
|
410
|
+
return type_based_on_content
|
373
411
|
|
374
|
-
|
412
|
+
extension = "." + remote_file.uri.split(".")[-1].lower()
|
413
|
+
if extension in EXT_TO_FILETYPE:
|
414
|
+
return EXT_TO_FILETYPE[extension]
|
415
|
+
|
416
|
+
return None
|
375
417
|
|
376
418
|
def _supported_file_types(self) -> List[Any]:
|
377
419
|
return [FileType.MD, FileType.PDF, FileType.DOCX, FileType.PPTX, FileType.TXT]
|
378
420
|
|
379
|
-
def _get_file_type_error_message(
|
421
|
+
def _get_file_type_error_message(
|
422
|
+
self,
|
423
|
+
file_type: FileType | None,
|
424
|
+
) -> str:
|
380
425
|
supported_file_types = ", ".join([str(type) for type in self._supported_file_types()])
|
381
|
-
return f"File type {file_type} is not supported. Supported file types are {supported_file_types}"
|
426
|
+
return f"File type {file_type or 'None'!s} is not supported. Supported file types are {supported_file_types}"
|
382
427
|
|
383
428
|
def _render_markdown(self, elements: List[Any]) -> str:
|
384
429
|
return "\n\n".join((self._convert_to_markdown(el) for el in elements))
|
385
430
|
|
386
431
|
def _convert_to_markdown(self, el: Dict[str, Any]) -> str:
|
387
432
|
if dpath.get(el, "type") == "Title":
|
388
|
-
|
433
|
+
category_depth = dpath.get(el, "metadata/category_depth", default=1) or 1
|
434
|
+
if not isinstance(category_depth, int):
|
435
|
+
category_depth = (
|
436
|
+
int(category_depth) if isinstance(category_depth, (str, float)) else 1
|
437
|
+
)
|
438
|
+
heading_str = "#" * category_depth
|
389
439
|
return f"{heading_str} {dpath.get(el, 'text')}"
|
390
440
|
elif dpath.get(el, "type") == "ListItem":
|
391
441
|
return f"- {dpath.get(el, 'text')}"
|
@@ -0,0 +1 @@
|
|
1
|
+
# Copyright (c) 2024 Airbyte, Inc., all rights reserved.
|