airbyte-cdk 6.44.0__tar.gz → 6.45.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 (373) hide show
  1. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +118 -2
  3. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +75 -2
  4. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +180 -8
  5. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +13 -0
  6. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +40 -0
  7. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +69 -0
  8. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +58 -0
  9. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +10 -0
  10. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +33 -0
  11. airbyte_cdk-6.45.0/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +19 -0
  12. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +25 -2
  13. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +101 -30
  14. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/pyproject.toml +1 -1
  15. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/LICENSE.txt +0 -0
  16. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/LICENSE_SHORT +0 -0
  17. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/README.md +0 -0
  18. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/__init__.py +0 -0
  19. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/__init__.py +0 -0
  20. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  21. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  22. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  23. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/config_observation.py +0 -0
  24. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector.py +0 -0
  25. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/README.md +0 -0
  26. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  27. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  28. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/main.py +0 -0
  29. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/models.py +0 -0
  30. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  31. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  32. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  33. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  34. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  35. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/__init__.py +0 -0
  36. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/destination.py +0 -0
  37. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  38. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  39. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  40. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  41. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  42. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  43. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  44. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  45. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  46. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/entrypoint.py +0 -0
  47. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/exception_handler.py +0 -0
  48. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/logger.py +0 -0
  49. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/__init__.py +0 -0
  50. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  51. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  52. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  53. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/models/well_known_types.py +0 -0
  54. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/py.typed +0 -0
  55. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/__init__.py +0 -0
  56. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  57. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  58. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  59. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  60. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  61. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  62. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  63. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  64. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/config.py +0 -0
  65. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  66. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  67. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  68. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  69. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  70. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  71. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  72. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  73. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  74. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  75. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  76. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  77. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  78. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  79. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  80. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  81. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  82. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  83. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  84. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  85. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  86. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  87. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  88. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  89. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  90. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  91. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  92. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  93. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  94. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  95. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  96. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  97. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  98. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  99. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  100. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  101. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  102. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  103. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  104. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  105. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  106. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  107. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  108. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  109. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  110. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  111. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  112. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  113. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  114. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  115. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  116. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  117. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  118. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  119. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  120. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  121. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  122. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  123. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  124. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  125. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  126. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  127. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  128. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  129. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  130. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  131. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  132. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  133. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  134. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  135. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  136. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  137. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  138. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  139. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  140. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  141. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  142. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  143. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  144. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  145. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  146. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  147. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  148. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  149. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  150. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  151. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  152. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  153. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  154. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  155. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  156. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  157. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  158. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  159. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  160. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  161. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  162. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  163. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  164. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  165. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  166. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  167. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  168. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  169. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  170. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  171. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  172. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  173. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  174. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  175. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  176. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  177. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  178. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  179. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  180. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  181. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  182. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  183. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  184. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  185. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  186. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  187. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  188. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  189. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  190. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  191. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  192. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  193. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  194. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  195. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  196. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  197. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  198. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  199. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  200. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  201. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  202. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  203. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  204. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  205. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  206. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  207. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  208. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  209. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  210. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  211. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  212. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  213. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  214. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  215. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  216. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  217. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  218. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  219. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  220. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  221. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  222. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  223. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  224. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  225. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  226. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  227. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  228. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  229. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  230. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  231. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  232. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  233. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  234. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  235. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  236. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  237. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  238. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  239. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  240. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  241. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  242. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  243. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  244. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  245. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  246. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  247. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  248. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  249. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  250. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  251. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  252. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  253. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  254. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  255. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  256. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  257. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  258. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  259. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  260. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  261. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  262. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/http_config.py +0 -0
  263. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/http_logger.py +0 -0
  264. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  265. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/message/repository.py +0 -0
  266. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/source.py +0 -0
  267. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  268. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  269. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  270. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  271. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  272. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  273. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  274. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  275. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  276. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  277. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  278. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  279. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  280. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  281. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  282. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  283. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  284. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  285. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  286. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  287. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  288. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  289. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  290. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  291. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  292. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  293. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  294. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  295. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  296. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  297. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  298. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  299. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  300. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/core.py +0 -0
  301. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  302. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  303. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  304. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  305. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  306. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  307. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  308. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  309. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  310. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  311. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  312. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  313. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  314. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  315. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  316. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  317. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  318. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  319. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  320. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  321. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  322. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  323. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/types.py +0 -0
  324. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  325. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  326. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  327. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  328. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  329. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  330. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sources/utils/types.py +0 -0
  331. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/__init__.py +0 -0
  332. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  333. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  334. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  335. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/constants.py +0 -0
  336. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/exceptions.py +0 -0
  337. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/secrets.py +0 -0
  338. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  339. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  340. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  341. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/sql/types.py +0 -0
  342. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/__init__.py +0 -0
  343. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  344. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  345. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  346. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  347. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  348. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  349. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  350. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  351. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/state_builder.py +0 -0
  352. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/__init__.py +0 -0
  353. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/data.py +0 -0
  354. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  355. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  356. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/test/utils/reading.py +0 -0
  357. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/__init__.py +0 -0
  358. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  359. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  360. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/constants.py +0 -0
  361. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  362. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  363. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/event_timing.py +0 -0
  364. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  365. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  366. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/message_utils.py +0 -0
  367. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  368. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  369. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  370. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  371. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  372. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  373. {airbyte_cdk-6.44.0 → airbyte_cdk-6.45.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.44.0
3
+ Version: 6.45.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -341,7 +341,7 @@ definitions:
341
341
  properties:
342
342
  type:
343
343
  type: string
344
- enum: [ DynamicStreamCheckConfig ]
344
+ enum: [DynamicStreamCheckConfig]
345
345
  dynamic_stream_name:
346
346
  title: Dynamic Stream Name
347
347
  description: The dynamic stream name.
@@ -1752,6 +1752,30 @@ definitions:
1752
1752
  $parameters:
1753
1753
  type: object
1754
1754
  additionalProperties: true
1755
+ GroupByKeyMergeStrategy:
1756
+ title: Group by Key
1757
+ description: Record merge strategy that combines records according to fields on the record.
1758
+ required:
1759
+ - type
1760
+ - key
1761
+ properties:
1762
+ type:
1763
+ type: string
1764
+ enum: [GroupByKeyMergeStrategy]
1765
+ key:
1766
+ title: Key
1767
+ description: The name of the field on the record whose value will be used to group properties that were retrieved through multiple API requests.
1768
+ anyOf:
1769
+ - type: string
1770
+ - type: array
1771
+ items:
1772
+ type: string
1773
+ examples:
1774
+ - "id"
1775
+ - ["parent_id", "end_date"]
1776
+ $parameters:
1777
+ type: object
1778
+ additionalProperties: true
1755
1779
  SessionTokenAuthenticator:
1756
1780
  type: object
1757
1781
  required:
@@ -1971,7 +1995,9 @@ definitions:
1971
1995
  - type: string
1972
1996
  - type: object
1973
1997
  additionalProperties:
1974
- type: string
1998
+ anyOf:
1999
+ - type: string
2000
+ - $ref": "#/definitions/QueryProperties"
1975
2001
  interpolation_context:
1976
2002
  - next_page_token
1977
2003
  - stream_interval
@@ -2989,6 +3015,96 @@ definitions:
2989
3015
  examples:
2990
3016
  - id
2991
3017
  - ["code", "type"]
3018
+ PropertiesFromEndpoint:
3019
+ title: Properties from Endpoint
3020
+ description: Defines the behavior for fetching the list of properties from an API that will be loaded into the requests to extract records.
3021
+ type: object
3022
+ required:
3023
+ - type
3024
+ - property_field_path
3025
+ - retriever
3026
+ properties:
3027
+ type:
3028
+ type: string
3029
+ enum: [PropertiesFromEndpoint]
3030
+ property_field_path:
3031
+ description: Describes the path to the field that should be extracted
3032
+ type: array
3033
+ items:
3034
+ type: string
3035
+ examples:
3036
+ - ["name"]
3037
+ interpolation_context:
3038
+ - config
3039
+ - parameters
3040
+ retriever:
3041
+ description: Requester component that describes how to fetch the properties to query from a remote API endpoint.
3042
+ anyOf:
3043
+ - "$ref": "#/definitions/CustomRetriever"
3044
+ - "$ref": "#/definitions/SimpleRetriever"
3045
+ $parameters:
3046
+ type: object
3047
+ additionalProperties: true
3048
+ PropertyChunking:
3049
+ title: Property Chunking
3050
+ description: For APIs with restrictions on the amount of properties that can be requester per request, property chunking can be applied to make multiple requests with a subset of the properties.
3051
+ type: object
3052
+ required:
3053
+ - type
3054
+ - property_limit_type
3055
+ properties:
3056
+ type:
3057
+ type: string
3058
+ enum: [PropertyChunking]
3059
+ property_limit_type:
3060
+ title: Property Limit Type
3061
+ description: The type used to determine the maximum number of properties per chunk
3062
+ enum:
3063
+ - characters
3064
+ - property_count
3065
+ property_limit:
3066
+ title: Property Limit
3067
+ description: The maximum amount of properties that can be retrieved per request according to the limit type.
3068
+ type: integer
3069
+ record_merge_strategy:
3070
+ title: Record Merge Strategy
3071
+ description: Dictates how to records that require multiple requests to get all properties should be emitted to the destination
3072
+ "$ref": "#/definitions/GroupByKeyMergeStrategy"
3073
+ $parameters:
3074
+ type: object
3075
+ additionalProperties: true
3076
+ QueryProperties:
3077
+ title: Query Properties
3078
+ description: For APIs that require explicit specification of the properties to query for, this component specifies which property fields and how they are supplied to outbound requests.
3079
+ type: object
3080
+ required:
3081
+ - type
3082
+ - property_list
3083
+ properties:
3084
+ type:
3085
+ type: string
3086
+ enum: [QueryProperties]
3087
+ property_list:
3088
+ title: Property List
3089
+ description: The set of properties that will be queried for in the outbound request. This can either be statically defined or dynamic based on an API endpoint
3090
+ anyOf:
3091
+ - type: array
3092
+ items:
3093
+ type: string
3094
+ - "$ref": "#/definitions/PropertiesFromEndpoint"
3095
+ always_include_properties:
3096
+ title: Always Include Properties
3097
+ description: The list of properties that should be included in every set of properties when multiple chunks of properties are being requested.
3098
+ type: array
3099
+ items:
3100
+ type: string
3101
+ property_chunking:
3102
+ title: Property Chunking
3103
+ description: Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.
3104
+ "$ref": "#/definitions/PropertyChunking"
3105
+ $parameters:
3106
+ type: object
3107
+ additionalProperties: true
2992
3108
  RecordFilter:
2993
3109
  title: Record Filter
2994
3110
  description: Filter applied on a list of records.
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+
1
3
  # generated by datamodel-codegen:
2
4
  # filename: declarative_component_schema.yaml
3
5
 
@@ -49,7 +51,7 @@ class DynamicStreamCheckConfig(BaseModel):
49
51
  )
