airbyte-cdk 6.17.1.dev1__tar.gz → 6.18.0.dev1__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (349) hide show
  1. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -69
  3. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +15 -1
  4. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +28 -0
  5. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +5 -3
  6. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -6
  7. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -15
  8. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +30 -12
  9. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +24 -78
  10. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
  11. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py +21 -30
  12. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/pyproject.toml +1 -1
  13. airbyte_cdk-6.17.1.dev1/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -340
  14. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/LICENSE.txt +0 -0
  15. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/README.md +0 -0
  16. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/__init__.py +0 -0
  17. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/cli/__init__.py +0 -0
  18. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  19. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  20. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  21. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/config_observation.py +0 -0
  22. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector.py +0 -0
  23. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/README.md +0 -0
  24. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  25. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  26. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/main.py +0 -0
  27. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  28. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/connector_builder/models.py +0 -0
  29. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/__init__.py +0 -0
  30. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/destination.py +0 -0
  31. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  32. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  33. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  34. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  35. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  36. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  37. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  38. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  39. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  40. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/entrypoint.py +0 -0
  41. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/exception_handler.py +0 -0
  42. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/logger.py +0 -0
  43. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/models/__init__.py +0 -0
  44. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  45. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  46. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  47. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/models/well_known_types.py +0 -0
  48. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/py.typed +0 -0
  49. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/__init__.py +0 -0
  50. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/abstract_source.py +0 -0
  51. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  52. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  53. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  54. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  55. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  56. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  57. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  58. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/config.py +0 -0
  59. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  60. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  61. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  62. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  63. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  64. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  65. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  66. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  67. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  68. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  69. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  70. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  71. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  72. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  73. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  74. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  75. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  76. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  77. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  78. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  79. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  80. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  81. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  82. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  83. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  84. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  85. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  86. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  87. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  88. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  89. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  90. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  91. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  92. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  93. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  94. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  95. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  96. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  97. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  98. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  99. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  100. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  101. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  102. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  103. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  104. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  105. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  106. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  107. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  108. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  109. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  110. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  111. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  112. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  113. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  114. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  115. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  116. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  117. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  118. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  119. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  120. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  121. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  122. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  123. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  124. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  125. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  126. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  127. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  128. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  129. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  130. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  131. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  132. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  133. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  134. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  135. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  136. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  137. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  138. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  139. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  140. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  141. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  142. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  143. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  144. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  145. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  146. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  147. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  148. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  149. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  150. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  151. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  152. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  153. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  154. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  155. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  156. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  157. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  158. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  159. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  160. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  161. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  162. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  163. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  164. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  165. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  166. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  167. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  168. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  169. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  170. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  171. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  172. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  173. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  174. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  175. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  176. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  177. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  178. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  179. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  180. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  181. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  182. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  183. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  184. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  185. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  186. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  187. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  188. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  189. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  190. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  191. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/types.py +0 -0
  192. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  193. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  194. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  195. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  196. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/embedded/runner.py +0 -0
  197. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/embedded/tools.py +0 -0
  198. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/README.md +0 -0
  199. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  200. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  201. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  202. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  203. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  204. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  205. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  206. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  207. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  208. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  209. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  210. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  211. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  212. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  213. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  214. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  215. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  216. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  217. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  218. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  219. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  220. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  221. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  222. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  223. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  224. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  225. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  226. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  227. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  228. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  229. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  230. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  231. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  232. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  233. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  234. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  235. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  236. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  237. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  238. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  239. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  240. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  241. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  242. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  243. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  244. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/file_based/types.py +0 -0
  245. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/http_config.py +0 -0
  246. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/http_logger.py +0 -0
  247. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/message/__init__.py +0 -0
  248. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/message/repository.py +0 -0
  249. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/source.py +0 -0
  250. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  251. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  252. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  253. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  254. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  255. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  256. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  257. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  258. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  259. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  260. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  261. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  262. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  263. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  264. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  265. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  266. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  267. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  268. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  269. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  270. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  271. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  272. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  273. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  274. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  275. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  276. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  277. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  278. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/core.py +0 -0
  279. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  280. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  281. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  282. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  283. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  284. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  285. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  286. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  287. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  288. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  289. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  290. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  291. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/http.py +0 -0
  292. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  293. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  294. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  295. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  296. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  297. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  298. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  299. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  300. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/types.py +0 -0
  301. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  302. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/casing.py +0 -0
  303. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  304. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  305. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  306. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/transform.py +0 -0
  307. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sources/utils/types.py +0 -0
  308. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/__init__.py +0 -0
  309. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  310. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  311. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  312. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/constants.py +0 -0
  313. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/exceptions.py +0 -0
  314. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/secrets.py +0 -0
  315. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  316. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  317. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  318. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/sql/types.py +0 -0
  319. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/__init__.py +0 -0
  320. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/catalog_builder.py +0 -0
  321. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  322. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  323. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  324. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  325. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/request.py +0 -0
  326. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/response.py +0 -0
  327. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  328. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/state_builder.py +0 -0
  329. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/utils/__init__.py +0 -0
  330. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/utils/data.py +0 -0
  331. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  332. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  333. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/test/utils/reading.py +0 -0
  334. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/__init__.py +0 -0
  335. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  336. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/analytics_message.py +0 -0
  337. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/constants.py +0 -0
  338. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  339. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/event_timing.py +0 -0
  340. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  341. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  342. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/message_utils.py +0 -0
  343. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  344. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/print_buffer.py +0 -0
  345. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  346. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  347. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  348. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.0.dev1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  349. {airbyte_cdk-6.17.1.dev1 → airbyte_cdk-6.18.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.17.1.dev1
3
+ Version: 6.18.0.dev1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  License: MIT
6
6
  Keywords: airbyte,connector-development-kit,cdk
@@ -20,9 +20,6 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
20
20
  ClientSideIncrementalRecordFilterDecorator,
21
21
  )
