airbyte-cdk 6.34.0.dev1__tar.gz → 6.34.1.dev0__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 (372) hide show
  1. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector_builder/connector_builder_handler.py +12 -16
  3. airbyte_cdk-6.34.1.dev0/airbyte_cdk/connector_builder/message_grouper.py +448 -0
  4. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +7 -7
  5. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/jwt.py +11 -17
  6. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/oauth.py +1 -6
  7. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/token.py +8 -3
  8. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +19 -30
  9. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +85 -203
  10. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/declarative_stream.py +1 -3
  11. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/__init__.py +4 -0
  12. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +2 -7
  13. airbyte_cdk-6.34.1.dev0/airbyte_cdk/sources/declarative/decoders/json_decoder.py +111 -0
  14. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +3 -12
  15. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +25 -56
  16. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +6 -12
  17. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -9
  18. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +41 -150
  19. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +84 -234
  20. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +5 -5
  21. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +2 -4
  22. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +18 -26
  23. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +1 -8
  24. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +5 -16
  25. airbyte_cdk-6.34.1.dev0/airbyte_cdk/sources/declarative/requesters/request_option.py +38 -0
  26. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +6 -7
  27. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +12 -6
  28. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -4
  29. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +1 -2
  30. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_based_source.py +37 -70
  31. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +12 -107
  32. airbyte_cdk-6.34.1.dev0/airbyte_cdk/sources/file_based/stream/__init__.py +4 -0
  33. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/call_rate.py +47 -185
  34. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/http.py +2 -1
  35. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +56 -217
  36. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +73 -144
  37. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/datetime_helpers.py +66 -48
  38. airbyte_cdk-6.34.1.dev0/airbyte_cdk/utils/mapping_helpers.py +45 -0
  39. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/pyproject.toml +1 -1
  40. airbyte_cdk-6.34.0.dev1/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -7
  41. airbyte_cdk-6.34.0.dev1/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -591
  42. airbyte_cdk-6.34.0.dev1/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -160
  43. airbyte_cdk-6.34.0.dev1/airbyte_cdk/connector_builder/test_reader/reader.py +0 -441
  44. airbyte_cdk-6.34.0.dev1/airbyte_cdk/connector_builder/test_reader/types.py +0 -75
  45. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -65
  46. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -117
  47. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -81
  48. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/file_based/stream/__init__.py +0 -13
  49. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -47
  50. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -85
  51. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/specs/transfer_modes.py +0 -26
  52. airbyte_cdk-6.34.0.dev1/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -75
  53. airbyte_cdk-6.34.0.dev1/airbyte_cdk/utils/mapping_helpers.py +0 -145
  54. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/LICENSE.txt +0 -0
  55. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/LICENSE_SHORT +0 -0
  56. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/README.md +0 -0
  57. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/__init__.py +0 -0
  58. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/cli/__init__.py +0 -0
  59. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  60. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  61. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  62. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/config_observation.py +0 -0
  63. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector.py +0 -0
  64. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector_builder/README.md +0 -0
  65. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  66. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector_builder/main.py +0 -0
  67. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/connector_builder/models.py +0 -0
  68. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/__init__.py +0 -0
  69. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/destination.py +0 -0
  70. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  71. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  72. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  73. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  74. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  75. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  76. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  77. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  78. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  79. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/entrypoint.py +0 -0
  80. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/exception_handler.py +0 -0
  81. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/logger.py +0 -0
  82. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/models/__init__.py +0 -0
  83. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  84. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  85. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  86. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/models/well_known_types.py +0 -0
  87. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/py.typed +0 -0
  88. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/__init__.py +0 -0
  89. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/abstract_source.py +0 -0
  90. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  91. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  92. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  93. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  94. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  95. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  96. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  97. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/config.py +0 -0
  98. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  99. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  100. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  101. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  102. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  103. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  104. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  105. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  106. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  107. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  108. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  109. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  110. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  111. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  112. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  113. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  114. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  115. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  116. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  117. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  118. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  119. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  120. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  121. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  122. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  123. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  124. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  125. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  126. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  127. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  128. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  129. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  130. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  131. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  132. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  133. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  134. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  135. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  136. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  137. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  138. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  139. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  140. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  141. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  142. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  143. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  144. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  145. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  146. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  147. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  148. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  149. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  150. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  151. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  152. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  153. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  154. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  155. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  156. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  157. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  158. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  159. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  160. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  161. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  162. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  163. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  164. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  165. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  166. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  167. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  168. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  169. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  170. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  171. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  172. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  173. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  174. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  175. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  176. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  177. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  178. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  179. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  180. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  181. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  182. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  183. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  184. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  185. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  186. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  187. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  188. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  189. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  190. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  191. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  192. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  193. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  194. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  195. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  196. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  197. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  198. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  199. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  200. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  201. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  202. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  203. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  204. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  205. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  206. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  207. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  208. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  209. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  210. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  211. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  212. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  213. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  214. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  215. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  216. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  217. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  218. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  219. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  220. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/types.py +0 -0
  221. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  222. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  223. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  224. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  225. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/embedded/runner.py +0 -0
  226. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/embedded/tools.py +0 -0
  227. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/README.md +0 -0
  228. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  229. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  230. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  231. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  232. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  233. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  234. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  235. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  236. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  237. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  238. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  239. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  240. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  241. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  242. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  243. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  244. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  245. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  246. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  247. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  248. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  249. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  250. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  251. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  252. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  253. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  254. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  255. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  256. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  257. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  258. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  259. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  260. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  261. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  262. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  263. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  264. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  265. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  266. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  267. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  268. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  269. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/file_based/types.py +0 -0
  270. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/http_config.py +0 -0
  271. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/http_logger.py +0 -0
  272. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/message/__init__.py +0 -0
  273. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/message/repository.py +0 -0
  274. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/source.py +0 -0
  275. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  276. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  277. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  278. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  279. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  280. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  281. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  282. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  283. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  284. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  285. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  286. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  287. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  288. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  289. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  290. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  291. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  292. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  293. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  294. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  295. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  296. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  297. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  298. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  299. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  300. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  301. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  302. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  303. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  304. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  305. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/core.py +0 -0
  306. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  307. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  308. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  309. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  310. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  311. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  312. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  313. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  314. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  315. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  316. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  317. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  318. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  319. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  320. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  321. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  322. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  323. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  324. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/types.py +0 -0
  325. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  326. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/casing.py +0 -0
  327. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  328. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  329. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  330. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/transform.py +0 -0
  331. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sources/utils/types.py +0 -0
  332. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/__init__.py +0 -0
  333. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  334. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  335. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  336. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/constants.py +0 -0
  337. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/exceptions.py +0 -0
  338. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/secrets.py +0 -0
  339. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  340. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  341. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  342. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/sql/types.py +0 -0
  343. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/__init__.py +0 -0
  344. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/catalog_builder.py +0 -0
  345. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  346. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  347. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  348. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  349. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/request.py +0 -0
  350. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/response.py +0 -0
  351. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  352. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/state_builder.py +0 -0
  353. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/utils/__init__.py +0 -0
  354. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/utils/data.py +0 -0
  355. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  356. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  357. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/test/utils/reading.py +0 -0
  358. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/__init__.py +0 -0
  359. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  360. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/analytics_message.py +0 -0
  361. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/constants.py +0 -0
  362. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  363. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/event_timing.py +0 -0
  364. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  365. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/message_utils.py +0 -0
  366. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  367. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/print_buffer.py +0 -0
  368. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  369. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  370. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  371. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  372. {airbyte_cdk-6.34.0.dev1 → airbyte_cdk-6.34.1.dev0}/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.34.0.dev1
