airbyte-cdk 6.36.4__tar.gz → 6.37.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/PKG-INFO +2 -2
  2. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +28 -7
  3. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +39 -0
  4. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +2 -0
  5. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +25 -1
  6. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +112 -0
  7. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +2 -2
  8. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +2 -1
  9. airbyte_cdk-6.37.0/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +92 -0
  10. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/pyproject.toml +2 -2
  11. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/LICENSE.txt +0 -0
  12. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/LICENSE_SHORT +0 -0
  13. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/README.md +0 -0
  14. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/__init__.py +0 -0
  15. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/cli/__init__.py +0 -0
  16. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  17. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  18. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  19. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/config_observation.py +0 -0
  20. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector.py +0 -0
  21. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/README.md +0 -0
  22. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  23. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  24. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/main.py +0 -0
  25. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/models.py +0 -0
  26. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  27. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  28. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  29. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  30. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  31. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/__init__.py +0 -0
  32. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/destination.py +0 -0
  33. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  34. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  35. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  36. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  37. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  38. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  39. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  40. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  41. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  42. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/entrypoint.py +0 -0
  43. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/exception_handler.py +0 -0
  44. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/logger.py +0 -0
  45. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/models/__init__.py +0 -0
  46. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  47. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  48. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  49. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/models/well_known_types.py +0 -0
  50. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/py.typed +0 -0
  51. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/__init__.py +0 -0
  52. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  53. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  54. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  55. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  56. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  57. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  58. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  59. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  60. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/config.py +0 -0
  61. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  62. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  63. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  64. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  65. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  66. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  67. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  68. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  69. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  70. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  71. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  72. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  73. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  74. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  75. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  76. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  77. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  78. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  79. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  80. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  81. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  82. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  83. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  84. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  85. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  86. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  87. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  88. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  89. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  90. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  91. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  92. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  93. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  94. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  95. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  96. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  97. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  98. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  99. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  100. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  101. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  102. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  103. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  104. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  105. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  106. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  107. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  108. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  109. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  110. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  111. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  112. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  113. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  114. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  115. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  116. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  117. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  118. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  119. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  120. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  121. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  122. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  123. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  124. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  125. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  126. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  127. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  128. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  129. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  130. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  131. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  132. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  133. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  134. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  135. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  136. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  137. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  138. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  139. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  140. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  141. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  142. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  143. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  144. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  145. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  146. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  147. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  148. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  149. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  150. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  151. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  152. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  153. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  154. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  155. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  156. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  157. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  158. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  159. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  160. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  161. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  162. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  163. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  164. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  165. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  166. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  167. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  168. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  169. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  170. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  171. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  172. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  173. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  174. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  175. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  176. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  177. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  178. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  179. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  180. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  181. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  182. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  183. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  184. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  185. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  186. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  187. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  188. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  189. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  190. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  191. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  192. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  193. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  194. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  195. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  196. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  197. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  198. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  199. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  200. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  201. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  202. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  203. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  204. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  205. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  206. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  207. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
  208. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
  209. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  210. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  211. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  212. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  213. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  214. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  215. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  216. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  217. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  218. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  219. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  220. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  221. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  222. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  223. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  224. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  225. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  226. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  227. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  228. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  229. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  230. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  231. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  232. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  233. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  234. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  235. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  236. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  237. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  238. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  239. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  240. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  241. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  242. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  243. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  244. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  245. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  246. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  247. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  248. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  249. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  250. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  251. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  252. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  253. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  254. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  255. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  256. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  257. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  258. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  259. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/http_config.py +0 -0
  260. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/http_logger.py +0 -0
  261. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  262. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/message/repository.py +0 -0
  263. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/source.py +0 -0
  264. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  265. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  266. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  267. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  268. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  269. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  270. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  271. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  272. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  273. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  274. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  275. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  276. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  277. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  278. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  279. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  280. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  281. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  282. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  283. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  284. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  285. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  286. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  287. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  288. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  289. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  290. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  291. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  292. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  293. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  294. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  295. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/core.py +0 -0
  296. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  297. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  298. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  299. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  300. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  301. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  302. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  303. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  304. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  305. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  306. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  307. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  308. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  309. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  310. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  311. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  312. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  313. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  314. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  315. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  316. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  317. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  318. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/types.py +0 -0
  319. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  320. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  321. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  322. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  323. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  324. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  325. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sources/utils/types.py +0 -0
  326. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/__init__.py +0 -0
  327. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  328. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  329. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  330. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/constants.py +0 -0
  331. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/exceptions.py +0 -0
  332. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/secrets.py +0 -0
  333. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  334. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  335. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  336. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/sql/types.py +0 -0
  337. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/__init__.py +0 -0
  338. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  339. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  340. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  341. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  342. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  343. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  344. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  345. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  346. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/state_builder.py +0 -0
  347. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/utils/__init__.py +0 -0
  348. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/utils/data.py +0 -0
  349. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  350. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  351. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/test/utils/reading.py +0 -0
  352. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/__init__.py +0 -0
  353. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  354. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  355. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/constants.py +0 -0
  356. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  357. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  358. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/event_timing.py +0 -0
  359. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  360. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  361. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/message_utils.py +0 -0
  362. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  363. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  364. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  365. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  366. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  367. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  368. {airbyte_cdk-6.36.4 → airbyte_cdk-6.37.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.36.4
3
+ Version: 6.37.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -22,8 +22,8 @@ Provides-Extra: sql
22
22
  Provides-Extra: vector-db-based
23
23
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
24
24
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
25
- Requires-Dist: Unidecode (>=1.3,<2.0)
26
25
  Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
26
+ Requires-Dist: anyascii (>=0.3.2,<0.4.0)
27
27
  Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
28
28
  Requires-Dist: backoff
29
29
  Requires-Dist: cachetools
@@ -31,6 +31,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
31
31
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
32
32
  DatetimeBasedCursor as DatetimeBasedCursorModel,
33
33
  )
