airbyte-cdk 6.60.7__tar.gz → 6.60.8__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 (433) hide show
  1. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/connector_builder_handler.py +36 -32
  3. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/main.py +3 -3
  4. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/test_reader/helpers.py +2 -24
  5. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +21 -14
  6. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +18 -29
  7. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +3 -54
  8. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -4
  9. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/http_requester.py +1 -7
  10. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -20
  11. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer_test_read_decorator.py +2 -2
  12. airbyte_cdk-6.60.8/airbyte_cdk/sources/streams/concurrent/partition_reader.py +45 -0
  13. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +1 -7
  14. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/slice_logger.py +0 -4
  15. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/pyproject.toml +1 -1
  16. airbyte_cdk-6.60.7/airbyte_cdk/sources/message/concurrent_repository.py +0 -43
  17. airbyte_cdk-6.60.7/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -84
  18. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/LICENSE.txt +0 -0
  19. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/LICENSE_SHORT +0 -0
  20. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/README.md +0 -0
  21. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/__init__.py +0 -0
  22. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/__init__.py +0 -0
  23. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/__init__.py +0 -0
  24. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/_connector.py +0 -0
  25. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/_image.py +0 -0
  26. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/_manifest.py +0 -0
  27. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/_secrets.py +0 -0
  28. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/_version.py +0 -0
  29. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/airbyte_cdk/exceptions.py +0 -0
  30. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/source_declarative_manifest/README.md +0 -0
  31. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  32. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  33. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  34. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/config_observation.py +0 -0
  35. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector.py +0 -0
  36. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/README.md +0 -0
  37. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/__init__.py +0 -0
  38. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/models.py +0 -0
  39. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  40. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  41. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  42. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  43. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/__init__.py +0 -0
  44. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/destination.py +0 -0
  45. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  46. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  47. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  48. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  49. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  50. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  51. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  52. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  53. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  54. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/entrypoint.py +0 -0
  55. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/exception_handler.py +0 -0
  56. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/logger.py +0 -0
  57. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/README.md +0 -0
  58. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/__init__.py +0 -0
  59. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/exceptions.py +0 -0
  60. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/manifest_migration.py +0 -0
  61. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migration_handler.py +0 -0
  62. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations/__init__.py +0 -0
  63. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations/http_requester_path_to_url.py +0 -0
  64. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data_to_request_body.py +0 -0
  65. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py +0 -0
  66. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations/registry.yaml +0 -0
  67. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/manifest_migrations/migrations_registry.py +0 -0
  68. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/models/__init__.py +0 -0
  69. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  70. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  71. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/models/connector_metadata.py +0 -0
  72. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/models/well_known_types.py +0 -0
  73. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/py.typed +0 -0
  74. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/__init__.py +0 -0
  75. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/abstract_source.py +0 -0
  76. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  77. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  78. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  79. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  80. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  81. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/config.py +0 -0
  82. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  83. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  84. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  85. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  86. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  87. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  88. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  89. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  90. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  91. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  92. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  93. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  94. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  95. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  96. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  97. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  98. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  99. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  100. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  101. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  102. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  103. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  104. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  105. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  106. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  107. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
  108. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  109. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  110. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  111. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  112. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  113. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  114. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  115. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  116. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  117. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  118. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  119. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  120. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  121. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  122. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  123. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  124. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  125. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  126. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  127. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  128. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  129. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  130. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  131. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  132. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  133. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  134. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  135. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  136. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  137. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  138. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  139. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  140. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  141. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  142. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  143. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  144. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  145. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  146. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  147. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  148. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  149. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  150. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +0 -0
  151. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  152. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  153. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  154. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  155. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  156. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py +0 -0
  157. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  158. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  159. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  160. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  161. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  162. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  163. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  164. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  165. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  166. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  167. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  168. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  169. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  170. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  171. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  172. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  173. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  174. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  175. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  176. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  177. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  178. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  179. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  180. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  181. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  182. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  183. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  184. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  185. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  186. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  187. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  188. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  189. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  190. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  191. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  192. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
  193. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
  194. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
  195. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
  196. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
  197. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
  198. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
  199. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  200. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  201. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  202. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  203. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  204. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  205. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  206. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  207. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  208. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  209. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  210. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  211. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  212. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  213. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/resolvers/parametrized_components_resolver.py +0 -0
  214. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  215. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  216. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/__init__.py +0 -0
  217. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/connector_builder_file_uploader.py +0 -0
  218. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/default_file_uploader.py +0 -0
  219. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_uploader.py +0 -0
  220. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_writer.py +0 -0
  221. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_writer.py +0 -0
  222. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py +0 -0
  223. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  224. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  225. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  226. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/composite_schema_loader.py +0 -0
  227. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  228. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  229. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  230. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  231. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  232. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  233. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  234. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  235. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  236. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  237. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  238. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/config_transformations/__init__.py +0 -0
  239. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/config_transformations/add_fields.py +0 -0
  240. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/config_transformations/config_transformation.py +0 -0
  241. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/config_transformations/remap_field.py +0 -0
  242. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/config_transformations/remove_fields.py +0 -0
  243. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  244. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  245. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  246. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  247. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  248. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  249. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  250. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/types.py +0 -0
  251. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/__init__.py +0 -0
  252. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/dpath_validator.py +0 -0
  253. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/predicate_validator.py +0 -0
  254. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/validate_adheres_to_schema.py +0 -0
  255. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/validation_strategy.py +0 -0
  256. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/validators/validator.py +0 -0
  257. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  258. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/README.md +0 -0
  259. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  260. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  261. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  262. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  263. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  264. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  265. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  266. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  267. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  268. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  269. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  270. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  271. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  272. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  273. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  274. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  275. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  276. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  277. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  278. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  279. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  280. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_record_data.py +0 -0
  281. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  282. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  283. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  284. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  285. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  286. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  287. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  288. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  289. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  290. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  291. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  292. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  293. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  294. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  295. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  296. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  297. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  298. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  299. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  300. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  301. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  302. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  303. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  304. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  305. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  306. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  307. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  308. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  309. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/file_based/types.py +0 -0
  310. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/http_config.py +0 -0
  311. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/http_logger.py +0 -0
  312. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/message/__init__.py +0 -0
  313. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/message/repository.py +0 -0
  314. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/source.py +0 -0
  315. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  316. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/__init__.py +0 -0
  317. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  318. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  319. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  320. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  321. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  322. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  323. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  324. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  325. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  326. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  327. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  328. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  329. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  330. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  331. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  332. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  333. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  334. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  335. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  336. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  337. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  338. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  339. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  340. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  341. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  342. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  343. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  344. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  345. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  346. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/core.py +0 -0
  347. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  348. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  349. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  350. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  351. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  352. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  353. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  354. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  355. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  356. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  357. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  358. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  359. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/http.py +0 -0
  360. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  361. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  362. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  363. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  364. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  365. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  366. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  367. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  368. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  369. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/types.py +0 -0
  370. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/__init__.py +0 -0
  371. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/casing.py +0 -0
  372. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/files_directory.py +0 -0
  373. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  374. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  375. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/transform.py +0 -0
  376. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sources/utils/types.py +0 -0
  377. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/__init__.py +0 -0
  378. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/_util/__init__.py +0 -0
  379. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/_util/hashing.py +0 -0
  380. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  381. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/constants.py +0 -0
  382. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/exceptions.py +0 -0
  383. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/secrets.py +0 -0
  384. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/shared/__init__.py +0 -0
  385. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  386. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  387. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/sql/types.py +0 -0
  388. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/__init__.py +0 -0
  389. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/catalog_builder.py +0 -0
  390. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  391. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  392. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  393. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  394. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/request.py +0 -0
  395. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/response.py +0 -0
  396. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  397. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/models/__init__.py +0 -0
  398. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/models/outcome.py +0 -0
  399. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/models/scenario.py +0 -0
  400. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/__init__.py +0 -0
  401. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/_job_runner.py +0 -0
  402. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/connector_base.py +0 -0
  403. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/declarative_sources.py +0 -0
  404. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/destination_base.py +0 -0
  405. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/docker_base.py +0 -0
  406. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/pytest_hooks.py +0 -0
  407. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/source_base.py +0 -0
  408. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/standard_tests/util.py +0 -0
  409. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/state_builder.py +0 -0
  410. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/utils/__init__.py +0 -0
  411. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/utils/data.py +0 -0
  412. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  413. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  414. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/test/utils/reading.py +0 -0
  415. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/__init__.py +0 -0
  416. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  417. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/analytics_message.py +0 -0
  418. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/connector_paths.py +0 -0
  419. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/constants.py +0 -0
  420. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  421. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  422. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/docker.py +0 -0
  423. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/event_timing.py +0 -0
  424. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  425. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  426. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/message_utils.py +0 -0
  427. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  428. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/print_buffer.py +0 -0
  429. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  430. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/slice_hasher.py +0 -0
  431. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  432. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  433. {airbyte_cdk-6.60.7 → airbyte_cdk-6.60.8}/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.60.7