50
52
  stream_count: Optional[int] = Field(
51
53
  0,
52
- description="Numbers of the streams to try reading from when running a check operation.",
54
+ description="The number of streams to attempt reading from during a check operation. If `stream_count` exceeds the total number of available streams, the minimum of the two values will be used.",
53
55
  title="Stream Count",
54
56
  )
55
57
 
@@ -718,6 +720,17 @@ class ExponentialBackoffStrategy(BaseModel):
718
720
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
719
721
 
720
722
 
723
+ class GroupByKeyMergeStrategy(BaseModel):
724
+ type: Literal["GroupByKeyMergeStrategy"]
725
+ key: Union[str, List[str]] = Field(
726
+ ...,
727
+ description="The name of the field on the record whose value will be used to group properties that were retrieved through multiple API requests.",
728
+ examples=["id", ["parent_id", "end_date"]],
729
+ title="Key",
730
+ )
731
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
732
+
733
+
721
734
  class SessionTokenRequestBearerAuthenticator(BaseModel):
722
735
  type: Literal["Bearer"]
723
736
 
@@ -1189,6 +1202,31 @@ class PrimaryKey(BaseModel):
1189
1202
  )
1190
1203
 
1191
1204
 
1205
+ class PropertyLimitType(Enum):
1206
+ characters = "characters"
1207
+ property_count = "property_count"
1208
+
1209
+
1210
+ class PropertyChunking(BaseModel):
1211
+ type: Literal["PropertyChunking"]
1212
+ property_limit_type: PropertyLimitType = Field(
1213
+ ...,
1214
+ description="The type used to determine the maximum number of properties per chunk",
1215
+ title="Property Limit Type",
1216
+ )
1217
+ property_limit: Optional[int] = Field(
1218
+ None,
1219
+ description="The maximum amount of properties that can be retrieved per request according to the limit type.",
1220
+ title="Property Limit",
1221
+ )
1222
+ record_merge_strategy: Optional[GroupByKeyMergeStrategy] = Field(
1223
+ None,
1224
+ description="Dictates how to records that require multiple requests to get all properties should be emitted to the destination",
1225
+ title="Record Merge Strategy",
1226
+ )
1227
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1228
+
1229
+
1192
1230
  class RecordFilter(BaseModel):