22
22
  from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
23
- from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
24
- PerPartitionWithGlobalCursor,
25
- )
26
23
  from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
27
24
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
28
25
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
@@ -307,72 +304,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
307
304
  cursor=final_state_cursor,
308
305
  )
309
306
  )
310
- elif (
311
- incremental_sync_component_definition
312
- and incremental_sync_component_definition.get("type", "")
313
- == DatetimeBasedCursorModel.__name__
314
- and self._stream_supports_concurrent_partition_processing(
315
- declarative_stream=declarative_stream
316
- )
317
- and hasattr(declarative_stream.retriever, "stream_slicer")
318
- and isinstance(
319
- declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor
320
- )
321
- ):
322
- stream_state = state_manager.get_stream_state(
323
- stream_name=declarative_stream.name, namespace=declarative_stream.namespace
324
- )
325
- partition_router = declarative_stream.retriever.stream_slicer._partition_router
326
-
327
- cursor = self._constructor.create_concurrent_cursor_from_perpartition_cursor(
328
- state_manager=state_manager,
329
- model_type=DatetimeBasedCursorModel,
330
- component_definition=incremental_sync_component_definition,
331
- stream_name=declarative_stream.name,
332
- stream_namespace=declarative_stream.namespace,
333
- config=config or {},
334
- stream_state=stream_state,
335
- partition_router=partition_router,
336
- )
337
-
338
- retriever = declarative_stream.retriever
339
-
340
- # This is an optimization so that we don't invoke any cursor or state management flows within the
341
- # low-code framework because state management is handled through the ConcurrentCursor.
342
- if declarative_stream and isinstance(retriever, SimpleRetriever):
343
- # Also a temporary hack. In the legacy Stream implementation, as part of the read,
344
- # set_initial_state() is called to instantiate incoming state on the cursor. Although we no
345
- # longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
346
- # like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
347
- # still rely on a DatetimeBasedCursor that is properly initialized with state.
348
- if retriever.cursor:
349
- retriever.cursor.set_initial_state(stream_state=stream_state)
350
- # We zero it out here, but since this is a cursor reference, the state is still properly
351
- # instantiated for the other components that reference it
352
- retriever.cursor = None
353
-
354
- partition_generator = StreamSlicerPartitionGenerator(
355
- DeclarativePartitionFactory(
356
- declarative_stream.name,
357
- declarative_stream.get_json_schema(),
358
- retriever,
359
- self.message_repository,
360
- ),
361
- cursor,
362
- )
363
-
364
- concurrent_streams.append(
365
- DefaultStream(
366
- partition_generator=partition_generator,
367
- name=declarative_stream.name,
368
- json_schema=declarative_stream.get_json_schema(),
369
- availability_strategy=AlwaysAvailableAvailabilityStrategy(),
370
- primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
371
- cursor_field=cursor.cursor_field.cursor_field_key,
372
- logger=self.logger,
373
- cursor=cursor,
374
- )
375
- )
376
307
  else:
377
308
  synchronous_streams.append(declarative_stream)
378
309
  else:
@@ -678,7 +678,7 @@ definitions:
678
678
  properties:
679
679
  type:
680
680
  type: string
681
- enum: [ CustomSchemaNormalization ]
681
+ enum: [CustomSchemaNormalization]
682
682
  class_name:
683
683
  title: Class Name
684
684
  description: Fully-qualified name of the class that will be implementing the custom normalization. The format is `source_<name>.<package>.<class_name>`.
@@ -2014,6 +2014,20 @@ definitions:
2014
2014
  $parameters:
2015
2015
  type: object
2016
2016
  additionalProperties: true
2017
+ JsonParser:
2018
+ title: JsonParser
2019
+ description: Parser used for parsing str, bytes, or bytearray data and returning data in a dictionary format.
2020
+ type: object
2021
+ additionalProperties: true
2022
+ required:
2023
+ - type
2024
+ properties:
2025
+ type:
2026
+ type: string
2027
+ enum: [JsonParser]
2028
+ encoding:
2029
+ type: string
2030
+ default: utf-8
2017
2031
  ListPartitionRouter:
2018
2032
  title: List Partition Router
2019
2033
  description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
@@ -7,9 +7,12 @@ from dataclasses import dataclass
7
7
  from io import BufferedIOBase, TextIOWrapper
8
8
  from typing import Any, Generator, MutableMapping, Optional
9
9
 
10
+ import orjson
10
11
  import requests
11
12
 
13
+ from airbyte_cdk.models import FailureType
12
14
  from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
15
+ from airbyte_cdk.utils import AirbyteTracedException
13
16
 
14
17
  logger = logging.getLogger("airbyte")
15
18
 
@@ -42,6 +45,31 @@ class GzipParser(Parser):
42
45
  yield from self.inner_parser.parse(gzipobj)
43
46
 
44
47
 
48
+ @dataclass
49
+ class JsonParser(Parser):
50
+ encoding: str = "utf-8"
51
+
52
+ def parse(self, data: BufferedIOBase) -> Generator[MutableMapping[str, Any], None, None]:
53
+ raw_data = data.read()
54
+ try:
55
+ body_json = orjson.loads(raw_data.decode(self.encoding))
56
+ except Exception:
57
+ try:
58
+ body_json = json.loads(raw_data.decode(self.encoding))
59
+ except Exception as exc:
60
+ raise AirbyteTracedException(
61
+ message="Response JSON data failed to be parsed. See logs for more inforation.",
62
+ internal_message=f"Response JSON data faild to be parsed: {exc=}, {raw_data=}",
63
+ failure_type=FailureType.system_error,
64
+ exception=exc,
65
+ )
66
+
67
+ if isinstance(body_json, list):
68
+ yield from body_json
69
+ else:
70
+ yield from [body_json]
71
+
72
+
45
73
  @dataclass
46
74
  class JsonLineParser(Parser):
47
75
  encoding: Optional[str] = "utf-8"
@@ -59,11 +59,13 @@ class ClientSideIncrementalRecordFilterDecorator(RecordFilter):
59
59
 
60
60
  def __init__(
61
61
  self,
62
- cursor: Union[DatetimeBasedCursor, PerPartitionWithGlobalCursor, GlobalSubstreamCursor],
62
+ date_time_based_cursor: DatetimeBasedCursor,
63
+ substream_cursor: Optional[Union[PerPartitionWithGlobalCursor, GlobalSubstreamCursor]],
63
64
  **kwargs: Any,
64
65
  ):
65
66
  super().__init__(**kwargs)
66
- self._cursor = cursor
67
+ self._date_time_based_cursor = date_time_based_cursor
68
+ self._substream_cursor = substream_cursor
67
69
 
