airbyte-cdk 6.8.1rc9__tar.gz → 6.8.2.dev1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. airbyte_cdk-6.8.2.dev1/PKG-INFO +111 -0
  2. airbyte_cdk-6.8.2.dev1/README.md +34 -0
  3. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +11 -5
  4. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/config_observation.py +1 -1
  5. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/main.py +1 -1
  6. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/message_grouper.py +10 -10
  7. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/destination.py +1 -1
  8. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/embedder.py +2 -2
  9. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/writer.py +12 -4
  10. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/entrypoint.py +7 -6
  11. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/logger.py +2 -2
  12. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/abstract_source.py +1 -1
  13. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/config.py +1 -1
  14. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/connector_state_manager.py +9 -4
  15. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/oauth.py +1 -1
  16. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +6 -1
  17. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +76 -28
  18. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +10 -4
  19. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +16 -17
  20. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +4 -1
  21. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +3 -5
  22. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/__init__.py +3 -0
  23. airbyte_cdk-6.8.2.dev1/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +270 -0
  24. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +8 -6
  25. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +9 -0
  26. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +35 -36
  27. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/macros.py +1 -1
  28. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +71 -17
  29. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +13 -7
  30. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +1 -1
  31. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +8 -6
  32. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +1 -1
  33. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +2 -2
  34. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +1 -1
  35. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +5 -2
  36. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +1 -1
  37. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/spec/spec.py +1 -1
  38. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -1
  39. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/embedded/base_integration.py +3 -2
  40. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +12 -4
  41. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +18 -7
  42. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +14 -11
  43. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +3 -3
  44. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +11 -5
  45. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +1 -1
  46. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +2 -2
  47. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +6 -3
  48. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +1 -1
  49. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/http_logger.py +3 -3
  50. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +5 -2
  51. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/adapters.py +6 -3
  52. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +9 -3
  53. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/cursor.py +10 -1
  54. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +2 -2
  55. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/core.py +17 -14
  56. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/http.py +19 -19
  57. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/http_client.py +4 -48
  58. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +2 -1
  59. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +62 -33
  60. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/record_helper.py +1 -1
  61. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/schema_helpers.py +1 -1
  62. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/transform.py +34 -15
  63. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/entrypoint_wrapper.py +11 -6
  64. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/response_builder.py +1 -1
  65. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/airbyte_secrets_utils.py +1 -1
  66. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/event_timing.py +10 -10
  67. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/message_utils.py +4 -3
  68. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/spec_schema_transformations.py +3 -2
  69. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/traced_exception.py +14 -12
  70. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/pyproject.toml +10 -6
  71. airbyte_cdk-6.8.1rc9/PKG-INFO +0 -307
  72. airbyte_cdk-6.8.1rc9/README.md +0 -229
  73. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/LICENSE.txt +0 -0
  74. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/__init__.py +0 -0
  75. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/cli/__init__.py +0 -0
  76. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  77. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  78. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector.py +0 -0
  79. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/README.md +0 -0
  80. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  81. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  82. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/connector_builder/models.py +0 -0
  83. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/__init__.py +0 -0
  84. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  85. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  86. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  87. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  88. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  89. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  90. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  91. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/exception_handler.py +0 -0
  92. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/models/__init__.py +0 -0
  93. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  94. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  95. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  96. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/models/well_known_types.py +0 -0
  97. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/py.typed +0 -0
  98. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/__init__.py +0 -0
  99. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  100. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  101. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  102. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  103. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  104. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  105. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  106. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  107. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  108. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  109. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  110. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  111. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  112. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  113. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  114. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  115. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  116. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  117. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  118. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  119. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  120. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  121. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  122. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  123. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  124. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  125. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  126. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  127. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  128. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  129. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  130. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  131. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  132. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  133. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  134. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  135. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  136. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  137. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  138. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  139. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  140. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  141. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  142. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  143. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  144. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  145. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  146. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  147. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  148. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  149. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  150. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  151. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  152. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  153. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  154. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  155. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  156. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  157. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  158. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  159. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  160. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  161. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  162. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  163. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  164. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  165. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  166. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  167. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  168. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  169. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  170. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  171. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  172. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  173. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  174. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  175. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  176. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  177. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  178. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  179. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  180. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  181. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  182. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  183. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  184. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  185. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  186. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  187. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  188. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  189. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  190. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  191. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  192. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  193. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  194. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  195. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  196. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  197. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  198. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  199. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  200. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  201. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  202. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  203. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  204. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  205. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  206. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  207. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  208. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  209. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  210. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  211. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  212. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/types.py +0 -0
  213. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  214. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  215. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  216. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/embedded/runner.py +0 -0
  217. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/embedded/tools.py +0 -0
  218. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/README.md +0 -0
  219. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  220. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  221. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  222. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  223. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  224. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  225. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  226. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  227. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  228. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  229. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  230. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  231. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  232. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  233. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  234. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  235. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  236. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  237. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  238. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  239. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  240. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  241. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  242. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  243. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  244. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  245. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  246. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  247. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  248. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  249. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  250. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  251. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  252. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  253. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  254. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  255. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/file_based/types.py +0 -0
  256. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/http_config.py +0 -0
  257. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/message/__init__.py +0 -0
  258. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/message/repository.py +0 -0
  259. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/source.py +0 -0
  260. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  261. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  262. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  263. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  264. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  265. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  266. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  267. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  268. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  269. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  270. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  271. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  272. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  273. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  274. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  275. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  276. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  277. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  278. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  279. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  280. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  281. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  282. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  283. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  284. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  285. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  286. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  287. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  288. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  289. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  290. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  291. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  292. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  293. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  294. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  295. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  296. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  297. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  298. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  299. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  300. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  301. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/types.py +0 -0
  302. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  303. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/casing.py +0 -0
  304. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  305. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sources/utils/types.py +0 -0
  306. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/__init__.py +0 -0
  307. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  308. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  309. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  310. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/constants.py +0 -0
  311. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/exceptions.py +0 -0
  312. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/secrets.py +0 -0
  313. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  314. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  315. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  316. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/sql/types.py +0 -0
  317. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/__init__.py +0 -0
  318. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/catalog_builder.py +0 -0
  319. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  320. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  321. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  322. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/request.py +0 -0
  323. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/mock_http/response.py +0 -0
  324. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/state_builder.py +0 -0
  325. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/utils/__init__.py +0 -0
  326. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/utils/data.py +0 -0
  327. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  328. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/test/utils/reading.py +0 -0
  329. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/__init__.py +0 -0
  330. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/analytics_message.py +0 -0
  331. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/constants.py +0 -0
  332. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  333. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  334. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  335. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  336. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/print_buffer.py +0 -0
  337. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  338. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  339. {airbyte_cdk-6.8.1rc9 → airbyte_cdk-6.8.2.dev1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
@@ -0,0 +1,111 @@
1
+ Metadata-Version: 2.1
2
+ Name: airbyte-cdk
3
+ Version: 6.8.2.dev1
4
+ Summary: A framework for writing Airbyte Connectors.
5
+ Home-page: https://airbyte.com
6
+ License: MIT
7
+ Keywords: airbyte,connector-development-kit,cdk
8
+ Author: Airbyte
9
+ Author-email: contact@airbyte.io
10
+ Requires-Python: >=3.10,<3.13
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Provides-Extra: file-based
21
+ Provides-Extra: sphinx-docs
22
+ Provides-Extra: sql
23
+ Provides-Extra: vector-db-based
24
+ Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
25
+ Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
26
+ Requires-Dist: Sphinx (>=4.2,<4.3) ; extra == "sphinx-docs"
27
+ Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
28
+ Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
29
+ Requires-Dist: backoff
30
+ Requires-Dist: cachetools
31
+ Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
32
+ Requires-Dist: cryptography (>=42.0.5,<44.0.0)
33
+ Requires-Dist: dpath (>=2.1.6,<3.0.0)
34
+ Requires-Dist: dunamai (>=1.22.0,<2.0.0)
35
+ Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
36
+ Requires-Dist: genson (==1.3.0)
37
+ Requires-Dist: isodate (>=0.6.1,<0.7.0)
38
+ Requires-Dist: jsonref (>=0.2,<0.3)
39
+ Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
40
+ Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
41
+ Requires-Dist: langchain_core (==0.1.42)
42
+ Requires-Dist: markdown ; extra == "file-based"
43
+ Requires-Dist: nltk (==3.9.1)
44
+ Requires-Dist: numpy (<2)
45
+ Requires-Dist: openai[embeddings] (==0.27.9) ; extra == "vector-db-based"
46
+ Requires-Dist: orjson (>=3.10.7,<4.0.0)
47
+ Requires-Dist: pandas (==2.2.2)
48
+ Requires-Dist: pdf2image (==1.16.3) ; extra == "file-based"
49
+ Requires-Dist: pdfminer.six (==20221105) ; extra == "file-based"
50
+ Requires-Dist: pendulum (<3.0.0)
51
+ Requires-Dist: psutil (==6.1.0)
52
+ Requires-Dist: pyarrow (>=15.0.0,<15.1.0) ; extra == "file-based"
53
+ Requires-Dist: pydantic (>=2.7,<3.0)
54
+ Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
55
+ Requires-Dist: pyrate-limiter (>=3.1.0,<3.2.0)
56
+ Requires-Dist: pytesseract (==0.3.10) ; extra == "file-based"
57
+ Requires-Dist: python-calamine (==0.2.3) ; extra == "file-based"
58
+ Requires-Dist: python-dateutil
59
+ Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
60
+ Requires-Dist: python-ulid (>=3.0.0,<4.0.0)
61
+ Requires-Dist: pytz (==2024.1)
62
+ Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
63
+ Requires-Dist: requests
64
+ Requires-Dist: requests_cache
65
+ Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
66
+ Requires-Dist: sphinx-rtd-theme (>=1.0,<1.1) ; extra == "sphinx-docs"
67
+ Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
68
+ Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
69
+ Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
70
+ Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
71
+ Requires-Dist: wcmatch (==10.0)
72
+ Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
73
+ Project-URL: Documentation, https://docs.airbyte.io/
74
+ Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
75
+ Description-Content-Type: text/markdown
76
+
77
+ # Airbyte Python CDK and Low-Code CDK
78
+
79
+ Airbyte Python CDK is a framework for building Airbyte API Source Connectors. It provides a set of
80
+ classes and helpers that make it easy to build a connector against an HTTP API (REST, GraphQL, etc),
81
+ or a generic Python source connector.
82
+
83
+ ## Building Connectors with the CDK
84
+
85
+ If you're looking to build a connector, we highly recommend that you first
86
+ [start with the Connector Builder](https://docs.airbyte.com/connector-development/connector-builder-ui/overview).
87
+ It should be enough for 90% connectors out there. For more flexible and complex connectors, use the
88
+ [low-code CDK and `SourceDeclarativeManifest`](https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview).
89
+
90
+ For more information on building connectors, please see the [Connector Development](https://docs.airbyte.com/connector-development/) guide on [docs.airbyte.com](https://docs.airbyte.com).
91
+
92
+ ## Python CDK Overview
93
+
94
+ Airbyte CDK code is within `airbyte_cdk` directory. Here's a high level overview of what's inside:
95
+
96
+ - `airbyte_cdk/connector_builder`. Internal wrapper that helps the Connector Builder platform run a declarative manifest (low-code connector). You should not use this code directly. If you need to run a `SourceDeclarativeManifest`, take a look at [`source-declarative-manifest`](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-declarative-manifest) connector implementation instead.
97
+ - `airbyte_cdk/cli/source_declarative_manifest`. This module defines the `source-declarative-manifest` (aka "SDM") connector execution logic and associated CLI.
98
+ - `airbyte_cdk/destinations`. Basic Destination connector support! If you're building a Destination connector in Python, try that. Some of our vector DB destinations like `destination-pinecone` are using that code.
99
+ - `airbyte_cdk/models` expose `airbyte_protocol.models` as a part of `airbyte_cdk` package.
100
+ - `airbyte_cdk/sources/concurrent_source` is the Concurrent CDK implementation. It supports reading data from streams concurrently per slice / partition, useful for connectors with high throughput and high number of records.
101
+ - `airbyte_cdk/sources/declarative` is the low-code CDK. It works on top of Airbyte Python CDK, but provides a declarative manifest language to define streams, operations, etc. This makes it easier to build connectors without writing Python code.
102
+ - `airbyte_cdk/sources/file_based` is the CDK for file-based sources. Examples include S3, Azure, GCS, etc.
103
+
104
+ ## Contributing
105
+
106
+ For instructions on how to contribute, please see our [Contributing Guide](docs/CONTRIBUTING.md).
107
+
108
+ ## Release Management
109
+
110
+ Please see the [Release Management](docs/RELEASES.md) guide for information on how to perform releases and pre-releases.
111
+
@@ -0,0 +1,34 @@
1
+ # Airbyte Python CDK and Low-Code CDK
2
+
3
+ Airbyte Python CDK is a framework for building Airbyte API Source Connectors. It provides a set of
4
+ classes and helpers that make it easy to build a connector against an HTTP API (REST, GraphQL, etc),
5
+ or a generic Python source connector.
6
+
7
+ ## Building Connectors with the CDK
8
+
9
+ If you're looking to build a connector, we highly recommend that you first
10
+ [start with the Connector Builder](https://docs.airbyte.com/connector-development/connector-builder-ui/overview).
11
+ It should be enough for 90% connectors out there. For more flexible and complex connectors, use the
12
+ [low-code CDK and `SourceDeclarativeManifest`](https://docs.airbyte.com/connector-development/config-based/low-code-cdk-overview).
13
+
14
+ For more information on building connectors, please see the [Connector Development](https://docs.airbyte.com/connector-development/) guide on [docs.airbyte.com](https://docs.airbyte.com).
15
+
16
+ ## Python CDK Overview
17
+
18
+ Airbyte CDK code is within `airbyte_cdk` directory. Here's a high level overview of what's inside:
19
+
20
+ - `airbyte_cdk/connector_builder`. Internal wrapper that helps the Connector Builder platform run a declarative manifest (low-code connector). You should not use this code directly. If you need to run a `SourceDeclarativeManifest`, take a look at [`source-declarative-manifest`](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-declarative-manifest) connector implementation instead.
21
+ - `airbyte_cdk/cli/source_declarative_manifest`. This module defines the `source-declarative-manifest` (aka "SDM") connector execution logic and associated CLI.
22
+ - `airbyte_cdk/destinations`. Basic Destination connector support! If you're building a Destination connector in Python, try that. Some of our vector DB destinations like `destination-pinecone` are using that code.
23
+ - `airbyte_cdk/models` expose `airbyte_protocol.models` as a part of `airbyte_cdk` package.
24
+ - `airbyte_cdk/sources/concurrent_source` is the Concurrent CDK implementation. It supports reading data from streams concurrently per slice / partition, useful for connectors with high throughput and high number of records.
25
+ - `airbyte_cdk/sources/declarative` is the low-code CDK. It works on top of Airbyte Python CDK, but provides a declarative manifest language to define streams, operations, etc. This makes it easier to build connectors without writing Python code.
26
+ - `airbyte_cdk/sources/file_based` is the CDK for file-based sources. Examples include S3, Azure, GCS, etc.
27
+
28
+ ## Contributing
29
+
30
+ For instructions on how to contribute, please see our [Contributing Guide](docs/CONTRIBUTING.md).
31
+
32
+ ## Release Management
33
+
34
+ Please see the [Release Management](docs/RELEASES.md) guide for information on how to perform releases and pre-releases.
@@ -25,7 +25,7 @@ from datetime import datetime
25
25
  from pathlib import Path
26
26
  from typing import Any, cast
27
27
 
28
- from orjson import orjson
28
+ import orjson
29
29
 
30
30
  from airbyte_cdk.entrypoint import AirbyteEntrypoint, launch
31
31
  from airbyte_cdk.models import (
@@ -72,7 +72,7 @@ class SourceLocalYaml(YamlDeclarativeSource):
72
72
  super().__init__(
73
73
  catalog=catalog,
74
74
  config=config,
75
- state=state,
75
+ state=state, # type: ignore [arg-type]
76
76
  path_to_yaml="manifest.yaml",
77
77
  )
78
78
 
@@ -152,7 +152,9 @@ def handle_remote_manifest_command(args: list[str]) -> None:
152
152
  )
153
153
 
154
154
 
155
- def create_declarative_source(args: list[str]) -> ConcurrentDeclarativeSource:
155
+ def create_declarative_source(
156
+ args: list[str],
157
+ ) -> ConcurrentDeclarativeSource: # type: ignore [type-arg]
156
158
  """Creates the source with the injected config.
157
159
 
158
160
  This essentially does what other low-code sources do at build time, but at runtime,
@@ -160,10 +162,14 @@ def create_declarative_source(args: list[str]) -> ConcurrentDeclarativeSource:
160
162
  connector builder.
161
163
  """
162
164
  try:
165
+ config: Mapping[str, Any] | None
166
+ catalog: ConfiguredAirbyteCatalog | None
167
+ state: list[AirbyteStateMessage]
163
168
  config, catalog, state = _parse_inputs_into_config_catalog_state(args)
164
- if "__injected_declarative_manifest" not in config:
169
+ if config is None or "__injected_declarative_manifest" not in config:
165
170
  raise ValueError(
166
- f"Invalid config: `__injected_declarative_manifest` should be provided at the root of the config but config only has keys {list(config.keys())}"
171
+ "Invalid config: `__injected_declarative_manifest` should be provided at the root "
172
+ f"of the config but config only has keys: {list(config.keys() if config else [])}"
167
173
  )
168
174
  return ConcurrentDeclarativeSource(
169
175
  config=config,
@@ -10,7 +10,7 @@ import time
10
10
  from copy import copy
11
11
  from typing import Any, List, MutableMapping
12
12
 
13
- from orjson import orjson
13
+ import orjson
14
14
 
15
15
  from airbyte_cdk.models import (
16
16
  AirbyteControlConnectorConfigMessage,
@@ -6,7 +6,7 @@
6
6
  import sys
7
7
  from typing import Any, List, Mapping, Optional, Tuple
8
8
 
9
- from orjson import orjson
9
+ import orjson
10
10
 
11
11
  from airbyte_cdk.connector import BaseConnector
12
12
  from airbyte_cdk.connector_builder.connector_builder_handler import (
@@ -71,7 +71,7 @@ class MessageGrouper:
71
71
 
72
72
  is_nested_key = isinstance(field[0], str)
73
73
  if is_nested_key:
74
- return [field] # type: ignore # the type of field is expected to be List[str] here
74
+ return [field]
75
75
 
76
76
  raise ValueError(f"Unknown type for cursor field `{field}")
77
77
 
@@ -232,9 +232,9 @@ class MessageGrouper:
232
232
  current_slice_descriptor = self._parse_slice_description(message.log.message) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
233
233
  current_slice_pages = []
234
234
  at_least_one_page_in_group = False
235
- elif message.type == MessageType.LOG and message.log.message.startswith(
235
+ elif message.type == MessageType.LOG and message.log.message.startswith( # type: ignore[union-attr] # None doesn't have 'message'
236
236
  SliceLogger.SLICE_LOG_PREFIX
237
- ): # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
237
+ ):
238
238
  # parsing the first slice
239
239
  current_slice_descriptor = self._parse_slice_description(message.log.message) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
240
240
  elif message.type == MessageType.LOG:
@@ -274,14 +274,14 @@ class MessageGrouper:
274
274
  if message.trace.type == TraceType.ERROR: # type: ignore[union-attr] # AirbyteMessage with MessageType.TRACE has trace.type
275
275
  yield message.trace
276
276
  elif message.type == MessageType.RECORD:
277
- current_page_records.append(message.record.data) # type: ignore[union-attr] # AirbyteMessage with MessageType.RECORD has record.data
277
+ current_page_records.append(message.record.data) # type: ignore[arg-type, union-attr] # AirbyteMessage with MessageType.RECORD has record.data
278
278
  records_count += 1
279
279
  schema_inferrer.accumulate(message.record)
280
280
  datetime_format_inferrer.accumulate(message.record)
281
281
  elif (
282
282
  message.type == MessageType.CONTROL
283
- and message.control.type == OrchestratorType.CONNECTOR_CONFIG
284
- ): # type: ignore[union-attr] # AirbyteMessage with MessageType.CONTROL has control.type
283
+ and message.control.type == OrchestratorType.CONNECTOR_CONFIG # type: ignore[union-attr] # None doesn't have 'type'
284
+ ):
285
285
  yield message.control
286
286
  elif message.type == MessageType.STATE:
287
287
  latest_state_message = message.state # type: ignore[assignment]
@@ -310,8 +310,8 @@ class MessageGrouper:
310
310
  and message.type == MessageType.LOG
311
311
  and (
312
312
  MessageGrouper._is_page_http_request(json_message)
313
- or message.log.message.startswith("slice:")
314
- ) # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
313
+ or message.log.message.startswith("slice:") # type: ignore[union-attr] # AirbyteMessage with MessageType.LOG has log.message
314
+ )
315
315
  )
316
316
 
317
317
  @staticmethod
@@ -355,8 +355,8 @@ class MessageGrouper:
355
355
  StreamReadPages(
356
356
  request=current_page_request,
357
357
  response=current_page_response,
358
- records=deepcopy(current_page_records),
359
- ) # type: ignore
358
+ records=deepcopy(current_page_records), # type: ignore [arg-type]
359
+ )
360
360
  )
361
361
  current_page_records.clear()
362
362
 
@@ -9,7 +9,7 @@ import sys
9
9
  from abc import ABC, abstractmethod
10
10
  from typing import Any, Iterable, List, Mapping
11
11
 
12
- from orjson import orjson
12
+ import orjson
13
13
 
14
14
  from airbyte_cdk.connector import Connector
15
15
  from airbyte_cdk.exception_handler import init_uncaught_exception_handler
@@ -107,7 +107,7 @@ class BaseOpenAIEmbedder(Embedder):
107
107
  class OpenAIEmbedder(BaseOpenAIEmbedder):
108
108
  def __init__(self, config: OpenAIEmbeddingConfigModel, chunk_size: int):
109
109
  super().__init__(
110
- OpenAIEmbeddings(
110
+ OpenAIEmbeddings( # type: ignore [call-arg]
111
111
  openai_api_key=config.openai_key, max_retries=15, disallowed_special=()
112
112
  ),
113
113
  chunk_size,
@@ -118,7 +118,7 @@ class AzureOpenAIEmbedder(BaseOpenAIEmbedder):
118
118
  def __init__(self, config: AzureOpenAIEmbeddingConfigModel, chunk_size: int):
119
119
  # Azure OpenAI API has — as of 20230927 — a limit of 16 documents per request
120
120
  super().__init__(
121
- OpenAIEmbeddings(
121
+ OpenAIEmbeddings( # type: ignore [call-arg]
122
122
  openai_api_key=config.openai_key,
123
123
  chunk_size=16,
124
124
  max_retries=15,
@@ -83,11 +83,19 @@ class Writer:
83
83
  yield message
84
84
  elif message.type == Type.RECORD:
85
85
  record_chunks, record_id_to_delete = self.processor.process(message.record)
86
- self.chunks[(message.record.namespace, message.record.stream)].extend(record_chunks)
87
- if record_id_to_delete is not None:
88
- self.ids_to_delete[(message.record.namespace, message.record.stream)].append(
89
- record_id_to_delete
86
+ self.chunks[
87
+ ( # type: ignore [index] # expected "tuple[str, str]", got "tuple[str | Any | None, str | Any]"
88
+ message.record.namespace, # type: ignore [union-attr] # record not None
89
+ message.record.stream, # type: ignore [union-attr] # record not None
90
90
  )
91
+ ].extend(record_chunks)
92
+ if record_id_to_delete is not None:
93
+ self.ids_to_delete[
94
+ ( # type: ignore [index] # expected "tuple[str, str]", got "tuple[str | Any | None, str | Any]"
95
+ message.record.namespace, # type: ignore [union-attr] # record not None
96
+ message.record.stream, # type: ignore [union-attr] # record not None
97
+ )
98
+ ].append(record_id_to_delete)
91
99
  self.number_of_chunks += len(record_chunks)
92
100
  if self.number_of_chunks >= self.batch_size:
93
101
  self._process_batch()
@@ -22,7 +22,7 @@ from requests import PreparedRequest, Response, Session
22
22
  from airbyte_cdk.connector import TConfig
23
23
  from airbyte_cdk.exception_handler import init_uncaught_exception_handler
24
24
  from airbyte_cdk.logger import init_logger
25
- from airbyte_cdk.models import ( # type: ignore [attr-defined]
25
+ from airbyte_cdk.models import (
26
26
  AirbyteConnectionStatus,
27
27
  AirbyteMessage,
28
28
  AirbyteMessageSerializer,
@@ -255,9 +255,10 @@ class AirbyteEntrypoint(object):
255
255
 
256
256
  stream_message_count[
257
257
  HashableStreamDescriptor(
258
- name=message.record.stream, namespace=message.record.namespace
258
+ name=message.record.stream, # type: ignore[union-attr] # record has `stream`
259
+ namespace=message.record.namespace, # type: ignore[union-attr] # record has `namespace`
259
260
  )
260
- ] += 1.0 # type: ignore[union-attr] # record has `stream` and `namespace`
261
+ ] += 1.0
261
262
  case Type.STATE:
262
263
  if message.state is None:
263
264
  raise ValueError("State message must have a state attribute")
@@ -266,9 +267,9 @@ class AirbyteEntrypoint(object):
266
267
 
267
268
  # Set record count from the counter onto the state message
268
269
  message.state.sourceStats = message.state.sourceStats or AirbyteStateStats() # type: ignore[union-attr] # state has `sourceStats`
269
- message.state.sourceStats.recordCount = stream_message_count.get(
270
+ message.state.sourceStats.recordCount = stream_message_count.get( # type: ignore[union-attr] # state has `sourceStats`
270
271
  stream_descriptor, 0.0
271
- ) # type: ignore[union-attr] # state has `sourceStats`
272
+ )
272
273
 
273
274
  # Reset the counter
274
275
  stream_message_count[stream_descriptor] = 0.0
@@ -290,7 +291,7 @@ class AirbyteEntrypoint(object):
290
291
 
291
292
  @staticmethod
292
293
  def airbyte_message_to_string(airbyte_message: AirbyteMessage) -> str:
293
- return orjson.dumps(AirbyteMessageSerializer.dump(airbyte_message)).decode() # type: ignore[no-any-return] # orjson.dumps(message).decode() always returns string
294
+ return orjson.dumps(AirbyteMessageSerializer.dump(airbyte_message)).decode()
294
295
 
295
296
  @classmethod
296
297
  def extract_state(cls, args: List[str]) -> Optional[Any]:
@@ -7,7 +7,7 @@ import logging
7
7
  import logging.config
8
8
  from typing import Any, Callable, Mapping, Optional, Tuple
9
9
 
10
- from orjson import orjson
10
+ import orjson
11
11
 
12
12
  from airbyte_cdk.models import (
13
13
  AirbyteLogMessage,
@@ -78,7 +78,7 @@ class AirbyteLogFormatter(logging.Formatter):
78
78
  log_message = AirbyteMessage(
79
79
  type=Type.LOG, log=AirbyteLogMessage(level=airbyte_level, message=message)
80
80
  )
81
- return orjson.dumps(AirbyteMessageSerializer.dump(log_message)).decode() # type: ignore[no-any-return] # orjson.dumps(message).decode() always returns string
81
+ return orjson.dumps(AirbyteMessageSerializer.dump(log_message)).decode()
82
82
 
83
83
  @staticmethod
84
84
  def extract_extra_args_from_record(record: logging.LogRecord) -> Mapping[str, Any]:
@@ -200,7 +200,7 @@ class AbstractSource(Source, ABC):
200
200
  if len(stream_name_to_exception) > 0:
201
201
  error_message = generate_failed_streams_error_message(
202
202
  {key: [value] for key, value in stream_name_to_exception.items()}
203
- ) # type: ignore # for some reason, mypy can't figure out the types for key and value
203
+ )
204
204
  logger.info(error_message)
205
205
  # We still raise at least one exception when a stream raises an exception because the platform currently relies
206
206
  # on a non-zero exit code to determine if a sync attempt has failed. We also raise the exception as a config_error
@@ -24,4 +24,4 @@ class BaseConfig(BaseModel):
24
24
  rename_key(schema, old_key="anyOf", new_key="oneOf") # UI supports only oneOf
25
25
  expand_refs(schema)
26
26
  schema.pop("description", None) # description added from the docstring
27
- return schema # type: ignore[no-any-return]
27
+ return schema
@@ -4,7 +4,7 @@
4
4
 
5
5
  import copy
6
6
  from dataclasses import dataclass
7
- from typing import Any, List, Mapping, MutableMapping, Optional, Tuple, Union
7
+ from typing import Any, List, Mapping, MutableMapping, Optional, Tuple, Union, cast
8
8
 
9
9
  from airbyte_cdk.models import (
10
10
  AirbyteMessage,
@@ -15,6 +15,7 @@ from airbyte_cdk.models import (
15
15
  StreamDescriptor,
16
16
  )
17
17
  from airbyte_cdk.models import Type as MessageType
18
+ from airbyte_cdk.models.airbyte_protocol import AirbyteGlobalState, AirbyteStateBlob
18
19
 
19
20
 
20
21
  @dataclass(frozen=True)
@@ -118,8 +119,12 @@ class ConnectorStateManager:
118
119
  is_global = cls._is_global_state(state)
119
120
 
120
121
  if is_global:
121
- global_state = state[0].global_ # type: ignore # We verified state is a list in _is_global_state
122
- shared_state = copy.deepcopy(global_state.shared_state, {}) # type: ignore[union-attr] # global_state has shared_state
122
+ # We already validate that this is a global state message, not None:
123
+ global_state = cast(AirbyteGlobalState, state[0].global_)
124
+ # global_state has shared_state, also not None:
125
+ shared_state: AirbyteStateBlob = cast(
126
+ AirbyteStateBlob, copy.deepcopy(global_state.shared_state, {})
127
+ )
123
128
  streams = {
124
129
  HashableStreamDescriptor(
125
130
  name=per_stream_state.stream_descriptor.name,
@@ -131,7 +136,7 @@ class ConnectorStateManager:
131
136
  else:
132
137
  streams = {
133
138
  HashableStreamDescriptor(
134
- name=per_stream_state.stream.stream_descriptor.name,
139
+ name=per_stream_state.stream.stream_descriptor.name, # type: ignore[union-attr] # stream has stream_descriptor
135
140
  namespace=per_stream_state.stream.stream_descriptor.namespace, # type: ignore[union-attr] # stream has stream_descriptor
136
141
  ): per_stream_state.stream.stream_state # type: ignore[union-attr] # stream has stream_state
137
142
  for per_stream_state in state
@@ -135,7 +135,7 @@ class DeclarativeOauth2Authenticator(AbstractOauth2Authenticator, DeclarativeAut
135
135
  return self.grant_type.eval(self.config) # type: ignore # eval returns a string in this context
136
136
 
137
137
  def get_refresh_request_body(self) -> Mapping[str, Any]:
138
- return self._refresh_request_body.eval(self.config) # type: ignore # eval should return a Mapping in this context
138
+ return self._refresh_request_body.eval(self.config)
139
139
 
140
140
  def get_token_expiry_date(self) -> pendulum.DateTime:
141
141
  return self._token_expiry_date # type: ignore # _token_expiry_date is a pendulum.DateTime. It is never None despite what mypy thinks
@@ -28,7 +28,12 @@ class SelectiveAuthenticator(DeclarativeAuthenticator):
28
28
  **kwargs: Any,
29
29
  ) -> DeclarativeAuthenticator:
30
30
  try:
31
- selected_key = str(dpath.get(config, authenticator_selection_path))
31
+ selected_key = str(
32
+ dpath.get(
33
+ config, # type: ignore [arg-type] # Dpath wants mutable mapping but doesn't need it.
34
+ authenticator_selection_path,
35
+ )
36
+ )
32
37
  except KeyError as err:
33
38
  raise ValueError(
34
39
  "The path from `authenticator_selection_path` is not found in the config."
@@ -20,6 +20,9 @@ from airbyte_cdk.sources.declarative.extractors.record_filter import (
20
20
  ClientSideIncrementalRecordFilterDecorator,
21
21
  )
22
22
  from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
23
+ from airbyte_cdk.sources.declarative.incremental.per_partition_with_global import (
24
+ PerPartitionWithGlobalCursor,
25
+ )
23
26
  from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
24
27
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
25
28
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
@@ -56,9 +59,8 @@ from airbyte_cdk.sources.types import Config, StreamState
56
59
 
57
60
 
58
61
  class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
59
- # By default, we defer to a value of 2. A value lower than than could cause a PartitionEnqueuer to be stuck in a state of deadlock
60
- # because it has hit the limit of futures but not partition reader is consuming them.
61
- SINGLE_THREADED_CONCURRENCY_LEVEL = 2
62
+ # By default, we defer to a value of 1 which represents running a connector using the Concurrent CDK engine on only one thread.
63
+ SINGLE_THREADED_CONCURRENCY_LEVEL = 1
62
64
 
63
65
  def __init__(
64
66
  self,
@@ -79,9 +81,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
79
81
  emit_connector_builder_messages=emit_connector_builder_messages,
80
82
  disable_resumable_full_refresh=True,
81
83
  )
82
- self._config = config
83
- self._concurrent_streams: Optional[List[AbstractStream]] = None
84
- self._synchronous_streams: Optional[List[Stream]] = None
85
84
 
86
85
  super().__init__(
87
86
  source_config=source_config,
@@ -92,6 +91,21 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
92
91
 
93
92
  self._state = state
94
93
 
94
+ self._concurrent_streams: Optional[List[AbstractStream]]
95
+ self._synchronous_streams: Optional[List[Stream]]
96
+
97
+ # If the connector command was SPEC, there is no incoming config, and we cannot instantiate streams because
98
+ # they might depend on it. Ideally we want to have a static method on this class to get the spec without
99
+ # any other arguments, but the existing entrypoint.py isn't designed to support this. Just noting this
100
+ # for our future improvements to the CDK.
101
+ if config:
102
+ self._concurrent_streams, self._synchronous_streams = self._group_streams(
103
+ config=config or {}
104
+ )
105
+ else:
106
+ self._concurrent_streams = None
107
+ self._synchronous_streams = None
108
+
95
109
  concurrency_level_from_manifest = self._source_config.get("concurrency_level")
96
110
  if concurrency_level_from_manifest:
97
111
  concurrency_level_component = self._constructor.create_component(
@@ -110,29 +124,16 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
110
124
  ) # Partition_generation iterates using range based on this value. If this is floored to zero we end up in a dead lock during start up
111
125
  else:
112
126
  concurrency_level = self.SINGLE_THREADED_CONCURRENCY_LEVEL
113
- initial_number_of_partitions_to_generate = self.SINGLE_THREADED_CONCURRENCY_LEVEL // 2
127
+ initial_number_of_partitions_to_generate = self.SINGLE_THREADED_CONCURRENCY_LEVEL
114
128
 
115
129
  self._concurrent_source = ConcurrentSource.create(
116
130
  num_workers=concurrency_level,
117
131
  initial_number_of_partitions_to_generate=initial_number_of_partitions_to_generate,
118
132
  logger=self.logger,
119
133
  slice_logger=self._slice_logger,
120
- message_repository=self.message_repository, # type: ignore # message_repository is always instantiated with a value by factory
134
+ message_repository=self.message_repository,
121
135
  )
122
136
 
123
- def _actually_group(self) -> None:
124
- # If the connector command was SPEC, there is no incoming config, and we cannot instantiate streams because
125
- # they might depend on it. Ideally we want to have a static method on this class to get the spec without
126
- # any other arguments, but the existing entrypoint.py isn't designed to support this. Just noting this
127
- # for our future improvements to the CDK.
128
- if self._config:
129
- self._concurrent_streams, self._synchronous_streams = self._group_streams(
130
- config=self._config or {}
131
- )
132
- else:
133
- self._concurrent_streams = None
134
- self._synchronous_streams = None
135
-
136
137
  def read(
137
138
  self,
138
139
  logger: logging.Logger,
@@ -142,9 +143,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
142
143
  ) -> Iterator[AirbyteMessage]:
143
144
  # ConcurrentReadProcessor pops streams that are finished being read so before syncing, the names of the concurrent
144
145
  # streams must be saved so that they can be removed from the catalog before starting synchronous streams
145
- if self._concurrent_streams is None:
146
- self._actually_group()
147
-
148
146
  if self._concurrent_streams:
149
147
  concurrent_stream_names = set(
150
148
  [concurrent_stream.name for concurrent_stream in self._concurrent_streams]
@@ -170,9 +168,6 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
170
168
  yield from super().read(logger, config, filtered_catalog, state)
171
169
 
172
170
  def discover(self, logger: logging.Logger, config: Mapping[str, Any]) -> AirbyteCatalog:
173
- if self._concurrent_streams is None:
174
- self._actually_group()
175
-
176
171
  concurrent_streams = self._concurrent_streams or []
177
172
  synchronous_streams = self._synchronous_streams or []
178
173
  return AirbyteCatalog(
@@ -201,7 +196,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
201
196
  state_manager = ConnectorStateManager(state=self._state) # type: ignore # state is always in the form of List[AirbyteStateMessage]. The ConnectorStateManager should use generics, but this can be done later
202
197
 
203
198
  name_to_stream_mapping = {
204
- stream["name"]: stream for stream in self._initialize_cache_for_parent_streams(self.resolved_manifest["streams"])
199
+ stream["name"]: stream for stream in self.resolved_manifest["streams"]
205
200
  }
206
201
 
207
202
  for declarative_stream in self.streams(config=config):
@@ -314,6 +309,59 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
314
309
  cursor=final_state_cursor,
315
310
  )
316
311
  )
312
+ elif (
313
+ incremental_sync_component_definition
314
+ and incremental_sync_component_definition.get("type", "")
315
+ == DatetimeBasedCursorModel.__name__
316
+ and self._stream_supports_concurrent_partition_processing(
317
+ declarative_stream=declarative_stream
318
+ )
319
+ and hasattr(declarative_stream.retriever, "stream_slicer")
320
+ and isinstance(declarative_stream.retriever.stream_slicer, PerPartitionWithGlobalCursor)
321
+ ):
322
+ stream_state = state_manager.get_stream_state(
323
+ stream_name=declarative_stream.name, namespace=declarative_stream.namespace
324
+ )
325
+ partition_router = declarative_stream.retriever.stream_slicer._partition_router
326
+
327
+ cursor = self._constructor.create_concurrent_cursor_from_perpartition_cursor(
328
+ state_manager=state_manager,
329
+ model_type=DatetimeBasedCursorModel,
330
+ component_definition=incremental_sync_component_definition,
331
+ stream_name=declarative_stream.name,
332
+ stream_namespace=declarative_stream.namespace,
333
+ config=config or {},
334
+ stream_state=stream_state,
335
+ partition_router=partition_router,
336
+ )
337
+
338
+
339
+ partition_generator = StreamSlicerPartitionGenerator(
340
+ DeclarativePartitionFactory(
341
+ declarative_stream.name,
342
+ declarative_stream.get_json_schema(),
343
+ self._retriever_factory(
344
+ name_to_stream_mapping[declarative_stream.name],
345
+ config,
346
+ stream_state,
347
+ ),
348
+ self.message_repository,
349
+ ),
350
+ cursor,
351
+ )
352
+
353
+ concurrent_streams.append(
354
+ DefaultStream(
355
+ partition_generator=partition_generator,
356
+ name=declarative_stream.name,
357
+ json_schema=declarative_stream.get_json_schema(),
358
+ availability_strategy=AlwaysAvailableAvailabilityStrategy(),
359
+ primary_key=get_primary_key_from_stream(declarative_stream.primary_key),
360
+ cursor_field=cursor.cursor_field.cursor_field_key,
361
+ logger=self.logger,
362
+ cursor=cursor,
363
+ )
364
+ )
317
365
  else:
318
366
  synchronous_streams.append(declarative_stream)
319
367
  else: