airbyte-cdk 6.19.1__tar.gz → 6.26.0.dev3__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.
Files changed (357) hide show
  1. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/PKG-INFO +3 -3
  2. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/_run.py +6 -0
  3. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/connector_builder_handler.py +1 -0
  4. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/oauth.py +68 -11
  5. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/checks/__init__.py +24 -0
  6. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +51 -0
  7. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +81 -16
  8. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +123 -3
  9. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/__init__.py +9 -1
  10. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +59 -0
  11. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +3 -5
  12. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/__init__.py +6 -0
  13. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +360 -0
  14. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +3 -0
  15. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +35 -3
  16. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +17 -5
  17. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +84 -11
  18. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +143 -0
  19. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +279 -26
  20. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +46 -12
  21. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/README.md +2 -3
  22. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +22 -0
  23. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
  24. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/__init__.py +2 -0
  25. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +56 -8
  26. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +55 -0
  27. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/http_logger.py +1 -1
  28. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/streams/concurrent/clamping.py +99 -0
  29. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/cursor.py +51 -57
  30. airbyte_cdk-6.26.0.dev3/airbyte_cdk/sources/streams/concurrent/cursor_types.py +32 -0
  31. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +20 -20
  32. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/transform.py +29 -3
  33. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/manifest_only_fixtures.py +1 -2
  34. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/pyproject.toml +5 -9
  35. airbyte_cdk-6.19.1/airbyte_cdk/sources/declarative/checks/__init__.py +0 -8
  36. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/LICENSE.txt +0 -0
  37. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/README.md +0 -0
  38. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/__init__.py +0 -0
  39. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/__init__.py +0 -0
  40. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  41. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  42. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/config_observation.py +0 -0
  43. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector.py +0 -0
  44. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/README.md +0 -0
  45. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/__init__.py +0 -0
  46. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/main.py +0 -0
  47. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  48. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/connector_builder/models.py +0 -0
  49. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/__init__.py +0 -0
  50. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/destination.py +0 -0
  51. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  52. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  53. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  54. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  55. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  56. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  57. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  58. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  59. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  60. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/entrypoint.py +0 -0
  61. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/exception_handler.py +0 -0
  62. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/logger.py +0 -0
  63. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/__init__.py +0 -0
  64. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  65. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  66. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  67. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/models/well_known_types.py +0 -0
  68. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/py.typed +0 -0
  69. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/__init__.py +0 -0
  70. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/abstract_source.py +0 -0
  71. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  72. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  73. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  74. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  75. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  76. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  77. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  78. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/config.py +0 -0
  79. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  80. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  81. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  82. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  83. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  84. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  85. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  86. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  87. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  88. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  89. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  90. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  91. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  92. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  93. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  94. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  95. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  96. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  97. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  98. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  99. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  100. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  101. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  102. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  103. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  104. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  105. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  106. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  107. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  108. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  109. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  110. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  111. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  112. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  113. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  114. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  115. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  116. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  117. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  118. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  119. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  120. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  121. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  122. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  123. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  124. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  125. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  126. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  127. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  128. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  129. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  130. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  131. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  132. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  133. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  134. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  135. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  136. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  137. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  138. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  139. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  140. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  141. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  142. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  143. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  144. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  145. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  146. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  147. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  148. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  149. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  150. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  151. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  152. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  153. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  154. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  155. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  156. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  157. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  158. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  159. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  160. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  161. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  162. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  163. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  164. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  165. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  166. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  167. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  168. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  169. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  170. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  171. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  172. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  173. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  174. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  175. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  176. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  177. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  178. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  179. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  180. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  181. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  182. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  183. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  184. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  185. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  186. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  187. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  188. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  189. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  190. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  191. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  192. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  193. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  194. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  195. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  196. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  197. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  198. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  199. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  200. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  201. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  202. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  203. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/types.py +0 -0
  204. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  205. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  206. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  207. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  208. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/runner.py +0 -0
  209. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/embedded/tools.py +0 -0
  210. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/README.md +0 -0
  211. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  212. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  213. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  214. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  215. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  216. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  217. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  218. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  219. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  220. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  221. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  222. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  223. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  224. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  225. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  226. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  227. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  228. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  229. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  230. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  231. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  232. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  233. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  234. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  235. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  236. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  237. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  238. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  239. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  240. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  241. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  242. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  243. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  244. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  245. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  246. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  247. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  248. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  249. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  250. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  251. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  252. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  253. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  254. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  255. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  256. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/file_based/types.py +0 -0
  257. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/http_config.py +0 -0
  258. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/__init__.py +0 -0
  259. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/message/repository.py +0 -0
  260. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/source.py +0 -0
  261. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/__init__.py +0 -0
  262. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  263. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  264. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  265. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  266. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  267. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  268. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  269. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  270. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  271. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  272. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  273. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  274. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  275. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  276. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  277. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  278. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  279. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  280. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  281. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  282. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  283. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  284. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  285. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  286. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  287. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  288. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  289. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/core.py +0 -0
  290. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  291. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  292. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  293. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  294. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  295. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  296. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  297. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  298. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  299. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  300. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  301. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  302. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http.py +0 -0
  303. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  304. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  305. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  306. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  307. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  308. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  309. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  310. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/types.py +0 -0
  311. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/__init__.py +0 -0
  312. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/casing.py +0 -0
  313. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  314. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  315. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  316. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sources/utils/types.py +0 -0
  317. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/__init__.py +0 -0
  318. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/__init__.py +0 -0
  319. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/hashing.py +0 -0
  320. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  321. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/constants.py +0 -0
  322. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/exceptions.py +0 -0
  323. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/secrets.py +0 -0
  324. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/__init__.py +0 -0
  325. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  326. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  327. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/sql/types.py +0 -0
  328. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/__init__.py +0 -0
  329. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/catalog_builder.py +0 -0
  330. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  331. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  332. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  333. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  334. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/request.py +0 -0
  335. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response.py +0 -0
  336. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  337. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/state_builder.py +0 -0
  338. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/__init__.py +0 -0
  339. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/data.py +0 -0
  340. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  341. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/test/utils/reading.py +0 -0
  342. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/__init__.py +0 -0
  343. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  344. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/analytics_message.py +0 -0
  345. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/constants.py +0 -0
  346. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  347. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/event_timing.py +0 -0
  348. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  349. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  350. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/message_utils.py +0 -0
  351. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  352. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/print_buffer.py +0 -0
  353. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  354. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/slice_hasher.py +0 -0
  355. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  356. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  357. {airbyte_cdk-6.19.1 → airbyte_cdk-6.26.0.dev3}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-cdk
