airbyte-cdk 6.38.2__tar.gz → 6.38.3.dev4100__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.2 → airbyte_cdk-6.38.3.dev4100}/PKG-INFO +1 -1
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/entrypoint.py +6 -6
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/logger.py +4 -1
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +13 -1
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +11 -6
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_based_source.py +22 -1
- airbyte_cdk-6.38.3.dev4100/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +109 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -94
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/identities_stream.py +7 -5
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +12 -3
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/adapters.py +9 -1
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/pyproject.toml +1 -1
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/LICENSE.txt +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/LICENSE_SHORT +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/cli/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/config_observation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/main.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/models.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/destination.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/exception_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/airbyte_protocol.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/well_known_types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/py.typed +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/abstract_source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/config.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/connector_state_manager.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/file_based/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/http_config.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/http_logger.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/message/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/message/repository.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/source.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/call_rate.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/core.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/http.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/casing.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/record_helper.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/transform.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/utils/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/_util/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/_util/hashing.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/constants.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/exceptions.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/secrets.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/shared/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sql/types.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/catalog_builder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/matcher.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/mocker.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/request.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/response.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/state_builder.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/utils/data.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/utils/http_mocking.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/test/utils/reading.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/__init__.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/analytics_message.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/constants.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/datetime_helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/event_timing.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/mapping_helpers.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/message_utils.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/oneof_option_config.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/print_buffer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/schema_inferrer.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/slice_hasher.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/stream_status_utils.py +0 -0
- {airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/utils/traced_exception.py +0 -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 init_logger
|
25
|
+
from airbyte_cdk.logger import PRINT_BUFFER, 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
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
340
|
+
with PRINT_BUFFER:
|
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="")
|
345
345
|
|
346
346
|
|
347
347
|
def _init_internal_request_filter() -> None:
|
@@ -16,8 +16,11 @@ from airbyte_cdk.models import (
|
|
16
16
|
Level,
|
17
17
|
Type,
|
18
18
|
)
|
19
|
+
from airbyte_cdk.utils import PrintBuffer
|
19
20
|
from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
|
20
21
|
|
22
|
+
PRINT_BUFFER = PrintBuffer(flush_interval=0.1)
|
23
|
+
|
21
24
|
LOGGING_CONFIG = {
|
22
25
|
"version": 1,
|
23
26
|
"disable_existing_loggers": False,
|
@@ -27,7 +30,7 @@ LOGGING_CONFIG = {
|
|
27
30
|
"handlers": {
|
28
31
|
"console": {
|
29
32
|
"class": "logging.StreamHandler",
|
30
|
-
"stream":
|
33
|
+
"stream": PRINT_BUFFER,
|
31
34
|
"formatter": "airbyte",
|
32
35
|
},
|
33
36
|
},
|
@@ -1476,7 +1476,19 @@ class ModelToComponentFactory:
|
|
1476
1476
|
try:
|
1477
1477
|
module_ref = importlib.import_module(module_name_full)
|
1478
1478
|
except ModuleNotFoundError as e:
|
1479
|
-
|
1479
|
+
if split[0] == "source_declarative_manifest":
|
1480
|
+
# During testing, the modules containing the custom components are not moved to source_declarative_manifest. In order to run the test, add the source folder to your PYTHONPATH or add it runtime using sys.path.append
|
1481
|
+
try:
|
1482
|
+
import os
|
1483
|
+
|
1484
|
+
module_name_with_source_declarative_manifest = ".".join(split[1:-1])
|
1485
|
+
module_ref = importlib.import_module(
|
1486
|
+
module_name_with_source_declarative_manifest
|
1487
|
+
)
|
1488
|
+
except ModuleNotFoundError:
|
1489
|
+
raise ValueError(f"Could not load module `{module_name_full}`.") from e
|
1490
|
+
else:
|
1491
|
+
raise ValueError(f"Could not load module `{module_name_full}`.") from e
|
1480
1492
|
|
1481
1493
|
try:
|
1482
1494
|
return getattr(module_ref, class_name)
|
@@ -39,13 +39,18 @@ class YamlDeclarativeSource(ConcurrentDeclarativeSource[List[AirbyteStateMessage
|
|
39
39
|
)
|
40
40
|
|
41
41
|
def _read_and_parse_yaml_file(self, path_to_yaml_file: str) -> ConnectionDefinition:
|
42
|
-
|
42
|
+
try:
|
43
|
+
# For testing purposes, we want to allow to just pass a file
|
44
|
+
with open(path_to_yaml_file, "r") as f:
|
45
|
+
return yaml.safe_load(f) # type: ignore # we assume the yaml represents a ConnectionDefinition
|
46
|
+
except FileNotFoundError:
|
47
|
+
# Running inside the container, the working directory during an operation is not structured the same as the static files
|
48
|
+
package = self.__class__.__module__.split(".")[0]
|
43
49
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
else:
|
50
|
+
yaml_config = pkgutil.get_data(package, path_to_yaml_file)
|
51
|
+
if yaml_config:
|
52
|
+
decoded_yaml = yaml_config.decode()
|
53
|
+
return self._parse(decoded_yaml)
|
49
54
|
return {}
|
50
55
|
|
51
56
|
def _emit_manifest_debug_message(self, extra_args: dict[str, Any]) -> None:
|
@@ -48,6 +48,9 @@ from airbyte_cdk.sources.file_based.exceptions import (
|
|
48
48
|
FileBasedErrorsCollector,
|
49
49
|
FileBasedSourceError,
|
50
50
|
)
|
51
|
+
from airbyte_cdk.sources.file_based.file_based_stream_permissions_reader import (
|
52
|
+
AbstractFileBasedStreamPermissionsReader,
|
53
|
+
)
|
51
54
|
from airbyte_cdk.sources.file_based.file_based_stream_reader import AbstractFileBasedStreamReader
|
52
55
|
from airbyte_cdk.sources.file_based.file_types import default_parsers
|
53
56
|
from airbyte_cdk.sources.file_based.file_types.file_type_parser import FileTypeParser
|
@@ -100,8 +103,10 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
100
103
|
cursor_cls: Type[
|
101
104
|
Union[AbstractConcurrentFileBasedCursor, AbstractFileBasedCursor]
|
102
105
|
] = FileBasedConcurrentCursor,
|
106
|
+
stream_permissions_reader: Optional[AbstractFileBasedStreamPermissionsReader] = None,
|
103
107
|
):
|
104
108
|
self.stream_reader = stream_reader
|
109
|
+
self.stream_permissions_reader = stream_permissions_reader
|
105
110
|
self.spec_class = spec_class
|
106
111
|
self.config = config
|
107
112
|
self.catalog = catalog
|
@@ -337,9 +342,23 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
337
342
|
preserve_directory_structure=preserve_directory_structure(parsed_config),
|
338
343
|
)
|
339
344
|
|
345
|
+
def _ensure_permissions_reader_available(self) -> None:
|
346
|
+
"""
|
347
|
+
Validates that a stream permissions reader is available.
|
348
|
+
Raises a ValueError if the reader is not provided.
|
349
|
+
"""
|
350
|
+
if not self.stream_permissions_reader:
|
351
|
+
raise ValueError(
|
352
|
+
"Stream permissions reader is required for streams that use permissions transfer mode."
|
353
|
+
)
|
354
|
+
|
340
355
|
def _make_permissions_stream(
|
341
356
|
self, stream_config: FileBasedStreamConfig, cursor: Optional[AbstractFileBasedCursor]
|
342
357
|
) -> AbstractFileBasedStream:
|
358
|
+
"""
|
359
|
+
Creates a stream that reads permissions from files.
|
360
|
+
"""
|
361
|
+
self._ensure_permissions_reader_available()
|
343
362
|
return PermissionsFileBasedStream(
|
344
363
|
config=stream_config,
|
345
364
|
catalog_schema=self.stream_schemas.get(stream_config.name),
|
@@ -350,6 +369,7 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
350
369
|
validation_policy=self._validate_and_get_validation_policy(stream_config),
|
351
370
|
errors_collector=self.errors_collector,
|
352
371
|
cursor=cursor,
|
372
|
+
stream_permissions_reader=self.stream_permissions_reader, # type: ignore
|
353
373
|
)
|
354
374
|
|
355
375
|
def _make_file_based_stream(
|
@@ -370,9 +390,10 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
370
390
|
def _make_identities_stream(
|
371
391
|
self,
|
372
392
|
) -> Stream:
|
393
|
+
self._ensure_permissions_reader_available()
|
373
394
|
return FileIdentitiesStream(
|
374
395
|
catalog_schema=self.stream_schemas.get(FileIdentitiesStream.IDENTITIES_STREAM_NAME),
|
375
|
-
|
396
|
+
stream_permissions_reader=self.stream_permissions_reader, # type: ignore
|
376
397
|
discovery_policy=self.discovery_policy,
|
377
398
|
errors_collector=self.errors_collector,
|
378
399
|
)
|
airbyte_cdk-6.38.3.dev4100/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (c) 2025 Airbyte, Inc., all rights reserved.
|
3
|
+
#
|
4
|
+
|
5
|
+
import logging
|
6
|
+
from abc import ABC, abstractmethod
|
7
|
+
from typing import Any, Dict, Iterable
|
8
|
+
|
9
|
+
from airbyte_cdk.sources.file_based.remote_file import RemoteFile
|
10
|
+
|
11
|
+
|
12
|
+
class AbstractFileBasedStreamPermissionsReader(ABC):
|
13
|
+
"""
|
14
|
+
This class is responsible for reading file permissions and Identities from a source.
|
15
|
+
"""
|
16
|
+
|
17
|
+
@abstractmethod
|
18
|
+
def get_file_acl_permissions(self, file: RemoteFile, logger: logging.Logger) -> Dict[str, Any]:
|
19
|
+
"""
|
20
|
+
This function should return the allow list for a given file, i.e. the list of all identities and their permission levels associated with it
|
21
|
+
|
22
|
+
e.g.
|
23
|
+
def get_file_acl_permissions(self, file: RemoteFile, logger: logging.Logger):
|
24
|
+
api_conn = some_api.conn(credentials=SOME_CREDENTIALS)
|
25
|
+
result = api_conn.get_file_permissions_info(file.id)
|
26
|
+
return MyPermissionsModel(
|
27
|
+
id=result["id"],
|
28
|
+
access_control_list = result["access_control_list"],
|
29
|
+
is_public = result["is_public"],
|
30
|
+
).dict()
|
31
|
+
"""
|
32
|
+
raise NotImplementedError(
|
33
|
+
f"{self.__class__.__name__} does not implement get_file_acl_permissions(). To support ACL permissions, implement this method and update file_permissions_schema."
|
34
|
+
)
|
35
|
+
|
36
|
+
@abstractmethod
|
37
|
+
def load_identity_groups(self, logger: logging.Logger) -> Iterable[Dict[str, Any]]:
|
38
|
+
"""
|
39
|
+
This function should return the Identities in a determined "space" or "domain" where the file metadata (ACLs) are fetched and ACLs items (Identities) exists.
|
40
|
+
|
41
|
+
e.g.
|
42
|
+
def load_identity_groups(self, logger: logging.Logger) -> Dict[str, Any]:
|
43
|
+
api_conn = some_api.conn(credentials=SOME_CREDENTIALS)
|
44
|
+
users_api = api_conn.users()
|
45
|
+
groups_api = api_conn.groups()
|
46
|
+
members_api = self.google_directory_service.members()
|
47
|
+
for user in users_api.list():
|
48
|
+
yield my_identity_model(id=user.id, name=user.name, email_address=user.email, type="user").dict()
|
49
|
+
for group in groups_api.list():
|
50
|
+
group_obj = my_identity_model(id=group.id, name=groups.name, email_address=user.email, type="group").dict()
|
51
|
+
for member in members_api.list(group=group):
|
52
|
+
group_obj.member_email_addresses = group_obj.member_email_addresses or []
|
53
|
+
group_obj.member_email_addresses.append(member.email)
|
54
|
+
yield group_obj.dict()
|
55
|
+
"""
|
56
|
+
raise NotImplementedError(
|
57
|
+
f"{self.__class__.__name__} does not implement load_identity_groups(). To support identities, implement this method and update identities_schema."
|
58
|
+
)
|
59
|
+
|
60
|
+
@property
|
61
|
+
@abstractmethod
|
62
|
+
def file_permissions_schema(self) -> Dict[str, Any]:
|
63
|
+
"""
|
64
|
+
This function should return the permissions schema for file permissions stream.
|
65
|
+
|
66
|
+
e.g.
|
67
|
+
def file_permissions_schema(self) -> Dict[str, Any]:
|
68
|
+
# you can also follow the patter we have for python connectors and have a json file and read from there e.g. schemas/identities.json
|
69
|
+
return {
|
70
|
+
"type": "object",
|
71
|
+
"properties": {
|
72
|
+
"id": { "type": "string" },
|
73
|
+
"file_path": { "type": "string" },
|
74
|
+
"access_control_list": {
|
75
|
+
"type": "array",
|
76
|
+
"items": { "type": "string" }
|
77
|
+
},
|
78
|
+
"publicly_accessible": { "type": "boolean" }
|
79
|
+
}
|
80
|
+
}
|
81
|
+
"""
|
82
|
+
raise NotImplementedError(
|
83
|
+
f"{self.__class__.__name__} does not implement file_permissions_schema, please return json schema for your permissions streams."
|
84
|
+
)
|
85
|
+
|
86
|
+
@property
|
87
|
+
@abstractmethod
|
88
|
+
def identities_schema(self) -> Dict[str, Any]:
|
89
|
+
"""
|
90
|
+
This function should return the identities schema for file identity stream.
|
91
|
+
|
92
|
+
e.g.
|
93
|
+
def identities_schema(self) -> Dict[str, Any]:
|
94
|
+
# you can also follow the patter we have for python connectors and have a json file and read from there e.g. schemas/identities.json
|
95
|
+
return {
|
96
|
+
"type": "object",
|
97
|
+
"properties": {
|
98
|
+
"id": { "type": "string" },
|
99
|
+
"remote_id": { "type": "string" },
|
100
|
+
"name": { "type": ["null", "string"] },
|
101
|
+
"email_address": { "type": ["null", "string"] },
|
102
|
+
"member_email_addresses": { "type": ["null", "array"] },
|
103
|
+
"type": { "type": "string" },
|
104
|
+
}
|
105
|
+
}
|
106
|
+
"""
|
107
|
+
raise NotImplementedError(
|
108
|
+
f"{self.__class__.__name__} does not implement identities_schema, please return json schema for your identities stream."
|
109
|
+
)
|
@@ -184,97 +184,3 @@ class AbstractFileBasedStreamReader(ABC):
|
|
184
184
|
makedirs(path.dirname(local_file_path), exist_ok=True)
|
185
185
|
absolute_file_path = path.abspath(local_file_path)
|
186
186
|
return [file_relative_path, local_file_path, absolute_file_path]
|
187
|
-
|
188
|
-
@abstractmethod
|
189
|
-
def get_file_acl_permissions(self, file: RemoteFile, logger: logging.Logger) -> Dict[str, Any]:
|
190
|
-
"""
|
191
|
-
This function should return the allow list for a given file, i.e. the list of all identities and their permission levels associated with it
|
192
|
-
|
193
|
-
e.g.
|
194
|
-
def get_file_acl_permissions(self, file: RemoteFile, logger: logging.Logger):
|
195
|
-
api_conn = some_api.conn(credentials=SOME_CREDENTIALS)
|
196
|
-
result = api_conn.get_file_permissions_info(file.id)
|
197
|
-
return MyPermissionsModel(
|
198
|
-
id=result["id"],
|
199
|
-
access_control_list = result["access_control_list"],
|
200
|
-
is_public = result["is_public"],
|
201
|
-
).dict()
|
202
|
-
"""
|
203
|
-
raise NotImplementedError(
|
204
|
-
f"{self.__class__.__name__} does not implement get_file_acl_permissions(). To support ACL permissions, implement this method and update file_permissions_schema."
|
205
|
-
)
|
206
|
-
|
207
|
-
@abstractmethod
|
208
|
-
def load_identity_groups(self, logger: logging.Logger) -> Iterable[Dict[str, Any]]:
|
209
|
-
"""
|
210
|
-
This function should return the Identities in a determined "space" or "domain" where the file metadata (ACLs) are fetched and ACLs items (Identities) exists.
|
211
|
-
|
212
|
-
e.g.
|
213
|
-
def load_identity_groups(self, logger: logging.Logger) -> Dict[str, Any]:
|
214
|
-
api_conn = some_api.conn(credentials=SOME_CREDENTIALS)
|
215
|
-
users_api = api_conn.users()
|
216
|
-
groups_api = api_conn.groups()
|
217
|
-
members_api = self.google_directory_service.members()
|
218
|
-
for user in users_api.list():
|
219
|
-
yield my_identity_model(id=user.id, name=user.name, email_address=user.email, type="user").dict()
|
220
|
-
for group in groups_api.list():
|
221
|
-
group_obj = my_identity_model(id=group.id, name=groups.name, email_address=user.email, type="group").dict()
|
222
|
-
for member in members_api.list(group=group):
|
223
|
-
group_obj.member_email_addresses = group_obj.member_email_addresses or []
|
224
|
-
group_obj.member_email_addresses.append(member.email)
|
225
|
-
yield group_obj.dict()
|
226
|
-
"""
|
227
|
-
raise NotImplementedError(
|
228
|
-
f"{self.__class__.__name__} does not implement load_identity_groups(). To support identities, implement this method and update identities_schema."
|
229
|
-
)
|
230
|
-
|
231
|
-
@property
|
232
|
-
@abstractmethod
|
233
|
-
def file_permissions_schema(self) -> Dict[str, Any]:
|
234
|
-
"""
|
235
|
-
This function should return the permissions schema for file permissions stream.
|
236
|
-
|
237
|
-
e.g.
|
238
|
-
def file_permissions_schema(self) -> Dict[str, Any]:
|
239
|
-
# you can also follow the patter we have for python connectors and have a json file and read from there e.g. schemas/identities.json
|
240
|
-
return {
|
241
|
-
"type": "object",
|
242
|
-
"properties": {
|
243
|
-
"id": { "type": "string" },
|
244
|
-
"file_path": { "type": "string" },
|
245
|
-
"access_control_list": {
|
246
|
-
"type": "array",
|
247
|
-
"items": { "type": "string" }
|
248
|
-
},
|
249
|
-
"publicly_accessible": { "type": "boolean" }
|
250
|
-
}
|
251
|
-
}
|
252
|
-
"""
|
253
|
-
raise NotImplementedError(
|
254
|
-
f"{self.__class__.__name__} does not implement file_permissions_schema, please return json schema for your permissions streams."
|
255
|
-
)
|
256
|
-
|
257
|
-
@property
|
258
|
-
@abstractmethod
|
259
|
-
def identities_schema(self) -> Dict[str, Any]:
|
260
|
-
"""
|
261
|
-
This function should return the identities schema for file identity stream.
|
262
|
-
|
263
|
-
e.g.
|
264
|
-
def identities_schema(self) -> Dict[str, Any]:
|
265
|
-
# you can also follow the patter we have for python connectors and have a json file and read from there e.g. schemas/identities.json
|
266
|
-
return {
|
267
|
-
"type": "object",
|
268
|
-
"properties": {
|
269
|
-
"id": { "type": "string" },
|
270
|
-
"remote_id": { "type": "string" },
|
271
|
-
"name": { "type": ["null", "string"] },
|
272
|
-
"email_address": { "type": ["null", "string"] },
|
273
|
-
"member_email_addresses": { "type": ["null", "array"] },
|
274
|
-
"type": { "type": "string" },
|
275
|
-
}
|
276
|
-
}
|
277
|
-
"""
|
278
|
-
raise NotImplementedError(
|
279
|
-
f"{self.__class__.__name__} does not implement identities_schema, please return json schema for your identities stream."
|
280
|
-
)
|
@@ -8,7 +8,9 @@ from typing import Any, Dict, Iterable, Mapping, MutableMapping, Optional
|
|
8
8
|
from airbyte_cdk.sources.file_based.config.file_based_stream_config import PrimaryKeyType
|
9
9
|
from airbyte_cdk.sources.file_based.discovery_policy import AbstractDiscoveryPolicy
|
10
10
|
from airbyte_cdk.sources.file_based.exceptions import FileBasedErrorsCollector
|
11
|
-
from airbyte_cdk.sources.file_based.
|
11
|
+
from airbyte_cdk.sources.file_based.file_based_stream_permissions_reader import (
|
12
|
+
AbstractFileBasedStreamPermissionsReader,
|
13
|
+
)
|
12
14
|
from airbyte_cdk.sources.streams.core import JsonSchema
|
13
15
|
from airbyte_cdk.sources.streams.permissions.identities_stream import IdentitiesStream
|
14
16
|
|
@@ -24,13 +26,13 @@ class FileIdentitiesStream(IdentitiesStream):
|
|
24
26
|
def __init__(
|
25
27
|
self,
|
26
28
|
catalog_schema: Optional[Mapping[str, Any]],
|
27
|
-
|
29
|
+
stream_permissions_reader: AbstractFileBasedStreamPermissionsReader,
|
28
30
|
discovery_policy: AbstractDiscoveryPolicy,
|
29
31
|
errors_collector: FileBasedErrorsCollector,
|
30
32
|
) -> None:
|
31
33
|
super().__init__()
|
32
34
|
self.catalog_schema = catalog_schema
|
33
|
-
self.
|
35
|
+
self.stream_permissions_reader = stream_permissions_reader
|
34
36
|
self._discovery_policy = discovery_policy
|
35
37
|
self.errors_collector = errors_collector
|
36
38
|
self._cursor: MutableMapping[str, Any] = {}
|
@@ -40,8 +42,8 @@ class FileIdentitiesStream(IdentitiesStream):
|
|
40
42
|
return None
|
41
43
|
|
42
44
|
def load_identity_groups(self) -> Iterable[Dict[str, Any]]:
|
43
|
-
return self.
|
45
|
+
return self.stream_permissions_reader.load_identity_groups(logger=self.logger)
|
44
46
|
|
45
47
|
@cache
|
46
48
|
def get_json_schema(self) -> JsonSchema:
|
47
|
-
return self.
|
49
|
+
return self.stream_permissions_reader.identities_schema
|
@@ -7,6 +7,9 @@ from typing import Any, Dict, Iterable
|
|
7
7
|
|
8
8
|
from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, Level
|
9
9
|
from airbyte_cdk.models import Type as MessageType
|
10
|
+
from airbyte_cdk.sources.file_based.file_based_stream_permissions_reader import (
|
11
|
+
AbstractFileBasedStreamPermissionsReader,
|
12
|
+
)
|
10
13
|
from airbyte_cdk.sources.file_based.stream import DefaultFileBasedStream
|
11
14
|
from airbyte_cdk.sources.file_based.types import StreamSlice
|
12
15
|
from airbyte_cdk.sources.streams.core import JsonSchema
|
@@ -26,10 +29,16 @@ class PermissionsFileBasedStream(DefaultFileBasedStream):
|
|
26
29
|
and schema definition, while this class handles the streaming interface.
|
27
30
|
"""
|
28
31
|
|
32
|
+
def __init__(
|
33
|
+
self, stream_permissions_reader: AbstractFileBasedStreamPermissionsReader, **kwargs: Any
|
34
|
+
):
|
35
|
+
super().__init__(**kwargs)
|
36
|
+
self.stream_permissions_reader = stream_permissions_reader
|
37
|
+
|
29
38
|
def _filter_schema_invalid_properties(
|
30
39
|
self, configured_catalog_json_schema: Dict[str, Any]
|
31
40
|
) -> Dict[str, Any]:
|
32
|
-
return self.
|
41
|
+
return self.stream_permissions_reader.file_permissions_schema
|
33
42
|
|
34
43
|
def read_records_from_slice(self, stream_slice: StreamSlice) -> Iterable[AirbyteMessage]:
|
35
44
|
"""
|
@@ -40,7 +49,7 @@ class PermissionsFileBasedStream(DefaultFileBasedStream):
|
|
40
49
|
no_permissions = False
|
41
50
|
file_datetime_string = file.last_modified.strftime(self.DATE_TIME_FORMAT)
|
42
51
|
try:
|
43
|
-
permissions_record = self.
|
52
|
+
permissions_record = self.stream_permissions_reader.get_file_acl_permissions(
|
44
53
|
file, logger=self.logger
|
45
54
|
)
|
46
55
|
if not permissions_record:
|
@@ -82,4 +91,4 @@ class PermissionsFileBasedStream(DefaultFileBasedStream):
|
|
82
91
|
Returns:
|
83
92
|
The file permissions schema that defines the structure of permission records
|
84
93
|
"""
|
85
|
-
return self.
|
94
|
+
return self.stream_permissions_reader.file_permissions_schema
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/streams/concurrent/adapters.py
RENAMED
@@ -276,7 +276,7 @@ class StreamPartition(Partition):
|
|
276
276
|
def read(self) -> Iterable[Record]:
|
277
277
|
"""
|
278
278
|
Read messages from the stream.
|
279
|
-
If the StreamData is a Mapping, it will be converted to a Record.
|
279
|
+
If the StreamData is a Mapping or an AirbyteMessage of type RECORD, it will be converted to a Record.
|
280
280
|
Otherwise, the message will be emitted on the message repository.
|
281
281
|
"""
|
282
282
|
try:
|
@@ -292,6 +292,8 @@ class StreamPartition(Partition):
|
|
292
292
|
stream_slice=copy.deepcopy(self._slice),
|
293
293
|
stream_state=self._state,
|
294
294
|
):
|
295
|
+
# Noting we'll also need to support FileTransferRecordMessage if we want to support file-based connectors in this facade
|
296
|
+
# For now, file-based connectors have their own stream facade
|
295
297
|
if isinstance(record_data, Mapping):
|
296
298
|
data_to_return = dict(record_data)
|
297
299
|
self._stream.transformer.transform(
|
@@ -302,6 +304,12 @@ class StreamPartition(Partition):
|
|
302
304
|
stream_name=self.stream_name(),
|
303
305
|
associated_slice=self._slice, # type: ignore [arg-type]
|
304
306
|
)
|
307
|
+
elif isinstance(record_data, AirbyteMessage) and record_data.record is not None:
|
308
|
+
yield Record(
|
309
|
+
data=record_data.record.data or {},
|
310
|
+
stream_name=self.stream_name(),
|
311
|
+
associated_slice=self._slice, # type: ignore [arg-type]
|
312
|
+
)
|
305
313
|
else:
|
306
314
|
self._message_repository.emit_message(record_data)
|
307
315
|
except Exception as e:
|
@@ -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.3.dev04100" # Version will be calculated dynamically.
|
27
27
|
|
28
28
|
[tool.poetry-dynamic-versioning]
|
29
29
|
enable = false
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/connector_builder/test_reader/types.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/README.md
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/config.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/utils.py
RENAMED
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/destinations/vector_db_based/writer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/airbyte_protocol_serializers.py
RENAMED
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/models/file_transfer_record_message.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/concurrent_source/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/connector_state_manager.py
RENAMED
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/__init__.py
RENAMED
File without changes
|
File without changes
|
{airbyte_cdk-6.38.2 → airbyte_cdk-6.38.3.dev4100}/airbyte_cdk/sources/declarative/async_job/job.py
RENAMED
File without changes
|
File without changes
|