3
+ Version: 6.34.1.dev0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -2,11 +2,10 @@
2
2
  # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
3
  #
4
4
 
5
-
6
- from dataclasses import asdict, dataclass, field
5
+ import dataclasses
7
6
  from typing import Any, List, Mapping
8
7
 
9
- from airbyte_cdk.connector_builder.test_reader import TestReader
8
+ from airbyte_cdk.connector_builder.message_grouper import MessageGrouper
10
9
  from airbyte_cdk.models import (
11
10
  AirbyteMessage,
12
11
  AirbyteRecordMessage,
@@ -33,11 +32,11 @@ MAX_SLICES_KEY = "max_slices"
33
32
  MAX_RECORDS_KEY = "max_records"
34
33
 
35
34
 
36
- @dataclass
35
+ @dataclasses.dataclass
37
36
  class TestReadLimits:
38
- max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
39
- max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
40
- max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
37
+ max_records: int = dataclasses.field(default=DEFAULT_MAXIMUM_RECORDS)
38
+ max_pages_per_slice: int = dataclasses.field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
39
+ max_slices: int = dataclasses.field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
41
40
 
42
41
 
43
42
  def get_limits(config: Mapping[str, Any]) -> TestReadLimits:
@@ -74,20 +73,17 @@ def read_stream(
74
73
  limits: TestReadLimits,
75
74
  ) -> AirbyteMessage:
76
75
  try:
77
- test_read_handler = TestReader(
78
- limits.max_pages_per_slice, limits.max_slices, limits.max_records
79
- )
80
- # The connector builder only supports a single stream
81
- stream_name = configured_catalog.streams[0].stream.name
82
-
83
- stream_read = test_read_handler.run_test_read(
76
+ handler = MessageGrouper(limits.max_pages_per_slice, limits.max_slices, limits.max_records)
77
+ stream_name = configured_catalog.streams[
78
+ 0
79
+ ].stream.name # The connector builder only supports a single stream
80
+ stream_read = handler.get_message_groups(
84
81
  source, config, configured_catalog, state, limits.max_records
85
82
  )
86
-
87
83
  return AirbyteMessage(
88
84
  type=MessageType.RECORD,
89
85
  record=AirbyteRecordMessage(
90
- data=asdict(stream_read), stream=stream_name, emitted_at=_emitted_at()
86
+ data=dataclasses.asdict(stream_read), stream=stream_name, emitted_at=_emitted_at()
91
87
  ),
92
88
  )
93
89
  except Exception as exc:
@@ -0,0 +1,448 @@
1
+ #
2
+ # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ import json
6
+ import logging
7
+ from copy import deepcopy
8
+ from json import JSONDecodeError
9
+ from typing import Any, Dict, Iterable, Iterator, List, Mapping, Optional, Union
10
+
11
+ from airbyte_cdk.connector_builder.models import (
12
+ AuxiliaryRequest,
13
+ HttpRequest,
14
+ HttpResponse,
15
+ LogMessage,
16
+ StreamRead,
17
+ StreamReadPages,
18
+ StreamReadSlices,
19
+ )
20
+ from airbyte_cdk.entrypoint import AirbyteEntrypoint
21
+ from airbyte_cdk.models import (
22
+ AirbyteControlMessage,
23
+ AirbyteLogMessage,
24
+ AirbyteMessage,
25
+ AirbyteStateMessage,
26
+ AirbyteTraceMessage,
27
+ ConfiguredAirbyteCatalog,
28
+ OrchestratorType,
29
+ TraceType,
30
+ )
31
+ from airbyte_cdk.models import Type as MessageType
32
+ from airbyte_cdk.sources.declarative.declarative_source import DeclarativeSource
33
+ from airbyte_cdk.sources.utils.slice_logger import SliceLogger
34
+ from airbyte_cdk.sources.utils.types import JsonType
35
+ from airbyte_cdk.utils import AirbyteTracedException
36
+ from airbyte_cdk.utils.datetime_format_inferrer import DatetimeFormatInferrer
37
+ from airbyte_cdk.utils.schema_inferrer import SchemaInferrer, SchemaValidationException
38
+
39
+
40
+ class MessageGrouper:
41
+ logger = logging.getLogger("airbyte.connector-builder")
42
+
43
+ def __init__(self, max_pages_per_slice: int, max_slices: int, max_record_limit: int = 1000):
44
+ self._max_pages_per_slice = max_pages_per_slice
45
+ self._max_slices = max_slices
46
+ self._max_record_limit = max_record_limit
47
+
48
+ def _pk_to_nested_and_composite_field(
49
+ self, field: Optional[Union[str, List[str], List[List[str]]]]
50
+ ) -> List[List[str]]:
51
+ if not field:
52
+ return [[]]
53
+
54
+ if isinstance(field, str):
55
+ return [[field]]
56
+
57
+ is_composite_key = isinstance(field[0], str)
58
+ if is_composite_key:
59
+ return [[i] for i in field] # type: ignore # the type of field is expected to be List[str] here
60
+
61
+ return field # type: ignore # the type of field is expected to be List[List[str]] here
62
+
63
+ def _cursor_field_to_nested_and_composite_field(
64
+ self, field: Union[str, List[str]]
65
+ ) -> List[List[str]]:
66
+ if not field:
67
+ return [[]]
68
+
69
+ if isinstance(field, str):
70
+ return [[field]]
71
+
72
+ is_nested_key = isinstance(field[0], str)
73
+ if is_nested_key:
74
+ return [field]
75
+
76
+ raise ValueError(f"Unknown type for cursor field `{field}")
77
+
78
+ def get_message_groups(
79
+ self,
80
+ source: DeclarativeSource,
81
+ config: Mapping[str, Any],
82
+ configured_catalog: ConfiguredAirbyteCatalog,
83
+ state: List[AirbyteStateMessage],
84
+ record_limit: Optional[int] = None,
85
+ ) -> StreamRead:
86
+ if record_limit is not None and not (1 <= record_limit <= self._max_record_limit):
87
+ raise ValueError(
88
+ f"Record limit must be between 1 and {self._max_record_limit}. Got {record_limit}"
89
+ )
90
+ stream = source.streams(config)[
91
+ 0
92
+ ] # The connector builder currently only supports reading from a single stream at a time
93
+ schema_inferrer = SchemaInferrer(
94
+ self._pk_to_nested_and_composite_field(stream.primary_key),
95
+ self._cursor_field_to_nested_and_composite_field(stream.cursor_field),
96
+ )
97
+ datetime_format_inferrer = DatetimeFormatInferrer()
98
+
99
+ if record_limit is None:
100
+ record_limit = self._max_record_limit
101
+ else:
102
+ record_limit = min(record_limit, self._max_record_limit)
103
+
104
+ slices = []
105
+ log_messages = []
106
+ latest_config_update: AirbyteControlMessage = None
107
+ auxiliary_requests = []
108
+ for message_group in self._get_message_groups(
109
+ self._read_stream(source, config, configured_catalog, state),
110
+ schema_inferrer,
111
+ datetime_format_inferrer,
112
+ record_limit,
113
+ ):
114
+ if isinstance(message_group, AirbyteLogMessage):
115
+ log_messages.append(
116
+ LogMessage(
117
+ **{"message": message_group.message, "level": message_group.level.value}
118
+ )
119
+ )
120
+ elif isinstance(message_group, AirbyteTraceMessage):
121
+ if message_group.type == TraceType.ERROR:
122
+ log_messages.append(
123
+ LogMessage(
124
+ **{
125
+ "message": message_group.error.message,
126
+ "level": "ERROR",
127
+ "internal_message": message_group.error.internal_message,
128
+ "stacktrace": message_group.error.stack_trace,
129
+ }
130
+ )
131
+ )
132
+ elif isinstance(message_group, AirbyteControlMessage):
133
+ if (
134
+ not latest_config_update
135
+ or latest_config_update.emitted_at <= message_group.emitted_at
136
+ ):
137
+ latest_config_update = message_group
138
+ elif isinstance(message_group, AuxiliaryRequest):
139
+ auxiliary_requests.append(message_group)
140
+ elif isinstance(message_group, StreamReadSlices):
141
+ slices.append(message_group)
142
+ else:
143
+ raise ValueError(f"Unknown message group type: {type(message_group)}")
144
+
145
+ try:
146
+ # The connector builder currently only supports reading from a single stream at a time
147
+ configured_stream = configured_catalog.streams[0]
148
+ schema = schema_inferrer.get_stream_schema(configured_stream.stream.name)
149
+ except SchemaValidationException as exception:
150
+ for validation_error in exception.validation_errors:
151
+ log_messages.append(LogMessage(validation_error, "ERROR"))
152
+ schema = exception.schema
153
+
154
+ return StreamRead(
155
+ logs=log_messages,
156
+ slices=slices,
157
+ test_read_limit_reached=self._has_reached_limit(slices),
158
+ auxiliary_requests=auxiliary_requests,
159
+ inferred_schema=schema,
160
+ latest_config_update=self._clean_config(latest_config_update.connectorConfig.config)
161
+ if latest_config_update
162
+ else None,
163
+ inferred_datetime_formats=datetime_format_inferrer.get_inferred_datetime_formats(),
164
+ )
165
+
166
+ def _get_message_groups(
167
+ self,
168
+ messages: Iterator[AirbyteMessage],
169
+ schema_inferrer: SchemaInferrer,
170
+ datetime_format_inferrer: DatetimeFormatInferrer,
171
+ limit: int,
172
+ ) -> Iterable[
173
+ Union[
174
+ StreamReadPages,
175
+ AirbyteControlMessage,
176
+ AirbyteLogMessage,
177
+ AirbyteTraceMessage,
178
+ AuxiliaryRequest,
179
+ ]
180
+ ]:
181
+ """
182
+ Message groups are partitioned according to when request log messages are received. Subsequent response log messages
183
+ and record messages belong to the prior request log message and when we encounter another request, append the latest
184
+ message group, until <limit> records have been read.
185
+
186
+ Messages received from the CDK read operation will always arrive in the following order:
187
+ {type: LOG, log: {message: "request: ..."}}
188
+ {type: LOG, log: {message: "response: ..."}}
189
+ ... 0 or more record messages
190
+ {type: RECORD, record: {data: ...}}
191
+ {type: RECORD, record: {data: ...}}
192
+ Repeats for each request/response made
193
+
194
+ Note: The exception is that normal log messages can be received at any time which are not incorporated into grouping
195
+ """
196
+ records_count = 0
197
+ at_least_one_page_in_group = False
198
+ current_page_records: List[Mapping[str, Any]] = []
199
+ current_slice_descriptor: Optional[Dict[str, Any]] = None
200
+ current_slice_pages: List[StreamReadPages] = []
201
+ current_page_request: Optional[HttpRequest] = None
202
+ current_page_response: Optional[HttpResponse] = None
203
+ latest_state_message: Optional[Dict[str, Any]] = None
204
+
205
+ while records_count < limit and (message := next(messages, None)):
206
+ json_object = self._parse_json(message.log) if message.type == MessageType.LOG else None
207
+ if json_object is not None and not isinstance(json_object, dict):
208
+ raise ValueError(
209
+ f"Expected log message to be a dict, got {json_object} of type {type(json_object)}"
210
+ )
211
+ json_message: Optional[Dict[str, JsonType]] = json_object
212
+ if self._need_to_close_page(at_least_one_page_in_group, message, json_message):
213
+ self._close_page(
214
+ current_page_request,
215
+ current_page_response,
216
+ current_slice_pages,
217
+ current_page_records,
218
+ )
219
+ current_page_request = None
220
+ current_page_response = None
221
+
222
+ if (
223
+ at_least_one_page_in_group
224
+ and message.type == MessageType.LOG
225
+ and message.log.message.startswith(SliceLogger.SLICE_LOG_PREFIX) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
226
+ ):
227
+ yield StreamReadSlices(
228
+ pages=current_slice_pages,
229
+ slice_descriptor=current_slice_descriptor,
230
+ state=[latest_state_message] if latest_state_message else [],
231
+ )
232
+ current_slice_descriptor = self._parse_slice_description(message.log.message) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
233
+ current_slice_pages = []
234
+ at_least_one_page_in_group = False
235
+ elif message.type == MessageType.LOG and message.log.message.startswith( # type: ignore[union-attr] # None doesn't have 'message'
236
+ SliceLogger.SLICE_LOG_PREFIX
237
+ ):
238
+ # parsing the first slice
239
+ current_slice_descriptor = self._parse_slice_description(message.log.message) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
240
+ elif message.type == MessageType.LOG:
241
+ if json_message is not None and self._is_http_log(json_message):
242
+ if self._is_auxiliary_http_request(json_message):
243
+ airbyte_cdk = json_message.get("airbyte_cdk", {})
244
+ if not isinstance(airbyte_cdk, dict):
245
+ raise ValueError(
246
+ f"Expected airbyte_cdk to be a dict, got {airbyte_cdk} of type {type(airbyte_cdk)}"
247
+ )
248
+ stream = airbyte_cdk.get("stream", {})
249
+ if not isinstance(stream, dict):
250
+ raise ValueError(
251
+ f"Expected stream to be a dict, got {stream} of type {type(stream)}"
252
+ )
253
+ title_prefix = (
254
+ "Parent stream: " if stream.get("is_substream", False) else ""
255
+ )
256
+ http = json_message.get("http", {})
257
+ if not isinstance(http, dict):
258
+ raise ValueError(
259
+ f"Expected http to be a dict, got {http} of type {type(http)}"
260
+ )
261
+ yield AuxiliaryRequest(
262
+ title=title_prefix + str(http.get("title", None)),
263
+ description=str(http.get("description", None)),
264
+ request=self._create_request_from_log_message(json_message),
265
+ response=self._create_response_from_log_message(json_message),
266
+ )
267
+ else:
268
+ at_least_one_page_in_group = True
269
+ current_page_request = self._create_request_from_log_message(json_message)
270
+ current_page_response = self._create_response_from_log_message(json_message)
271
+ else:
272
+ yield message.log
273
+ elif message.type == MessageType.TRACE:
274
+ if message.trace.type == TraceType.ERROR: # type: ignore[union-attr] # AirbyteMessage with MessageType.TRACE has trace.type
275
+ yield message.trace
276
+ elif message.type == MessageType.RECORD:
277
+ current_page_records.append(message.record.data) # type: ignore[arg-type, union-attr] # AirbyteMessage with MessageType.RECORD has record.data
278
+ records_count += 1
279
+ schema_inferrer.accumulate(message.record)
280
+ datetime_format_inferrer.accumulate(message.record)
281
+ elif (
282
+ message.type == MessageType.CONTROL
283
+ and message.control.type == OrchestratorType.CONNECTOR_CONFIG # type: ignore[union-attr] # None doesn't have 'type'
284
+ ):
285
+ yield message.control
286
+ elif message.type == MessageType.STATE:
287
+ latest_state_message = message.state # type: ignore[assignment]
288
+ else:
289
+ if current_page_request or current_page_response or current_page_records:
290
+ self._close_page(
291
+ current_page_request,
292
+ current_page_response,
293
+ current_slice_pages,
294
+ current_page_records,
295
+ )
296
+ yield StreamReadSlices(
297
+ pages=current_slice_pages,
298
+ slice_descriptor=current_slice_descriptor,
299
+ state=[latest_state_message] if latest_state_message else [],
300
+ )
301
+
302
+ @staticmethod
303
+ def _need_to_close_page(
304
+ at_least_one_page_in_group: bool,
305
+ message: AirbyteMessage,
306
+ json_message: Optional[Dict[str, Any]],
307
+ ) -> bool:
308
+ return (
309
+ at_least_one_page_in_group
310
+ and message.type == MessageType.LOG
311
+ and (
312
+ MessageGrouper._is_page_http_request(json_message)
313
+ or message.log.message.startswith("slice:") # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
314
+ )
315
+ )
316
+
317
+ @staticmethod
318
+ def _is_page_http_request(json_message: Optional[Dict[str, Any]]) -> bool:
319
+ if not json_message:
320
+ return False
321
+ else:
322
+ return MessageGrouper._is_http_log(
323
+ json_message
324
+ ) and not MessageGrouper._is_auxiliary_http_request(json_message)
325
+
326
+ @staticmethod
327
+ def _is_http_log(message: Dict[str, JsonType]) -> bool:
328
+ return bool(message.get("http", False))
329
+
330
+ @staticmethod
331
+ def _is_auxiliary_http_request(message: Optional[Dict[str, Any]]) -> bool:
332
+ """
333
+ A auxiliary request is a request that is performed and will not directly lead to record for the specific stream it is being queried.
334
+ A couple of examples are:
335
+ * OAuth authentication
336
+ * Substream slice generation
337
+ """
338
+ if not message:
339
+ return False
340
+
341
+ is_http = MessageGrouper._is_http_log(message)
342
+ return is_http and message.get("http", {}).get("is_auxiliary", False)
343
+
344
+ @staticmethod
345
+ def _close_page(
346
+ current_page_request: Optional[HttpRequest],
347
+ current_page_response: Optional[HttpResponse],
348
+ current_slice_pages: List[StreamReadPages],
349
+ current_page_records: List[Mapping[str, Any]],
350
+ ) -> None:
351
+ """
352
+ Close a page when parsing message groups
353
+ """
354
+ current_slice_pages.append(
355
+ StreamReadPages(
356
+ request=current_page_request,
357
+ response=current_page_response,
358
+ records=deepcopy(current_page_records), # type: ignore [arg-type]
359
+ )
360
+ )
361
+ current_page_records.clear()
362
+
363
+ def _read_stream(
364
+ self,
365
+ source: DeclarativeSource,
366
+ config: Mapping[str, Any],
367
+ configured_catalog: ConfiguredAirbyteCatalog,
368
+ state: List[AirbyteStateMessage],
369
+ ) -> Iterator[AirbyteMessage]:
370
+ # the generator can raise an exception
371
+ # iterate over the generated messages. if next raise an exception, catch it and yield it as an AirbyteLogMessage
372
+ try:
373
+ yield from AirbyteEntrypoint(source).read(
374
+ source.spec(self.logger), config, configured_catalog, state
375
+ )
376
+ except AirbyteTracedException as traced_exception:
377
+ # Look for this message which indicates that it is the "final exception" raised by AbstractSource.
378
+ # If it matches, don't yield this as we don't need to show this in the Builder.
379
+ # This is somewhat brittle as it relies on the message string, but if they drift then the worst case
380
+ # is that this message will be shown in the Builder.
381
+ if (
382
+ traced_exception.message is not None
383
+ and "During the sync, the following streams did not sync successfully"
384
+ in traced_exception.message
385
+ ):
386
+ return
387
+ yield traced_exception.as_airbyte_message()
388
+ except Exception as e:
389
+ error_message = f"{e.args[0] if len(e.args) > 0 else str(e)}"
390
+ yield AirbyteTracedException.from_exception(
391
+ e, message=error_message
392
+ ).as_airbyte_message()
393
+
394
+ @staticmethod
395
+ def _parse_json(log_message: AirbyteLogMessage) -> JsonType:
396
+ # TODO: As a temporary stopgap, the CDK emits request/response data as a log message string. Ideally this should come in the
397
+ # form of a custom message object defined in the Airbyte protocol, but this unblocks us in the immediate while the
398
+ # protocol change is worked on.
399
+ try:
400
+ json_object: JsonType = json.loads(log_message.message)
401
+ return json_object
402
+ except JSONDecodeError:
403
+ return None
404
+
405
+ @staticmethod
406
+ def _create_request_from_log_message(json_http_message: Dict[str, Any]) -> HttpRequest:
407
+ url = json_http_message.get("url", {}).get("full", "")
408
+ request = json_http_message.get("http", {}).get("request", {})
409
+ return HttpRequest(
410
+ url=url,
411
+ http_method=request.get("method", ""),
412
+ headers=request.get("headers"),
413
+ body=request.get("body", {}).get("content", ""),
414
+ )
415
+
416
+ @staticmethod
417
+ def _create_response_from_log_message(json_http_message: Dict[str, Any]) -> HttpResponse:
418
+ response = json_http_message.get("http", {}).get("response", {})
419
+ body = response.get("body", {}).get("content", "")
420
+ return HttpResponse(
421
+ status=response.get("status_code"), body=body, headers=response.get("headers")
422
+ )
423
+
424
+ def _has_reached_limit(self, slices: List[StreamReadSlices]) -> bool:
425
+ if len(slices) >= self._max_slices:
426
+ return True
427
+
428
+ record_count = 0
429
+
430
+ for _slice in slices:
431
+ if len(_slice.pages) >= self._max_pages_per_slice:
432
+ return True
433
+ for page in _slice.pages:
434
+ record_count += len(page.records)
435
+ if record_count >= self._max_record_limit:
436
+ return True
437
+ return False
438
+
439
+ def _parse_slice_description(self, log_message: str) -> Dict[str, Any]:
440
+ return json.loads(log_message.replace(SliceLogger.SLICE_LOG_PREFIX, "", 1)) # type: ignore
441
+
442
+ @staticmethod
443
+ def _clean_config(config: Dict[str, Any]) -> Dict[str, Any]:
444
+ cleaned_config = deepcopy(config)
445
+ for key in config.keys():
446
+ if key.startswith("__"):
447
+ del cleaned_config[key]
448
+ return cleaned_config
@@ -437,10 +437,10 @@ class AsyncJobOrchestrator:
437
437
  yield from self._process_running_partitions_and_yield_completed_ones()
438
438
  self._wait_on_status_update()
439
439
  except Exception as exception:
440
- LOGGER.warning(
441
- f"Caught exception that stops the processing of the jobs: {exception}. Traceback: {traceback.format_exc()}"
442
- )
443
440
  if self._is_breaking_exception(exception):
441
+ LOGGER.warning(
442
+ f"Caught exception that stops the processing of the jobs: {exception}"
443
+ )
444
444
  self._abort_all_running_jobs()
445
445
  raise exception
446
446
 
@@ -482,16 +482,16 @@ class AsyncJobOrchestrator:
482
482
  and exception.failure_type == FailureType.config_error
483
483
  )
484
484
 
485
- def fetch_records(self, async_jobs: Iterable[AsyncJob]) -> Iterable[Mapping[str, Any]]:
485
+ def fetch_records(self, partition: AsyncPartition) -> Iterable[Mapping[str, Any]]:
486
486
  """
487
- Fetches records from the given jobs.
487
+ Fetches records from the given partition's jobs.
488
488
 
489
489
  Args:
490
- async_jobs Iterable[AsyncJob]: The list of AsyncJobs.
490
+ partition (AsyncPartition): The partition containing the jobs.
491
491
 
492
492
  Yields:
493
493
  Iterable[Mapping[str, Any]]: The fetched records from the jobs.
494
494
  """
495
- for job in async_jobs:
495
+ for job in partition.jobs:
496
496
  yield from self._job_repository.fetch_records(job)
497
497
  self._job_repository.delete(job)
@@ -3,7 +3,6 @@
3
3
  #
4
4
 
5
5
  import base64
6
- import json
7
6
  from dataclasses import InitVar, dataclass
8
7
  from datetime import datetime
9
8
  from typing import Any, Mapping, Optional, Union
@@ -105,21 +104,21 @@ class JwtAuthenticator(DeclarativeAuthenticator):
105
104
  )
