airbyte-cdk 6.23.0.dev0__tar.gz → 6.23.0.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +23 -0
  3. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +1 -0
  4. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +18 -6
  5. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +78 -2
  6. airbyte_cdk-6.23.0.dev1/airbyte_cdk/sources/streams/concurrent/clamping.py +99 -0
  7. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py +21 -36
  8. airbyte_cdk-6.23.0.dev1/airbyte_cdk/sources/streams/concurrent/cursor_types.py +32 -0
  9. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/pyproject.toml +1 -1
  10. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/LICENSE.txt +0 -0
  11. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/README.md +0 -0
  12. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/__init__.py +0 -0
  13. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/__init__.py +0 -0
  14. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  15. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  16. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  17. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/config_observation.py +0 -0
  18. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector.py +0 -0
  19. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/README.md +0 -0
  20. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  21. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  22. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/main.py +0 -0
  23. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  24. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/connector_builder/models.py +0 -0
  25. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/__init__.py +0 -0
  26. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/destination.py +0 -0
  27. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  28. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  29. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  30. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  31. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  32. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  33. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  34. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  35. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  36. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/entrypoint.py +0 -0
  37. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/exception_handler.py +0 -0
  38. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/logger.py +0 -0
  39. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/__init__.py +0 -0
  40. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  41. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  42. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  43. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/models/well_known_types.py +0 -0
  44. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/py.typed +0 -0
  45. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/__init__.py +0 -0
  46. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/abstract_source.py +0 -0
  47. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  48. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  49. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  50. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  51. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  52. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  53. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  54. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/config.py +0 -0
  55. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  56. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  57. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  58. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  59. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  60. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  61. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  62. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  63. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  64. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  65. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  66. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  67. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  68. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  69. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  70. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  71. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  72. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  73. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  74. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  75. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  76. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  77. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  78. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  79. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  80. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  81. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  82. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  83. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  84. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  85. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  86. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  87. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  88. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  89. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  90. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  91. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  92. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  93. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  94. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  95. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  96. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  97. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  98. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  99. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  100. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  101. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  102. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  103. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  104. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  105. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  106. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  107. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  108. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  109. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  110. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  111. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  112. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  113. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  114. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  115. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  116. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  117. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  118. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  119. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  120. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  121. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  122. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  123. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  124. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  125. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  126. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  127. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  128. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  129. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  130. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  131. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  132. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  133. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  134. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  135. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  136. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  137. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  138. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  139. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  140. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  141. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  142. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  143. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  144. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  145. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  146. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  147. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  148. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  149. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  150. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  151. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  152. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  153. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  154. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  155. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  156. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  157. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  158. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  159. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  160. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  161. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  162. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  163. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  164. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  165. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  166. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  167. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  168. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  169. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  170. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  171. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  172. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  173. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  174. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  175. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  176. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  177. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  178. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  179. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  180. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  181. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  182. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  183. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  184. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  185. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  186. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  187. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  188. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  189. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  190. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  191. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  192. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  193. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  194. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  195. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  196. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  197. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  198. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/types.py +0 -0
  199. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  200. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  201. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  202. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  203. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/runner.py +0 -0
  204. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/embedded/tools.py +0 -0
  205. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/README.md +0 -0
  206. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  207. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  208. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  209. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  210. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  211. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  212. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  213. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  214. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  215. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  216. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  217. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  218. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  219. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  220. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  221. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  222. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  223. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  224. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  225. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  226. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  227. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  228. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  229. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  230. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  231. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  232. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  233. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  234. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  235. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  236. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  237. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  238. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  239. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  240. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  241. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  242. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  243. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  244. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  245. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  246. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  247. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  248. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  249. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  250. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  251. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/file_based/types.py +0 -0
  252. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/http_config.py +0 -0
  253. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/http_logger.py +0 -0
  254. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/message/__init__.py +0 -0
  255. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/message/repository.py +0 -0
  256. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/source.py +0 -0
  257. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  258. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  259. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  260. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  261. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  262. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  263. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  264. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  265. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  266. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  267. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  268. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  269. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  270. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  271. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  272. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  273. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  274. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  275. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  276. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  277. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  278. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  279. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  280. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  281. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  282. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  283. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  284. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  285. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/core.py +0 -0
  286. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  287. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  288. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  289. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  290. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  291. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  292. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  293. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  294. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  295. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  296. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  297. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  298. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/http.py +0 -0
  299. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  300. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  301. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  302. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  303. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  304. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  305. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  306. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  307. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/types.py +0 -0
  308. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  309. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/casing.py +0 -0
  310. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  311. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  312. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  313. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/transform.py +0 -0
  314. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sources/utils/types.py +0 -0
  315. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/__init__.py +0 -0
  316. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  317. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  318. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  319. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/constants.py +0 -0
  320. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/exceptions.py +0 -0
  321. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/secrets.py +0 -0
  322. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  323. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  324. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  325. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/sql/types.py +0 -0
  326. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/__init__.py +0 -0
  327. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/catalog_builder.py +0 -0
  328. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  329. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  330. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  331. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  332. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/request.py +0 -0
  333. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/response.py +0 -0
  334. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  335. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/state_builder.py +0 -0
  336. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/__init__.py +0 -0
  337. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/data.py +0 -0
  338. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  339. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  340. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/test/utils/reading.py +0 -0
  341. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/__init__.py +0 -0
  342. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  343. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/analytics_message.py +0 -0
  344. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/constants.py +0 -0
  345. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  346. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/event_timing.py +0 -0
  347. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  348. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  349. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/message_utils.py +0 -0
  350. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  351. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/print_buffer.py +0 -0
  352. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  353. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  354. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  355. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  356. {airbyte_cdk-6.23.0.dev0 → airbyte_cdk-6.23.0.dev1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-cdk
3
- Version: 6.23.0.dev0
3
+ Version: 6.23.0.dev1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  License: MIT
6
6
  Keywords: airbyte,connector-development-kit,cdk
@@ -784,6 +784,29 @@ definitions:
784
784
  type:
785
785
  type: string
786
786
  enum: [DatetimeBasedCursor]
787
+ clamping:
788
+ title: Date Range Clamping
789
+ description: This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)
790
+ type: object
791
+ required:
792
+ - target
793
+ properties:
794
+ target:
795
+ title: Target
796
+ description: The period of time that datetime windows will be clamped by
797
+ # This should ideally be an enum. However, we don't use an enum because we want to allow for connectors
798
+ # to support interpolation on the connector config to get the target which is an arbitrary string
799
+ type: string
800
+ interpolation_context:
801
+ - config
802
+ examples:
803
+ - "DAY"
804
+ - "WEEK"
805
+ - "MONTH"
806
+ - "{{ config['target'] }}"
807
+ target_details:
808
+ type: object
809
+ additionalProperties: true
787
810
  cursor_field:
788
811
  title: Cursor Field
789
812
  description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
@@ -147,6 +147,7 @@ class ConcurrentPerPartitionCursor(Cursor):
147
147
  < cursor.state[self.cursor_field.cursor_field_key]
148
148
  ):
149
149
  self._new_global_cursor = copy.deepcopy(cursor.state)
150
+ self._emit_state_message()
150
151
 
151
152
  def ensure_at_least_one_state_emitted(self) -> None:
152
153
  """
@@ -328,6 +328,16 @@ class LegacyToPerPartitionStateMigration(BaseModel):
328
328
  type: Optional[Literal["LegacyToPerPartitionStateMigration"]] = None
329
329
 
330
330
 
331
+ class Clamping(BaseModel):
332
+ target: str = Field(
333
+ ...,
334
+ description="The period of time that datetime windows will be clamped by",
335
+ examples=["DAY", "WEEK", "MONTH", "{{ config['target'] }}"],
336
+ title="Target",
337
+ )
338
+ target_details: Optional[Dict[str, Any]] = None
339
+
340
+
331
341
  class Algorithm(Enum):
332
342
  HS256 = "HS256"
333
343
  HS384 = "HS384"
@@ -719,7 +729,7 @@ class HttpResponseFilter(BaseModel):
719
729
  class TypesMap(BaseModel):
720
730
  target_type: Union[str, List[str]]
721
731
  current_type: Union[str, List[str]]
722
- condition: Optional[str]
732
+ condition: Optional[str] = None
723
733
 
724
734
 
725
735
  class SchemaTypeIdentifier(BaseModel):
@@ -797,14 +807,11 @@ class DpathFlattenFields(BaseModel):
797
807
  field_path: List[str] = Field(
798
808
  ...,
799
809
  description="A path to field that needs to be flattened.",
800
- examples=[
801
- ["data"],
802
- ["data", "*", "field"],
803
- ],
810
+ examples=[["data"], ["data", "*", "field"]],
804
811
  title="Field Path",
805
812
  )
806
813
  delete_origin_value: Optional[bool] = Field(
807
- False,
814
+ None,
808
815
  description="Whether to delete the origin value or keep it. Default is False.",
809
816
  title="Delete Origin Value",
810
817
  )
@@ -1454,6 +1461,11 @@ class AuthFlow(BaseModel):
1454
1461
 
1455
1462
  class DatetimeBasedCursor(BaseModel):
1456
1463
  type: Literal["DatetimeBasedCursor"]
1464
+ clamping: Optional[Clamping] = Field(
1465
+ None,
1466
+ description="This option is used to adjust the upper and lower boundaries of each datetime window to beginning and end of the provided target period (day, week, month)",
1467
+ title="Date Range Clamping",
1468
+ )
1457
1469
  cursor_field: str = Field(
1458
1470
  ...,
1459
1471
  description="The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.",
@@ -8,7 +8,6 @@ import datetime
8
8
  import importlib
9
9
  import inspect
10
10
  import re
11
- import sys
12
11
  from functools import partial
13
12
  from typing import (
14
13
  Any,
@@ -104,6 +103,7 @@ from airbyte_cdk.sources.declarative.migrations.legacy_to_per_partition_state_mi
104
103
  LegacyToPerPartitionStateMigration,
105
104
  )
106
105
  from airbyte_cdk.sources.declarative.models import (
106
+ Clamping,
107
107
  CustomStateMigration,
108
108
  )
109
109
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
@@ -465,6 +465,15 @@ from airbyte_cdk.sources.message import (
465
465
  MessageRepository,
466
466
  NoopMessageRepository,
467
467
  )
468
+ from airbyte_cdk.sources.streams.concurrent.clamping import (
469
+ ClampingEndProvider,
470
+ ClampingStrategy,
471
+ DayClampingStrategy,
472
+ MonthClampingStrategy,
473
+ NoClamping,
474
+ WeekClampingStrategy,
475
+ Weekday,
476
+ )
468
477
  from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, CursorField
469
478
  from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_state_converter import (
470
479
  CustomFormatConcurrentStreamStateConverter,
@@ -1065,6 +1074,53 @@ class ModelToComponentFactory:
1065
1074
  if evaluated_step:
1066
1075
  step_length = parse_duration(evaluated_step)
1067
1076
 
1077
+ clamping_strategy: ClampingStrategy = NoClamping()
1078
+ if datetime_based_cursor_model.clamping:
1079
+ # While it is undesirable to interpolate within the model factory (as opposed to at runtime),
1080
+ # it is still better than shifting interpolation low-code concept into the ConcurrentCursor runtime
1081
+ # object which we want to keep agnostic of being low-code
1082
+ target = InterpolatedString(
1083
+ string=datetime_based_cursor_model.clamping.target,
1084
+ parameters=datetime_based_cursor_model.parameters or {},
1085
+ )
1086
+ evaluated_target = target.eval(config=config)
1087
+ match evaluated_target:
1088
+ case "DAY":
1089
+ clamping_strategy = DayClampingStrategy()
1090
+ end_date_provider = ClampingEndProvider(
1091
+ DayClampingStrategy(is_ceiling=False),
1092
+ end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
1093
+ granularity=cursor_granularity or datetime.timedelta(seconds=1),
1094
+ )
1095
+ case "WEEK":
1096
+ if (
1097
+ not datetime_based_cursor_model.clamping.target_details
1098
+ or "weekday" not in datetime_based_cursor_model.clamping.target_details
1099
+ ):
1100
+ raise ValueError(
1101
+ "Given WEEK clamping, weekday needs to be provided as target_details"
1102
+ )
1103
+ weekday = self._assemble_weekday(
1104
+ datetime_based_cursor_model.clamping.target_details["weekday"]
1105
+ )
1106
+ clamping_strategy = WeekClampingStrategy(weekday)
1107
+ end_date_provider = ClampingEndProvider(
1108
+ WeekClampingStrategy(weekday, is_ceiling=False),
1109
+ end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
1110
+ granularity=cursor_granularity or datetime.timedelta(days=1),
1111
+ )
1112
+ case "MONTH":
1113
+ clamping_strategy = MonthClampingStrategy()
1114
+ end_date_provider = ClampingEndProvider(
1115
+ MonthClampingStrategy(is_ceiling=False),
1116
+ end_date_provider, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
1117
+ granularity=cursor_granularity or datetime.timedelta(days=1),
1118
+ )
1119
+ case _:
1120
+ raise ValueError(
1121
+ f"Invalid clamping target {evaluated_target}, expected DAY, WEEK, MONTH"
1122
+ )
1123
+
1068
1124
  return ConcurrentCursor(
1069
1125
  stream_name=stream_name,
1070
1126
  stream_namespace=stream_namespace,
@@ -1079,7 +1135,27 @@ class ModelToComponentFactory:
1079
1135
  lookback_window=lookback_window,
1080
1136
  slice_range=step_length,
1081
1137
  cursor_granularity=cursor_granularity,
1082
- )
1138
+ clamping_strategy=clamping_strategy,
1139
+ )
1140
+
1141
+ def _assemble_weekday(self, weekday: str) -> Weekday:
1142
+ match weekday:
1143
+ case "MONDAY":
1144
+ return Weekday.MONDAY
1145
+ case "TUESDAY":
1146
+ return Weekday.TUESDAY
1147
+ case "WEDNESDAY":
1148
+ return Weekday.WEDNESDAY
1149
+ case "THURSDAY":
1150
+ return Weekday.THURSDAY
1151
+ case "FRIDAY":
1152
+ return Weekday.FRIDAY
1153
+ case "SATURDAY":
1154
+ return Weekday.SATURDAY
1155
+ case "SUNDAY":
1156
+ return Weekday.SUNDAY
1157
+ case _:
1158
+ raise ValueError(f"Unknown weekday {weekday}")
1083
1159
 
1084
1160
  def create_concurrent_cursor_from_perpartition_cursor(
1085
1161
  self,
@@ -0,0 +1,99 @@
1
+ from abc import ABC
2
+ from datetime import datetime, timedelta
3
+ from enum import Enum
4
+ from typing import Callable
5
+
6
+ from airbyte_cdk.sources.streams.concurrent.cursor_types import CursorValueType
7
+
8
+
9
+ class ClampingStrategy(ABC):
10
+ def clamp(self, value: CursorValueType) -> CursorValueType:
11
+ raise NotImplementedError()
12
+
13
+
14
+ class NoClamping(ClampingStrategy):
15
+ def clamp(self, value: CursorValueType) -> CursorValueType:
16
+ return value
17
+
18
+
19
+ class ClampingEndProvider:
20
+ def __init__(
21
+ self,
22
+ clamping_strategy: ClampingStrategy,
23
+ end_provider: Callable[[], CursorValueType],
24
+ granularity: timedelta,
25
+ ) -> None:
26
+ self._clamping_strategy = clamping_strategy
27
+ self._end_provider = end_provider
28
+ self._granularity = granularity
29
+
30
+ def __call__(self) -> CursorValueType:
31
+ return self._clamping_strategy.clamp(self._end_provider()) - self._granularity
32
+
33
+
34
+ class DayClampingStrategy(ClampingStrategy):
35
+ def __init__(self, is_ceiling: bool = True) -> None:
36
+ self._is_ceiling = is_ceiling
37
+
38
+ def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
39
+ return_value = value.replace(hour=0, minute=0, second=0, microsecond=0)
40
+ if self._is_ceiling:
41
+ return return_value + timedelta(days=1)
42
+ return return_value
43
+
44
+
45
+ class MonthClampingStrategy(ClampingStrategy):
46
+ def __init__(self, is_ceiling: bool = True) -> None:
47
+ self._is_ceiling = is_ceiling
48
+
49
+ def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
50
+ return_value = value.replace(hour=0, minute=0, second=0, microsecond=0)
51
+ needs_to_round = value.day != 1
52
+ if not needs_to_round:
53
+ return return_value
54
+
55
+ return self._ceil(return_value) if self._is_ceiling else return_value.replace(day=1)
56
+
57
+ def _ceil(self, value: datetime) -> datetime:
58
+ return value.replace(
59
+ year=value.year + 1 if value.month == 12 else value.year,
60
+ month=(value.month % 12) + 1,
61
+ day=1,
62
+ hour=0,
63
+ minute=0,
64
+ second=0,
65
+ microsecond=0,
66
+ )
67
+
68
+
69
+ class Weekday(Enum):
70
+ """
71
+ These integer values map to the same ones used by the Datetime.date.weekday() implementation
72
+ """
73
+
74
+ MONDAY = 0
75
+ TUESDAY = 1
76
+ WEDNESDAY = 2
77
+ THURSDAY = 3
78
+ FRIDAY = 4
79
+ SATURDAY = 5
80
+ SUNDAY = 6
81
+
82
+
83
+ class WeekClampingStrategy(ClampingStrategy):
84
+ def __init__(self, day_of_week: Weekday, is_ceiling: bool = True) -> None:
85
+ self._day_of_week = day_of_week.value
86
+ self._is_ceiling = is_ceiling
87
+
88
+ def clamp(self, value: datetime) -> datetime: # type: ignore # datetime implements method from CursorValueType
89
+ days_diff_to_ceiling = (
90
+ 7 - (value.weekday() - self._day_of_week)
91
+ if value.weekday() > self._day_of_week
92
+ else abs(value.weekday() - self._day_of_week)
93
+ )
94
+ delta = (
95
+ timedelta(days_diff_to_ceiling)
96
+ if self._is_ceiling
97
+ else timedelta(days_diff_to_ceiling - 7)
98
+ )
99
+ return value.replace(hour=0, minute=0, second=0, microsecond=0) + delta
@@ -13,7 +13,6 @@ from typing import (
13
13
  Mapping,
14
14
  MutableMapping,
15
15
  Optional,
16
- Protocol,
17
16
  Tuple,
18
17
  Union,
19
18
  )
@@ -21,6 +20,8 @@ from typing import (
21
20
  from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
22
21
  from airbyte_cdk.sources.message import MessageRepository
23
22
  from airbyte_cdk.sources.streams import NO_CURSOR_STATE_KEY
23
+ from airbyte_cdk.sources.streams.concurrent.clamping import ClampingStrategy, NoClamping
24
+ from airbyte_cdk.sources.streams.concurrent.cursor_types import CursorValueType, GapType
24
25
  from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
25
26
  from airbyte_cdk.sources.streams.concurrent.partitions.stream_slicer import StreamSlicer
26
27
  from airbyte_cdk.sources.streams.concurrent.state_converters.abstract_stream_state_converter import (
@@ -35,36 +36,6 @@ def _extract_value(mapping: Mapping[str, Any], path: List[str]) -> Any:
35
36
  return functools.reduce(lambda a, b: a[b], path, mapping)
36
37
 
37
38
 
38
- class GapType(Protocol):
39
- """
40
- This is the representation of gaps between two cursor values. Examples:
41
- * if cursor values are datetimes, GapType is timedelta
42
- * if cursor values are integer, GapType will also be integer
43
- """
44
-
45
- pass
46
-
47
-
48
- class CursorValueType(Protocol):
49
- """Protocol for annotating comparable types."""
50
-
51
- @abstractmethod
52
- def __lt__(self: "CursorValueType", other: "CursorValueType") -> bool:
53
- pass
54
-
55
- @abstractmethod
56
- def __ge__(self: "CursorValueType", other: "CursorValueType") -> bool:
57
- pass
58
-
59
- @abstractmethod
60
- def __add__(self: "CursorValueType", other: GapType) -> "CursorValueType":
61
- pass
62
-
63
- @abstractmethod
64
- def __sub__(self: "CursorValueType", other: GapType) -> "CursorValueType":
65
- pass
66
-
67
-
68
39
  class CursorField:
69
40
  def __init__(self, cursor_field_key: str) -> None:
70
41
  self.cursor_field_key = cursor_field_key
@@ -172,6 +143,7 @@ class ConcurrentCursor(Cursor):
172
143
  lookback_window: Optional[GapType] = None,
173
144
  slice_range: Optional[GapType] = None,
174
145
  cursor_granularity: Optional[GapType] = None,
146
+ clamping_strategy: ClampingStrategy = NoClamping(),
175
147
  ) -> None:
176
148
  self._stream_name = stream_name
177
149
  self._stream_namespace = stream_namespace
@@ -193,6 +165,7 @@ class ConcurrentCursor(Cursor):
193
165
  self._cursor_granularity = cursor_granularity
194
166
  # Flag to track if the logger has been triggered (per stream)
195
167
  self._should_be_synced_logger_triggered = False
168
+ self._clamping_strategy = clamping_strategy
196
169
 
197
170
  @property
198
171
  def state(self) -> MutableMapping[str, Any]:
@@ -417,10 +390,12 @@ class ConcurrentCursor(Cursor):
417
390
 
418
391
  lower = max(lower, self._start) if self._start else lower
419
392
  if not self._slice_range or self._evaluate_upper_safely(lower, self._slice_range) >= upper:
393
+ clamped_lower = self._clamping_strategy.clamp(lower)
394
+ clamped_upper = self._clamping_strategy.clamp(upper)
420
395
  start_value, end_value = (
421
- (lower, upper - self._cursor_granularity)
396
+ (clamped_lower, clamped_upper - self._cursor_granularity)
422
397
  if self._cursor_granularity and not upper_is_end
423
- else (lower, upper)
398
+ else (clamped_lower, clamped_upper)
424
399
  )
425
400
  yield StreamSlice(
426
401
  partition={},
@@ -442,11 +417,21 @@ class ConcurrentCursor(Cursor):
442
417
  )
443
418
  has_reached_upper_boundary = current_upper_boundary >= upper
444
419
 
420
+ clamped_upper = (
421
+ self._clamping_strategy.clamp(current_upper_boundary)
422
+ if current_upper_boundary != upper
423
+ else current_upper_boundary
424
+ )
425
+ clamped_lower = self._clamping_strategy.clamp(current_lower_boundary)
426
+ if clamped_lower >= clamped_upper:
427
+ # clamping collapsed both values which means that it is time to stop processing
428
+ # FIXME should this be replace by proper end_provider
429
+ break
445
430
  start_value, end_value = (
446
- (current_lower_boundary, current_upper_boundary - self._cursor_granularity)
431
+ (clamped_lower, clamped_upper - self._cursor_granularity)
447
432
  if self._cursor_granularity
448
433
  and (not upper_is_end or not has_reached_upper_boundary)
449
- else (current_lower_boundary, current_upper_boundary)
434
+ else (clamped_lower, clamped_upper)
450
435
  )
451
436
  yield StreamSlice(
452
437
  partition={},
@@ -459,7 +444,7 @@ class ConcurrentCursor(Cursor):
459
444
  ]: self._connector_state_converter.output_format(end_value),
460
445
  },
461
446
  )
462
- current_lower_boundary = current_upper_boundary
447
+ current_lower_boundary = clamped_upper
463
448
  if current_upper_boundary >= upper:
464
449
  stop_processing = True
465
450
 
@@ -0,0 +1,32 @@
1
+ from abc import abstractmethod
2
+ from typing import Protocol
3
+
4
+
5
+ class GapType(Protocol):
6
+ """
7
+ This is the representation of gaps between two cursor values. Examples:
8
+ * if cursor values are datetimes, GapType is timedelta
9
+ * if cursor values are integer, GapType will also be integer
10
+ """
11
+
12
+ pass
13
+
14
+
15
+ class CursorValueType(Protocol):
16
+ """Protocol for annotating comparable types."""
17
+
18
+ @abstractmethod
19
+ def __lt__(self: "CursorValueType", other: "CursorValueType") -> bool:
20
+ pass
21
+
22
+ @abstractmethod
23
+ def __ge__(self: "CursorValueType", other: "CursorValueType") -> bool:
24
+ pass
25
+
26
+ @abstractmethod
27
+ def __add__(self: "CursorValueType", other: GapType) -> "CursorValueType":
28
+ pass
29
+
30
+ @abstractmethod
31
+ def __sub__(self: "CursorValueType", other: GapType) -> "CursorValueType":
32
+ pass
@@ -23,7 +23,7 @@ classifiers = [
23
23
  keywords = ["airbyte", "connector-development-kit", "cdk"]
24
24
 
25
25
  # Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
26
- version = "6.23.0dev0" # Version will be calculated dynamically.
26
+ version = "6.23.0dev1" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false