68
70
  def filter_records(
69
71
  self,
@@ -75,7 +77,7 @@ class ClientSideIncrementalRecordFilterDecorator(RecordFilter):
75
77
  records = (
76
78
  record
77
79
  for record in records
78
- if self._cursor.should_be_synced(
80
+ if (self._substream_cursor or self._date_time_based_cursor).should_be_synced(
79
81
  # Record is created on the fly to align with cursors interface; stream name is ignored as we don't need it here
80
82
  # Record stream name is empty cause it is not used durig the filtering
81
83
  Record(data=record, associated_slice=stream_slice, stream_name="")
@@ -2,10 +2,6 @@
2
2
  # Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3
3
  #
4
4
 
5
- from airbyte_cdk.sources.declarative.incremental.concurrent_partition_cursor import (
6
- ConcurrentCursorFactory,
7
- ConcurrentPerPartitionCursor,
8
- )
9
5
  from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
10
6
  from airbyte_cdk.sources.declarative.incremental.declarative_cursor import DeclarativeCursor
11
7
  from airbyte_cdk.sources.declarative.incremental.global_substream_cursor import (
@@ -25,8 +21,6 @@ from airbyte_cdk.sources.declarative.incremental.resumable_full_refresh_cursor i
25
21
 
26
22
  __all__ = [
27
23
  "CursorFactory",
28
- "ConcurrentCursorFactory",
29
- "ConcurrentPerPartitionCursor",
30
24
  "DatetimeBasedCursor",
31
25
  "DeclarativeCursor",
32
26
  "GlobalSubstreamCursor",
@@ -303,21 +303,6 @@ class PerPartitionCursor(DeclarativeCursor):
303
303
  raise ValueError("A partition needs to be provided in order to get request body json")
304
304
 
305
305
  def should_be_synced(self, record: Record) -> bool:
306
- if (
307
- record.associated_slice
308
- and self._to_partition_key(record.associated_slice.partition)
309
- not in self._cursor_per_partition
310
- ):
311
- partition_state = (
312
- self._state_to_migrate_from
313
- if self._state_to_migrate_from
314
- else self._NO_CURSOR_STATE
315
- )
316
- cursor = self._create_cursor(partition_state)
317
-
318
- self._cursor_per_partition[
319
- self._to_partition_key(record.associated_slice.partition)
320
- ] = cursor
321
306
  return self._get_cursor(record).should_be_synced(
322
307
  self._convert_record_to_cursor_record(record)
323
308
  )
@@ -737,33 +737,43 @@ class KeysToSnakeCase(BaseModel):
737
737
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
738
738
 
739
739
 
740
+ class FlattenFields(BaseModel):
741
+ type: Literal["FlattenFields"]
742
+ flatten_lists: Optional[bool] = Field(
743
+ True,
744
+ description="Whether to flatten lists or leave it as is. Default is True.",
745
+ title="Flatten Lists",
746
+ )
747
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
748
+
749
+
740
750
  class KeysReplace(BaseModel):
741
751
  type: Literal["KeysReplace"]
742
752
  old: str = Field(
743
753
  ...,
744
754
  description="Old value to replace.",
745
- examples=[" ", "{{ record.id }}", "{{ config['id'] }}", "{{ stream_slice['id'] }}"],
755
+ examples=[
756
+ " ",
757
+ "{{ record.id }}",
758
+ "{{ config['id'] }}",
759
+ "{{ stream_slice['id'] }}",
760
+ ],
746
761
  title="Old value",
747
762
  )
748
763
  new: str = Field(
749
764
  ...,
750
765
  description="New value to set.",
751
- examples=["_", "{{ record.id }}", "{{ config['id'] }}", "{{ stream_slice['id'] }}"],
766
+ examples=[
767
+ "_",
768
+ "{{ record.id }}",
769
+ "{{ config['id'] }}",
770
+ "{{ stream_slice['id'] }}",
771
+ ],
752
772
  title="New value",
753
773
  )
754
774
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
755
775
 
756
776
 
757
- class FlattenFields(BaseModel):
758
- type: Literal["FlattenFields"]
759
- flatten_lists: Optional[bool] = Field(
760
- True,
761
- description="Whether to flatten lists or leave it as is. Default is True.",
762
- title="Flatten Lists",
763
- )
764
- parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
765
-
766
-
767
777
  class IterableDecoder(BaseModel):
768
778
  type: Literal["IterableDecoder"]
769
779
 
@@ -795,6 +805,14 @@ class GzipJsonDecoder(BaseModel):
795
805
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
796
806
 
797
807
 
808
+ class JsonParser(BaseModel):
809
+ class Config:
810
+ extra = Extra.allow
811
+
812
+ type: Literal["JsonParser"]
813
+ encoding: Optional[str] = "utf-8"
814
+
815
+
798
816
  class MinMaxDatetime(BaseModel):
799
817
  type: Literal["MinMaxDatetime"]
800
818
  datetime: str = Field(
@@ -72,6 +72,7 @@ from airbyte_cdk.sources.declarative.decoders.composite_raw_decoder import (
72
72
  CsvParser,
73
73
  GzipParser,
74
74
  JsonLineParser,
75
+ JsonParser,
75
76
  )
76
77
  from airbyte_cdk.sources.declarative.extractors import (
77
78
  DpathExtractor,
@@ -84,8 +85,6 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
84
85
  )
85
86
  from airbyte_cdk.sources.declarative.incremental import (
86
87
  ChildPartitionResumableFullRefreshCursor,
87
- ConcurrentCursorFactory,
88
- ConcurrentPerPartitionCursor,
89
88
  CursorFactory,
90
89
  DatetimeBasedCursor,
91
90
  DeclarativeCursor,
@@ -249,6 +248,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
249
248
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
250
249
  JsonLineParser as JsonLineParserModel,
251
250
  )
251
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
252
+ JsonParser as JsonParserModel,
253
+ )
252
254
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
253
255
  JwtAuthenticator as JwtAuthenticatorModel,
254
256
  )
@@ -440,7 +442,6 @@ from airbyte_cdk.sources.message import (
440
442
  InMemoryMessageRepository,
441
443
  LogAppenderMessageRepositoryDecorator,
442
444
  MessageRepository,
443
- NoopMessageRepository,
444
445
  )
445
446
  from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, CursorField
446
447
  from airbyte_cdk.sources.streams.concurrent.state_converters.datetime_stream_state_converter import (
@@ -525,6 +526,7 @@ class ModelToComponentFactory:
525
526
  JsonDecoderModel: self.create_json_decoder,
526
527
  JsonlDecoderModel: self.create_jsonl_decoder,
527
528
  JsonLineParserModel: self.create_json_line_parser,
529
+ JsonParserModel: self.create_json_parser,
528
530
  GzipJsonDecoderModel: self.create_gzipjson_decoder,
529
531
  GzipParserModel: self.create_gzip_parser,
530
532
  KeysToLowerModel: self.create_keys_to_lower_transformation,
@@ -874,8 +876,6 @@ class ModelToComponentFactory:
874
876
  stream_namespace: Optional[str],
875
877
  config: Config,
876
878
  stream_state: MutableMapping[str, Any],
877
- message_repository: Optional[MessageRepository] = None,
878
- runtime_lookback_window: Optional[int] = None,
879
879
  **kwargs: Any,
880
880
  ) -> ConcurrentCursor:
881
881
  component_type = component_definition.get("type")
@@ -933,11 +933,6 @@ class ModelToComponentFactory:
933
933
  if evaluated_lookback_window:
934
934
  lookback_window = parse_duration(evaluated_lookback_window)
935
935
 
936
- if runtime_lookback_window and lookback_window:
937
- lookback_window = max(lookback_window, runtime_lookback_window)
938
- elif runtime_lookback_window:
939
- lookback_window = runtime_lookback_window
940
-
941
936
  connector_state_converter: DateTimeStreamStateConverter
942
937
  connector_state_converter = CustomFormatConcurrentStreamStateConverter(
943
938
  datetime_format=datetime_format,
@@ -1016,7 +1011,7 @@ class ModelToComponentFactory:
1016
1011
  stream_name=stream_name,
1017
1012
  stream_namespace=stream_namespace,
1018
1013
  stream_state=stream_state,
1019
- message_repository=message_repository or self._message_repository,
1014
+ message_repository=self._message_repository,
1020
1015
  connector_state_manager=state_manager,
1021
1016
  connector_state_converter=connector_state_converter,
1022
1017
  cursor_field=cursor_field,
@@ -1028,63 +1023,6 @@ class ModelToComponentFactory:
1028
1023
  cursor_granularity=cursor_granularity,
1029
1024
  )
1030
1025
 
1031
- def create_concurrent_cursor_from_perpartition_cursor(
1032
- self,
1033
- state_manager: ConnectorStateManager,
1034
- model_type: Type[BaseModel],
1035
- component_definition: ComponentDefinition,
1036
- stream_name: str,
1037
- stream_namespace: Optional[str],
1038
- config: Config,
1039
- stream_state: MutableMapping[str, Any],
1040
- partition_router,
1041
- **kwargs: Any,
1042
- ) -> ConcurrentPerPartitionCursor:
1043
- component_type = component_definition.get("type")
1044
- if component_definition.get("type") != model_type.__name__:
1045
- raise ValueError(
1046
- f"Expected manifest component of type {model_type.__name__}, but received {component_type} instead"
1047
- )
1048
-
1049
- datetime_based_cursor_model = model_type.parse_obj(component_definition)
1050
-
1051
- if not isinstance(datetime_based_cursor_model, DatetimeBasedCursorModel):
1052
- raise ValueError(
1053
- f"Expected {model_type.__name__} component, but received {datetime_based_cursor_model.__class__.__name__}"
1054
- )
1055
-
1056
- interpolated_cursor_field = InterpolatedString.create(
1057
- datetime_based_cursor_model.cursor_field,
1058
- parameters=datetime_based_cursor_model.parameters or {},
1059
- )
1060
- cursor_field = CursorField(interpolated_cursor_field.eval(config=config))
1061
-
1062
- # Create the cursor factory
1063
- cursor_factory = ConcurrentCursorFactory(
1064
- partial(
1065
- self.create_concurrent_cursor_from_datetime_based_cursor,
1066
- state_manager=state_manager,
1067
- model_type=model_type,
1068
- component_definition=component_definition,
1069
- stream_name=stream_name,
1070
- stream_namespace=stream_namespace,
1071
- config=config,
1072
- message_repository=NoopMessageRepository(),
1073
- )
1074
- )
1075
-
1076
- # Return the concurrent cursor and state converter
1077
- return ConcurrentPerPartitionCursor(
1078
- cursor_factory=cursor_factory,
1079
- partition_router=partition_router,
1080
- stream_name=stream_name,
1081
- stream_namespace=stream_namespace,
1082
- stream_state=stream_state,
1083
- message_repository=self._message_repository, # type: ignore
1084
- connector_state_manager=state_manager,
1085
- cursor_field=cursor_field,
1086
- )
1087
-
1088
1026
  @staticmethod
1089
1027
  def create_constant_backoff_strategy(
1090
1028
  model: ConstantBackoffStrategyModel, config: Config, **kwargs: Any
@@ -1367,15 +1305,18 @@ class ModelToComponentFactory:
1367
1305
  raise ValueError(
1368
1306
  "Unsupported Slicer is used. PerPartitionWithGlobalCursor should be used here instead"
1369
1307
  )
1370
- cursor = (
1371
- combined_slicers
1372
- if isinstance(
1373
- combined_slicers, (PerPartitionWithGlobalCursor, GlobalSubstreamCursor)
1374
- )
1375
- else self._create_component_from_model(model=model.incremental_sync, config=config)
1376
- )
1377
-
1378
- client_side_incremental_sync = {"cursor": cursor}
1308
+ client_side_incremental_sync = {
1309
+ "date_time_based_cursor": self._create_component_from_model(
1310
+ model=model.incremental_sync, config=config
1311
+ ),
1312
+ "substream_cursor": (
1313
+ combined_slicers
1314
+ if isinstance(
1315
+ combined_slicers, (PerPartitionWithGlobalCursor, GlobalSubstreamCursor)
1316
+ )
1317
+ else None
1318
+ ),
1319
+ }
1379
1320
 
1380
1321
  if model.incremental_sync and isinstance(model.incremental_sync, DatetimeBasedCursorModel):
1381
1322
  cursor_model = model.incremental_sync
@@ -1812,6 +1753,11 @@ class ModelToComponentFactory:
1812
1753
  def create_json_decoder(model: JsonDecoderModel, config: Config, **kwargs: Any) -> JsonDecoder:
1813
1754
  return JsonDecoder(parameters={})
1814
1755
 
1756
+ @staticmethod
1757
+ def create_json_parser(model: JsonParserModel, config: Config, **kwargs: Any) -> JsonParser:
1758
+ encoding = model.encoding or "utf-8"
1759
+ return JsonParser(encoding=encoding)
1760
+
1815
1761
  @staticmethod
1816
1762
  def create_jsonl_decoder(
1817
1763
  model: JsonlDecoderModel, config: Config, **kwargs: Any
@@ -2191,7 +2137,7 @@ class ModelToComponentFactory:
2191
2137
  if (
2192
2138
  not isinstance(stream_slicer, DatetimeBasedCursor)
2193
2139
  or type(stream_slicer) is not DatetimeBasedCursor
2194
- ) and not isinstance(stream_slicer, PerPartitionWithGlobalCursor):
2140
+ ):
2195
2141
  # Many of the custom component implementations of DatetimeBasedCursor override get_request_params() (or other methods).
2196
2142
  # Because we're decoupling RequestOptionsProvider from the Cursor, custom components will eventually need to reimplement
2197
2143
  # their own RequestOptionsProvider. However, right now the existing StreamSlicer/Cursor still can act as the SimpleRetriever's
@@ -160,7 +160,7 @@ class SimpleRetriever(Retriever):
160
160
  stream_slice,
161
161
  next_page_token,
162
162
  self._paginator.get_request_headers,
163
- self.request_option_provider.get_request_headers,
163
+ self.stream_slicer.get_request_headers,
164
164
  )
165
165
  if isinstance(headers, str):
166
166
  raise ValueError("Request headers cannot be a string")
@@ -196,9 +196,7 @@ class ConcurrentCursor(Cursor):
196
196
 
197
197
  @property
198
198
  def state(self) -> MutableMapping[str, Any]:
199
- return self._connector_state_converter.convert_to_state_message(
200
- self.cursor_field, self._concurrent_state
201
- )
199
+ return self._concurrent_state
202
200
 
203
201
  @property
204
202
  def cursor_field(self) -> CursorField:
@@ -243,10 +241,10 @@ class ConcurrentCursor(Cursor):
243
241
  return self._connector_state_converter.parse_value(self._cursor_field.extract_value(record))
244
242
 
245
243
  def close_partition(self, partition: Partition) -> None:
246
- slice_count_before = len(self._concurrent_state.get("slices", []))
244
+ slice_count_before = len(self.state.get("slices", []))
247
245
  self._add_slice_to_state(partition)
248
246
  if slice_count_before < len(
249
- self._concurrent_state["slices"]
247
+ self.state["slices"]
250
248
  ): # only emit if at least one slice has been processed
251
249
  self._merge_partitions()
252
250
  self._emit_state_message()
@@ -258,11 +256,11 @@ class ConcurrentCursor(Cursor):
258
256
  )
259
257
 
260
258
  if self._slice_boundary_fields:
261
- if "slices" not in self._concurrent_state:
259
+ if "slices" not in self.state:
262
260
  raise RuntimeError(
263
261
  f"The state for stream {self._stream_name} should have at least one slice to delineate the sync start time, but no slices are present. This is unexpected. Please contact Support."
264
262
  )
265
- self._concurrent_state["slices"].append(
263
+ self.state["slices"].append(
266
264
  {
267
265
  self._connector_state_converter.START_KEY: self._extract_from_slice(
268
266
  partition, self._slice_boundary_fields[self._START_BOUNDARY]
@@ -290,7 +288,7 @@ class ConcurrentCursor(Cursor):
290
288
  "expected. Please contact the Airbyte team."
291
289
  )
292
290
 
293
- self._concurrent_state["slices"].append(
291
+ self.state["slices"].append(
294
292
  {
295
293
  self._connector_state_converter.START_KEY: self.start,
296
294
  self._connector_state_converter.END_KEY: most_recent_cursor_value,
@@ -302,7 +300,9 @@ class ConcurrentCursor(Cursor):
302
300
  self._connector_state_manager.update_state_for_stream(
303
301
  self._stream_name,
304
302
  self._stream_namespace,
305
- self.state,
303
+ self._connector_state_converter.convert_to_state_message(
304
+ self._cursor_field, self.state
305
+ ),
306
306
  )
307
307
  state_message = self._connector_state_manager.create_state_message(
308
308
  self._stream_name, self._stream_namespace
@@ -310,9 +310,7 @@ class ConcurrentCursor(Cursor):
310
310
  self._message_repository.emit_message(state_message)
311
311
 
312
312
  def _merge_partitions(self) -> None:
313
- self._concurrent_state["slices"] = self._connector_state_converter.merge_intervals(
314
- self._concurrent_state["slices"]
315
- )
313
+ self.state["slices"] = self._connector_state_converter.merge_intervals(self.state["slices"])
316
314
 
317
315
  def _extract_from_slice(self, partition: Partition, key: str) -> CursorValueType:
318
316
  try:
@@ -349,42 +347,36 @@ class ConcurrentCursor(Cursor):
349
347
  if self._start is not None and self._is_start_before_first_slice():
350
348
  yield from self._split_per_slice_range(
351
349
  self._start,
352
- self._concurrent_state["slices"][0][self._connector_state_converter.START_KEY],
350
+ self.state["slices"][0][self._connector_state_converter.START_KEY],
353
351
  False,
354
352
  )
355
353
 
356
- if len(self._concurrent_state["slices"]) == 1:
354
+ if len(self.state["slices"]) == 1:
357
355
  yield from self._split_per_slice_range(
358
356
  self._calculate_lower_boundary_of_last_slice(
359
- self._concurrent_state["slices"][0][self._connector_state_converter.END_KEY]
357
+ self.state["slices"][0][self._connector_state_converter.END_KEY]
360
358
  ),
361
359
  self._end_provider(),
362
360
  True,
363
361
  )
364
- elif len(self._concurrent_state["slices"]) > 1:
365
- for i in range(len(self._concurrent_state["slices"]) - 1):
362
+ elif len(self.state["slices"]) > 1:
363
+ for i in range(len(self.state["slices"]) - 1):
366
364
  if self._cursor_granularity:
367
365
  yield from self._split_per_slice_range(
368
- self._concurrent_state["slices"][i][self._connector_state_converter.END_KEY]
366
+ self.state["slices"][i][self._connector_state_converter.END_KEY]
369
367
  + self._cursor_granularity,
370
- self._concurrent_state["slices"][i + 1][
371
- self._connector_state_converter.START_KEY
372
- ],
368
+ self.state["slices"][i + 1][self._connector_state_converter.START_KEY],
373
369
  False,
374
370
  )
375
371
  else:
376
372
  yield from self._split_per_slice_range(
377
- self._concurrent_state["slices"][i][
378
- self._connector_state_converter.END_KEY
379
- ],
380
- self._concurrent_state["slices"][i + 1][
381
- self._connector_state_converter.START_KEY
382
- ],
373
+ self.state["slices"][i][self._connector_state_converter.END_KEY],
374
+ self.state["slices"][i + 1][self._connector_state_converter.START_KEY],
383
375
  False,
384
376
  )
385
377
  yield from self._split_per_slice_range(
386
378
  self._calculate_lower_boundary_of_last_slice(
387
- self._concurrent_state["slices"][-1][self._connector_state_converter.END_KEY]
379
+ self.state["slices"][-1][self._connector_state_converter.END_KEY]
388
380
  ),
389
381
  self._end_provider(),
390
382
  True,
@@ -395,8 +387,7 @@ class ConcurrentCursor(Cursor):
395
387
  def _is_start_before_first_slice(self) -> bool:
396
388
  return (
397
389
  self._start is not None
398
- and self._start
399
- < self._concurrent_state["slices"][0][self._connector_state_converter.START_KEY]
390
+ and self._start < self.state["slices"][0][self._connector_state_converter.START_KEY]
400
391
  )
401
392
 
402
393
  def _calculate_lower_boundary_of_last_slice(
@@ -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.17.1dev1" # Version will be calculated dynamically.
26
+ version = "6.18.0dev1" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false