airbyte-cdk 6.38.0.dev0__tar.gz → 6.38.1__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.38.0.dev0 → airbyte_cdk-6.38.1}/PKG-INFO +3 -3
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/entrypoint.py +6 -6
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/logger.py +1 -4
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +4 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +10 -2
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +4 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +3 -5
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +7 -5
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +1 -1
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +48 -22
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +25 -4
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +6 -1
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +7 -2
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/requester.py +7 -1
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +21 -4
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -1
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +3 -3
- airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/utils/__init__.py +3 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/types.py +1 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/mapping_helpers.py +18 -1
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/pyproject.toml +3 -3
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -7
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/__init__.py +0 -3
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/base_integration.py +0 -61
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/catalog.py +0 -57
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/runner.py +0 -57
- airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/tools.py +0 -27
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/LICENSE.txt +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/concurrent → airbyte_cdk-6.38.1/airbyte_cdk/sources/declarative/datetime}/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/concurrent/partitions → airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/concurrent}/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/utils → airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/concurrent/partitions}/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: airbyte-cdk
|
3
|
-
Version: 6.38.
|
3
|
+
Version: 6.38.1
|
4
4
|
Summary: A framework for writing Airbyte Connectors.
|
5
5
|
Home-page: https://airbyte.com
|
6
6
|
License: MIT
|
@@ -28,7 +28,7 @@ Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
|
|
28
28
|
Requires-Dist: backoff
|
29
29
|
Requires-Dist: cachetools
|
30
30
|
Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
|
31
|
-
Requires-Dist: cryptography (>=
|
31
|
+
Requires-Dist: cryptography (>=44.0.0,<45.0.0)
|
32
32
|
Requires-Dist: dpath (>=2.1.6,<3.0.0)
|
33
33
|
Requires-Dist: dunamai (>=1.22.0,<2.0.0)
|
34
34
|
Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
|
@@ -47,7 +47,7 @@ Requires-Dist: pandas (==2.2.2)
|
|
47
47
|
Requires-Dist: pdf2image (==1.16.3) ; extra == "file-based"
|
48
48
|
Requires-Dist: pdfminer.six (==20221105) ; extra == "file-based"
|
49
49
|
Requires-Dist: psutil (==6.1.0)
|
50
|
-
Requires-Dist: pyarrow (>=
|
50
|
+
Requires-Dist: pyarrow (>=19.0.0,<20.0.0) ; extra == "file-based"
|
51
51
|
Requires-Dist: pydantic (>=2.7,<3.0)
|
52
52
|
Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
|
53
53
|
Requires-Dist: pyrate-limiter (>=3.1.0,<3.2.0)
|
@@ -22,7 +22,7 @@ from requests import PreparedRequest, Response, Session
|
|
22
22
|
|
23
23
|
from airbyte_cdk.connector import TConfig
|
24
24
|
from airbyte_cdk.exception_handler import init_uncaught_exception_handler
|
25
|
-
from airbyte_cdk.logger import
|
25
|
+
from airbyte_cdk.logger import init_logger
|
26
26
|
from airbyte_cdk.models import (
|
27
27
|
AirbyteConnectionStatus,
|
28
28
|
AirbyteMessage,
|
@@ -337,11 +337,11 @@ def launch(source: Source, args: List[str]) -> None:
|
|
337
337
|
parsed_args = source_entrypoint.parse_args(args)
|
338
338
|
# temporarily removes the PrintBuffer because we're seeing weird print behavior for concurrent syncs
|
339
339
|
# Refer to: https://github.com/airbytehq/oncall/issues/6235
|
340
|
-
with
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
340
|
+
# with PrintBuffer():
|
341
|
+
for message in source_entrypoint.run(parsed_args):
|
342
|
+
# simply printing is creating issues for concurrent CDK as Python uses different two instructions to print: one for the message and
|
343
|
+
# the other for the break line. Adding `\n` to the message ensure that both are printed at the same time
|
344
|
+
print(f"{message}\n", end="", flush=True)
|
345
345
|
|
346
346
|
|
347
347
|
def _init_internal_request_filter() -> None:
|
@@ -16,11 +16,8 @@ from airbyte_cdk.models import (
|
|
16
16
|
Level,
|
17
17
|
Type,
|
18
18
|
)
|
19
|
-
from airbyte_cdk.utils import PrintBuffer
|
20
19
|
from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
|
21
20
|
|
22
|
-
PRINT_BUFFER = PrintBuffer(flush_interval=0.1)
|
23
|
-
|
24
21
|
LOGGING_CONFIG = {
|
25
22
|
"version": 1,
|
26
23
|
"disable_existing_loggers": False,
|
@@ -30,7 +27,7 @@ LOGGING_CONFIG = {
|
|
30
27
|
"handlers": {
|
31
28
|
"console": {
|
32
29
|
"class": "logging.StreamHandler",
|
33
|
-
"stream":
|
30
|
+
"stream": "ext://sys.stdout",
|
34
31
|
"formatter": "airbyte",
|
35
32
|
},
|
36
33
|
},
|
@@ -29,6 +29,8 @@ class DatetimeParser:
|
|
29
29
|
return datetime.datetime.fromtimestamp(int(date), tz=datetime.timezone.utc)
|
30
30
|
elif format == "%s_as_float":
|
31
31
|
return datetime.datetime.fromtimestamp(float(date), tz=datetime.timezone.utc)
|
32
|
+
elif format == "%epoch_microseconds":
|
33
|
+
return self._UNIX_EPOCH + datetime.timedelta(microseconds=int(date))
|
32
34
|
elif format == "%ms":
|
33
35
|
return self._UNIX_EPOCH + datetime.timedelta(milliseconds=int(date))
|
34
36
|
elif "%_ms" in format:
|
@@ -46,6 +48,8 @@ class DatetimeParser:
|
|
46
48
|
return str(int(dt.timestamp()))
|
47
49
|
if format == "%s_as_float":
|
48
50
|
return str(float(dt.timestamp()))
|
51
|
+
if format == "%epoch_microseconds":
|
52
|
+
return str(int(dt.timestamp() * 1_000_000))
|
49
53
|
if format == "%ms":
|
50
54
|
# timstamp() returns a float representing the number of seconds since the unix epoch
|
51
55
|
return str(int(dt.timestamp() * 1000))
|
@@ -1794,7 +1794,6 @@ definitions:
|
|
1794
1794
|
type: object
|
1795
1795
|
required:
|
1796
1796
|
- type
|
1797
|
-
- path
|
1798
1797
|
- url_base
|
1799
1798
|
properties:
|
1800
1799
|
type:
|
@@ -1806,9 +1805,18 @@ definitions:
|
|
1806
1805
|
type: string
|
1807
1806
|
interpolation_context:
|
1808
1807
|
- config
|
1808
|
+
- next_page_token
|
1809
|
+
- stream_interval
|
1810
|
+
- stream_partition
|
1811
|
+
- stream_slice
|
1812
|
+
- creation_response
|
1813
|
+
- polling_response
|
1814
|
+
- download_target
|
1809
1815
|
examples:
|
1810
1816
|
- "https://connect.squareup.com/v2"
|
1811
|
-
- "{{ config['base_url'] or 'https://app.posthog.com'}}/api
|
1817
|
+
- "{{ config['base_url'] or 'https://app.posthog.com'}}/api"
|
1818
|
+
- "https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups"
|
1819
|
+
- "https://example.com/api/v1/resource/{{ next_page_token['id'] }}"
|
1812
1820
|
path:
|
1813
1821
|
title: URL Path
|
1814
1822
|
description: Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.
|
@@ -151,6 +151,10 @@ class CompositeRawDecoder(Decoder):
|
|
151
151
|
self, response: requests.Response
|
152
152
|
) -> Generator[MutableMapping[str, Any], None, None]:
|
153
153
|
if self.is_stream_response():
|
154
|
+
# urllib mentions that some interfaces don't play nice with auto_close [here](https://urllib3.readthedocs.io/en/stable/user-guide.html#using-io-wrappers-with-response-content)
|
155
|
+
# We have indeed observed some issues with CSV parsing. Hence, we will manage the closing of the file ourselves until we find a better solution.
|
156
|
+
response.raw.auto_close = False
|
154
157
|
yield from self.parser.parse(data=response.raw) # type: ignore[arg-type]
|
158
|
+
response.raw.close()
|
155
159
|
else:
|
156
160
|
yield from self.parser.parse(data=io.BytesIO(response.content))
|
@@ -12,6 +12,8 @@ import pytz
|
|
12
12
|
from dateutil import parser
|
13
13
|
from isodate import parse_duration
|
14
14
|
|
15
|
+
from airbyte_cdk.sources.declarative.datetime.datetime_parser import DatetimeParser
|
16
|
+
|
15
17
|
"""
|
16
18
|
This file contains macros that can be evaluated by a `JinjaInterpolation` object
|
17
19
|
"""
|
@@ -171,11 +173,7 @@ def format_datetime(
|
|
171
173
|
dt_datetime = (
|
172
174
|
datetime.datetime.strptime(dt, input_format) if input_format else str_to_datetime(dt)
|
173
175
|
)
|
174
|
-
|
175
|
-
return str(int(dt_datetime.timestamp()))
|
176
|
-
elif format == "%ms":
|
177
|
-
return str(int(dt_datetime.timestamp() * 1_000_000))
|
178
|
-
return dt_datetime.strftime(format)
|
176
|
+
return DatetimeParser().format(dt=dt_datetime, format=format)
|
179
177
|
|
180
178
|
|
181
179
|
_macros_list = [
|
@@ -939,7 +939,7 @@ class MinMaxDatetime(BaseModel):
|
|
939
939
|
)
|
940
940
|
datetime_format: Optional[str] = Field(
|
941
941
|
"",
|
942
|
-
description='Format of the datetime value. Defaults to "%Y-%m-%dT%H:%M:%S.%f%z" if left empty. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (Sunday as first day) - `00`, `01`, ..., `53`\n * **%W**: Week number of the year (Monday as first day) - `00`, `01`, ..., `53`\n * **%c**: Date and time representation - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date representation - `08/16/1988`\n * **%X**: Time representation - `21:30:00`\n * **%%**: Literal \'%\' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n',
|
942
|
+
description='Format of the datetime value. Defaults to "%Y-%m-%dT%H:%M:%S.%f%z" if left empty. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`\n * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`, `001`, ..., `999`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (Sunday as first day) - `00`, `01`, ..., `53`\n * **%W**: Week number of the year (Monday as first day) - `00`, `01`, ..., `53`\n * **%c**: Date and time representation - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date representation - `08/16/1988`\n * **%X**: Time representation - `21:30:00`\n * **%%**: Literal \'%\' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n',
|
943
943
|
examples=["%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%d", "%s"],
|
944
944
|
title="Datetime Format",
|
945
945
|
)
|
@@ -1545,7 +1545,7 @@ class DatetimeBasedCursor(BaseModel):
|
|
1545
1545
|
)
|
1546
1546
|
datetime_format: str = Field(
|
1547
1547
|
...,
|
1548
|
-
description="The datetime format used to format the datetime values that are sent in outgoing requests to the API. Use placeholders starting with \"%\" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp (milliseconds) - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (starting Sunday) - `00`, ..., `53`\n * **%W**: Week number of the year (starting Monday) - `00`, ..., `53`\n * **%c**: Date and time - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date standard format - `08/16/1988`\n * **%X**: Time standard format - `21:30:00`\n * **%%**: Literal '%' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n",
|
1548
|
+
description="The datetime format used to format the datetime values that are sent in outgoing requests to the API. Use placeholders starting with \"%\" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp (milliseconds) - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`\n * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (starting Sunday) - `00`, ..., `53`\n * **%W**: Week number of the year (starting Monday) - `00`, ..., `53`\n * **%c**: Date and time - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date standard format - `08/16/1988`\n * **%X**: Time standard format - `21:30:00`\n * **%%**: Literal '%' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n",
|
1549
1549
|
examples=["%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%d", "%s", "%ms", "%s_as_float"],
|
1550
1550
|
title="Outgoing Datetime Format",
|
1551
1551
|
)
|
@@ -2072,12 +2072,14 @@ class HttpRequester(BaseModel):
|
|
2072
2072
|
description="Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.",
|
2073
2073
|
examples=[
|
2074
2074
|
"https://connect.squareup.com/v2",
|
2075
|
-
"{{ config['base_url'] or 'https://app.posthog.com'}}/api
|
2075
|
+
"{{ config['base_url'] or 'https://app.posthog.com'}}/api",
|
2076
|
+
"https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups",
|
2077
|
+
"https://example.com/api/v1/resource/{{ next_page_token['id'] }}",
|
2076
2078
|
],
|
2077
2079
|
title="API Base URL",
|
2078
2080
|
)
|
2079
|
-
path: str = Field(
|
2080
|
-
|
2081
|
+
path: Optional[str] = Field(
|
2082
|
+
None,
|
2081
2083
|
description="Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.",
|
2082
2084
|
examples=[
|
2083
2085
|
"/products",
|
@@ -56,7 +56,7 @@ from airbyte_cdk.sources.declarative.auth.token_provider import (
|
|
56
56
|
)
|
57
57
|
from airbyte_cdk.sources.declarative.checks import CheckDynamicStream, CheckStream
|
58
58
|
from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel
|
59
|
-
from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime
|
59
|
+
from airbyte_cdk.sources.declarative.datetime.min_max_datetime import MinMaxDatetime
|
60
60
|
from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream
|
61
61
|
from airbyte_cdk.sources.declarative.decoders import (
|
62
62
|
Decoder,
|
@@ -25,8 +25,8 @@ from airbyte_cdk.sources.message import MessageRepository, NoopMessageRepository
|
|
25
25
|
from airbyte_cdk.sources.streams.call_rate import APIBudget
|
26
26
|
from airbyte_cdk.sources.streams.http import HttpClient
|
27
27
|
from airbyte_cdk.sources.streams.http.error_handlers import ErrorHandler
|
28
|
-
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
29
|
-
from airbyte_cdk.utils.mapping_helpers import combine_mappings
|
28
|
+
from airbyte_cdk.sources.types import Config, EmptyString, StreamSlice, StreamState
|
29
|
+
from airbyte_cdk.utils.mapping_helpers import combine_mappings, get_interpolation_context
|
30
30
|
|
31
31
|
|
32
32
|
@dataclass
|
@@ -49,9 +49,10 @@ class HttpRequester(Requester):
|
|
49
49
|
|
50
50
|
name: str
|
51
51
|
url_base: Union[InterpolatedString, str]
|
52
|
-
path: Union[InterpolatedString, str]
|
53
52
|
config: Config
|
54
53
|
parameters: InitVar[Mapping[str, Any]]
|
54
|
+
|
55
|
+
path: Optional[Union[InterpolatedString, str]] = None
|
55
56
|
authenticator: Optional[DeclarativeAuthenticator] = None
|
56
57
|
http_method: Union[str, HttpMethod] = HttpMethod.GET
|
57
58
|
request_options_provider: Optional[InterpolatedRequestOptionsProvider] = None
|
@@ -66,7 +67,9 @@ class HttpRequester(Requester):
|
|
66
67
|
|
67
68
|
def __post_init__(self, parameters: Mapping[str, Any]) -> None:
|
68
69
|
self._url_base = InterpolatedString.create(self.url_base, parameters=parameters)
|
69
|
-
self._path = InterpolatedString.create(
|
70
|
+
self._path = InterpolatedString.create(
|
71
|
+
self.path if self.path else EmptyString, parameters=parameters
|
72
|
+
)
|
70
73
|
if self.request_options_provider is None:
|
71
74
|
self._request_options_provider = InterpolatedRequestOptionsProvider(
|
72
75
|
config=self.config, parameters=parameters
|
@@ -112,27 +115,33 @@ class HttpRequester(Requester):
|
|
112
115
|
def get_authenticator(self) -> DeclarativeAuthenticator:
|
113
116
|
return self._authenticator
|
114
117
|
|
115
|
-
def get_url_base(
|
116
|
-
|
118
|
+
def get_url_base(
|
119
|
+
self,
|
120
|
+
*,
|
121
|
+
stream_state: Optional[StreamState] = None,
|
122
|
+
stream_slice: Optional[StreamSlice] = None,
|
123
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
124
|
+
) -> str:
|
125
|
+
interpolation_context = get_interpolation_context(
|
126
|
+
stream_state=stream_state,
|
127
|
+
stream_slice=stream_slice,
|
128
|
+
next_page_token=next_page_token,
|
129
|
+
)
|
130
|
+
return os.path.join(self._url_base.eval(self.config, **interpolation_context), EmptyString)
|
117
131
|
|
118
132
|
def get_path(
|
119
133
|
self,
|
120
134
|
*,
|
121
|
-
stream_state: Optional[StreamState],
|
122
|
-
stream_slice: Optional[StreamSlice],
|
123
|
-
next_page_token: Optional[Mapping[str, Any]],
|
135
|
+
stream_state: Optional[StreamState] = None,
|
136
|
+
stream_slice: Optional[StreamSlice] = None,
|
137
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
124
138
|
) -> str:
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
if stream_slice is not None and hasattr(stream_slice, "extra_fields")
|
132
|
-
else {}
|
133
|
-
),
|
134
|
-
}
|
135
|
-
path = str(self._path.eval(self.config, **kwargs))
|
139
|
+
interpolation_context = get_interpolation_context(
|
140
|
+
stream_state=stream_state,
|
141
|
+
stream_slice=stream_slice,
|
142
|
+
next_page_token=next_page_token,
|
143
|
+
)
|
144
|
+
path = str(self._path.eval(self.config, **interpolation_context))
|
136
145
|
return path.lstrip("/")
|
137
146
|
|
138
147
|
def get_method(self) -> HttpMethod:
|
@@ -330,7 +339,20 @@ class HttpRequester(Requester):
|
|
330
339
|
|
331
340
|
@classmethod
|
332
341
|
def _join_url(cls, url_base: str, path: str) -> str:
|
333
|
-
|
342
|
+
"""
|
343
|
+
Joins a base URL with a given path and returns the resulting URL with any trailing slash removed.
|
344
|
+
|
345
|
+
This method ensures that there are no duplicate slashes when concatenating the base URL and the path,
|
346
|
+
which is useful when the full URL is provided from an interpolation context.
|
347
|
+
|
348
|
+
Args:
|
349
|
+
url_base (str): The base URL to which the path will be appended.
|
350
|
+
path (str): The path to join with the base URL.
|
351
|
+
|
352
|
+
Returns:
|
353
|
+
str: The concatenated URL with the trailing slash (if any) removed.
|
354
|
+
"""
|
355
|
+
return urljoin(url_base, path).rstrip("/")
|
334
356
|
|
335
357
|
def send_request(
|
336
358
|
self,
|
@@ -347,7 +369,11 @@ class HttpRequester(Requester):
|
|
347
369
|
request, response = self._http_client.send_request(
|
348
370
|
http_method=self.get_method().value,
|
349
371
|
url=self._join_url(
|
350
|
-
self.get_url_base(
|
372
|
+
self.get_url_base(
|
373
|
+
stream_state=stream_state,
|
374
|
+
stream_slice=stream_slice,
|
375
|
+
next_page_token=next_page_token,
|
376
|
+
),
|
351
377
|
path
|
352
378
|
or self.get_path(
|
353
379
|
stream_state=stream_state,
|
@@ -25,6 +25,7 @@ from airbyte_cdk.sources.declarative.requesters.request_path import RequestPath
|
|
25
25
|
from airbyte_cdk.sources.types import Config, Record, StreamSlice, StreamState
|
26
26
|
from airbyte_cdk.utils.mapping_helpers import (
|
27
27
|
_validate_component_request_option_paths,
|
28
|
+
get_interpolation_context,
|
28
29
|
)
|
29
30
|
|
30
31
|
|
@@ -150,11 +151,22 @@ class DefaultPaginator(Paginator):
|
|
150
151
|
else:
|
151
152
|
return None
|
152
153
|
|
153
|
-
def path(
|
154
|
+
def path(
|
155
|
+
self,
|
156
|
+
next_page_token: Optional[Mapping[str, Any]],
|
157
|
+
stream_state: Optional[Mapping[str, Any]] = None,
|
158
|
+
stream_slice: Optional[StreamSlice] = None,
|
159
|
+
) -> Optional[str]:
|
154
160
|
token = next_page_token.get("next_page_token") if next_page_token else None
|
155
161
|
if token and self.page_token_option and isinstance(self.page_token_option, RequestPath):
|
162
|
+
# make additional interpolation context
|
163
|
+
interpolation_context = get_interpolation_context(
|
164
|
+
stream_state=stream_state,
|
165
|
+
stream_slice=stream_slice,
|
166
|
+
next_page_token=next_page_token,
|
167
|
+
)
|
156
168
|
# Replace url base to only return the path
|
157
|
-
return str(token).replace(self.url_base.eval(self.config), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
|
169
|
+
return str(token).replace(self.url_base.eval(self.config, **interpolation_context), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
|
158
170
|
else:
|
159
171
|
return None
|
160
172
|
|
@@ -258,8 +270,17 @@ class PaginatorTestReadDecorator(Paginator):
|
|
258
270
|
response, last_page_size, last_record, last_page_token_value
|
259
271
|
)
|
260
272
|
|
261
|
-
def path(
|
262
|
-
|
273
|
+
def path(
|
274
|
+
self,
|
275
|
+
next_page_token: Optional[Mapping[str, Any]],
|
276
|
+
stream_state: Optional[Mapping[str, Any]] = None,
|
277
|
+
stream_slice: Optional[StreamSlice] = None,
|
278
|
+
) -> Optional[str]:
|
279
|
+
return self._decorated.path(
|
280
|
+
next_page_token=next_page_token,
|
281
|
+
stream_state=stream_state,
|
282
|
+
stream_slice=stream_slice,
|
283
|
+
)
|
263
284
|
|
264
285
|
def get_request_params(
|
265
286
|
self,
|
@@ -19,7 +19,12 @@ class NoPagination(Paginator):
|
|
19
19
|
|
20
20
|
parameters: InitVar[Mapping[str, Any]]
|
21
21
|
|
22
|
-
def path(
|
22
|
+
def path(
|
23
|
+
self,
|
24
|
+
next_page_token: Optional[Mapping[str, Any]],
|
25
|
+
stream_state: Optional[Mapping[str, Any]] = None,
|
26
|
+
stream_slice: Optional[StreamSlice] = None,
|
27
|
+
) -> Optional[str]:
|
23
28
|
return None
|
24
29
|
|
25
30
|
def get_request_params(
|
@@ -11,7 +11,7 @@ import requests
|
|
11
11
|
from airbyte_cdk.sources.declarative.requesters.request_options.request_options_provider import (
|
12
12
|
RequestOptionsProvider,
|
13
13
|
)
|
14
|
-
from airbyte_cdk.sources.types import Record
|
14
|
+
from airbyte_cdk.sources.types import Record, StreamSlice
|
15
15
|
|
16
16
|
|
17
17
|
@dataclass
|
@@ -49,7 +49,12 @@ class Paginator(ABC, RequestOptionsProvider):
|
|
49
49
|
pass
|
50
50
|
|
51
51
|
@abstractmethod
|
52
|
-
def path(
|
52
|
+
def path(
|
53
|
+
self,
|
54
|
+
next_page_token: Optional[Mapping[str, Any]],
|
55
|
+
stream_state: Optional[Mapping[str, Any]] = None,
|
56
|
+
stream_slice: Optional[StreamSlice] = None,
|
57
|
+
) -> Optional[str]:
|
53
58
|
"""
|
54
59
|
Returns the URL path to hit to fetch the next page of records
|
55
60
|
|
@@ -35,7 +35,13 @@ class Requester(RequestOptionsProvider):
|
|
35
35
|
pass
|
36
36
|
|
37
37
|
@abstractmethod
|
38
|
-
def get_url_base(
|
38
|
+
def get_url_base(
|
39
|
+
self,
|
40
|
+
*,
|
41
|
+
stream_state: Optional[StreamState],
|
42
|
+
stream_slice: Optional[StreamSlice],
|
43
|
+
next_page_token: Optional[Mapping[str, Any]],
|
44
|
+
) -> str:
|
39
45
|
"""
|
40
46
|
:return: URL base for the API endpoint e.g: if you wanted to hit https://myapi.com/v1/some_entity then this should return "https://myapi.com/v1/"
|
41
47
|
"""
|
@@ -234,13 +234,22 @@ class SimpleRetriever(Retriever):
|
|
234
234
|
raise ValueError("Request body json cannot be a string")
|
235
235
|
return body_json
|
236
236
|
|
237
|
-
def _paginator_path(
|
237
|
+
def _paginator_path(
|
238
|
+
self,
|
239
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
240
|
+
stream_state: Optional[Mapping[str, Any]] = None,
|
241
|
+
stream_slice: Optional[StreamSlice] = None,
|
242
|
+
) -> Optional[str]:
|
238
243
|
"""
|
239
244
|
If the paginator points to a path, follow it, else return nothing so the requester is used.
|
240
245
|
:param next_page_token:
|
241
246
|
:return:
|
242
247
|
"""
|
243
|
-
return self._paginator.path(
|
248
|
+
return self._paginator.path(
|
249
|
+
next_page_token=next_page_token,
|
250
|
+
stream_state=stream_state,
|
251
|
+
stream_slice=stream_slice,
|
252
|
+
)
|
244
253
|
|
245
254
|
def _parse_response(
|
246
255
|
self,
|
@@ -299,7 +308,11 @@ class SimpleRetriever(Retriever):
|
|
299
308
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
300
309
|
) -> Optional[requests.Response]:
|
301
310
|
return self.requester.send_request(
|
302
|
-
path=self._paginator_path(
|
311
|
+
path=self._paginator_path(
|
312
|
+
next_page_token=next_page_token,
|
313
|
+
stream_state=stream_state,
|
314
|
+
stream_slice=stream_slice,
|
315
|
+
),
|
303
316
|
stream_state=stream_state,
|
304
317
|
stream_slice=stream_slice,
|
305
318
|
next_page_token=next_page_token,
|
@@ -570,7 +583,11 @@ class SimpleRetrieverTestReadDecorator(SimpleRetriever):
|
|
570
583
|
next_page_token: Optional[Mapping[str, Any]] = None,
|
571
584
|
) -> Optional[requests.Response]:
|
572
585
|
return self.requester.send_request(
|
573
|
-
path=self._paginator_path(
|
586
|
+
path=self._paginator_path(
|
587
|
+
next_page_token=next_page_token,
|
588
|
+
stream_state=stream_state,
|
589
|
+
stream_slice=stream_slice,
|
590
|
+
),
|
574
591
|
stream_state=stream_state,
|
575
592
|
stream_slice=stream_slice,
|
576
593
|
next_page_token=next_page_token,
|
@@ -50,7 +50,6 @@ class YamlDeclarativeSource(ConcurrentDeclarativeSource[List[AirbyteStateMessage
|
|
50
50
|
|
51
51
|
def _emit_manifest_debug_message(self, extra_args: dict[str, Any]) -> None:
|
52
52
|
extra_args["path_to_yaml"] = self._path_to_yaml
|
53
|
-
self.logger.debug("declarative source created from parsed YAML manifest", extra=extra_args)
|
54
53
|
|
55
54
|
@staticmethod
|
56
55
|
def _parse(connection_definition_str: str) -> ConnectionDefinition:
|
@@ -19,9 +19,9 @@ DEFAULT_ERROR_MAPPING: Mapping[Union[int, str, Type[Exception]], ErrorResolution
|
|
19
19
|
error_message="Invalid Protocol Schema: The endpoint that data is being requested from is using an invalid or insecure. Exception: requests.exceptions.InvalidSchema",
|
20
20
|
),
|
21
21
|
InvalidURL: ErrorResolution(
|
22
|
-
response_action=ResponseAction.
|
23
|
-
failure_type=FailureType.
|
24
|
-
error_message="Invalid URL specified: The endpoint that data is being requested from is not a valid URL. Exception: requests.exceptions.InvalidURL",
|
22
|
+
response_action=ResponseAction.RETRY,
|
23
|
+
failure_type=FailureType.transient_error,
|
24
|
+
error_message="Invalid URL specified or DNS error occurred: The endpoint that data is being requested from is not a valid URL. Exception: requests.exceptions.InvalidURL",
|
25
25
|
),
|
26
26
|
RequestException: ErrorResolution(
|
27
27
|
response_action=ResponseAction.RETRY,
|
@@ -10,7 +10,7 @@ from airbyte_cdk.sources.declarative.requesters.request_option import (
|
|
10
10
|
RequestOption,
|
11
11
|
RequestOptionType,
|
12
12
|
)
|
13
|
-
from airbyte_cdk.sources.types import Config
|
13
|
+
from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
|
14
14
|
|
15
15
|
|
16
16
|
def _merge_mappings(
|
@@ -143,3 +143,20 @@ def _validate_component_request_option_paths(
|
|
143
143
|
)
|
144
144
|
except ValueError as error:
|
145
145
|
raise ValueError(error)
|
146
|
+
|
147
|
+
|
148
|
+
def get_interpolation_context(
|
149
|
+
stream_state: Optional[StreamState] = None,
|
150
|
+
stream_slice: Optional[StreamSlice] = None,
|
151
|
+
next_page_token: Optional[Mapping[str, Any]] = None,
|
152
|
+
) -> Mapping[str, Any]:
|
153
|
+
return {
|
154
|
+
"stream_slice": stream_slice,
|
155
|
+
"next_page_token": next_page_token,
|
156
|
+
# update the context with extra fields, if passed.
|
157
|
+
**(
|
158
|
+
stream_slice.extra_fields
|
159
|
+
if stream_slice is not None and hasattr(stream_slice, "extra_fields")
|
160
|
+
else {}
|
161
|
+
),
|
162
|
+
}
|
@@ -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.38.
|
26
|
+
version = "6.38.1" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
@@ -61,7 +61,7 @@ markdown = { version = "*", optional = true }
|
|
61
61
|
openai = { version = "0.27.9", extras = ["embeddings"], optional = true }
|
62
62
|
pdf2image = { version = "1.16.3", optional = true }
|
63
63
|
"pdfminer.six" = { version = "20221105", optional = true }
|
64
|
-
pyarrow = { version = "
|
64
|
+
pyarrow = { version = "^19.0.0", optional = true }
|
65
65
|
pytesseract = { version = "0.3.10", optional = true }
|
66
66
|
python-calamine = { version = "0.2.3", optional = true }
|
67
67
|
python-snappy = { version = "0.7.3", optional = true }
|
@@ -73,7 +73,7 @@ numpy = "<2"
|
|
73
73
|
unstructured = { version = "0.10.27", extras = ["docx", "pptx"], optional = true }
|
74
74
|
"unstructured.pytesseract" = { version = ">=0.3.12", optional = true }
|
75
75
|
pyjwt = "^2.8.0"
|
76
|
-
cryptography = ">=
|
76
|
+
cryptography = ">=44.0.0,<45.0.0"
|
77
77
|
pytz = "2024.2"
|
78
78
|
orjson = "^3.10.7"
|
79
79
|
serpyco-rs = "^1.10.2"
|