1193
1231
  type: Literal["RecordFilter"]
1194
1232
  condition: Optional[str] = Field(
@@ -2187,7 +2225,7 @@ class HttpRequester(BaseModel):
2187
2225
  examples=[{"Output-Format": "JSON"}, {"Version": "{{ config['version'] }}"}],
2188
2226
  title="Request Headers",
2189
2227
  )
2190
- request_parameters: Optional[Union[str, Dict[str, str]]] = Field(
2228
+ request_parameters: Optional[Union[str, Dict[str, Union[str, Any]]]] = Field(
2191
2229
  None,
2192
2230
  description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
2193
2231
  examples=[
@@ -2277,6 +2315,40 @@ class ParentStreamConfig(BaseModel):
2277
2315
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2278
2316
 
2279
2317
 
2318
+ class PropertiesFromEndpoint(BaseModel):
2319
+ type: Literal["PropertiesFromEndpoint"]
2320
+ property_field_path: List[str] = Field(
2321
+ ...,
2322
+ description="Describes the path to the field that should be extracted",
2323
+ examples=[["name"]],
2324
+ )
2325
+ retriever: Union[CustomRetriever, SimpleRetriever] = Field(
2326
+ ...,
2327
+ description="Requester component that describes how to fetch the properties to query from a remote API endpoint.",
2328
+ )
2329
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2330
+
2331
+
2332
+ class QueryProperties(BaseModel):
2333
+ type: Literal["QueryProperties"]
2334
+ property_list: Union[List[str], PropertiesFromEndpoint] = Field(
2335
+ ...,
2336
+ description="The set of properties that will be queried for in the outbound request. This can either be statically defined or dynamic based on an API endpoint",
2337
+ title="Property List",
2338
+ )
2339
+ always_include_properties: Optional[List[str]] = Field(
2340
+ None,
2341
+ description="The list of properties that should be included in every set of properties when multiple chunks of properties are being requested.",
2342
+ title="Always Include Properties",
2343
+ )
2344
+ property_chunking: Optional[PropertyChunking] = Field(
2345
+ None,
2346
+ description="Defines how query properties will be grouped into smaller sets for APIs with limitations on the number of properties fetched per API request.",
2347
+ title="Property Chunking",
2348
+ )
2349
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2350
+
2351
+
2280
2352
  class StateDelegatingStream(BaseModel):
2281
2353
  type: Literal["StateDelegatingStream"]
2282
2354
  name: str = Field(..., description="The stream name.", example=["Users"], title="Name")
@@ -2525,5 +2597,6 @@ DeclarativeStream.update_forward_refs()
2525
2597
  SessionTokenAuthenticator.update_forward_refs()
2526
2598
  DynamicSchemaLoader.update_forward_refs()
2527
2599
  ParentStreamConfig.update_forward_refs()
2600
+ PropertiesFromEndpoint.update_forward_refs()
2528
2601
  SimpleRetriever.update_forward_refs()
2529
2602
  AsyncRetriever.update_forward_refs()
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
2
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
3
3
  #
4
4
 
5
5
  from __future__ import annotations
@@ -234,6 +234,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
234
234
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
235
235
  FlattenFields as FlattenFieldsModel,
236
236
  )
237
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
238
+ GroupByKeyMergeStrategy as GroupByKeyMergeStrategyModel,
239
+ )
237
240
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
238
241
  GroupingPartitionRouter as GroupingPartitionRouterModel,
239
242
  )