3
+ Version: 6.60.8
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -3,8 +3,8 @@
3
3
  #
4
4
 
5
5
 
6
- from dataclasses import asdict
7
- from typing import Any, Dict, List, Mapping, Optional
6
+ from dataclasses import asdict, dataclass, field
7
+ from typing import Any, ClassVar, Dict, List, Mapping
8
8
 
9
9
  from airbyte_cdk.connector_builder.test_reader import TestReader
10
10
  from airbyte_cdk.models import (
@@ -15,32 +15,45 @@ from airbyte_cdk.models import (
15
15
  Type,
16
16
  )
17
17
  from airbyte_cdk.models import Type as MessageType
18
- from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
19
- ConcurrentDeclarativeSource,
20
- TestLimits,
21
- )
22
18
  from airbyte_cdk.sources.declarative.declarative_source import DeclarativeSource
23
19
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
20
+ from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
21
+ ModelToComponentFactory,
22
+ )
24
23
  from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
25
24
  from airbyte_cdk.utils.datetime_helpers import ab_datetime_now
26
25
  from airbyte_cdk.utils.traced_exception import AirbyteTracedException
27
26
 
27
+ DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE = 5
28
+ DEFAULT_MAXIMUM_NUMBER_OF_SLICES = 5
29
+ DEFAULT_MAXIMUM_RECORDS = 100
30
+ DEFAULT_MAXIMUM_STREAMS = 100
31
+
28
32
  MAX_PAGES_PER_SLICE_KEY = "max_pages_per_slice"
