airbyte-cdk 6.36.0.dev0__tar.gz → 6.36.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +15 -75
  3. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +15 -16
  4. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +13 -2
  5. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +17 -84
  6. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +6 -2
  7. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +1 -1
  8. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +2 -1
  9. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +1 -1
  10. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +1 -1
  11. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +1 -1
  12. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +1 -1
  13. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +2 -1
  14. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +14 -1
  15. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +19 -4
  16. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +1 -1
  17. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +10 -7
  18. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -1
  19. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +1 -4
  20. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -3
  21. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +2 -47
  22. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -2
  23. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +4 -4
  24. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/pyproject.toml +1 -1
  25. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/LICENSE.txt +0 -0
  26. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/LICENSE_SHORT +0 -0
  27. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/README.md +0 -0
  28. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/__init__.py +0 -0
  29. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/cli/__init__.py +0 -0
  30. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  31. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  32. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  33. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/config_observation.py +0 -0
  34. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector.py +0 -0
  35. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/README.md +0 -0
  36. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  37. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  38. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/main.py +0 -0
  39. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/models.py +0 -0
  40. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  41. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  42. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  43. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  44. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  45. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/__init__.py +0 -0
  46. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/destination.py +0 -0
  47. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  48. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  49. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  50. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  51. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  52. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  53. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  54. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  55. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  56. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/entrypoint.py +0 -0
  57. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/exception_handler.py +0 -0
  58. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/logger.py +0 -0
  59. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/models/__init__.py +0 -0
  60. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  61. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  62. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  63. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/models/well_known_types.py +0 -0
  64. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/py.typed +0 -0
  65. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/__init__.py +0 -0
  66. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/abstract_source.py +0 -0
  67. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  68. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  69. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  70. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  71. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  72. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  73. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  74. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/config.py +0 -0
  75. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  76. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  77. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  78. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  79. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  80. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  81. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  82. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  83. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  84. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  85. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  86. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  87. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  88. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  89. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  90. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  91. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  92. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  93. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  94. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  95. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  96. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  97. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  98. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  99. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  100. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  101. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  102. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  103. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  104. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  105. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  106. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  107. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  108. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  109. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  110. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  111. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  112. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  113. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  114. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  115. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  116. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  117. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  118. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  119. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  120. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  121. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  122. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  123. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  124. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  125. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  126. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  127. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  128. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  129. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  130. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  131. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  132. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  133. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  134. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  135. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  136. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  137. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  138. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  139. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  140. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  141. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  142. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  143. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  144. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  145. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  146. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  147. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  148. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  149. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  150. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  151. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  152. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  153. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  154. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  155. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  156. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  157. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  158. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  159. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  160. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  161. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  162. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  163. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  164. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  165. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  166. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  167. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  168. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  169. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  170. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  171. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  172. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  173. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  174. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  175. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  176. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  177. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  178. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  179. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  180. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  181. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  182. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  183. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  184. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  185. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  186. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  187. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  188. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  189. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  190. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  191. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  192. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  193. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  194. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  195. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  196. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  197. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  198. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  199. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  200. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/types.py +0 -0
  201. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  202. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  203. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  204. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  205. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/embedded/runner.py +0 -0
  206. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/embedded/tools.py +0 -0
  207. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/README.md +0 -0
  208. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  209. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  210. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  211. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  212. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  213. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  214. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  215. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  216. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  217. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  218. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  219. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  220. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  221. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  222. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  223. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  224. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  225. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  226. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  227. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  228. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  229. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  230. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  231. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  232. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  233. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  234. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  235. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  236. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  237. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  238. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  239. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  240. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  241. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  242. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  243. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  244. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  245. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  246. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  247. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  248. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  249. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  250. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  251. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  252. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  253. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  254. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  255. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  256. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/file_based/types.py +0 -0
  257. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/http_config.py +0 -0
  258. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/http_logger.py +0 -0
  259. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/message/__init__.py +0 -0
  260. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/message/repository.py +0 -0
  261. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/source.py +0 -0
  262. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  263. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  264. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  265. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  266. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  267. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  268. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  269. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  270. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  271. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  272. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  273. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  274. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  275. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  276. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  277. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  278. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  279. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  280. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  281. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  282. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  283. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  284. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  285. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  286. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  287. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  288. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  289. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  290. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  291. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  292. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  293. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  294. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/core.py +0 -0
  295. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  296. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  297. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  298. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  299. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  300. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  301. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  302. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  303. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  304. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  305. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  306. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  307. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
  308. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  309. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  310. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  311. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  312. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  313. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  314. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  315. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  316. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  317. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/types.py +0 -0
  318. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  319. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/casing.py +0 -0
  320. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  321. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  322. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  323. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/transform.py +0 -0
  324. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sources/utils/types.py +0 -0
  325. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/__init__.py +0 -0
  326. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  327. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  328. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  329. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/constants.py +0 -0
  330. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/exceptions.py +0 -0
  331. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/secrets.py +0 -0
  332. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  333. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  334. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  335. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/sql/types.py +0 -0
  336. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/__init__.py +0 -0
  337. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/catalog_builder.py +0 -0
  338. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  339. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  340. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  341. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  342. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/request.py +0 -0
  343. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/response.py +0 -0
  344. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  345. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/state_builder.py +0 -0
  346. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/utils/__init__.py +0 -0
  347. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/utils/data.py +0 -0
  348. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  349. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  350. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/test/utils/reading.py +0 -0
  351. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/__init__.py +0 -0
  352. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  353. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/analytics_message.py +0 -0
  354. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/constants.py +0 -0
  355. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  356. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  357. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/event_timing.py +0 -0
  358. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  359. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  360. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/message_utils.py +0 -0
  361. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  362. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/print_buffer.py +0 -0
  363. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  364. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  365. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  366. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  367. {airbyte_cdk-6.36.0.dev0 → airbyte_cdk-6.36.1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.36.0.dev0
3
+ Version: 6.36.1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -24,7 +24,6 @@ from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import Da
24
24
  from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
25
25
  PerPartitionWithGlobalCursor,
26
26
  )
