airbyte-cdk 6.24.0.dev1__tar.gz → 6.25.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/oauth.py +68 -11
  3. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +9 -2
  4. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +18 -17
  5. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +14 -4
  6. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +15 -3
  7. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/http_logger.py +1 -1
  8. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +20 -20
  9. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/pyproject.toml +1 -1
  10. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/LICENSE.txt +0 -0
  11. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/README.md +0 -0
  12. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/__init__.py +0 -0
  13. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/cli/__init__.py +0 -0
  14. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  15. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  16. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  17. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/config_observation.py +0 -0
  18. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector.py +0 -0
  19. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/README.md +0 -0
  20. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  21. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  22. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/main.py +0 -0
  23. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  24. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/connector_builder/models.py +0 -0
  25. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/__init__.py +0 -0
  26. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/destination.py +0 -0
  27. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  28. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  29. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  30. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  31. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  32. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  33. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  34. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  35. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  36. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/entrypoint.py +0 -0
  37. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/exception_handler.py +0 -0
  38. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/logger.py +0 -0
  39. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/models/__init__.py +0 -0
  40. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  41. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  42. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  43. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/models/well_known_types.py +0 -0
  44. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/py.typed +0 -0
  45. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/__init__.py +0 -0
  46. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  47. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  48. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  49. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  50. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  51. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  52. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  53. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  54. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/config.py +0 -0
  55. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  56. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  57. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  58. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  59. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  60. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  61. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  62. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  63. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  64. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  65. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  66. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  67. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  68. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  69. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  70. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  71. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  72. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  73. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  74. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  75. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  76. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  77. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  78. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  79. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  80. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  81. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  82. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  83. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  84. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  85. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  86. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  87. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  88. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  89. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  90. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  91. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  92. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  93. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  94. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  95. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  96. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  97. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  98. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  99. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  100. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  101. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  102. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  103. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  104. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  105. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  106. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  107. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  108. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  109. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  110. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  111. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  112. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  113. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  114. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  115. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  116. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  117. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  118. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  119. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  120. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  121. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  122. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  123. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  124. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  125. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  126. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  127. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  128. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  129. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  130. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  131. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  132. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  133. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  134. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  135. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  136. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  137. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  138. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  139. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  140. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  141. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  142. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  143. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  144. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  145. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  146. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  147. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  148. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  149. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  150. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  151. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  152. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  153. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  154. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  155. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  156. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  157. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  158. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  159. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  160. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  161. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  162. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  163. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  164. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  165. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  166. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  167. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  168. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  169. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  170. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  171. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  172. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  173. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  174. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  175. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  176. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  177. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  178. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  179. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  180. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  181. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  182. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  183. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  184. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  185. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  186. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  187. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  188. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  189. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  190. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  191. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  192. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  193. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  194. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  195. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  196. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  197. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  198. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  199. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  200. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  201. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  202. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
  203. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
  204. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  205. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  206. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  207. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  208. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  209. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  210. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  211. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  212. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  213. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  214. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  215. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  216. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  217. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  218. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  219. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  220. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  221. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  222. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  223. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  224. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  225. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  226. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  227. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  228. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  229. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  230. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  231. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  232. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  233. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  234. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  235. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  236. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  237. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  238. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  239. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  240. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  241. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  242. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  243. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  244. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  245. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  246. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  247. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  248. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  249. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  250. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  251. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/http_config.py +0 -0
  252. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  253. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/message/repository.py +0 -0
  254. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/source.py +0 -0
  255. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  256. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  257. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  258. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  259. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  260. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  261. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  262. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  263. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  264. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  265. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  266. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  267. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  268. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  269. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  270. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  271. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  272. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  273. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  274. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  275. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  276. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  277. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  278. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  279. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  280. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  281. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  282. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  283. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  284. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  285. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  286. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/core.py +0 -0
  287. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  288. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  289. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  290. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  291. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  292. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  293. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  294. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  295. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  296. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  297. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  298. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  299. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  300. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  301. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  302. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  303. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  304. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  305. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  306. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  307. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/types.py +0 -0
  308. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  309. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  310. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  311. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  312. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  313. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  314. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sources/utils/types.py +0 -0
  315. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/__init__.py +0 -0
  316. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  317. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  318. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  319. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/constants.py +0 -0
  320. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/exceptions.py +0 -0
  321. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/secrets.py +0 -0
  322. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  323. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  324. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  325. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/sql/types.py +0 -0
  326. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/__init__.py +0 -0
  327. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  328. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  329. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  330. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  331. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  332. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  333. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  334. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  335. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/state_builder.py +0 -0
  336. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/utils/__init__.py +0 -0
  337. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/utils/data.py +0 -0
  338. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  339. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  340. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/test/utils/reading.py +0 -0
  341. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/__init__.py +0 -0
  342. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  343. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  344. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/constants.py +0 -0
  345. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  346. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/event_timing.py +0 -0
  347. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  348. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  349. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/message_utils.py +0 -0
  350. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  351. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  352. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  353. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  354. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  355. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  356. {airbyte_cdk-6.24.0.dev1 → airbyte_cdk-6.25.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-cdk
3
- Version: 6.24.0.dev1
3
+ Version: 6.25.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  License: MIT
6
6
  Keywords: airbyte,connector-development-kit,cdk
@@ -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:
@@ -1081,8 +1081,6 @@ definitions:
1081
1081
  type: object
1082
1082
  required:
1083
1083
  - type
1084
- - client_id
1085
- - client_secret
1086
1084
  properties:
1087
1085
  type:
1088
1086
  type: string
@@ -1277,6 +1275,15 @@ definitions:
1277
1275
  default: []
1278
1276
  examples:
1279
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
1280
1287
  $parameters:
1281
1288
  type: object
1282
1289
  additionalProperties: true
@@ -222,8 +222,6 @@ class PerPartitionCursor(DeclarativeCursor):
222
222
  next_page_token: Optional[Mapping[str, Any]] = None,
223
223
  ) -> Mapping[str, Any]:
224
224
  if stream_slice:
225
- if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
226
- self.create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
227
225
  return self._partition_router.get_request_params( # type: ignore # this always returns a mapping
228
226
  stream_state=stream_state,
229
227
  stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
@@ -246,8 +244,6 @@ class PerPartitionCursor(DeclarativeCursor):
246
244
  next_page_token: Optional[Mapping[str, Any]] = None,
247
245
  ) -> Mapping[str, Any]:
248
246
  if stream_slice:
249
- if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
250
- self.create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
251
247
  return self._partition_router.get_request_headers( # type: ignore # this always returns a mapping
252
248
  stream_state=stream_state,
253
249
  stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
@@ -270,8 +266,6 @@ class PerPartitionCursor(DeclarativeCursor):
270
266
  next_page_token: Optional[Mapping[str, Any]] = None,
271
267
  ) -> Union[Mapping[str, Any], str]:
272
268
  if stream_slice:
273
- if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
274
- self.create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
275
269
  return self._partition_router.get_request_body_data( # type: ignore # this always returns a mapping
276
270
  stream_state=stream_state,
277
271
  stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
@@ -294,8 +288,6 @@ class PerPartitionCursor(DeclarativeCursor):
294
288
  next_page_token: Optional[Mapping[str, Any]] = None,
295
289
  ) -> Mapping[str, Any]:
296
290
  if stream_slice:
297
- if self._to_partition_key(stream_slice.partition) not in self._cursor_per_partition:
298
- self.create_cursor_for_partition(self._to_partition_key(stream_slice.partition))
299
291
  return self._partition_router.get_request_body_json( # type: ignore # this always returns a mapping
300
292
  stream_state=stream_state,
301
293
  stream_slice=StreamSlice(partition=stream_slice.partition, cursor_slice={}),
@@ -311,6 +303,21 @@ class PerPartitionCursor(DeclarativeCursor):
311
303
  raise ValueError("A partition needs to be provided in order to get request body json")
312
304
 
313
305
  def should_be_synced(self, record: Record) -> bool:
306
+ if (
307
+ record.associated_slice
308
+ and self._to_partition_key(record.associated_slice.partition)
309
+ not in self._cursor_per_partition
310
+ ):
311
+ partition_state = (
312
+ self._state_to_migrate_from
313
+ if self._state_to_migrate_from
314
+ else self._NO_CURSOR_STATE
315
+ )
316
+ cursor = self._create_cursor(partition_state)
317
+
318
+ self._cursor_per_partition[
319
+ self._to_partition_key(record.associated_slice.partition)
320
+ ] = cursor
314
321
  return self._get_cursor(record).should_be_synced(
315
322
  self._convert_record_to_cursor_record(record)
316
323
  )
@@ -349,14 +356,8 @@ class PerPartitionCursor(DeclarativeCursor):
349
356
  )