@@ -324,6 +327,18 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
324
327
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
325
328
  ParentStreamConfig as ParentStreamConfigModel,
326
329
  )
330
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
331
+ PropertiesFromEndpoint as PropertiesFromEndpointModel,
332
+ )
333
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
334
+ PropertyChunking as PropertyChunkingModel,
335
+ )
336
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
337
+ PropertyLimitType as PropertyLimitTypeModel,
338
+ )
339
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
340
+ QueryProperties as QueryPropertiesModel,
341
+ )
327
342
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
328
343
  Rate as RateModel,
329
344
  )
@@ -432,6 +447,17 @@ from airbyte_cdk.sources.declarative.requesters.paginators.strategies import (
432
447
  PageIncrement,
433
448
  StopConditionPaginationStrategyDecorator,
434
449
  )
450
+ from airbyte_cdk.sources.declarative.requesters.query_properties import (
451
+ PropertiesFromEndpoint,
452
+ PropertyChunking,
453
+ QueryProperties,
454
+ )
455
+ from airbyte_cdk.sources.declarative.requesters.query_properties.property_chunking import (
456
+ PropertyLimitType,
457
+ )
458
+ from airbyte_cdk.sources.declarative.requesters.query_properties.strategies import (
459
+ GroupByKey,
460
+ )
435
461
  from airbyte_cdk.sources.declarative.requesters.request_option import RequestOptionType