106
105
 
107
106
  def _get_jwt_headers(self) -> dict[str, Any]:
108
- """
107
+ """ "
109
108
  Builds and returns the headers used when signing the JWT.
110
109
  """
111
- headers = self._additional_jwt_headers.eval(self.config, json_loads=json.loads)
110
+ headers = self._additional_jwt_headers.eval(self.config)
112
111
  if any(prop in headers for prop in ["kid", "alg", "typ", "cty"]):
113
112
  raise ValueError(
114
113
  "'kid', 'alg', 'typ', 'cty' are reserved headers and should not be set as part of 'additional_jwt_headers'"
115
114
  )
116
115
 
117
116
  if self._kid:
118
- headers["kid"] = self._kid.eval(self.config, json_loads=json.loads)
117
+ headers["kid"] = self._kid.eval(self.config)
119
118
  if self._typ:
120
- headers["typ"] = self._typ.eval(self.config, json_loads=json.loads)
119
+ headers["typ"] = self._typ.eval(self.config)
121
120
  if self._cty:
122
- headers["cty"] = self._cty.eval(self.config, json_loads=json.loads)
121
+ headers["cty"] = self._cty.eval(self.config)
123
122
  headers["alg"] = self._algorithm
124
123
  return headers
125
124
 
@@ -131,19 +130,18 @@ class JwtAuthenticator(DeclarativeAuthenticator):
131
130
  exp = now + self._token_duration if isinstance(self._token_duration, int) else now
132
131
  nbf = now
133
132
 
134
- payload = self._additional_jwt_payload.eval(self.config, json_loads=json.loads)
133
+ payload = self._additional_jwt_payload.eval(self.config)
135
134
  if any(prop in payload for prop in ["iss", "sub", "aud", "iat", "exp", "nbf"]):
136
135
  raise ValueError(
137
136
  "'iss', 'sub', 'aud', 'iat', 'exp', 'nbf' are reserved properties and should not be set as part of 'additional_jwt_payload'"
138
137
  )
139
138
 
140
139
  if self._iss:
141
- payload["iss"] = self._iss.eval(self.config, json_loads=json.loads)
140
+ payload["iss"] = self._iss.eval(self.config)
142
141
  if self._sub:
143
- payload["sub"] = self._sub.eval(self.config, json_loads=json.loads)
142
+ payload["sub"] = self._sub.eval(self.config)
144
143
  if self._aud:
145
- payload["aud"] = self._aud.eval(self.config, json_loads=json.loads)
146
-
144
+ payload["aud"] = self._aud.eval(self.config)
147
145
  payload["iat"] = now
148
146
  payload["exp"] = exp
149
147
  payload["nbf"] = nbf
@@ -153,7 +151,7 @@ class JwtAuthenticator(DeclarativeAuthenticator):
153
151
  """