350
357
  partition_key = self._to_partition_key(record.associated_slice.partition)
351
358
  if partition_key not in self._cursor_per_partition:
352
- self.create_cursor_for_partition(partition_key)
359
+ raise ValueError(
360
+ "Invalid state as stream slices that are emitted should refer to an existing cursor"
361
+ )
353
362
  cursor = self._cursor_per_partition[partition_key]
354
363
  return cursor
355
-
356
- def create_cursor_for_partition(self, partition_key: str) -> None:
357
- partition_state = (
358
- self._state_to_migrate_from if self._state_to_migrate_from else self._NO_CURSOR_STATE
359
- )
360
- cursor = self._create_cursor(partition_state)
361
-
362
- self._cursor_per_partition[partition_key] = cursor
@@ -506,8 +506,8 @@ class OAuthAuthenticator(BaseModel):
506
506
  examples=["custom_app_id"],
507
507
  title="Client ID Property Name",
508
508
  )
509
- client_id: str = Field(
510
- ...,
509
+ client_id: Optional[str] = Field(
510
+ None,
511
511
  description="The OAuth client ID. Fill it in the user inputs.",
512
512
  examples=["{{ config['client_id }}", "{{ config['credentials']['client_id }}"],
513
513
  title="Client ID",
@@ -518,8 +518,8 @@ class OAuthAuthenticator(BaseModel):
518
518
  examples=["custom_app_secret"],
519
519
  title="Client Secret Property Name",
520
520
  )
521
- client_secret: str = Field(
522
- ...,
521
+ client_secret: Optional[str] = Field(
522
+ None,
523
523
  description="The OAuth client secret. Fill it in the user inputs.",
524
524
  examples=[
525
525
  "{{ config['client_secret }}",
@@ -624,6 +624,16 @@ class OAuthAuthenticator(BaseModel):
624
624
  description="When the token updater is defined, new refresh tokens, access tokens and the access token expiry date are written back from the authentication response to the config object. This is important if the refresh token can only used once.",
625
625
  title="Token Updater",
626
626
  )
627
+ profile_assertion: Optional[JwtAuthenticator] = Field(
628
+ None,
629
+ description="The authenticator being used to authenticate the client authenticator.",
630
+ title="Profile Assertion",
631
+ )
632
+ use_profile_assertion: Optional[bool] = Field(
633
+ False,
634
+ description="Enable using profile assertion as a flow for OAuth authorization.",
635
+ title="Use Profile Assertion",
636
+ )
627
637
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
628
638
 
629
639
 
@@ -2100,6 +2100,12 @@ class ModelToComponentFactory:
2100
2100
  def create_oauth_authenticator(
2101
2101
  self, model: OAuthAuthenticatorModel, config: Config, **kwargs: Any
2102
2102
  ) -> DeclarativeOauth2Authenticator:
2103
+ profile_assertion = (
2104
+ self._create_component_from_model(model.profile_assertion, config=config)
2105
+ if model.profile_assertion
2106
+ else None
2107
+ )
2108
+
2103
2109
  if model.refresh_token_updater:
2104
2110
  # ignore type error because fixing it would have a lot of dependencies, revisit later
2105
2111
  return DeclarativeSingleUseRefreshTokenOauth2Authenticator( # type: ignore
@@ -2120,13 +2126,17 @@ class ModelToComponentFactory:
2120
2126
  ).eval(config),
2121
2127
  client_id=InterpolatedString.create(
2122
2128
  model.client_id, parameters=model.parameters or {}
2123
- ).eval(config),
2129
+ ).eval(config)
2130
+ if model.client_id
2131
+ else model.client_id,
2124
2132
  client_secret_name=InterpolatedString.create(
2125
2133
  model.client_secret_name or "client_secret", parameters=model.parameters or {}
2126
2134
  ).eval(config),
2127
2135
  client_secret=InterpolatedString.create(
2128
2136
  model.client_secret, parameters=model.parameters or {}
2129
- ).eval(config),
2137
+ ).eval(config)
2138
+ if model.client_secret
2139
+ else model.client_secret,
2130
2140
  access_token_config_path=model.refresh_token_updater.access_token_config_path,
2131
2141
  refresh_token_config_path=model.refresh_token_updater.refresh_token_config_path,
2132
2142
  token_expiry_date_config_path=model.refresh_token_updater.token_expiry_date_config_path,
@@ -2172,6 +2182,8 @@ class ModelToComponentFactory:
2172
2182
  config=config,
2173
2183
  parameters=model.parameters or {},
2174
2184
  message_repository=self._message_repository,
2185
+ profile_assertion=profile_assertion,
2186
+ use_profile_assertion=model.use_profile_assertion,
2175
2187
  )