27
- from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
28
27
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
29
28
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
30
29
  ConcurrencyLevel as ConcurrencyLevelModel,
@@ -36,17 +35,16 @@ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
36
35
  ModelToComponentFactory,
37
36
  )
38
37
  from airbyte_cdk.sources.declarative.partition_routers import AsyncJobPartitionRouter
39
- from airbyte_cdk.sources.declarative.requesters import HttpRequester
40
38
  from airbyte_cdk.sources.declarative.retrievers import AsyncRetriever, Retriever, SimpleRetriever
41
39
  from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
42
40
  DeclarativePartitionFactory,
43
41
  StreamSlicerPartitionGenerator,
44
42
  )
45
- from airbyte_cdk.sources.declarative.transformations.add_fields import AddFields
46
43
  from airbyte_cdk.sources.declarative.types import ConnectionDefinition
47
44
  from airbyte_cdk.sources.source import TState
48
45
  from airbyte_cdk.sources.streams import Stream
49
46
  from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
47
+ from airbyte_cdk.sources.streams.concurrent.abstract_stream_facade import AbstractStreamFacade
50
48
  from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
51
49
  AlwaysAvailableAvailabilityStrategy,
52
50
  )
@@ -121,6 +119,12 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
121
119
  message_repository=self.message_repository,
122
120
  )
123
121
 