3
- Version: 6.19.1
3
+ Version: 6.26.0.dev3
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  License: MIT
6
6
  Keywords: airbyte,connector-development-kit,cdk
@@ -23,7 +23,7 @@ Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
23
23
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
24
24
  Requires-Dist: Unidecode (>=1.3,<2.0)
25
25
  Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
26
- Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
26
+ Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
27
27
  Requires-Dist: backoff
28
28
  Requires-Dist: cachetools
29
29
  Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
@@ -66,7 +66,7 @@ Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
66
66
  Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
67
67
  Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
68
68
  Requires-Dist: wcmatch (==10.0)
69
- Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
69
+ Requires-Dist: xmltodict (>=0.13,<0.15)
70
70
  Project-URL: Documentation, https://docs.airbyte.io/
71
71
  Project-URL: Homepage, https://airbyte.com
72
72
  Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
@@ -171,6 +171,12 @@ def create_declarative_source(
171
171
  "Invalid config: `__injected_declarative_manifest` should be provided at the root "
172
172
  f"of the config but config only has keys: {list(config.keys() if config else [])}"
173
173
  )
174
+ if not isinstance(config["__injected_declarative_manifest"], dict):
175
+ raise ValueError(
176
+ "Invalid config: `__injected_declarative_manifest` should be a dictionary, "
177
+ f"but got type: {type(config['__injected_declarative_manifest'])}"
178
+ )
179
+
174
180
  return ConcurrentDeclarativeSource(
175
181
  config=config,
176
182
  catalog=catalog,
@@ -52,6 +52,7 @@ def get_limits(config: Mapping[str, Any]) -> TestReadLimits:
52
52
  def create_source(config: Mapping[str, Any], limits: TestReadLimits) -> ManifestDeclarativeSource:
53
53
  manifest = config["__injected_declarative_manifest"]
54
54
  return ManifestDeclarativeSource(
55
+ config=config,
55
56
  emit_connector_builder_messages=True,
56
57
  source_config=manifest,
57
58
  component_factory=ModelToComponentFactory(
@@ -3,11 +3,12 @@
3
3
  #
4
4
 
5
5
  from dataclasses import InitVar, dataclass, field
6
- from typing import Any, List, Mapping, Optional, Union
6
+ from typing import Any, List, Mapping, MutableMapping, Optional, Union
7
7
 
8
8
  import pendulum
9
9
 
10
10
  from airbyte_cdk.sources.declarative.auth.declarative_authenticator import DeclarativeAuthenticator
11
+ from airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean
11
12
  from airbyte_cdk.sources.declarative.interpolation.interpolated_mapping import InterpolatedMapping
12
13
  from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
13
14
  from airbyte_cdk.sources.message import MessageRepository, NoopMessageRepository
@@ -44,10 +45,10 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
44
45
  message_repository (MessageRepository): the message repository used to emit logs on HTTP requests
45
46
  """
46
47
 
47
- client_id: Union[InterpolatedString, str]
48
- client_secret: Union[InterpolatedString, str]
49
48
  config: Mapping[str, Any]
50
49
  parameters: InitVar[Mapping[str, Any]]
50
+ client_id: Optional[Union[InterpolatedString, str]] = None
51
+ client_secret: Optional[Union[InterpolatedString, str]] = None
51
52
  token_refresh_endpoint: Optional[Union[InterpolatedString, str]] = None
52
53
  refresh_token: Optional[Union[InterpolatedString, str]] = None
53
54
  scopes: Optional[List[str]] = None
@@ -66,6 +67,8 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
66
67
  grant_type_name: Union[InterpolatedString, str] = "grant_type"
67
68
  grant_type: Union[InterpolatedString, str] = "refresh_token"
68
69
  message_repository: MessageRepository = NoopMessageRepository()
70
+ profile_assertion: Optional[DeclarativeAuthenticator] = None
71
+ use_profile_assertion: Optional[Union[InterpolatedBoolean, str, bool]] = False
69
72
 
70
73
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
71
74
  super().__init__()
@@ -76,11 +79,19 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
76
79
  else:
77
80
  self._token_refresh_endpoint = None
78
81
  self._client_id_name = InterpolatedString.create(self.client_id_name, parameters=parameters)
79
- self._client_id = InterpolatedString.create(self.client_id, parameters=parameters)
82
+ self._client_id = (
83
+ InterpolatedString.create(self.client_id, parameters=parameters)
84
+ if self.client_id
85
+ else self.client_id
86
+ )
80
87
  self._client_secret_name = InterpolatedString.create(
81
88
  self.client_secret_name, parameters=parameters
82
89
  )
83
- self._client_secret = InterpolatedString.create(self.client_secret, parameters=parameters)
90
+ self._client_secret = (
91
+ InterpolatedString.create(self.client_secret, parameters=parameters)
92
+ if self.client_secret
93
+ else self.client_secret
94
+ )
84
95
  self._refresh_token_name = InterpolatedString.create(
85
96
  self.refresh_token_name, parameters=parameters
86
97
  )
@@ -99,7 +110,12 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
99
110
  self.grant_type_name = InterpolatedString.create(
100
111
  self.grant_type_name, parameters=parameters
101
112
  )
102
- self.grant_type = InterpolatedString.create(self.grant_type, parameters=parameters)
113
+ self.grant_type = InterpolatedString.create(
114
+ "urn:ietf:params:oauth:grant-type:jwt-bearer"
115
+ if self.use_profile_assertion
116
+ else self.grant_type,
117
+ parameters=parameters,
118
+ )
103
119
  self._refresh_request_body = InterpolatedMapping(
104
120
  self.refresh_request_body or {}, parameters=parameters
105
121
  )
@@ -115,6 +131,13 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
115
131
  if self.token_expiry_date
116
132
  else pendulum.now().subtract(days=1) # type: ignore # substract does not have type hints
117
133
  )
134
+ self.use_profile_assertion = (
135
+ InterpolatedBoolean(self.use_profile_assertion, parameters=parameters)
136
+ if isinstance(self.use_profile_assertion, str)
137
+ else self.use_profile_assertion
138
+ )
139
+ self.assertion_name = "assertion"
140
+
118
141
  if self.access_token_value is not None:
119
142
  self._access_token_value = InterpolatedString.create(
120
143
  self.access_token_value, parameters=parameters
@@ -126,9 +149,20 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
126
149
  self._access_token_value if self.access_token_value else None
127
150
  )
128
151
 
152
+ if not self.use_profile_assertion and any(
153
+ client_creds is None for client_creds in [self.client_id, self.client_secret]
154
+ ):
155
+ raise ValueError(
156
+ "OAuthAuthenticator configuration error: Both 'client_id' and 'client_secret' are required for the "
157
+ "basic OAuth flow."
158
+ )
159
+ if self.profile_assertion is None and self.use_profile_assertion:
160
+ raise ValueError(
161
+ "OAuthAuthenticator configuration error: 'profile_assertion' is required when using the profile assertion flow."
162
+ )
129
163
  if self.get_grant_type() == "refresh_token" and self._refresh_token is None:
130
164
  raise ValueError(
131
- "OAuthAuthenticator needs a refresh_token parameter if grant_type is set to `refresh_token`"
165
+ "OAuthAuthenticator configuration error: A 'refresh_token' is required when the 'grant_type' is set to 'refresh_token'."
132
166
  )
133
167
 
134
168
  def get_token_refresh_endpoint(self) -> Optional[str]:
@@ -145,19 +179,21 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
145
179
  return self._client_id_name.eval(self.config) # type: ignore # eval returns a string in this context
146
180
 
147
181
  def get_client_id(self) -> str:
148
- client_id: str = self._client_id.eval(self.config)
182
+ client_id = self._client_id.eval(self.config) if self._client_id else self._client_id
149
183
  if not client_id:
150
184
  raise ValueError("OAuthAuthenticator was unable to evaluate client_id parameter")
151
- return client_id
185
+ return client_id # type: ignore # value will be returned as a string, or an error will be raised
152
186
 
153
187
  def get_client_secret_name(self) -> str:
154
188
  return self._client_secret_name.eval(self.config) # type: ignore # eval returns a string in this context
155
189
 
156
190
  def get_client_secret(self) -> str:
157
- client_secret: str = self._client_secret.eval(self.config)
191
+ client_secret = (
192
+ self._client_secret.eval(self.config) if self._client_secret else self._client_secret
193
+ )
158
194
  if not client_secret:
159
195
  raise ValueError("OAuthAuthenticator was unable to evaluate client_secret parameter")
160
- return client_secret
196
+ return client_secret # type: ignore # value will be returned as a string, or an error will be raised
161
197
 
162
198
  def get_refresh_token_name(self) -> str:
163
199
  return self._refresh_token_name.eval(self.config) # type: ignore # eval returns a string in this context
@@ -192,6 +228,27 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
192
228
  def set_token_expiry_date(self, value: Union[str, int]) -> None:
193
229
  self._token_expiry_date = self._parse_token_expiration_date(value)
194
230
 
231
+ def get_assertion_name(self) -> str:
232
+ return self.assertion_name
233
+
234
+ def get_assertion(self) -> str:
235
+ if self.profile_assertion is None:
236
+ raise ValueError("profile_assertion is not set")
237
+ return self.profile_assertion.token
238
+
239
+ def build_refresh_request_body(self) -> Mapping[str, Any]:
240
+ """
241
+ Returns the request body to set on the refresh request
242
+
243
+ Override to define additional parameters
244
+ """
245
+ if self.use_profile_assertion:
246
+ return {
247
+ self.get_grant_type_name(): self.get_grant_type(),
248
+ self.get_assertion_name(): self.get_assertion(),
249
+ }
250
+ return super().build_refresh_request_body()
251
+
195
252
  @property
196
253
  def access_token(self) -> str:
197
254
  if self._access_token is None:
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ from typing import Mapping
6
+
7
+ from pydantic.v1 import BaseModel
8
+
9
+ from airbyte_cdk.sources.declarative.checks.check_dynamic_stream import CheckDynamicStream
10
+ from airbyte_cdk.sources.declarative.checks.check_stream import CheckStream
11
+ from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
12
+ from airbyte_cdk.sources.declarative.models import (
13
+ CheckDynamicStream as CheckDynamicStreamModel,
14
+ )
15
+ from airbyte_cdk.sources.declarative.models import (
16
+ CheckStream as CheckStreamModel,
17
+ )
18
+
19
+ COMPONENTS_CHECKER_TYPE_MAPPING: Mapping[str, type[BaseModel]] = {
20
+ "CheckStream": CheckStreamModel,
21
+ "CheckDynamicStream": CheckDynamicStreamModel,
22
+ }
23
+
24
+ __all__ = ["CheckStream", "CheckDynamicStream", "ConnectionChecker"]
@@ -0,0 +1,51 @@
1
+ #
2
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ import logging
6
+ import traceback
7
+ from dataclasses import InitVar, dataclass
8
+ from typing import Any, List, Mapping, Tuple
9
+
10
+ from airbyte_cdk import AbstractSource
11
+ from airbyte_cdk.sources.declarative.checks.connection_checker import ConnectionChecker
12
+ from airbyte_cdk.sources.streams.http.availability_strategy import HttpAvailabilityStrategy
13
+
14
+
15
+ @dataclass
16
+ class CheckDynamicStream(ConnectionChecker):
17
+ """
18
+ Checks the connections by checking availability of one or many dynamic streams
19
+
20
+ Attributes:
21
+ stream_count (int): numbers of streams to check
22
+ """
23
+
24
+ stream_count: int
25
+ parameters: InitVar[Mapping[str, Any]]
26
+
27
+ def __post_init__(self, parameters: Mapping[str, Any]) -> None:
28
+ self._parameters = parameters
29
+
30
+ def check_connection(
31
+ self, source: AbstractSource, logger: logging.Logger, config: Mapping[str, Any]
32
+ ) -> Tuple[bool, Any]:
33
+ streams = source.streams(config=config)
34
+ if len(streams) == 0:
35
+ return False, f"No streams to connect to from source {source}"
36
+
37
+ for stream_index in range(min(self.stream_count, len(streams))):
38
+ stream = streams[stream_index]
39
+ availability_strategy = HttpAvailabilityStrategy()
40
+ try:
41
+ stream_is_available, reason = availability_strategy.check_availability(
42
+ stream, logger
43
+ )
44
+ if not stream_is_available:
45
+ return False, reason
46
+ except Exception as error:
47
+ logger.error(
48
+ f"Encountered an error trying to connect to stream {stream.name}. Error: \n {traceback.format_exc()}"
49
+ )
50
+ return False, f"Unable to connect to stream {stream.name} - {error}"
51
+ return True, None
@@ -20,6 +20,9 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
20
20
  ClientSideIncrementalRecordFilterDecorator,
21
21
  )
22
22
  from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
23
+ from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
24
+ PerPartitionWithGlobalCursor,
25
+ )
23
26
  from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
24
27
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
25
28
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
@@ -32,7 +35,7 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
32
35
  ModelToComponentFactory,
33
36
  )
34
37
  from airbyte_cdk.sources.declarative.requesters import HttpRequester
35
- from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
38
+ from airbyte_cdk.sources.declarative.retrievers import Retriever, SimpleRetriever
36
39
  from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
37
40
  DeclarativePartitionFactory,
38
41
  StreamSlicerPartitionGenerator,
@@ -77,6 +80,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
77
80
 
78
81
  super().__init__(
79
82
  source_config=source_config,
83
+ config=config,
80
84
  debug=debug,
81
85
  emit_connector_builder_messages=emit_connector_builder_messages,
82
86
  component_factory=component_factory,
@@ -230,21 +234,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
230
234
  stream_state=stream_state,
231
235
  )
232
236
 
233
- retriever = declarative_stream.retriever
234
-
235
- # This is an optimization so that we don't invoke any cursor or state management flows within the
236
- # low-code framework because state management is handled through the ConcurrentCursor.
237
- if declarative_stream and isinstance(retriever, SimpleRetriever):
238
- # Also a temporary hack. In the legacy Stream implementation, as part of the read,
239
- # set_initial_state() is called to instantiate incoming state on the cursor. Although we no
240
- # longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
241
- # like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
242
- # still rely on a DatetimeBasedCursor that is properly initialized with state.
243
- if retriever.cursor:
244
- retriever.cursor.set_initial_state(stream_state=stream_state)
245
- # We zero it out here, but since this is a cursor reference, the state is still properly
246
- # instantiated for the other components that reference it
247
- retriever.cursor = None
237
+ retriever = self._get_retriever(declarative_stream, stream_state)
248
238
 
249
239
  partition_generator = StreamSlicerPartitionGenerator(
250
240
  DeclarativePartitionFactory(
@@ -304,6 +294,60 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
304
294
  cursor=final_state_cursor,
305
295
  )
306
296
  )
297
+ elif (
298
+ incremental_sync_component_definition
299
+ and incremental_sync_component_definition.get("type", "")
300
+ == DatetimeBasedCursorModel.__name__
301
+ and self._stream_supports_concurrent_partition_processing(
302
+ declarative_stream=declarative_stream
303
+ )
304
+ and hasattr(declarative_stream.retriever, "stream_slicer")
305
+ and isinstance(
306
+ declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
307
+ )
308
+ ):
309
+ stream_state = state_manager.get_stream_state(
310
+ stream_name=declarative_stream.name, namespace=declarative_stream.namespace
311
+ )
312
+ partition_router = declarative_stream.retriever.stream_slicer._partition_router
313
+
314
+ perpartition_cursor = (
315
+ self._constructor.create_concurrent_cursor_from_perpartition_cursor(
316
+ state_manager=state_manager,
317
+ model_type=DatetimeBasedCursorModel,
318
+ component_definition=incremental_sync_component_definition,
319
+ stream_name=declarative_stream.name,
320
+ stream_namespace=declarative_stream.namespace,
321
+ config=config or {},
322
+ stream_state=stream_state,
323
+ partition_router=partition_router,
324
+ )
325
+ )
326
+
327
+ retriever = self._get_retriever(declarative_stream, stream_state)
328
+
329
+ partition_generator = StreamSlicerPartitionGenerator(
330
+ DeclarativePartitionFactory(
331
+ declarative_stream.name,
332
+ declarative_stream.get_json_schema(),
333
+ retriever,
334
+ self.message_repository,
335
+ ),
336
+ perpartition_cursor,
337
+ )
338
+
339
+ concurrent_streams.append(
340
+ DefaultStream(
341
+ partition_generator=partition_generator,
342
+ name=declarative_stream.name,
343
+ json_schema=declarative_stream.get_json_schema(),
344
+ availability_strategy=AlwaysAvailableAvailabilityStrategy(),
345
+ primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
346
+ cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
347
+ logger=self.logger,
348
+ cursor=perpartition_cursor,
349
+ )
350
+ )
307
351
  else:
308
352
  synchronous_streams.append(declarative_stream)
309
353
  else:
@@ -394,6 +438,27 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
394
438
  return False
395
439
  return True
396
440
 
441
+ def _get_retriever(
442
+ self, declarative_stream: DeclarativeStream, stream_state: Mapping[str, Any]
443
+ ) -> Retriever:
444
+ retriever = declarative_stream.retriever
445
+
446
+ # This is an optimization so that we don't invoke any cursor or state management flows within the
447
+ # low-code framework because state management is handled through the ConcurrentCursor.
448
+ if declarative_stream and isinstance(retriever, SimpleRetriever):
449
+ # Also a temporary hack. In the legacy Stream implementation, as part of the read,
450
+ # set_initial_state() is called to instantiate incoming state on the cursor. Although we no
451
+ # longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
452
+ # like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
453
+ # still rely on a DatetimeBasedCursor that is properly initialized with state.
454
+ if retriever.cursor:
455
+ retriever.cursor.set_initial_state(stream_state=stream_state)
456
+ # We zero it out here, but since this is a cursor reference, the state is still properly
457
+ # instantiated for the other components that reference it
458
+ retriever.cursor = None
459
+
460
+ return retriever
461
+
397
462
  @staticmethod
398
463
  def _select_streams(
399
464
  streams: List[AbstractStream], configured_catalog: ConfiguredAirbyteCatalog
@@ -18,7 +18,9 @@ properties:
18
18
  type: string
19
19
  enum: [DeclarativeSource]
20
20
  check:
21
- "$ref": "#/definitions/CheckStream"
21
+ anyOf:
22
+ - "$ref": "#/definitions/CheckStream"
23
+ - "$ref": "#/definitions/CheckDynamicStream"
22
24
  streams:
23
25
  type: array
24
26
  items:
@@ -303,6 +305,21 @@ definitions:
303
305
  examples:
304
306
  - ["users"]
305
307
  - ["users", "contacts"]
308
+ CheckDynamicStream:
309
+ title: Dynamic Streams to Check
310
+ description: (This component is experimental. Use at your own risk.) Defines the dynamic streams to try reading when running a check operation.
311
+ type: object
312
+ required:
313
+ - type
314
+ - stream_count
315
+ properties:
316
+ type:
317
+ type: string
318
+ enum: [CheckDynamicStream]
319
+ stream_count:
320
+ title: Stream Count
321
+ description: Numbers of the streams to try reading from when running a check operation.
322
+ type: integer
306
323
  CompositeErrorHandler:
307
324
  title: Composite Error Handler
308
325
  description: Error handler that sequentially iterates over a list of error handlers.
@@ -767,6 +784,29 @@ definitions:
767
784
  type:
768
785
  type: string
769
786
  enum: [DatetimeBasedCursor]
787
+ clamping:
788
+ title: Date Range Clamping
789
+ description: This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)
790
+ type: object
791
+ required:
792
+ - target
793
+ properties:
794
+ target:
795
+ title: Target
796
+ description: The period of time that datetime windows will be clamped by
797
+ # This should ideally be an enum. However, we don't use an enum because we want to allow for connectors
798
+ # to support interpolation on the connector config to get the target which is an arbitrary string
799
+ type: string
800
+ interpolation_context:
801
+ - config
802
+ examples:
803
+ - "DAY"
804
+ - "WEEK"
805
+ - "MONTH"
806
+ - "{{ config['target'] }}"
807
+ target_details:
808
+ type: object
809
+ additionalProperties: true
770
810
  cursor_field:
771
811
  title: Cursor Field
772
812
  description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
@@ -1041,8 +1081,6 @@ definitions:
1041
1081
  type: object
1042
1082
  required:
1043
1083
  - type
1044
- - client_id
1045
- - client_secret
1046
1084
  properties:
1047
1085
  type:
1048
1086
  type: string
@@ -1237,6 +1275,15 @@ definitions:
1237
1275
  default: []
1238
1276
  examples:
1239
1277
  - ["invalid_grant", "invalid_permissions"]
1278
+ profile_assertion:
1279
+ title: Profile Assertion
1280
+ description: The authenticator being used to authenticate the client authenticator.
1281
+ "$ref": "#/definitions/JwtAuthenticator"
1282
+ use_profile_assertion:
1283
+ title: Use Profile Assertion
1284
+ description: Enable using profile assertion as a flow for OAuth authorization.
1285
+ type: boolean
1286
+ default: false
1240
1287
  $parameters:
1241
1288
  type: object
1242
1289
  additionalProperties: true
@@ -1299,6 +1346,7 @@ definitions:
1299
1346
  - "$ref": "#/definitions/KeysToLower"
1300
1347
  - "$ref": "#/definitions/KeysToSnakeCase"
1301
1348
  - "$ref": "#/definitions/FlattenFields"
1349
+ - "$ref": "#/definitions/DpathFlattenFields"
1302
1350
  - "$ref": "#/definitions/KeysReplace"
1303
1351
  state_migrations:
1304
1352
  title: State Migrations
@@ -1496,6 +1544,7 @@ definitions:
1496
1544
  anyOf:
1497
1545
  - "$ref": "#/definitions/JsonDecoder"
1498
1546
  - "$ref": "#/definitions/XmlDecoder"
1547
+ - "$ref": "#/definitions/CompositeRawDecoder"
1499
1548
  $parameters:
1500
1549
  type: object
1501
1550
  additionalProperties: true
@@ -1751,6 +1800,19 @@ definitions:
1751
1800
  $parameters:
1752
1801
  type: object
1753
1802
  additionalProperties: true
1803
+ ComplexFieldType:
1804
+ title: Schema Field Type
1805
+ description: (This component is experimental. Use at your own risk.) Represents a complex field type.
1806
+ type: object
1807
+ required:
1808
+ - field_type
1809
+ properties:
1810
+ field_type:
1811
+ type: string
1812
+ items:
1813
+ anyOf:
1814
+ - type: string
1815
+ - "$ref": "#/definitions/ComplexFieldType"
1754
1816
  TypesMap:
1755
1817
  title: Types Map
1756
1818
  description: (This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
@@ -1765,12 +1827,17 @@ definitions:
1765
1827
  - type: array
1766
1828
  items:
1767
1829
  type: string
1830
+ - "$ref": "#/definitions/ComplexFieldType"
1768
1831
  current_type:
1769
1832
  anyOf:
1770
1833
  - type: string
1771
1834
  - type: array
1772
1835
  items:
1773
1836
  type: string
1837
+ condition:
1838
+ type: string
1839
+ interpolation_context:
1840
+ - raw_schema
1774
1841
  SchemaTypeIdentifier:
1775
1842
  title: Schema Type Identifier
1776
1843
  description: (This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
@@ -1844,6 +1911,7 @@ definitions:
1844
1911
  - "$ref": "#/definitions/KeysToLower"
1845
1912
  - "$ref": "#/definitions/KeysToSnakeCase"
1846
1913
  - "$ref": "#/definitions/FlattenFields"
1914
+ - "$ref": "#/definitions/DpathFlattenFields"
1847
1915
  - "$ref": "#/definitions/KeysReplace"
1848
1916
  schema_type_identifier:
1849
1917
  "$ref": "#/definitions/SchemaTypeIdentifier"
@@ -1948,6 +2016,33 @@ definitions:
1948
2016
  $parameters:
1949
2017
  type: object
1950
2018
  additionalProperties: true
2019
+ DpathFlattenFields:
2020
+ title: Dpath Flatten Fields
2021
+ description: A transformation that flatten field values to the to top of the record.
2022
+ type: object
2023
+ required:
2024
+ - type
2025
+ - field_path
2026
+ properties:
2027
+ type:
2028
+ type: string
2029
+ enum: [DpathFlattenFields]
2030
+ field_path:
2031
+ title: Field Path
2032
+ description: A path to field that needs to be flattened.
2033
+ type: array
2034
+ items:
2035
+ - type: string
2036
+ examples:
2037
+ - ["data"]
2038
+ - ["data", "*", "field"]
2039
+ delete_origin_value:
2040
+ title: Delete Origin Value
2041
+ description: Whether to delete the origin value or keep it. Default is False.
2042
+ type: boolean
2043
+ $parameters:
2044
+ type: object
2045
+ additionalProperties: true
1951
2046
  KeysReplace:
1952
2047
  title: Keys Replace
1953
2048
  description: A transformation that replaces symbols in keys.
@@ -2050,6 +2145,26 @@ definitions:
2050
2145
  $parameters:
2051
2146
  type: object
2052
2147
  additionalProperties: true
2148
+ ZipfileDecoder:
2149
+ title: Zipfile Decoder
2150
+ description: Decoder for response data that is returned as zipfile(s).
2151
+ type: object
2152
+ additionalProperties: true
2153
+ required:
2154
+ - type
2155
+ - parser
2156
+ properties:
2157
+ type:
2158
+ type: string
2159
+ enum: [ZipfileDecoder]
2160
+ parser:
2161
+ title: Parser
2162
+ description: Parser to parse the decompressed data from the zipfile(s).
2163
+ anyOf:
2164
+ - "$ref": "#/definitions/GzipParser"
2165
+ - "$ref": "#/definitions/JsonParser"
2166
+ - "$ref": "#/definitions/JsonLineParser"
2167
+ - "$ref": "#/definitions/CsvParser"
2053
2168
  ListPartitionRouter:
2054
2169
  title: List Partition Router
2055
2170
  description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
@@ -2878,6 +2993,7 @@ definitions:
2878
2993
  - "$ref": "#/definitions/XmlDecoder"
2879
2994
  - "$ref": "#/definitions/GzipJsonDecoder"
2880
2995
  - "$ref": "#/definitions/CompositeRawDecoder"
2996
+ - "$ref": "#/definitions/ZipfileDecoder"
2881
2997
  $parameters:
2882
2998
  type: object
2883
2999
  additionalProperties: true
@@ -3076,6 +3192,8 @@ definitions:
3076
3192
  - "$ref": "#/definitions/IterableDecoder"
3077
3193
  - "$ref": "#/definitions/XmlDecoder"
3078
3194
  - "$ref": "#/definitions/GzipJsonDecoder"
3195
+ - "$ref": "#/definitions/CompositeRawDecoder"
3196
+ - "$ref": "#/definitions/ZipfileDecoder"
3079
3197
  download_decoder:
3080
3198
  title: Download Decoder
3081
3199
  description: Component decoding the download response so records can be extracted.
@@ -3086,6 +3204,8 @@ definitions:
3086
3204
  - "$ref": "#/definitions/IterableDecoder"
3087
3205
  - "$ref": "#/definitions/XmlDecoder"
3088
3206
  - "$ref": "#/definitions/GzipJsonDecoder"
3207
+ - "$ref": "#/definitions/CompositeRawDecoder"
3208
+ - "$ref": "#/definitions/ZipfileDecoder"
3089
3209
  $parameters:
3090
3210
  type: object
3091
3211
  additionalProperties: true