2176
2188
 
2177
2189
  def create_offset_increment(
@@ -2374,7 +2386,7 @@ class ModelToComponentFactory:
2374
2386
  if (
2375
2387
  not isinstance(stream_slicer, DatetimeBasedCursor)
2376
2388
  or type(stream_slicer) is not DatetimeBasedCursor
2377
- ):
2389
+ ) and not isinstance(stream_slicer, PerPartitionWithGlobalCursor):
2378
2390
  # Many of the custom component implementations of DatetimeBasedCursor override get_request_params() (or other methods).
2379
2391
  # Because we're decoupling RequestOptionsProvider from the Cursor, custom components will eventually need to reimplement
2380
2392
  # their own RequestOptionsProvider. However, right now the existing StreamSlicer/Cursor still can act as the SimpleRetriever's
@@ -45,7 +45,7 @@ def format_http_message(
45
45
  log_message["http"]["is_auxiliary"] = is_auxiliary # type: ignore [index]
46
46
  if stream_name:
47
47
  log_message["airbyte_cdk"] = {"stream": {"name": stream_name}}
48
- return log_message # type: ignore [return-value] # got "dict[str, object]", expected "dict[str, JsonType]"
48
+ return log_message # type: ignore[return-value] # got "dict[str, object]", expected "dict[str, JsonType]"
49
49
 
50
50
 
51
51
  def _normalize_body_string(body_str: Optional[Union[str, bytes]]) -> Optional[str]:
@@ -95,16 +95,16 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
95
95
  return self._access_token_name
96
96
 
97
97
  def get_scopes(self) -> list[str]:
98
- return self._scopes # type: ignore [return-value]
98
+ return self._scopes # type: ignore[return-value]
99
99
 
100
100
  def get_expires_in_name(self) -> str:
101
101
  return self._expires_in_name
102
102
 
103
103
  def get_refresh_request_body(self) -> Mapping[str, Any]:
104
- return self._refresh_request_body # type: ignore [return-value]
104
+ return self._refresh_request_body # type: ignore[return-value]
105
105
 
106
106
  def get_refresh_request_headers(self) -> Mapping[str, Any]:
107
- return self._refresh_request_headers # type: ignore [return-value]
107
+ return self._refresh_request_headers # type: ignore[return-value]
108
108
 
109
109
  def get_grant_type_name(self) -> str:
110
110
  return self._grant_type_name
@@ -128,11 +128,11 @@ class Oauth2Authenticator(AbstractOauth2Authenticator):
128
128
 
129
129
  @property
130
130
  def access_token(self) -> str:
131
- return self._access_token # type: ignore [return-value]
131
+ return self._access_token # type: ignore[return-value]
132
132
 
133
133
  @access_token.setter
134
134
  def access_token(self, value: str) -> None:
135
- self._access_token = value # type: ignore [assignment] # Incorrect type for assignment
135
+ self._access_token = value # type: ignore[assignment] # Incorrect type for assignment
136
136
 
137
137
 
138
138
  class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
@@ -192,15 +192,15 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
192
192
  message_repository (MessageRepository): the message repository used to emit logs on HTTP requests and control message on config update
193
193
  """
194
194
  self._client_id = (
195
- client_id # type: ignore [assignment] # Incorrect type for assignment
195
+ client_id # type: ignore[assignment] # Incorrect type for assignment
196
196
  if client_id is not None
197
- else dpath.get(connector_config, ("credentials", "client_id")) # type: ignore [arg-type]
197
+ else dpath.get(connector_config, ("credentials", "client_id")) # type: ignore[arg-type]
198
198
  )
199
199
  self._client_secret = (
200
- client_secret # type: ignore [assignment] # Incorrect type for assignment
200
+ client_secret # type: ignore[assignment] # Incorrect type for assignment
201
201
  if client_secret is not None
202
202
  else dpath.get(
203
- connector_config, # type: ignore [arg-type]
203
+ connector_config, # type: ignore[arg-type]
204
204
  ("credentials", "client_secret"),
205
205
  )
206
206
  )
@@ -248,8 +248,8 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
248
248
 
249
249
  @property
250
250
  def access_token(self) -> str:
251
- return dpath.get( # type: ignore [return-value]
252
- self._connector_config, # type: ignore [arg-type]
251
+ return dpath.get( # type: ignore[return-value]
252
+ self._connector_config, # type: ignore[arg-type]
253
253
  self._access_token_config_path,
254
254
  default="",
255
255
  )
@@ -257,39 +257,39 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
257
257
  @access_token.setter
258
258
  def access_token(self, new_access_token: str) -> None:
259
259
  dpath.new(
260
- self._connector_config, # type: ignore [arg-type]
260
+ self._connector_config, # type: ignore[arg-type]
261
261
  self._access_token_config_path,
262
262
  new_access_token,
263
263
  )
264
264
 
265
265
  def get_refresh_token(self) -> str:
266
- return dpath.get( # type: ignore [return-value]
267
- self._connector_config, # type: ignore [arg-type]
266
+ return dpath.get( # type: ignore[return-value]
267
+ self._connector_config, # type: ignore[arg-type]
268
268
  self._refresh_token_config_path,
269
269
  default="",
270
270
  )
271
271
 
272
272
  def set_refresh_token(self, new_refresh_token: str) -> None:
273
273
  dpath.new(
274
- self._connector_config, # type: ignore [arg-type]
274
+ self._connector_config, # type: ignore[arg-type]
275
275
  self._refresh_token_config_path,
276
276
  new_refresh_token,
277
277
  )
278
278
 
279
279
  def get_token_expiry_date(self) -> pendulum.DateTime:
280
280
  expiry_date = dpath.get(
281
- self._connector_config, # type: ignore [arg-type]
281
+ self._connector_config, # type: ignore[arg-type]
282
282
  self._token_expiry_date_config_path,
283
283
  default="",
284
284
  )
285
- return pendulum.now().subtract(days=1) if expiry_date == "" else pendulum.parse(expiry_date) # type: ignore [arg-type, return-value, no-untyped-call]
285
+ return pendulum.now().subtract(days=1) if expiry_date == "" else pendulum.parse(expiry_date) # type: ignore[arg-type, return-value, no-untyped-call]
286
286
 
287
287
  def set_token_expiry_date( # type: ignore[override]
288
288
  self,
289
289
  new_token_expiry_date: pendulum.DateTime,
290
290
  ) -> None:
291
291
  dpath.new(
292
- self._connector_config, # type: ignore [arg-type]
292
+ self._connector_config, # type: ignore[arg-type]
293
293
  self._token_expiry_date_config_path,
294
294
  str(new_token_expiry_date),
295
295
  )
@@ -329,10 +329,10 @@ class SingleUseRefreshTokenOauth2Authenticator(Oauth2Authenticator):
329
329
  # message directly in the console, this is needed
330
330
  if not isinstance(self._message_repository, NoopMessageRepository):
331
331
  self._message_repository.emit_message(
332
- create_connector_config_control_message(self._connector_config) # type: ignore [arg-type]
332
+ create_connector_config_control_message(self._connector_config) # type: ignore[arg-type]
333
333
  )
334
334
  else:
335
- emit_configuration_as_airbyte_control_message(self._connector_config) # type: ignore [arg-type]
335
+ emit_configuration_as_airbyte_control_message(self._connector_config) # type: ignore[arg-type]
336
336
  return self.access_token
337
337
 
338
338
  def refresh_access_token( # type: ignore[override] # Signature doesn't match base class
@@ -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.24.0dev1" # Version will be calculated dynamically.
26
+ version = "6.25.0" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false