436
462
  from airbyte_cdk.sources.declarative.requesters.request_options import (
437
463
  DatetimeBasedRequestOptionsProvider,
@@ -596,6 +622,7 @@ class ModelToComponentFactory:
596
622
  ResponseToFileExtractorModel: self.create_response_to_file_extractor,
597
623
  ExponentialBackoffStrategyModel: self.create_exponential_backoff_strategy,
598
624
  SessionTokenAuthenticatorModel: self.create_session_token_authenticator,
625
+ GroupByKeyMergeStrategyModel: self.create_group_by_key,
599
626
  HttpRequesterModel: self.create_http_requester,
600
627
  HttpResponseFilterModel: self.create_http_response_filter,
601
628
  InlineSchemaLoaderModel: self.create_inline_schema_loader,
@@ -625,6 +652,9 @@ class ModelToComponentFactory:
625
652
  OffsetIncrementModel: self.create_offset_increment,
626
653
  PageIncrementModel: self.create_page_increment,
627
654
  ParentStreamConfigModel: self.create_parent_stream_config,
655
+ PropertiesFromEndpointModel: self.create_properties_from_endpoint,
656
+ PropertyChunkingModel: self.create_property_chunking,
657
+ QueryPropertiesModel: self.create_query_properties,
628
658
  RecordFilterModel: self.create_record_filter,
629
659
  RecordSelectorModel: self.create_record_selector,
630
660
  RemoveFieldsModel: self.create_remove_fields,
@@ -2083,8 +2113,8 @@ class ModelToComponentFactory:
2083
2113
  parameters=model.parameters or {},
2084
2114
  )
2085
2115
 
2116
+ @staticmethod
2086
2117
  def create_response_to_file_extractor(
2087
- self,
2088
2118
  model: ResponseToFileExtractorModel,
2089
2119
  **kwargs: Any,
2090
2120
  ) -> ResponseToFileExtractor:
@@ -2098,11 +2128,17 @@ class ModelToComponentFactory:
2098
2128
  factor=model.factor or 5, parameters=model.parameters or {}, config=config
2099
2129
  )
2100
2130
 
2131
+ @staticmethod
2132
+ def create_group_by_key(model: GroupByKeyMergeStrategyModel, config: Config) -> GroupByKey:
2133
+ return GroupByKey(model.key, config=config, parameters=model.parameters or {})
2134
+
2101
2135
  def create_http_requester(
2102
2136
  self,
2103
2137
  model: HttpRequesterModel,
2104
2138
  config: Config,
2105
2139
  decoder: Decoder = JsonDecoder(parameters={}),
2140
+ query_properties_key: Optional[str] = None,
2141
+ use_cache: Optional[bool] = None,
2106
2142
  *,
2107
2143
  name: str,
2108
2144
  ) -> HttpRequester:
@@ -2135,6 +2171,7 @@ class ModelToComponentFactory:
2135
2171
  request_body_json=model.request_body_json,
2136
2172
  request_headers=model.request_headers,
2137
2173
  request_parameters=model.request_parameters,
2174
+ query_properties_key=query_properties_key,
2138
2175
  config=config,
2139
2176
  parameters=model.parameters or {},
2140
2177
  )
@@ -2142,7 +2179,7 @@ class ModelToComponentFactory:
2142
2179
  assert model.use_cache is not None # for mypy
2143
2180
  assert model.http_method is not None # for mypy
2144
2181
 
2145
- use_cache = model.use_cache and not self._disable_cache
2182
+ should_use_cache = (model.use_cache or bool(use_cache)) and not self._disable_cache
2146
2183
 
2147
2184
  return HttpRequester(
2148
2185
  name=name,
@@ -2157,7 +2194,7 @@ class ModelToComponentFactory:
2157
2194
  disable_retries=self._disable_retries,
2158
2195
  parameters=model.parameters or {},
2159
2196
  message_repository=self._message_repository,
2160
- use_cache=use_cache,
2197
+ use_cache=should_use_cache,
2161
2198
  decoder=decoder,
2162
2199
  stream_response=decoder.is_stream_response() if decoder else False,
2163
2200
  )
@@ -2261,10 +2298,11 @@ class ModelToComponentFactory:
2261
2298
  retriever = self._create_component_from_model(
2262
2299
  model=model.retriever,
2263
2300
  config=config,
2264
- name="",
2301
+ name="dynamic_properties",
2265
2302
  primary_key=None,
2266
2303
  stream_slicer=combined_slicers,
2267
2304
  transformations=[],
2305
+ use_cache=True,
2268
2306
  )
2269
2307
  schema_type_identifier = self._create_component_from_model(
2270
2308
  model.schema_type_identifier, config=config, parameters=model.parameters or {}
@@ -2602,6 +2640,79 @@ class ModelToComponentFactory:
2602
2640
  lazy_read_pointer=model_lazy_read_pointer,
2603
2641
  )
2604
2642
 
2643
+ def create_properties_from_endpoint(
2644
+ self, model: PropertiesFromEndpointModel, config: Config, **kwargs: Any
2645
+ ) -> PropertiesFromEndpoint:
2646
+ retriever = self._create_component_from_model(
2647
+ model=model.retriever,
2648
+ config=config,
2649
+ name="dynamic_properties",
2650
+ primary_key=None,
2651
+ stream_slicer=None,
2652
+ transformations=[],
2653
+ use_cache=True, # Enable caching on the HttpRequester/HttpClient because the properties endpoint will be called for every slice being processed, and it is highly unlikely for the response to different
2654
+ )
2655
+ return PropertiesFromEndpoint(
2656
+ property_field_path=model.property_field_path,
2657
+ retriever=retriever,
2658
+ config=config,
2659
+ parameters=model.parameters or {},
2660
+ )
2661
+
2662
+ def create_property_chunking(
2663
+ self, model: PropertyChunkingModel, config: Config, **kwargs: Any
2664
+ ) -> PropertyChunking:
2665
+ record_merge_strategy = (
2666
+ self._create_component_from_model(
2667
+ model=model.record_merge_strategy, config=config, **kwargs
2668
+ )
2669
+ if model.record_merge_strategy
2670
+ else None
2671
+ )
2672
+
2673
+ property_limit_type: PropertyLimitType
2674
+ match model.property_limit_type:
2675
+ case PropertyLimitTypeModel.property_count:
2676
+ property_limit_type = PropertyLimitType.property_count
2677
+ case PropertyLimitTypeModel.characters:
2678
+ property_limit_type = PropertyLimitType.characters
2679
+ case _:
2680
+ raise ValueError(f"Invalid PropertyLimitType {property_limit_type}")
2681
+
2682
+ return PropertyChunking(
2683
+ property_limit_type=property_limit_type,
2684
+ property_limit=model.property_limit,
2685
+ record_merge_strategy=record_merge_strategy,
2686
+ config=config,
2687
+ parameters=model.parameters or {},
2688
+ )
2689
+
2690
+ def create_query_properties(
2691
+ self, model: QueryPropertiesModel, config: Config, **kwargs: Any
2692
+ ) -> QueryProperties:
2693
+ if isinstance(model.property_list, list):
2694
+ property_list = model.property_list
2695
+ else:
2696
+ property_list = self._create_component_from_model(
2697
+ model=model.property_list, config=config, **kwargs
2698
+ )
2699
+
2700
+ property_chunking = (
2701
+ self._create_component_from_model(
2702
+ model=model.property_chunking, config=config, **kwargs
2703
+ )
2704
+ if model.property_chunking
2705
+ else None
2706
+ )
2707
+
2708
+ return QueryProperties(
2709
+ property_list=property_list,
2710
+ always_include_properties=model.always_include_properties,
2711
+ property_chunking=property_chunking,
2712
+ config=config,
2713
+ parameters=model.parameters or {},
2714
+ )
2715
+
2605
2716
  @staticmethod
2606
2717
  def create_record_filter(
2607
2718
  model: RecordFilterModel, config: Config, **kwargs: Any
@@ -2747,6 +2858,7 @@ class ModelToComponentFactory:
2747
2858
  IncrementingCountCursorModel, DatetimeBasedCursorModel, CustomIncrementalSyncModel
2748
2859
  ]
2749
2860
  ] = None,
2861
+ use_cache: Optional[bool] = None,
2750
2862
  **kwargs: Any,
2751
2863
  ) -> SimpleRetriever:
2752
2864
  decoder = (
@@ -2754,9 +2866,6 @@ class ModelToComponentFactory:
2754
2866
  if model.decoder
2755
2867
  else JsonDecoder(parameters={})
2756
2868
  )
2757
- requester = self._create_component_from_model(
2758
- model=model.requester, decoder=decoder, config=config, name=name
2759
- )
2760
2869
  record_selector = self._create_component_from_model(
2761
2870
  model=model.record_selector,
2762
2871
  name=name,
@@ -2765,6 +2874,57 @@ class ModelToComponentFactory:
2765
2874
  transformations=transformations,
2766
2875
  client_side_incremental_sync=client_side_incremental_sync,
2767
2876
  )
2877
+
2878
+ query_properties: Optional[QueryProperties] = None
2879
+ query_properties_key: Optional[str] = None
2880
+ if (
2881
+ hasattr(model.requester, "request_parameters")
2882
+ and model.requester.request_parameters
2883
+ and isinstance(model.requester.request_parameters, Mapping)
2884
+ ):
2885
+ query_properties_definitions = []
2886
+ for key, request_parameter in model.requester.request_parameters.items():
2887
+ # When translating JSON schema into Pydantic models, enforcing types for arrays containing both
2888
+ # concrete string complex object definitions like QueryProperties would get resolved to Union[str, Any].
2889
+ # This adds the extra validation that we couldn't get for free in Pydantic model generation
2890
+ if (
2891
+ isinstance(request_parameter, Mapping)
2892
+ and request_parameter.get("type") == "QueryProperties"
2893
+ ):
2894
+ query_properties_key = key
2895
+ query_properties_definitions.append(request_parameter)
2896
+ elif not isinstance(request_parameter, str):
2897
+ raise ValueError(
2898
+ f"Each element of request_parameters should be of type str or QueryProperties, but received {request_parameter.get('type')}"
2899
+ )
2900
+
2901
+ if len(query_properties_definitions) > 1:
2902
+ raise ValueError(
2903
+ f"request_parameters only supports defining one QueryProperties field, but found {len(query_properties_definitions)} usages"
2904
+ )
2905
+
2906
+ if len(query_properties_definitions) == 1:
2907
+ query_properties = self.create_component(
2908
+ model_type=QueryPropertiesModel,
2909
+ component_definition=query_properties_definitions[0],
2910
+ config=config,
2911
+ )
2912
+
2913
+ # Removes QueryProperties components from the interpolated mappings because it will be resolved in
2914
+ # the provider from the slice directly instead of through jinja interpolation
2915
+ if isinstance(model.requester.request_parameters, Mapping):
2916
+ model.requester.request_parameters = self._remove_query_properties(
2917
+ model.requester.request_parameters
2918
+ )
2919
+
2920
+ requester = self._create_component_from_model(
2921
+ model=model.requester,
2922
+ decoder=decoder,
2923
+ name=name,
2924
+ query_properties_key=query_properties_key,
2925
+ use_cache=use_cache,
2926
+ config=config,
2927
+ )
2768
2928
  url_base = (
2769
2929
  model.requester.url_base
2770
2930
  if hasattr(model.requester, "url_base")
@@ -2870,9 +3030,21 @@ class ModelToComponentFactory:
2870
3030
  cursor=cursor,
2871
3031
  config=config,
2872
3032
  ignore_stream_slicer_parameters_on_paginated_requests=ignore_stream_slicer_parameters_on_paginated_requests,
3033
+ additional_query_properties=query_properties,
2873
3034
  parameters=model.parameters or {},
2874
3035
  )