29
33
  MAX_SLICES_KEY = "max_slices"
30
34
  MAX_RECORDS_KEY = "max_records"
31
35
  MAX_STREAMS_KEY = "max_streams"
32
36
 
33
37
 
38
+ @dataclass
39
+ class TestLimits:
40
+ __test__: ClassVar[bool] = False # Tell Pytest this is not a Pytest class, despite its name
41
+
42
+ max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
43
+ max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
44
+ max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
45
+ max_streams: int = field(default=DEFAULT_MAXIMUM_STREAMS)
46
+
47
+
34
48
  def get_limits(config: Mapping[str, Any]) -> TestLimits:
35
49
  command_config = config.get("__test_read_config", {})
36
- return TestLimits(
37
- max_records=command_config.get(MAX_RECORDS_KEY, TestLimits.DEFAULT_MAX_RECORDS),
38
- max_pages_per_slice=command_config.get(
39
- MAX_PAGES_PER_SLICE_KEY, TestLimits.DEFAULT_MAX_PAGES_PER_SLICE
40
- ),
41
- max_slices=command_config.get(MAX_SLICES_KEY, TestLimits.DEFAULT_MAX_SLICES),
42
- max_streams=command_config.get(MAX_STREAMS_KEY, TestLimits.DEFAULT_MAX_STREAMS),
50
+ max_pages_per_slice = (
51
+ command_config.get(MAX_PAGES_PER_SLICE_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE
43
52
  )
53
+ max_slices = command_config.get(MAX_SLICES_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_SLICES
54
+ max_records = command_config.get(MAX_RECORDS_KEY) or DEFAULT_MAXIMUM_RECORDS
55
+ max_streams = command_config.get(MAX_STREAMS_KEY) or DEFAULT_MAXIMUM_STREAMS
56
+ return TestLimits(max_records, max_pages_per_slice, max_slices, max_streams)
44
57
 
45
58
 
46
59
  def should_migrate_manifest(config: Mapping[str, Any]) -> bool:
@@ -62,30 +75,21 @@ def should_normalize_manifest(config: Mapping[str, Any]) -> bool:
62
75
  return config.get("__should_normalize", False)
63
76
 
64
77
 
65
- def create_source(
66
- config: Mapping[str, Any],
67
- limits: TestLimits,
68
- catalog: Optional[ConfiguredAirbyteCatalog],
69
- state: Optional[List[AirbyteStateMessage]],
70
- ) -> ConcurrentDeclarativeSource[Optional[List[AirbyteStateMessage]]]:
78
+ def create_source(config: Mapping[str, Any], limits: TestLimits) -> ManifestDeclarativeSource:
71
79
  manifest = config["__injected_declarative_manifest"]
72
-
73
- # We enforce a concurrency level of 1 so that the stream is processed on a single thread
74
- # to retain ordering for the grouping of the builder message responses.
75
- if "concurrency_level" in manifest:
76
- manifest["concurrency_level"]["default_concurrency"] = 1
77
- else:
78
- manifest["concurrency_level"] = {"type": "ConcurrencyLevel", "default_concurrency": 1}
79
-
80
- return ConcurrentDeclarativeSource(
81
- catalog=catalog,
80
+ return ManifestDeclarativeSource(
82
81
  config=config,
83
- state=state,
84
- source_config=manifest,
85
82
  emit_connector_builder_messages=True,
83
+ source_config=manifest,
86
84
  migrate_manifest=should_migrate_manifest(config),
87
85
  normalize_manifest=should_normalize_manifest(config),
88
- limits=limits,
86
+ component_factory=ModelToComponentFactory(
87
+ emit_connector_builder_messages=True,
88
+ limit_pages_fetched_per_slice=limits.max_pages_per_slice,
89
+ limit_slices_fetched=limits.max_slices,
90
+ disable_retries=True,
91
+ disable_cache=True,
92
+ ),
89
93
  )
90
94
 
91
95
 
@@ -91,12 +91,12 @@ def handle_connector_builder_request(
91
91
  def handle_request(args: List[str]) -> str:
92
92
  command, config, catalog, state = get_config_and_catalog_from_args(args)
93
93
  limits = get_limits(config)
94
- source = create_source(config=config, limits=limits, catalog=catalog, state=state)
95
- return orjson.dumps( # type: ignore[no-any-return] # Serializer.dump() always returns AirbyteMessage
94
+ source = create_source(config, limits)
95
+ return orjson.dumps(
96
96
  AirbyteMessageSerializer.dump(
97
97
  handle_connector_builder_request(source, command, config, catalog, state, limits)
98
98
  )
99
- ).decode()
99
+ ).decode() # type: ignore[no-any-return] # Serializer.dump() always returns AirbyteMessage
100
100
 
101
101
 
102
102
  if __name__ == "__main__":
@@ -5,7 +5,7 @@
5
5
  import json
6
6
  from copy import deepcopy
7
7
  from json import JSONDecodeError
8
- from typing import Any, Dict, List, Mapping, Optional, Union
8
+ from typing import Any, Dict, List, Mapping, Optional
9
9
 
10
10
  from airbyte_cdk.connector_builder.models import (
11
11
  AuxiliaryRequest,
@@ -17,8 +17,6 @@ from airbyte_cdk.connector_builder.models import (
17
17
  from airbyte_cdk.models import (
18
18
  AirbyteLogMessage,
19
19
  AirbyteMessage,
20
- AirbyteStateBlob,
21
- AirbyteStateMessage,
22
20
  OrchestratorType,
23
21
  TraceType,
24
22
  )
@@ -468,7 +466,7 @@ def handle_current_slice(
468
466
  return StreamReadSlices(
469
467
  pages=current_slice_pages,
470
468
  slice_descriptor=current_slice_descriptor,
471
- state=[convert_state_blob_to_mapping(latest_state_message)] if latest_state_message else [],
469
+ state=[latest_state_message] if latest_state_message else [],
472
470
  auxiliary_requests=auxiliary_requests if auxiliary_requests else [],
473
471
  )
474
472
 
@@ -720,23 +718,3 @@ def get_auxiliary_request_type(stream: dict, http: dict) -> str: # type: ignore
720
718
  Determines the type of the auxiliary request based on the stream and HTTP properties.
721
719
  """
722
720
  return "PARENT_STREAM" if stream.get("is_substream", False) else str(http.get("type", None))
723
-
724
-
725
- def convert_state_blob_to_mapping(
726
- state_message: Union[AirbyteStateMessage, Dict[str, Any]],
727
- ) -> Dict[str, Any]:
728
- """
729
- The AirbyteStreamState stores state as an AirbyteStateBlob which deceivingly is not
730
- a dictionary, but rather a list of kwargs fields. This in turn causes it to not be
731
- properly turned into a dictionary when translating this back into response output
732
- by the connector_builder_handler using asdict()
733
- """
734
-
735
- if isinstance(state_message, AirbyteStateMessage) and state_message.stream:
736
- state_value = state_message.stream.stream_state
737
- if isinstance(state_value, AirbyteStateBlob):
738
- state_value_mapping = {k: v for k, v in state_value.__dict__.items()}
739
- state_message.stream.stream_state = state_value_mapping # type: ignore # we intentionally set this as a Dict so that StreamReadSlices is translated properly in the resulting HTTP response
740
- return state_message # type: ignore # See above, but when this is an AirbyteStateMessage we must convert AirbyteStateBlob to a Dict
741
- else:
742
- return state_message # type: ignore # This is guaranteed to be a Dict since we check isinstance AirbyteStateMessage above
@@ -95,14 +95,11 @@ class ConcurrentReadProcessor:
95
95
  """
96
96
  stream_name = partition.stream_name()
97
97
  self._streams_to_running_partitions[stream_name].add(partition)
98
- cursor = self._stream_name_to_instance[stream_name].cursor
99
98
  if self._slice_logger.should_log_slice_message(self._logger):
100
99
  self._message_repository.emit_message(
101
100
  self._slice_logger.create_slice_log_message(partition.to_slice())
102
101
  )
103
- self._thread_pool_manager.submit(
104
- self._partition_reader.process_partition, partition, cursor
105
- )
102
+ self._thread_pool_manager.submit(self._partition_reader.process_partition, partition)
106
103
 
107
104
  def on_partition_complete_sentinel(
108
105
  self, sentinel: PartitionCompleteSentinel
@@ -115,16 +112,26 @@ class ConcurrentReadProcessor:
115
112
  """
116
113
  partition = sentinel.partition
117
114
 
118
- partitions_running = self._streams_to_running_partitions[partition.stream_name()]
119
- if partition in partitions_running:
120
- partitions_running.remove(partition)
121
- # If all partitions were generated and this was the last one, the stream is done
122
- if (
123
- partition.stream_name() not in self._streams_currently_generating_partitions
124
- and len(partitions_running) == 0
125
- ):
126
- yield from self._on_stream_is_done(partition.stream_name())
127
- yield from self._message_repository.consume_queue()
115
+ try:
116
+ if sentinel.is_successful:
117
+ stream = self._stream_name_to_instance[partition.stream_name()]
118
+ stream.cursor.close_partition(partition)
119
+ except Exception as exception:
120
+ self._flag_exception(partition.stream_name(), exception)
121
+ yield AirbyteTracedException.from_exception(
122
+ exception, stream_descriptor=StreamDescriptor(name=partition.stream_name())
123
+ ).as_sanitized_airbyte_message()
124
+ finally:
125
+ partitions_running = self._streams_to_running_partitions[partition.stream_name()]
126
+ if partition in partitions_running:
127
+ partitions_running.remove(partition)
128
+ # If all partitions were generated and this was the last one, the stream is done
129
+ if (
130
+ partition.stream_name() not in self._streams_currently_generating_partitions
131
+ and len(partitions_running) == 0
132
+ ):
133
+ yield from self._on_stream_is_done(partition.stream_name())
134
+ yield from self._message_repository.consume_queue()
128
135
 
129
136
  def on_record(self, record: Record) -> Iterable[AirbyteMessage]:
130
137
  """
@@ -4,7 +4,7 @@
4
4
  import concurrent
5
5
  import logging
6
6
  from queue import Queue
7
- from typing import Iterable, Iterator, List, Optional
7
+ from typing import Iterable, Iterator, List
8
8
 
9
9
  from airbyte_cdk.models import AirbyteMessage
10
10
  from airbyte_cdk.sources.concurrent_source.concurrent_read_processor import ConcurrentReadProcessor
@@ -16,7 +16,7 @@ from airbyte_cdk.sources.concurrent_source.thread_pool_manager import ThreadPool
16
16
  from airbyte_cdk.sources.message import InMemoryMessageRepository, MessageRepository
17
17
  from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
18
18
  from airbyte_cdk.sources.streams.concurrent.partition_enqueuer import PartitionEnqueuer
19
- from airbyte_cdk.sources.streams.concurrent.partition_reader import PartitionLogger, PartitionReader
19
+ from airbyte_cdk.sources.streams.concurrent.partition_reader import PartitionReader
20
20
  from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
21
21
  from airbyte_cdk.sources.streams.concurrent.partitions.types import (
22
22
  PartitionCompleteSentinel,
@@ -43,7 +43,6 @@ class ConcurrentSource:
43
43
  logger: logging.Logger,
44
44
  slice_logger: SliceLogger,
45
45
  message_repository: MessageRepository,
46
- queue: Optional[Queue[QueueItem]] = None,
47
46
  timeout_seconds: int = DEFAULT_TIMEOUT_SECONDS,
48
47
  ) -> "ConcurrentSource":
49
48
  is_single_threaded = initial_number_of_partitions_to_generate == 1 and num_workers == 1
@@ -60,13 +59,12 @@ class ConcurrentSource:
60
59
  logger,
61
60
  )
62
61
  return ConcurrentSource(
63
- threadpool=threadpool,
64
- logger=logger,
65
- slice_logger=slice_logger,
66
- queue=queue,
67
- message_repository=message_repository,
68
- initial_number_partitions_to_generate=initial_number_of_partitions_to_generate,
69
- timeout_seconds=timeout_seconds,
62
+ threadpool,
63
+ logger,
64
+ slice_logger,
65
+ message_repository,
66
+ initial_number_of_partitions_to_generate,
67
+ timeout_seconds,
70
68
  )
71
69
 
72
70
  def __init__(
@@ -74,7 +72,6 @@ class ConcurrentSource:
74
72
  threadpool: ThreadPoolManager,
75
73
  logger: logging.Logger,
76
74
  slice_logger: SliceLogger = DebugSliceLogger(),
77
- queue: Optional[Queue[QueueItem]] = None,
78
75
  message_repository: MessageRepository = InMemoryMessageRepository(),
79
76
  initial_number_partitions_to_generate: int = 1,
80
77
  timeout_seconds: int = DEFAULT_TIMEOUT_SECONDS,
@@ -94,28 +91,25 @@ class ConcurrentSource:
94
91
  self._initial_number_partitions_to_generate = initial_number_partitions_to_generate
95
92
  self._timeout_seconds = timeout_seconds
96
93
 
97
- # We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
98
- # threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
99
- # partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
100
- # information and might even need to be configurable depending on the source
101
- self._queue = queue or Queue(maxsize=10_000)
102
-
103
94
  def read(
104
95
  self,
105
96
  streams: List[AbstractStream],
106
97
  ) -> Iterator[AirbyteMessage]:
107
98
  self._logger.info("Starting syncing")
99
+
100
+ # We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
101
+ # threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
102
+ # partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
103
+ # information and might even need to be configurable depending on the source
104
+ queue: Queue[QueueItem] = Queue(maxsize=10_000)
108
105
  concurrent_stream_processor = ConcurrentReadProcessor(
109
106
  streams,
110
- PartitionEnqueuer(self._queue, self._threadpool),
107
+ PartitionEnqueuer(queue, self._threadpool),
111
108
  self._threadpool,
112
109
  self._logger,
113
110
  self._slice_logger,
114
111
  self._message_repository,
115
- PartitionReader(
116
- self._queue,
117
- PartitionLogger(self._slice_logger, self._logger, self._message_repository),
118
- ),
112
+ PartitionReader(queue),
119
113
  )
120
114
 
121
115
  # Enqueue initial partition generation tasks
@@ -123,7 +117,7 @@ class ConcurrentSource:
123
117
 
124
118
  # Read from the queue until all partitions were generated and read
125
119
  yield from self._consume_from_queue(
126
- self._queue,
120
+ queue,
127
121
  concurrent_stream_processor,
128
122
  )
129
123
  self._threadpool.check_for_errors_and_shutdown()
@@ -147,10 +141,7 @@ class ConcurrentSource:
147
141
  airbyte_message_or_record_or_exception,
148
142
  concurrent_stream_processor,
149
143
  )
150
- # In the event that a partition raises an exception, anything remaining in
151
- # the queue will be missed because is_done() can raise an exception and exit
152
- # out of this loop before remaining items are consumed
153
- if queue.empty() and concurrent_stream_processor.is_done():
144
+ if concurrent_stream_processor.is_done() and queue.empty():
154
145
  # all partitions were generated and processed. we're done here
155
146
  break
156
147
 
@@ -170,7 +161,5 @@ class ConcurrentSource:
170
161
  yield from concurrent_stream_processor.on_partition_complete_sentinel(queue_item)
171
162
  elif isinstance(queue_item, Record):
172
163
  yield from concurrent_stream_processor.on_record(queue_item)
173
- elif isinstance(queue_item, AirbyteMessage):
174
- yield queue_item
175
164
  else:
176
165
  raise ValueError(f"Unknown queue item type: {type(queue_item)}")
@@ -3,11 +3,7 @@
3
3
  #
4
4
 
5
5
  import logging
6
- from dataclasses import dataclass, field
7
- from queue import Queue
8
- from typing import Any, ClassVar, Generic, Iterator, List, Mapping, MutableMapping, Optional, Tuple
9
-
10
- from airbyte_protocol_dataclasses.models import Level
6
+ from typing import Any, Generic, Iterator, List, Mapping, MutableMapping, Optional, Tuple
11
7
 
12
8
  from airbyte_cdk.models import (
13
9
  AirbyteCatalog,
@@ -52,8 +48,6 @@ from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_genera
52
48
  StreamSlicerPartitionGenerator,
53
49
  )
54
50
  from airbyte_cdk.sources.declarative.types import ConnectionDefinition
55
- from airbyte_cdk.sources.message.concurrent_repository import ConcurrentMessageRepository
56
- from airbyte_cdk.sources.message.repository import InMemoryMessageRepository, MessageRepository
57
51
  from airbyte_cdk.sources.source import TState
58
52
  from airbyte_cdk.sources.streams import Stream
59
53
  from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
@@ -64,22 +58,6 @@ from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
64
58
  from airbyte_cdk.sources.streams.concurrent.cursor import ConcurrentCursor, FinalStateCursor
65
59
  from airbyte_cdk.sources.streams.concurrent.default_stream import DefaultStream
66
60
  from airbyte_cdk.sources.streams.concurrent.helpers import get_primary_key_from_stream
67
- from airbyte_cdk.sources.streams.concurrent.partitions.types import QueueItem
68
-
69
-
70
- @dataclass
71
- class TestLimits:
72
- __test__: ClassVar[bool] = False # Tell Pytest this is not a Pytest class, despite its name
73
-
74
- DEFAULT_MAX_PAGES_PER_SLICE: ClassVar[int] = 5
75
- DEFAULT_MAX_SLICES: ClassVar[int] = 5
76
- DEFAULT_MAX_RECORDS: ClassVar[int] = 100
77
- DEFAULT_MAX_STREAMS: ClassVar[int] = 100
78
-
79
- max_records: int = field(default=DEFAULT_MAX_RECORDS)
80
- max_pages_per_slice: int = field(default=DEFAULT_MAX_PAGES_PER_SLICE)
81
- max_slices: int = field(default=DEFAULT_MAX_SLICES)
82
- max_streams: int = field(default=DEFAULT_MAX_STREAMS)
83
61
 
84
62
 
85
63
  class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
@@ -95,9 +73,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
95
73
  source_config: ConnectionDefinition,
96
74
  debug: bool = False,
97
75
  emit_connector_builder_messages: bool = False,
98
- migrate_manifest: bool = False,
99
- normalize_manifest: bool = False,
100
- limits: Optional[TestLimits] = None,
76
+ component_factory: Optional[ModelToComponentFactory] = None,
101
77
  config_path: Optional[str] = None,
102
78
  **kwargs: Any,
103
79
  ) -> None:
@@ -105,40 +81,22 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
105
81
  # no longer needs to store the original incoming state. But maybe there's an edge case?
106
82
  self._connector_state_manager = ConnectorStateManager(state=state) # type: ignore # state is always in the form of List[AirbyteStateMessage]. The ConnectorStateManager should use generics, but this can be done later
107
83
 
108
- # We set a maxsize to for the main thread to process record items when the queue size grows. This assumes that there are less
109
- # threads generating partitions that than are max number of workers. If it weren't the case, we could have threads only generating
110
- # partitions which would fill the queue. This number is arbitrarily set to 10_000 but will probably need to be changed given more
111
- # information and might even need to be configurable depending on the source
112
- queue: Queue[QueueItem] = Queue(maxsize=10_000)
113
- message_repository = InMemoryMessageRepository(
114
- Level.DEBUG if emit_connector_builder_messages else Level.INFO
115
- )
116
-
117
84
  # To reduce the complexity of the concurrent framework, we are not enabling RFR with synthetic
118
85
  # cursors. We do this by no longer automatically instantiating RFR cursors when converting
119
86
  # the declarative models into runtime components. Concurrent sources will continue to checkpoint
120
87
  # incremental streams running in full refresh.
121
- component_factory = ModelToComponentFactory(
88
+ component_factory = component_factory or ModelToComponentFactory(
122
89
  emit_connector_builder_messages=emit_connector_builder_messages,
123
90
  disable_resumable_full_refresh=True,
124
- message_repository=ConcurrentMessageRepository(queue, message_repository),
125
91
  connector_state_manager=self._connector_state_manager,
126
92
  max_concurrent_async_job_count=source_config.get("max_concurrent_async_job_count"),
127
- limit_pages_fetched_per_slice=limits.max_pages_per_slice if limits else None,
128
- limit_slices_fetched=limits.max_slices if limits else None,
129
- disable_retries=True if limits else False,
130
- disable_cache=True if limits else False,
131
93
  )
132
94
 
133
- self._limits = limits
134
-
135
95
  super().__init__(
136
96
  source_config=source_config,
137
97
  config=config,
138
98
  debug=debug,
139
99
  emit_connector_builder_messages=emit_connector_builder_messages,
140
- migrate_manifest=migrate_manifest,
141
- normalize_manifest=normalize_manifest,
142
100
  component_factory=component_factory,
143
101
  config_path=config_path,
144
102
  )
@@ -168,7 +126,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
168
126
  initial_number_of_partitions_to_generate=initial_number_of_partitions_to_generate,
169
127
  logger=self.logger,
170
128
  slice_logger=self._slice_logger,
171
- queue=queue,
172
129
  message_repository=self.message_repository,
173
130
  )
174
131
 
@@ -330,9 +287,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
330
287
  self.message_repository,
331
288
  ),
332
289
  stream_slicer=declarative_stream.retriever.stream_slicer,
333
- slice_limit=self._limits.max_slices
334
- if self._limits
335
- else None, # technically not needed because create_declarative_stream() -> create_simple_retriever() will apply the decorator. But for consistency and depending how we build create_default_stream, this may be needed later
336
290
  )
337
291
  else:
338
292
  if (
@@ -364,7 +318,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
364
318
  self.message_repository,
365
319
  ),
366
320
  stream_slicer=cursor,
367
- slice_limit=self._limits.max_slices if self._limits else None,
368
321
  )
369
322
 
370
323
  concurrent_streams.append(
@@ -396,9 +349,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
396
349
  self.message_repository,
397
350
  ),
398
351
  declarative_stream.retriever.stream_slicer,
399
- slice_limit=self._limits.max_slices
400
- if self._limits
401
- else None, # technically not needed because create_declarative_stream() -> create_simple_retriever() will apply the decorator. But for consistency and depending how we build create_default_stream, this may be needed later
402
352
  )
403
353
 
404
354
  final_state_cursor = FinalStateCursor(
@@ -460,7 +410,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
460
410
  self.message_repository,
461
411
  ),
462
412
  perpartition_cursor,
463
- slice_limit=self._limits.max_slices if self._limits else None,
464
413
  )
465
414
 
466
415
  concurrent_streams.append(
@@ -622,10 +622,6 @@ SCHEMA_TRANSFORMER_TYPE_MAPPING = {
622
622
  SchemaNormalizationModel.Default: TransformConfig.DefaultSchemaNormalization,
623
623
  }
624
624
 
625
- # Ideally this should use the value defined in ConcurrentDeclarativeSource, but
626
- # this would be a circular import
627
- MAX_SLICES = 5
628
-
629
625
 
630
626
  class ModelToComponentFactory:
631
627
  EPOCH_DATETIME_FORMAT = "%s"
@@ -168,13 +168,7 @@ class HttpRequester(Requester):
168
168
  next_page_token=next_page_token,
169
169
  )
170
170
 
171
- full_url = (
172
- self._join_url(url_base, path)
173
- if url_base
174
- else self._join_url(url, path)
175
- if path
176
- else url
177
- )
171
+ full_url = self._join_url(url_base, path) if url_base else url + path if path else url
178
172
 
179
173
  return full_url
180
174
 
@@ -1,11 +1,8 @@
1
- # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
2
 
3
- from typing import Any, Iterable, Mapping, Optional, cast
3
+ from typing import Any, Iterable, Mapping, Optional
4
4
 
5
5
  from airbyte_cdk.sources.declarative.retrievers import Retriever
6
- from airbyte_cdk.sources.declarative.stream_slicers.stream_slicer_test_read_decorator import (
7
- StreamSlicerTestReadDecorator,
8
- )
9
6
  from airbyte_cdk.sources.message import MessageRepository
10
7
  from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
11
8
  from airbyte_cdk.sources.streams.concurrent.partitions.partition_generator import PartitionGenerator
@@ -86,23 +83,10 @@ class DeclarativePartition(Partition):
86
83
 
87
84
  class StreamSlicerPartitionGenerator(PartitionGenerator):
88
85
  def __init__(
89
- self,
90
- partition_factory: DeclarativePartitionFactory,
91
- stream_slicer: StreamSlicer,
92
- slice_limit: Optional[int] = None,
86
+ self, partition_factory: DeclarativePartitionFactory, stream_slicer: StreamSlicer
93
87
  ) -> None:
94
88
  self._partition_factory = partition_factory
95
-
96
- if slice_limit:
97
- self._stream_slicer = cast(
98
- StreamSlicer,
99
- StreamSlicerTestReadDecorator(
100
- wrapped_slicer=stream_slicer,
101
- maximum_number_of_slices=slice_limit,
102
- ),
103
- )
104
- else:
105
- self._stream_slicer = stream_slicer
89
+ self._stream_slicer = stream_slicer
106
90
 
107
91
  def generate(self) -> Iterable[Partition]:
108
92
  for stream_slice in self._stream_slicer.stream_slices():
@@ -4,10 +4,10 @@
4
4
 
5
5
  from dataclasses import dataclass
6
6
  from itertools import islice
7
- from typing import Any, Iterable
7
+ from typing import Any, Iterable, Mapping, Optional, Union
8
8
 
9
9
  from airbyte_cdk.sources.streams.concurrent.partitions.stream_slicer import StreamSlicer
10
- from airbyte_cdk.sources.types import StreamSlice
10
+ from airbyte_cdk.sources.types import StreamSlice, StreamState
11
11
 
12
12
 
13
13
  @dataclass
@@ -0,0 +1,45 @@
1
+ #
2
+ # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
+ #
4
+ from queue import Queue
5
+
6
+ from airbyte_cdk.sources.concurrent_source.stream_thread_exception import StreamThreadException
7
+ from airbyte_cdk.sources.streams.concurrent.partitions.partition import Partition
8
+ from airbyte_cdk.sources.streams.concurrent.partitions.types import (
9
+ PartitionCompleteSentinel,
10
+ QueueItem,
11
+ )
12
+
13
+
14
+ class PartitionReader:
15
+ """
16
+ Generates records from a partition and puts them in a queue.
17
+ """
18
+
19
+ _IS_SUCCESSFUL = True
20
+
21
+ def __init__(self, queue: Queue[QueueItem]) -> None:
22
+ """
23
+ :param queue: The queue to put the records in.
24
+ """
25
+ self._queue = queue
26
+
27
+ def process_partition(self, partition: Partition) -> None:
28
+ """
29
+ Process a partition and put the records in the output queue.
30
+ When all the partitions are added to the queue, a sentinel is added to the queue to indicate that all the partitions have been generated.
31
+
32
+ If an exception is encountered, the exception will be caught and put in the queue. This is very important because if we don't, the
33
+ main thread will have no way to know that something when wrong and will wait until the timeout is reached
34
+
35
+ This method is meant to be called from a thread.
36
+ :param partition: The partition to read data from
37
+ :return: None
38
+ """
39
+ try:
40
+ for record in partition.read():
41
+ self._queue.put(record)
42
+ self._queue.put(PartitionCompleteSentinel(partition, self._IS_SUCCESSFUL))
43
+ except Exception as e:
44
+ self._queue.put(StreamThreadException(e, partition.stream_name()))
45
+ self._queue.put(PartitionCompleteSentinel(partition, not self._IS_SUCCESSFUL))
@@ -4,7 +4,6 @@
4
4
 
5
5
  from typing import Any, Union
6
6
 
7
- from airbyte_cdk.models import AirbyteMessage
8
7
  from airbyte_cdk.sources.concurrent_source.partition_generation_completed_sentinel import (
9
8
  PartitionGenerationCompletedSentinel,
10
9
  )
@@ -35,10 +34,5 @@ class PartitionCompleteSentinel:
35
34
  Typedef representing the items that can be added to the ThreadBasedConcurrentStream
36
35
  """
37
36
  QueueItem = Union[
38
- Record,
39
- Partition,
40
- PartitionCompleteSentinel,
41
- PartitionGenerationCompletedSentinel,
42
- Exception,
43
- AirbyteMessage,
37
+ Record, Partition, PartitionCompleteSentinel, PartitionGenerationCompletedSentinel, Exception
44
38
  ]
@@ -11,10 +11,6 @@ from airbyte_cdk.models import AirbyteLogMessage, AirbyteMessage, Level
11
11
  from airbyte_cdk.models import Type as MessageType
12
12
 
13
13
 
14
- # Once everything runs on the concurrent CDK and we've cleaned up the legacy flows, we should try to remove
15
- # this class and write messages directly to the message_repository instead of through the logger because for
16
- # cases like the connector builder where ordering of messages is important, using the logger can cause
17
- # messages to be grouped out of order. Alas work for a different day.
18
14
  class SliceLogger(ABC):
19
15
  """
20
16
  SliceLogger is an interface that allows us to log slices of data in a uniform way.