122
+ # TODO: Remove this. This property is necessary to safely migrate Stripe during the transition state.
123
+ @property
124
+ def is_partially_declarative(self) -> bool:
125
+ """This flag used to avoid unexpected AbstractStreamFacade processing as concurrent streams."""
126
+ return False
127
+
124
128
  def read(
125
129
  self,
126
130
  logger: logging.Logger,
@@ -321,9 +325,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
321
325
  incremental_sync_component_definition
322
326
  and incremental_sync_component_definition.get("type", "")
323
327
  == DatetimeBasedCursorModel.__name__
324
- and self._stream_supports_concurrent_partition_processing(
325
- declarative_stream=declarative_stream
326
- )
327
328
  and hasattr(declarative_stream.retriever, "stream_slicer")
328
329
  and isinstance(
329
330
  declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
@@ -375,6 +376,14 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
375
376
  )
376
377
  else:
377
378
  synchronous_streams.append(declarative_stream)
379
+ # TODO: Remove this. This check is necessary to safely migrate Stripe during the transition state.
380
+ # Condition below needs to ensure that concurrent support is not lost for sources that already support
381
+ # it before migration, but now are only partially migrated to declarative implementation (e.g., Stripe).
382
+ elif (
383
+ isinstance(declarative_stream, AbstractStreamFacade)
384
+ and self.is_partially_declarative
385
+ ):
386
+ concurrent_streams.append(declarative_stream.get_underlying_stream())
378
387
  else:
379
388
  synchronous_streams.append(declarative_stream)
380
389
 
@@ -390,9 +399,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
390
399
  and bool(incremental_sync_component_definition)
391
400
  and incremental_sync_component_definition.get("type", "")
392
401
  == DatetimeBasedCursorModel.__name__
393
- and self._stream_supports_concurrent_partition_processing(
394
- declarative_stream=declarative_stream
395
- )
396
402
  and hasattr(declarative_stream.retriever, "stream_slicer")
397
403
  and (
398
404
  isinstance(declarative_stream.retriever.stream_slicer, DatetimeBasedCursor)
@@ -400,72 +406,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
400
406
  )
401
407
  )
402
408
 
403
- def _stream_supports_concurrent_partition_processing(
404
- self, declarative_stream: DeclarativeStream
405
- ) -> bool:
406
- """
407
- Many connectors make use of stream_state during interpolation on a per-partition basis under the assumption that
408
- state is updated sequentially. Because the concurrent CDK engine processes different partitions in parallel,
409
- stream_state is no longer a thread-safe interpolation context. It would be a race condition because a cursor's
410
- stream_state can be updated in any order depending on which stream partition's finish first.
411
-
412
- We should start to move away from depending on the value of stream_state for low-code components that operate
413
- per-partition, but we need to gate this otherwise some connectors will be blocked from publishing. See the
414
- cdk-migrations.md for the full list of connectors.
415
- """
416
-
417
- if isinstance(declarative_stream.retriever, SimpleRetriever) and isinstance(
418
- declarative_stream.retriever.requester, HttpRequester
419
- ):
420
- http_requester = declarative_stream.retriever.requester
421
- if "stream_state" in http_requester._path.string:
422
- self.logger.warning(
423
- f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the HttpRequester which is not thread-safe. Defaulting to synchronous processing"
424
- )
425
- return False
426
-
427
- request_options_provider = http_requester._request_options_provider
428
- if request_options_provider.request_options_contain_stream_state():
429
- self.logger.warning(
430
- f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the HttpRequester which is not thread-safe. Defaulting to synchronous processing"
431
- )
432
- return False
433
-
434
- record_selector = declarative_stream.retriever.record_selector
435
- if isinstance(record_selector, RecordSelector):
436
- if (
437
- record_selector.record_filter
438
- and not isinstance(
439
- record_selector.record_filter, ClientSideIncrementalRecordFilterDecorator
440
- )
441
- and "stream_state" in record_selector.record_filter.condition
442
- ):
443
- self.logger.warning(
444
- f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the RecordFilter which is not thread-safe. Defaulting to synchronous processing"
445
- )
446
- return False
447
-
448
- for add_fields in [
449
- transformation
450
- for transformation in record_selector.transformations
451
- if isinstance(transformation, AddFields)
452
- ]:
453
- for field in add_fields.fields:
454
- if isinstance(field.value, str) and "stream_state" in field.value:
455
- self.logger.warning(
456
- f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the AddFields which is not thread-safe. Defaulting to synchronous processing"
457
- )
458
- return False
459
- if (
460
- isinstance(field.value, InterpolatedString)
461
- and "stream_state" in field.value.string
462
- ):
463
- self.logger.warning(
464
- f"Low-code stream '{declarative_stream.name}' uses interpolation of stream_state in the AddFields which is not thread-safe. Defaulting to synchronous processing"
465
- )
466
- return False
467
- return True
468
-
469
409
  @staticmethod