2875
3036
 
3037
+ @staticmethod
3038
+ def _remove_query_properties(
3039
+ request_parameters: Mapping[str, Union[Any, str]],
3040
+ ) -> Mapping[str, Union[Any, str]]:
3041
+ return {
3042
+ parameter_field: request_parameter
3043
+ for parameter_field, request_parameter in request_parameters.items()
3044
+ if not isinstance(request_parameter, Mapping)
3045
+ or not request_parameter.get("type") == "QueryProperties"
3046
+ }
3047
+
2876
3048
  def create_state_delegating_stream(
2877
3049
  self,
2878
3050
  model: StateDelegatingStreamModel,
@@ -0,0 +1,13 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+
3
+ from airbyte_cdk.sources.declarative.requesters.query_properties.properties_from_endpoint import (
4
+ PropertiesFromEndpoint,
5
+ )
6
+ from airbyte_cdk.sources.declarative.requesters.query_properties.property_chunking import (
7
+ PropertyChunking,
8
+ )
9
+ from airbyte_cdk.sources.declarative.requesters.query_properties.query_properties import (
10
+ QueryProperties,
11
+ )
12
+
13
+ __all__ = ["PropertiesFromEndpoint", "PropertyChunking", "QueryProperties"]
@@ -0,0 +1,40 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+
3
+ from dataclasses import InitVar, dataclass
4
+ from typing import Any, Iterable, List, Mapping, Optional
5
+
6
+ import dpath
7
+
8
+ from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
9
+ from airbyte_cdk.sources.declarative.retrievers import Retriever
10
+ from airbyte_cdk.sources.types import Config, StreamSlice
11
+
12
+
13
+ @dataclass
14
+ class PropertiesFromEndpoint:
15
+ """
16
+ Component that defines the behavior around how to dynamically retrieve a set of request properties from an
17
+ API endpoint. The set retrieved can then be injected into the requests to extract records from an API source.
18
+ """
19
+
20
+ property_field_path: List[str]
21
+ retriever: Retriever
22
+ config: Config
23
+ parameters: InitVar[Mapping[str, Any]]
24
+
25
+ def __post_init__(self, parameters: Mapping[str, Any]) -> None:
26
+ self._property_field_path = [
27
+ InterpolatedString(string=property_field, parameters=parameters)
28
+ for property_field in self.property_field_path
29
+ ]
30
+
31
+ def get_properties_from_endpoint(self, stream_slice: Optional[StreamSlice]) -> Iterable[str]:
32
+ response_properties = self.retriever.read_records(
33
+ records_schema={}, stream_slice=stream_slice
34
+ )
35
+ for property_obj in response_properties:
36
+ path = [
37
+ node.eval(self.config) if not isinstance(node, str) else node
38
+ for node in self._property_field_path
39
+ ]
40
+ yield dpath.get(property_obj, path, default=[]) # type: ignore # extracted will be a MutableMapping, given input data structure