154
152
  Returns the secret key used to sign the JWT.
155
153
  """
156
- secret_key: str = self._secret_key.eval(self.config, json_loads=json.loads)
154
+ secret_key: str = self._secret_key.eval(self.config)
157
155
  return (
158
156
  base64.b64encode(secret_key.encode()).decode()
159
157
  if self._base64_encode_secret_key
@@ -178,11 +176,7 @@ class JwtAuthenticator(DeclarativeAuthenticator):
178
176
  """
179
177
  Returns the header prefix to be used when attaching the token to the request.
180
178
  """
181
- return (
182
- self._header_prefix.eval(self.config, json_loads=json.loads)
183
- if self._header_prefix
184
- else None
185
- )
179
+ return self._header_prefix.eval(self.config) if self._header_prefix else None
186
180
 
187
181
  @property
188
182
  def auth_header(self) -> str:
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  from dataclasses import InitVar, dataclass, field
6
- from datetime import datetime, timedelta
6
+ from datetime import timedelta
7
7
  from typing import Any, List, Mapping, MutableMapping, Optional, Union
8
8
 
9
9
  from airbyte_cdk.sources.declarative.auth.declarative_authenticator import DeclarativeAuthenticator
@@ -232,13 +232,8 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
232
232
  return self._refresh_request_headers.eval(self.config)
233
233
 
234
234
  def get_token_expiry_date(self) -> AirbyteDateTime:
235
- if not self._has_access_token_been_initialized():
236
- return AirbyteDateTime.from_datetime(datetime.min)
237
235
  return self._token_expiry_date # type: ignore # _token_expiry_date is an AirbyteDateTime. It is never None despite what mypy thinks
238
236
 
239
- def _has_access_token_been_initialized(self) -> bool:
240
- return self._access_token is not None
241
-
242
237
  def set_token_expiry_date(self, value: Union[str, int]) -> None:
243
238
  self._token_expiry_date = self._parse_token_expiration_date(value)
244
239