470
410
  def _get_retriever(
471
411
  declarative_stream: DeclarativeStream, stream_state: Mapping[str, Any]
@@ -82,7 +82,6 @@ definitions:
82
82
  - stream_interval
83
83
  - stream_partition
84
84
  - stream_slice
85
- - stream_state
86
85
  examples:
87
86
  - "{{ record['updates'] }}"
88
87
  - "{{ record['MetaData']['LastUpdatedTime'] }}"
@@ -1491,7 +1490,11 @@ definitions:
1491
1490
  limit:
1492
1491
  title: Limit
1493
1492
  description: The maximum number of calls allowed within the interval.
1494
- type: integer
1493
+ anyOf:
1494
+ - type: integer
1495
+ - type: string
1496
+ interpolation_context:
1497
+ - config
1495
1498
  interval:
1496
1499
  title: Interval
1497
1500
  description: The time interval for the rate limit.
@@ -1776,7 +1779,6 @@ definitions:
1776
1779
  - stream_interval
1777
1780
  - stream_partition
1778
1781
  - stream_slice
1779
- - stream_state
1780
1782
  examples:
1781
1783
  - "/products"
1782
1784
  - "/quotes/{{ stream_partition['id'] }}/quote_line_groups"
@@ -1826,7 +1828,6 @@ definitions:
1826
1828
  - stream_interval
1827
1829
  - stream_partition
1828
1830
  - stream_slice
1829
- - stream_state
1830
1831
  examples:
1831
1832
  - |
1832
1833
  [{"clause": {"type": "timestamp", "operator": 10, "parameters":
@@ -1844,7 +1845,6 @@ definitions:
1844
1845
  - stream_interval
1845
1846
  - stream_partition
1846
1847
  - stream_slice
1847
- - stream_state
1848
1848
  examples:
1849
1849
  - sort_order: "ASC"
1850
1850
  sort_field: "CREATED_AT"
@@ -1865,7 +1865,6 @@ definitions:
1865
1865
  - stream_interval
1866
1866
  - stream_partition
1867
1867
  - stream_slice
1868
- - stream_state
1869
1868
  examples:
1870
1869
  - Output-Format: JSON
1871
1870
  - Version: "{{ config['version'] }}"
@@ -1882,7 +1881,6 @@ definitions:
1882
1881
  - stream_interval
1883
1882
  - stream_partition
1884
1883
  - stream_slice
1885
- - stream_state
1886
1884
  examples:
1887
1885
  - unit: "day"
1888
1886
  - query: 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
@@ -2237,7 +2235,6 @@ definitions:
2237
2235
  interpolation_context:
2238
2236
  - config
2239
2237
  - record
2240
- - stream_state
2241
2238
  - stream_slice
2242
2239
  new:
2243
2240
  type: string
@@ -2251,7 +2248,6 @@ definitions:
2251
2248
  interpolation_context:
2252
2249
  - config
2253
2250
  - record
2254
- - stream_state
2255
2251
  - stream_slice
2256
2252
  $parameters:
2257
2253
  type: object
@@ -2901,7 +2897,6 @@ definitions:
2901
2897
  - stream_interval
2902
2898
  - stream_partition
2903
2899
  - stream_slice
2904
- - stream_state
2905
2900
  examples:
2906
2901
  - "{{ record['created_at'] >= stream_interval['start_time'] }}"
2907
2902
  - "{{ record.status in ['active', 'expired'] }}"
@@ -3689,12 +3684,6 @@ interpolation:
3689
3684
  - title: stream_slice
3690
3685
  description: This variable is deprecated. Use stream_interval or stream_partition instead.
3691
3686
  type: object
3692
- - title: stream_state
3693
- description: The current state of the stream. The object's keys are defined by the incremental sync's cursor_field the and partition router's values.
3694
- type: object
3695
- examples:
3696
- - created_at: "2020-01-01 00:00:00.000+00:00"
3697
- - updated_at: "2020-01-02 00:00:00.000+00:00"
3698
3687
  macros:
3699
3688
  - title: now_utc
3700
3689
  description: Returns the current date and time in the UTC timezone.
@@ -3759,6 +3748,16 @@ interpolation:
3759
3748
  - "{{ format_datetime(config['start_time'], '%Y-%m-%d') }}"
3760
3749
  - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}"
3761
3750
  - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ', '%a, %d %b %Y %H:%M:%S %z') }}"
3751
+ - title: str_to_datetime
3752
+ description: Converts a string to a datetime object with UTC timezone.
3753
+ arguments:
3754
+ s: The string to convert.
3755
+ return_type: datetime.datetime
3756
+ examples:
3757
+ - "{{ str_to_datetime('2022-01-14') }}"
3758
+ - "{{ str_to_datetime('2022-01-01 13:45:30') }}"
3759
+ - "{{ str_to_datetime('2022-01-01T13:45:30+00:00') }}"
3760
+ - "{{ str_to_datetime('2022-01-01T13:45:30.123456Z') }}"
3762
3761
  filters:
3763
3762
  - title: hash
3764
3763
  description: Convert the specified value to a hashed string.
@@ -107,6 +107,16 @@ class CsvParser(Parser):
107
107
  encoding: Optional[str] = "utf-8"
108
108
  delimiter: Optional[str] = ","
109
109
 
110
+ def _get_delimiter(self) -> Optional[str]:
111
+ """
112
+ Get delimiter from the configuration. Check for the escape character and decode it.
113
+ """
114
+ if self.delimiter is not None:
115
+ if self.delimiter.startswith("\\"):
116
+ self.delimiter = self.delimiter.encode("utf-8").decode("unicode_escape")
117
+
118
+ return self.delimiter
119
+
110
120
  def parse(
111
121
  self,
112
122
  data: BufferedIOBase,
@@ -115,8 +125,9 @@ class CsvParser(Parser):
115
125
  Parse CSV data from decompressed bytes.
116
126
  """
117
127
  text_data = TextIOWrapper(data, encoding=self.encoding) # type: ignore
118
- reader = csv.DictReader(text_data, delimiter=self.delimiter or ",")
119
- yield from reader
128
+ reader = csv.DictReader(text_data, delimiter=self._get_delimiter() or ",")
129
+ for row in reader:
130
+ yield row
120
131
 
121
132
 
122
133
  @dataclass
@@ -95,10 +95,6 @@ class ConcurrentPerPartitionCursor(Cursor):
95
95
  # the oldest partitions can be efficiently removed, maintaining the most recent partitions.
96
96
  self._cursor_per_partition: OrderedDict[str, ConcurrentCursor] = OrderedDict()
97
97
  self._semaphore_per_partition: OrderedDict[str, threading.Semaphore] = OrderedDict()
98
-
99
- # Parent-state tracking: store each partition’s parent state in creation order
100
- self._partition_parent_state_map: OrderedDict[str, Mapping[str, Any]] = OrderedDict()
101
-
102
98
  self._finished_partitions: set[str] = set()
103
99
  self._lock = threading.Lock()
104
100
  self._timer = Timer()
@@ -159,62 +155,11 @@ class ConcurrentPerPartitionCursor(Cursor):
159
155
  and self._semaphore_per_partition[partition_key]._value == 0
160
156
  ):
161
157
  self._update_global_cursor(cursor.state[self.cursor_field.cursor_field_key])
162
-
163
- self._check_and_update_parent_state()
164
-
165
- self._emit_state_message()
166
-
167
- def _check_and_update_parent_state(self) -> None:
168
- """
169
- Pop the leftmost partition state from _partition_parent_state_map only if
170
- *all partitions* up to (and including) that partition key in _semaphore_per_partition
171
- are fully finished (i.e. in _finished_partitions and semaphore._value == 0).
172
- Additionally, delete finished semaphores with a value of 0 to free up memory,
173
- as they are only needed to track errors and completion status.
174
- """
175
- last_closed_state = None
176
-
177
- while self._partition_parent_state_map:
178
- # Look at the earliest partition key in creation order
179
- earliest_key = next(iter(self._partition_parent_state_map))
180
-
181
- # Verify ALL partitions from the left up to earliest_key are finished
182
- all_left_finished = True
183
- for p_key, sem in list(
184
- self._semaphore_per_partition.items()
185
- ): # Use list to allow modification during iteration
186
- # If any earlier partition is still not finished, we must stop
187
- if p_key not in self._finished_partitions or sem._value != 0:
188
- all_left_finished = False
189
- break
190
- # Once we've reached earliest_key in the semaphore order, we can stop checking
191
- if p_key == earliest_key:
192
- break
193
-
194
- # If the partitions up to earliest_key are not all finished, break the while-loop
195
- if not all_left_finished:
196
- break
197
-
198
- # Pop the leftmost entry from parent-state map
199
- _, closed_parent_state = self._partition_parent_state_map.popitem(last=False)
200
- last_closed_state = closed_parent_state
201
-
202
- # Clean up finished semaphores with value 0 up to and including earliest_key
203
- for p_key in list(self._semaphore_per_partition.keys()):
204
- sem = self._semaphore_per_partition[p_key]
205
- if p_key in self._finished_partitions and sem._value == 0:
206
- del self._semaphore_per_partition[p_key]
207
- logger.debug(f"Deleted finished semaphore for partition {p_key} with value 0")
208
- if p_key == earliest_key:
209
- break
210
-
211
- # Update _parent_state if we popped at least one partition
212
- if last_closed_state is not None:
213
- self._parent_state = last_closed_state
158
+ self._emit_state_message()
214
159
 
215
160
  def ensure_at_least_one_state_emitted(self) -> None:
216
161
  """
217
- The platform expects at least one state message on successful syncs. Hence, whatever happens, we expect this method to be
162
+ The platform expect to have at least one state message on successful syncs. Hence, whatever happens, we expect this method to be
218
163
  called.
219
164
  """
220
165
  if not any(
@@ -251,25 +196,18 @@ class ConcurrentPerPartitionCursor(Cursor):
251
196
  self._message_repository.emit_message(state_message)
252
197
 
253
198
  def stream_slices(self) -> Iterable[StreamSlice]:
254
- print("stream_slices")
255
199
  if self._timer.is_running():
256
200
  raise RuntimeError("stream_slices has been executed more than once.")
257
201
 
258
202
  slices = self._partition_router.stream_slices()
259
203
  self._timer.start()
260
- for partition, last, parent_state in iterate_with_last_flag_and_state(
261
- slices, self._partition_router.get_stream_state
262
- ):
263
- yield from self._generate_slices_from_partition(partition, parent_state)
204
+ for partition in slices:
205
+ yield from self._generate_slices_from_partition(partition)
264
206
 
265
- def _generate_slices_from_partition(
266
- self, partition: StreamSlice, parent_state: Mapping[str, Any]
267
- ) -> Iterable[StreamSlice]:
207
+ def _generate_slices_from_partition(self, partition: StreamSlice) -> Iterable[StreamSlice]:
268
208
  # Ensure the maximum number of partitions is not exceeded
269
209
  self._ensure_partition_limit()
270
210
 
271
- partition_key = self._to_partition_key(partition.partition)
272
-
273
211
  cursor = self._cursor_per_partition.get(self._to_partition_key(partition.partition))
274
212
  if not cursor:
275
213
  cursor = self._create_cursor(
@@ -278,26 +216,18 @@ class ConcurrentPerPartitionCursor(Cursor):
278
216
  )
279
217
  with self._lock:
280
218
  self._number_of_partitions += 1
281
- self._cursor_per_partition[partition_key] = cursor
282
- self._semaphore_per_partition[partition_key] = threading.Semaphore(0)
283
-
284
- with self._lock:
285
- if (
286
- len(self._partition_parent_state_map) == 0
287
- or self._partition_parent_state_map[
288
- next(reversed(self._partition_parent_state_map))
289
- ]
290
- != parent_state
291
- ):
292
- self._partition_parent_state_map[partition_key] = deepcopy(parent_state)
219
+ self._cursor_per_partition[self._to_partition_key(partition.partition)] = cursor
220
+ self._semaphore_per_partition[self._to_partition_key(partition.partition)] = (
221
+ threading.Semaphore(0)
222
+ )
293
223
 
294
224
  for cursor_slice, is_last_slice, _ in iterate_with_last_flag_and_state(
295
225
  cursor.stream_slices(),
296
226
  lambda: None,
297
227
  ):
298
- self._semaphore_per_partition[partition_key].release()
228
+ self._semaphore_per_partition[self._to_partition_key(partition.partition)].release()
299
229
  if is_last_slice:
300
- self._finished_partitions.add(partition_key)
230
+ self._finished_partitions.add(self._to_partition_key(partition.partition))
301
231
  yield StreamSlice(
302
232
  partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
303
233
  )
@@ -327,9 +257,9 @@ class ConcurrentPerPartitionCursor(Cursor):
327
257
  while len(self._cursor_per_partition) > self.DEFAULT_MAX_PARTITIONS_NUMBER - 1:
328
258
  # Try removing finished partitions first
329
259
  for partition_key in list(self._cursor_per_partition.keys()):
330
- if partition_key in self._finished_partitions and (
331
- partition_key not in self._semaphore_per_partition
332
- or self._semaphore_per_partition[partition_key]._value == 0
260
+ if (
261
+ partition_key in self._finished_partitions
262
+ and self._semaphore_per_partition[partition_key]._value == 0
333
263
  ):
334
264
  oldest_partition = self._cursor_per_partition.pop(
335
265
  partition_key
@@ -408,6 +338,9 @@ class ConcurrentPerPartitionCursor(Cursor):
408
338
  self._cursor_per_partition[self._to_partition_key(state["partition"])] = (
409
339
  self._create_cursor(state["cursor"])
410
340
  )
341
+ self._semaphore_per_partition[self._to_partition_key(state["partition"])] = (
342
+ threading.Semaphore(0)
343
+ )
411
344
 
412
345
  # set default state for missing partitions if it is per partition with fallback to global
413
346
  if self._GLOBAL_STATE_KEY in stream_state:
@@ -115,7 +115,9 @@ class GlobalSubstreamCursor(DeclarativeCursor):
115
115
  * Yield the last slice. At that point, once there are as many slices yielded as closes, the global slice will be closed too
116
116
  """
117
117
  slice_generator = (
118
- StreamSlice(partition=partition, cursor_slice=cursor_slice)
118
+ StreamSlice(
119
+ partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
120
+ )
119
121
  for partition in self._partition_router.stream_slices()
120
122
  for cursor_slice in self._stream_cursor.stream_slices()
121
123
  )
@@ -131,7 +133,9 @@ class GlobalSubstreamCursor(DeclarativeCursor):
131
133
 
132
134
  def generate_slices_from_partition(self, partition: StreamSlice) -> Iterable[StreamSlice]:
133
135
  slice_generator = (
134
- StreamSlice(partition=partition, cursor_slice=cursor_slice)
136
+ StreamSlice(
137
+ partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
138
+ )
135
139
  for cursor_slice in self._stream_cursor.stream_slices()
136
140
  )
137
141
 
@@ -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 airbyte_cdk.sources.declarative.interpolation.interpolated_boolean import InterpolatedBoolean
@@ -1,6 +1,7 @@
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
  import base64
5
6
  import hashlib
6
7
  import json
@@ -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 dataclasses import InitVar, dataclass
@@ -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
 
@@ -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
 
@@ -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 dataclasses import InitVar, dataclass
@@ -1,7 +1,8 @@
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
6
  from abc import ABC, abstractmethod
6
7
  from typing import Any, Optional
7
8
 
@@ -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
  import ast
@@ -11,10 +11,12 @@ from jinja2.environment import Template
11
11
  from jinja2.exceptions import UndefinedError
12
12
  from jinja2.sandbox import SandboxedEnvironment
13
13
 
14
+ from airbyte_cdk.models import FailureType
14
15
  from airbyte_cdk.sources.declarative.interpolation.filters import filters
15
16
  from airbyte_cdk.sources.declarative.interpolation.interpolation import Interpolation
16
17
  from airbyte_cdk.sources.declarative.interpolation.macros import macros
17
18
  from airbyte_cdk.sources.types import Config
19
+ from airbyte_cdk.utils import AirbyteTracedException
18
20
 
19
21
 
20
22
  class StreamPartitionAccessEnvironment(SandboxedEnvironment):
@@ -36,6 +38,10 @@ _ALIASES = {
36
38
  "stream_partition": "stream_slice", # Use stream_partition to access partition router's values
37
39
  }
38
40
 
41
+ _UNSUPPORTED_INTERPOLATION_VARIABLES: Mapping[str, str] = {
42
+ "stream_state": "`stream_state` is no longer supported for interpolation. We recommend using `stream_interval` instead. Please reference the CDK Migration Guide for more information.",
43
+ }
44
+
39
45
  # These extensions are not installed so they're not currently a problem,
40
46
  # but we're still explicitly removing them from the jinja context.
41
47
  # At worst, this is documentation that we do NOT want to include these extensions because of the potential security risks
@@ -95,6 +101,13 @@ class JinjaInterpolation(Interpolation):
95
101
  elif equivalent in context:
96
102
  context[alias] = context[equivalent]
97
103
 
104
+ for variable_name in _UNSUPPORTED_INTERPOLATION_VARIABLES:
105
+ if variable_name in input_str:
106
+ raise AirbyteTracedException(
107
+ message=_UNSUPPORTED_INTERPOLATION_VARIABLES[variable_name],
108
+ internal_message=_UNSUPPORTED_INTERPOLATION_VARIABLES[variable_name],
109
+ failure_type=FailureType.config_error,
110
+ )
98
111
  try:
99
112
  if isinstance(input_str, str):
100
113
  result = self._eval(input_str, context)
@@ -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
  import builtins
@@ -63,10 +63,24 @@ def timestamp(dt: Union[float, str]) -> Union[int, float]:
63
63
  if isinstance(dt, (int, float)):
64
64
  return int(dt)
65
65
  else:
66
- return _str_to_datetime(dt).astimezone(pytz.utc).timestamp()
66
+ return str_to_datetime(dt).astimezone(pytz.utc).timestamp()
67
67
 
68
68
 
69
- def _str_to_datetime(s: str) -> datetime.datetime:
69
+ def str_to_datetime(s: str) -> datetime.datetime:
70
+ """
71
+ Converts a string to a datetime object with UTC timezone
72
+
73
+ If the input string does not contain timezone information, UTC is assumed.
74
+ Supports both basic date strings like "2022-01-14" and datetime strings with optional timezone
75
+ like "2022-01-01T13:45:30+00:00".
76
+
77
+ Usage:
78
+ `"{{ str_to_datetime('2022-01-14') }}"`
79
+
80
+ :param s: string to parse as datetime
81
+ :return: datetime object in UTC timezone
82
+ """
83
+
70
84
  parsed_date = parser.isoparse(s)
71
85
  if not parsed_date.tzinfo:
72
86
  # Assume UTC if the input does not contain a timezone
@@ -155,7 +169,7 @@ def format_datetime(
155
169
  if isinstance(dt, datetime.datetime):
156
170
  return dt.strftime(format)
157
171
  dt_datetime = (
158
- datetime.datetime.strptime(dt, input_format) if input_format else _str_to_datetime(dt)
172
+ datetime.datetime.strptime(dt, input_format) if input_format else str_to_datetime(dt)
159
173
  )
160
174
  if format == "%s":
161
175
  return str(int(dt_datetime.timestamp()))
@@ -172,5 +186,6 @@ _macros_list = [
172
186
  duration,
173
187
  format_datetime,
174
188
  today_with_timezone,
189
+ str_to_datetime,
175
190
  ]
176
191
  macros = {f.__name__: f for f in _macros_list}
@@ -646,7 +646,7 @@ class Rate(BaseModel):
646
646
  class Config:
647
647
  extra = Extra.allow
648
648
 
649
- limit: int = Field(
649
+ limit: Union[int, str] = Field(
650
650
  ...,
651
651
  description="The maximum number of calls allowed within the interval.",
652
652
  title="Limit",