34
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
35
+ IncrementingCountCursor as IncrementingCountCursorModel,
36
+ )
34
37
  from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
35
38
  ModelToComponentFactory,
36
39
  )
@@ -222,7 +225,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
222
225
  and not incremental_sync_component_definition
223
226
  )
224
227
 
225
- if self._is_datetime_incremental_without_partition_routing(
228
+ if self._is_concurrent_cursor_incremental_without_partition_routing(
226
229
  declarative_stream, incremental_sync_component_definition
227
230
  ):
228
231
  stream_state = self._connector_state_manager.get_stream_state(
@@ -254,15 +257,26 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
254
257
  stream_slicer=declarative_stream.retriever.stream_slicer,
255
258
  )
256
259
  else:
257
- cursor = (
258
- self._constructor.create_concurrent_cursor_from_datetime_based_cursor(
260
+ if (
261
+ incremental_sync_component_definition
262
+ and incremental_sync_component_definition.get("type")
263
+ == IncrementingCountCursorModel.__name__
264
+ ):
265
+ cursor = self._constructor.create_concurrent_cursor_from_incrementing_count_cursor(
266
+ model_type=IncrementingCountCursorModel,
267
+ component_definition=incremental_sync_component_definition, # type: ignore # Not None because of the if condition above
268
+ stream_name=declarative_stream.name,
269
+ stream_namespace=declarative_stream.namespace,
270
+ config=config or {},
271
+ )
272
+ else:
273
+ cursor = self._constructor.create_concurrent_cursor_from_datetime_based_cursor(
259
274
  model_type=DatetimeBasedCursorModel,
260
275
  component_definition=incremental_sync_component_definition, # type: ignore # Not None because of the if condition above
261
276
  stream_name=declarative_stream.name,
262
277
  stream_namespace=declarative_stream.namespace,
263
278
  config=config or {},
264
279
  )
265
- )
266
280
  partition_generator = StreamSlicerPartitionGenerator(
267
281
  partition_factory=DeclarativePartitionFactory(
268
282
  declarative_stream.name,
@@ -389,7 +403,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
389
403
 
390
404
  return concurrent_streams, synchronous_streams
391
405
 
392
- def _is_datetime_incremental_without_partition_routing(
406
+ def _is_concurrent_cursor_incremental_without_partition_routing(
393
407
  self,
394
408
  declarative_stream: DeclarativeStream,
395
409
  incremental_sync_component_definition: Mapping[str, Any] | None,
@@ -397,11 +411,18 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
397
411
  return (
398
412
  incremental_sync_component_definition is not None
399
413
  and bool(incremental_sync_component_definition)
400
- and incremental_sync_component_definition.get("type", "")
401
- == DatetimeBasedCursorModel.__name__
414
+ and (
415
+ incremental_sync_component_definition.get("type", "")
416
+ in (DatetimeBasedCursorModel.__name__, IncrementingCountCursorModel.__name__)
417
+ )
402
418
  and hasattr(declarative_stream.retriever, "stream_slicer")
403
419
  and (
404
420
  isinstance(declarative_stream.retriever.stream_slicer, DatetimeBasedCursor)
421
+ # IncrementingCountCursorModel is hardcoded to be of type DatetimeBasedCursor
422
+ # add isintance check here if we want to create a Declarative IncrementingCountCursor
423
+ # or isinstance(
424
+ # declarative_stream.retriever.stream_slicer, IncrementingCountCursor
425
+ # )
405
426
  or isinstance(declarative_stream.retriever.stream_slicer, AsyncJobPartitionRouter)
406
427
  )
407
428
  )
@@ -777,6 +777,44 @@ definitions:
777
777
  type:
778
778
  type: string
779
779
  enum: [LegacyToPerPartitionStateMigration]
780
+ IncrementingCountCursor:
781
+ title: Incrementing Count Cursor
782
+ description: Cursor that allows for incremental sync according to a continuously increasing integer.
783
+ type: object
784
+ required:
785
+ - type
786
+ - cursor_field
787
+ properties:
788
+ type:
789
+ type: string
790
+ enum: [IncrementingCountCursor]
791
+ cursor_field:
792
+ title: Cursor Field
793
+ 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.
794
+ type: string
795
+ interpolation_context:
796
+ - config
797
+ examples:
798
+ - "created_at"
799
+ - "{{ config['record_cursor'] }}"
800
+ start_value:
801
+ title: Start Value
802
+ description: The value that determines the earliest record that should be synced.
803
+ anyOf:
804
+ - type: string
805
+ - type: integer
806
+ interpolation_context:
807
+ - config
808
+ examples:
809
+ - 0
810
+ - "{{ config['start_value'] }}"
811
+ start_value_option:
812
+ title: Inject Start Value Into Outgoing HTTP Request
813
+ description: Optionally configures how the start value will be sent in requests to the source API.
814
+ "$ref": "#/definitions/RequestOption"
815
+ $parameters:
816
+ type: object
817
+ additionalProperties: true
780
818
  DatetimeBasedCursor:
781
819
  title: Datetime Based Cursor
782
820
  description: Cursor to provide incremental capabilities over datetime.
@@ -1319,6 +1357,7 @@ definitions:
1319
1357
  anyOf:
1320
1358
  - "$ref": "#/definitions/CustomIncrementalSync"
1321
1359
  - "$ref": "#/definitions/DatetimeBasedCursor"
1360
+ - "$ref": "#/definitions/IncrementingCountCursor"
1322
1361
  name:
1323
1362
  title: Name
1324
1363
  description: The stream name.
@@ -173,6 +173,8 @@ def format_datetime(
173
173
  )
174
174
  if format == "%s":
175
175
  return str(int(dt_datetime.timestamp()))
176
+ elif format == "%ms":
177
+ return str(int(dt_datetime.timestamp() * 1_000_000))
176
178
  return dt_datetime.strftime(format)
177
179
 
178
180
 
@@ -1508,6 +1508,28 @@ class AuthFlow(BaseModel):
1508
1508
  oauth_config_specification: Optional[OAuthConfigSpecification] = None
1509
1509
 
1510
1510
 
1511
+ class IncrementingCountCursor(BaseModel):
1512
+ type: Literal["IncrementingCountCursor"]
1513
+ cursor_field: str = Field(
1514
+ ...,
1515
+ 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.",
1516
+ examples=["created_at", "{{ config['record_cursor'] }}"],
1517
+ title="Cursor Field",
1518
+ )
1519
+ start_value: Optional[Union[str, int]] = Field(
1520
+ None,
1521
+ description="The value that determines the earliest record that should be synced.",
1522
+ examples=[0, "{{ config['start_value'] }}"],
1523
+ title="Start Value",
1524
+ )
1525
+ start_value_option: Optional[RequestOption] = Field(
1526
+ None,
1527
+ description="Optionally configures how the start value will be sent in requests to the source API.",
1528
+ title="Inject Start Value Into Outgoing HTTP Request",
1529
+ )
1530
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1531
+
1532
+
1511
1533
  class DatetimeBasedCursor(BaseModel):
1512
1534
  type: Literal["DatetimeBasedCursor"]
1513
1535
  clamping: Optional[Clamping] = Field(
@@ -1948,7 +1970,9 @@ class DeclarativeStream(BaseModel):
1948
1970
  description="Component used to coordinate how records are extracted across stream slices and request pages.",
1949
1971
  title="Retriever",
1950
1972
  )
1951
- incremental_sync: Optional[Union[CustomIncrementalSync, DatetimeBasedCursor]] = Field(
1973
+ incremental_sync: Optional[
1974
+ Union[CustomIncrementalSync, DatetimeBasedCursor, IncrementingCountCursor]
1975
+ ] = Field(
1952
1976
  None,
1953
1977
  description="Component used to fetch data incrementally based on a time field in the data.",
1954
1978
  title="Incremental Sync",
@@ -245,6 +245,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
245
245
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
246
246
  HttpResponseFilter as HttpResponseFilterModel,
247
247
  )
248
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
249
+ IncrementingCountCursor as IncrementingCountCursorModel,
250
+ )
248
251
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
249
252
  InlineSchemaLoader as InlineSchemaLoaderModel,
250
253
  )
@@ -496,6 +499,9 @@ from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_sta
496
499
  CustomFormatConcurrentStreamStateConverter,
497
500
  DateTimeStreamStateConverter,
498
501
  )
502
+ from airbyte_cdk.sources.streams.concurrent.state_converters.incrementing_count_stream_state_converter import (
503
+ IncrementingCountStreamStateConverter,
504
+ )
499
505
  from airbyte_cdk.sources.streams.http.error_handlers.response_models import ResponseAction
500
506
  from airbyte_cdk.sources.types import Config
501
507
  from airbyte_cdk.sources.utils.transform import TransformConfig, TypeTransformer
@@ -584,6 +590,7 @@ class ModelToComponentFactory:
584
590
  FlattenFieldsModel: self.create_flatten_fields,
585
591
  DpathFlattenFieldsModel: self.create_dpath_flatten_fields,
586
592
  IterableDecoderModel: self.create_iterable_decoder,
593
+ IncrementingCountCursorModel: self.create_incrementing_count_cursor,
587
594
  XmlDecoderModel: self.create_xml_decoder,
588
595
  JsonFileSchemaLoaderModel: self.create_json_file_schema_loader,
589
596
  DynamicSchemaLoaderModel: self.create_dynamic_schema_loader,
@@ -1189,6 +1196,70 @@ class ModelToComponentFactory:
1189
1196
  clamping_strategy=clamping_strategy,
1190
1197
  )
1191
1198
 
1199
+ def create_concurrent_cursor_from_incrementing_count_cursor(
1200
+ self,
1201
+ model_type: Type[BaseModel],
1202
+ component_definition: ComponentDefinition,
1203
+ stream_name: str,
1204
+ stream_namespace: Optional[str],
1205
+ config: Config,
1206
+ message_repository: Optional[MessageRepository] = None,
1207
+ **kwargs: Any,
1208
+ ) -> ConcurrentCursor:
1209
+ # Per-partition incremental streams can dynamically create child cursors which will pass their current
1210
+ # state via the stream_state keyword argument. Incremental syncs without parent streams use the
1211
+ # incoming state and connector_state_manager that is initialized when the component factory is created
1212
+ stream_state = (
1213
+ self._connector_state_manager.get_stream_state(stream_name, stream_namespace)
1214
+ if "stream_state" not in kwargs
1215
+ else kwargs["stream_state"]
1216
+ )
1217
+
1218
+ component_type = component_definition.get("type")
1219
+ if component_definition.get("type") != model_type.__name__:
1220
+ raise ValueError(
1221
+ f"Expected manifest component of type {model_type.__name__}, but received {component_type} instead"
1222
+ )
1223
+
1224
+ incrementing_count_cursor_model = model_type.parse_obj(component_definition)
1225
+
1226
+ if not isinstance(incrementing_count_cursor_model, IncrementingCountCursorModel):
1227
+ raise ValueError(
1228
+ f"Expected {model_type.__name__} component, but received {incrementing_count_cursor_model.__class__.__name__}"
1229
+ )
1230
+
1231
+ interpolated_start_value = (
1232
+ InterpolatedString.create(
1233
+ incrementing_count_cursor_model.start_value, # type: ignore
1234
+ parameters=incrementing_count_cursor_model.parameters or {},
1235
+ )
1236
+ if incrementing_count_cursor_model.start_value
1237
+ else 0
1238
+ )
1239
+
1240
+ interpolated_cursor_field = InterpolatedString.create(
1241
+ incrementing_count_cursor_model.cursor_field,
1242
+ parameters=incrementing_count_cursor_model.parameters or {},
1243
+ )
1244
+ cursor_field = CursorField(interpolated_cursor_field.eval(config=config))
1245
+
1246
+ connector_state_converter = IncrementingCountStreamStateConverter(
1247
+ is_sequential_state=True, # ConcurrentPerPartitionCursor only works with sequential state
1248
+ )
1249
+
1250
+ return ConcurrentCursor(
1251
+ stream_name=stream_name,
1252
+ stream_namespace=stream_namespace,
1253
+ stream_state=stream_state,
1254
+ message_repository=message_repository or self._message_repository,
1255
+ connector_state_manager=self._connector_state_manager,
1256
+ connector_state_converter=connector_state_converter,
1257
+ cursor_field=cursor_field,
1258
+ slice_boundary_fields=None,
1259
+ start=interpolated_start_value, # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
1260
+ end_provider=connector_state_converter.get_end_provider(), # type: ignore # Having issues w/ inspection for GapType and CursorValueType as shown in existing tests. Confirmed functionality is working in practice
1261
+ )
1262
+
1192
1263
  def _assemble_weekday(self, weekday: str) -> Weekday:
1193
1264
  match weekday:
1194
1265
  case "MONDAY":
@@ -1622,6 +1693,31 @@ class ModelToComponentFactory:
1622
1693
  config=config,
1623
1694
  parameters=model.parameters or {},
1624
1695
  )
1696
+ elif model.incremental_sync and isinstance(
1697
+ model.incremental_sync, IncrementingCountCursorModel
1698
+ ):
1699
+ cursor_model: IncrementingCountCursorModel = model.incremental_sync # type: ignore
1700
+
1701
+ start_time_option = (
1702
+ self._create_component_from_model(
1703
+ cursor_model.start_value_option, # type: ignore # mypy still thinks cursor_model of type DatetimeBasedCursor
1704
+ config,
1705
+ parameters=cursor_model.parameters or {},
1706
+ )
1707
+ if cursor_model.start_value_option # type: ignore # mypy still thinks cursor_model of type DatetimeBasedCursor
1708
+ else None
1709
+ )
1710
+
1711
+ # The concurrent engine defaults the start/end fields on the slice to "start" and "end", but
1712
+ # the default DatetimeBasedRequestOptionsProvider() sets them to start_time/end_time
1713
+ partition_field_start = "start"
1714
+
1715
+ request_options_provider = DatetimeBasedRequestOptionsProvider(
1716
+ start_time_option=start_time_option,
1717
+ partition_field_start=partition_field_start,
1718
+ config=config,
1719
+ parameters=model.parameters or {},
1720
+ )
1625
1721
  else:
1626
1722
  request_options_provider = None
1627
1723
 
@@ -2111,6 +2207,22 @@ class ModelToComponentFactory:
2111
2207
  stream_response=False if self._emit_connector_builder_messages else True,
2112
2208
  )
2113
2209
 
2210
+ @staticmethod
2211
+ def create_incrementing_count_cursor(
2212
+ model: IncrementingCountCursorModel, config: Config, **kwargs: Any
2213
+ ) -> DatetimeBasedCursor:
2214
+ # This should not actually get used anywhere at runtime, but needed to add this to pass checks since
2215
+ # we still parse models into components. The issue is that there's no runtime implementation of a
2216
+ # IncrementingCountCursor.
2217
+ # A known and expected issue with this stub is running a check with the declared IncrementingCountCursor because it is run without ConcurrentCursor.
2218
+ return DatetimeBasedCursor(
2219
+ cursor_field=model.cursor_field,
2220
+ datetime_format="%Y-%m-%d",
2221
+ start_datetime="2024-12-12",
2222
+ config=config,
2223
+ parameters={},
2224
+ )
2225
+
2114
2226
  @staticmethod
2115
2227
  def create_iterable_decoder(
2116
2228
  model: IterableDecoderModel, config: Config, **kwargs: Any
@@ -6,7 +6,7 @@ import re
6
6
  from dataclasses import dataclass
7
7
  from typing import Any, Dict, List, Optional
8
8
 
9
- import unidecode
9
+ import anyascii
10
10
 
11
11
  from airbyte_cdk.sources.declarative.transformations import RecordTransformation
12
12
  from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
@@ -48,7 +48,7 @@ class KeysToSnakeCaseTransformation(RecordTransformation):
48
48
  return self.tokens_to_snake_case(tokens)
49
49
 
50
50
  def normalize_key(self, key: str) -> str:
51
- return unidecode.unidecode(key)
51
+ return str(anyascii.anyascii(key))
52
52
 
53
53
  def tokenize_key(self, key: str) -> List[str]:
54
54
  tokens = []
@@ -4,7 +4,7 @@
4
4
 
5
5
  from abc import ABC, abstractmethod
6
6
  from enum import Enum
7
- from typing import TYPE_CHECKING, Any, List, MutableMapping, Optional, Tuple
7
+ from typing import TYPE_CHECKING, Any, Callable, List, MutableMapping, Optional, Tuple
8
8
 
9
9
  if TYPE_CHECKING:
10
10
  from airbyte_cdk.sources.streams.concurrent.cursor import CursorField
@@ -12,6 +12,7 @@ if TYPE_CHECKING:
12
12
 
13
13
  class ConcurrencyCompatibleStateType(Enum):
14
14
  date_range = "date-range"
15
+ integer = "integer"
15
16
 
16
17
 
17
18
  class AbstractStreamStateConverter(ABC):
@@ -0,0 +1,92 @@
1
+ #
2
+ # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ from typing import Any, Callable, MutableMapping, Optional, Tuple
6
+
7
+ from airbyte_cdk.sources.streams.concurrent.cursor import CursorField
8
+ from airbyte_cdk.sources.streams.concurrent.state_converters.abstract_stream_state_converter import (
9
+ AbstractStreamStateConverter,
10
+ ConcurrencyCompatibleStateType,
11
+ )
12
+
13
+
14
+ class IncrementingCountStreamStateConverter(AbstractStreamStateConverter):
15
+ def _from_state_message(self, value: Any) -> Any:
16
+ return value
17
+
18
+ def _to_state_message(self, value: Any) -> Any:
19
+ return value
20
+
21
+ @classmethod
22
+ def get_end_provider(cls) -> Callable[[], float]:
23
+ return lambda: float("inf")
24
+
25
+ def convert_from_sequential_state(
26
+ self,
27
+ cursor_field: "CursorField", # to deprecate as it is only needed for sequential state
28
+ stream_state: MutableMapping[str, Any],
29
+ start: Optional[Any],
30
+ ) -> Tuple[Any, MutableMapping[str, Any]]:
31
+ """
32
+ Convert the state message to the format required by the ConcurrentCursor.
33
+
34
+ e.g.
35
+ {
36
+ "state_type": ConcurrencyCompatibleStateType.date_range.value,
37
+ "metadata": { … },
38
+ "slices": [
39
+ {"start": "10", "end": "2021-01-18T21:18:20.000+00:00"},
40
+ ]
41
+ }
42
+ """
43
+ sync_start = self._get_sync_start(cursor_field, stream_state, start)
44
+ if self.is_state_message_compatible(stream_state):
45
+ return sync_start, stream_state
46
+
47
+ # Create a slice to represent the records synced during prior syncs.
48
+ # The start and end are the same to avoid confusion as to whether the records for this slice
49
+ # were actually synced
50
+ slices = [
51
+ {
52
+ self.START_KEY: start if start is not None else sync_start,
53
+ self.END_KEY: sync_start, # this may not be relevant anymore
54
+ self.MOST_RECENT_RECORD_KEY: sync_start,
55
+ }
56
+ ]
57
+
58
+ return sync_start, {
59
+ "state_type": ConcurrencyCompatibleStateType.integer.value,
60
+ "slices": slices,
61
+ "legacy": stream_state,
62
+ }
63
+
64
+ def parse_value(self, value: int) -> int:
65
+ return value
66
+
67
+ @property
68
+ def zero_value(self) -> int:
69
+ return 0
70
+
71
+ def increment(self, value: int) -> int:
72
+ return value + 1
73
+
74
+ def output_format(self, value: int) -> int:
75
+ return value
76
+
77
+ def _get_sync_start(
78
+ self,
79
+ cursor_field: CursorField,
80
+ stream_state: MutableMapping[str, Any],
81
+ start: Optional[int],
82
+ ) -> int:
83
+ sync_start = start if start is not None else self.zero_value
84
+ prev_sync_low_water_mark: Optional[int] = (
85
+ stream_state[cursor_field.cursor_field_key]
86
+ if cursor_field.cursor_field_key in stream_state
87
+ else None
88
+ )
89
+ if prev_sync_low_water_mark and prev_sync_low_water_mark >= sync_start:
90
+ return prev_sync_low_water_mark
91
+ else:
92
+ return sync_start
@@ -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.36.4" # Version will be calculated dynamically.
26
+ version = "6.37.0" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false
@@ -79,7 +79,7 @@ orjson = "^3.10.7"
79
79
  serpyco-rs = "^1.10.2"
80
80
  sqlalchemy = {version = "^2.0,!=2.0.36", optional = true }
81
81
  xmltodict = ">=0.13,<0.15"
82
- Unidecode = "^1.3"
82
+ anyascii = "^0.3.2"
83
83
  whenever = "^0.6.16"
84
84
 
85
85
  [tool.poetry.group.dev.dependencies]
File without changes
File without changes
File without changes