airbyte-cdk 6.6.0rc1__tar.gz → 6.6.2__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 (333) hide show
  1. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/PKG-INFO +7 -8
  2. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/__init__.py +10 -4
  3. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +2 -1
  4. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +58 -28
  5. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +43 -0
  6. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/__init__.py +2 -2
  7. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +45 -12
  8. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +6 -3
  9. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +7 -3
  10. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +45 -4
  11. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +23 -3
  12. airbyte_cdk-6.6.2/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +85 -0
  13. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +6 -13
  14. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +69 -19
  15. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -11
  16. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/adapters.py +4 -102
  17. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/cursor.py +50 -17
  18. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -15
  19. airbyte_cdk-6.6.2/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +21 -0
  20. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +7 -0
  21. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +5 -1
  22. airbyte_cdk-6.6.2/airbyte_cdk/utils/slice_hasher.py +30 -0
  23. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/pyproject.toml +8 -7
  24. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/LICENSE.txt +0 -0
  25. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/README.md +0 -0
  26. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/config_observation.py +0 -0
  27. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector.py +0 -0
  28. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/README.md +0 -0
  29. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/__init__.py +0 -0
  30. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  31. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/main.py +0 -0
  32. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  33. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/connector_builder/models.py +0 -0
  34. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/__init__.py +0 -0
  35. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/destination.py +0 -0
  36. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  37. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  38. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  39. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  40. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  41. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  42. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  43. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  44. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  45. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/entrypoint.py +0 -0
  46. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/exception_handler.py +0 -0
  47. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/logger.py +0 -0
  48. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/models/__init__.py +0 -0
  49. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  50. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  51. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  52. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/models/well_known_types.py +0 -0
  53. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/py.typed +0 -0
  54. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/__init__.py +0 -0
  55. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/abstract_source.py +0 -0
  56. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  57. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  58. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  59. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  60. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  61. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  62. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/config.py +0 -0
  63. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  64. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  65. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  66. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  67. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  68. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  69. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  70. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  71. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  72. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  73. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  74. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  75. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  76. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  77. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  78. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  79. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  80. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  81. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  82. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  83. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  84. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  85. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  86. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  87. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  88. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  89. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  90. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  91. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  92. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  93. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  94. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  95. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  96. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  97. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  98. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  99. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  100. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  101. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  102. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  103. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  104. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  105. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  106. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  107. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  108. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  109. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  110. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  111. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  112. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  113. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  114. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  115. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  116. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  117. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  118. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  119. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  120. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  121. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  122. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  123. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  124. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  125. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  126. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  127. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  128. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  129. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  130. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  131. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  132. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  133. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  134. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  135. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  136. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  137. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  138. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  139. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  140. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  141. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  142. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  143. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  144. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  145. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  146. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  147. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  148. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  149. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  150. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  151. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  152. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  153. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  154. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  155. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  156. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  157. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  158. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  159. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  160. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  161. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  162. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  163. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  164. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  165. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  166. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  167. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  168. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  169. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  170. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  171. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  172. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  173. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  174. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  175. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  176. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  177. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  178. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  179. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  180. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  181. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  182. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  183. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/types.py +0 -0
  184. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  185. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  186. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  187. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  188. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/embedded/runner.py +0 -0
  189. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/embedded/tools.py +0 -0
  190. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/README.md +0 -0
  191. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  192. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  193. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  194. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  195. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  196. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  197. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  198. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  199. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  200. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  201. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  202. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  203. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  204. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  205. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  206. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  207. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  208. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  209. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  210. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  211. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  212. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  213. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  214. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  215. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  216. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  217. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  218. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  219. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  220. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  221. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  222. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  223. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  224. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  225. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  226. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  227. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  228. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  229. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  230. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  231. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  232. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  233. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  234. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/file_based/types.py +0 -0
  235. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/http_config.py +0 -0
  236. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/http_logger.py +0 -0
  237. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/message/__init__.py +0 -0
  238. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/message/repository.py +0 -0
  239. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/source.py +0 -0
  240. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/__init__.py +0 -0
  241. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  242. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  243. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  244. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  245. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  246. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  247. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  248. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  249. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  250. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  251. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  252. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  253. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  254. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  255. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  256. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  257. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  258. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  259. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  260. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  261. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partitions/record.py +0 -0
  262. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  263. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  264. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/core.py +0 -0
  265. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  266. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  267. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  268. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  269. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  270. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  271. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  272. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  273. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  274. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  275. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  276. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  277. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/http.py +0 -0
  278. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  279. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  280. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  281. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  282. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  283. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  284. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  285. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  286. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/types.py +0 -0
  287. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/__init__.py +0 -0
  288. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/casing.py +0 -0
  289. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  290. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  291. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  292. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/transform.py +0 -0
  293. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sources/utils/types.py +0 -0
  294. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/__init__.py +0 -0
  295. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/_util/__init__.py +0 -0
  296. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/_util/hashing.py +0 -0
  297. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  298. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/constants.py +0 -0
  299. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/exceptions.py +0 -0
  300. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/secrets.py +0 -0
  301. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/shared/__init__.py +0 -0
  302. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  303. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  304. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/sql/types.py +0 -0
  305. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/__init__.py +0 -0
  306. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/catalog_builder.py +0 -0
  307. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  308. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  309. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  310. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  311. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/request.py +0 -0
  312. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/response.py +0 -0
  313. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  314. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/state_builder.py +0 -0
  315. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/utils/__init__.py +0 -0
  316. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/utils/data.py +0 -0
  317. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  318. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/test/utils/reading.py +0 -0
  319. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/__init__.py +0 -0
  320. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  321. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/analytics_message.py +0 -0
  322. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/constants.py +0 -0
  323. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  324. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/event_timing.py +0 -0
  325. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  326. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  327. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/message_utils.py +0 -0
  328. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  329. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/print_buffer.py +0 -0
  330. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  331. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  332. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  333. {airbyte_cdk-6.6.0rc1 → airbyte_cdk-6.6.2}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.6.0rc1
3
+ Version: 6.6.2
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
7
7
  Keywords: airbyte,connector-development-kit,cdk
8
8
  Author: Airbyte
9
9
  Author-email: contact@airbyte.io
10
- Requires-Python: >=3.10,<4.0
10
+ Requires-Python: >=3.10,<3.13
11
11
  Classifier: Development Status :: 3 - Alpha
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: MIT License
@@ -15,7 +15,6 @@ Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: Topic :: Scientific/Engineering
20
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
20
  Provides-Extra: file-based
@@ -31,18 +30,18 @@ Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
31
30
  Requires-Dist: backoff
32
31
  Requires-Dist: cachetools
33
32
  Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
34
- Requires-Dist: cryptography (>=42.0.5,<43.0.0)
33
+ Requires-Dist: cryptography (>=42.0.5,<44.0.0)
35
34
  Requires-Dist: dpath (>=2.1.6,<3.0.0)
36
35
  Requires-Dist: dunamai (>=1.22.0,<2.0.0)
37
36
  Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
38
- Requires-Dist: genson (==1.2.2)
37
+ Requires-Dist: genson (==1.3.0)
39
38
  Requires-Dist: isodate (>=0.6.1,<0.7.0)
40
39
  Requires-Dist: jsonref (>=0.2,<0.3)
41
40
  Requires-Dist: jsonschema (>=3.2.0,<3.3.0)
42
41
  Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
43
42
  Requires-Dist: langchain_core (==0.1.42)
44
43
  Requires-Dist: markdown ; extra == "file-based"
45
- Requires-Dist: nltk (==3.8.1)
44
+ Requires-Dist: nltk (==3.9.1)
46
45
  Requires-Dist: numpy (<2)
47
46
  Requires-Dist: openai[embeddings] (==0.27.9) ; extra == "vector-db-based"
48
47
  Requires-Dist: orjson (>=3.10.7,<4.0.0)
@@ -66,10 +65,10 @@ Requires-Dist: requests_cache
66
65
  Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
67
66
  Requires-Dist: sphinx-rtd-theme (>=1.0,<1.1) ; extra == "sphinx-docs"
68
67
  Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
69
- Requires-Dist: tiktoken (==0.4.0) ; extra == "vector-db-based"
68
+ Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
70
69
  Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
71
70
  Requires-Dist: unstructured[docx,pptx] (==0.10.27) ; extra == "file-based"
72
- Requires-Dist: wcmatch (==8.4)
71
+ Requires-Dist: wcmatch (==10.0)
73
72
  Requires-Dist: xmltodict (>=0.13.0,<0.14.0)
74
73
  Project-URL: Documentation, https://docs.airbyte.io/
75
74
  Project-URL: Repository, https://github.com/airbytehq/airbyte-python-cdk
@@ -282,12 +282,18 @@ __all__ = [
282
282
  "StreamSlice",
283
283
  ]
284
284
 
285
- __version__ = _dunamai.get_version(
286
- "airbyte-cdk",
287
- third_choice=_dunamai.Version.from_any_vcs,
288
- ).serialize()
285
+ __version__: str
289
286
  """Version generated by poetry dynamic versioning during publish.
290
287
 
291
288
  When running in development, dunamai will calculate a new prerelease version
292
289
  from existing git release tag info.
293
290
  """
291
+
292
+ try:
293
+ __version__ = _dunamai.get_version(
294
+ "airbyte-cdk",
295
+ third_choice=_dunamai.Version.from_any_vcs,
296
+ fallback=_dunamai.Version("0.0.0+dev"),
297
+ ).serialize()
298
+ except:
299
+ __version__ = "0.0.0+dev"
@@ -114,7 +114,8 @@ class ConcurrentReadProcessor:
114
114
 
115
115
  try:
116
116
  if sentinel.is_successful:
117
- partition.close()
117
+ stream = self._stream_name_to_instance[partition.stream_name()]
118
+ stream.cursor.close_partition(partition)
118
119
  except Exception as exception:
119
120
  self._flag_exception(partition.stream_name(), exception)
120
121
  yield AirbyteTracedException.from_exception(
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  import logging
6
- from typing import Any, Generic, Iterator, List, Mapping, Optional, Tuple, Union
6
+ from typing import Any, Generic, Iterator, List, Mapping, Optional, Tuple, Union, Callable
7
7
 
8
8
  from airbyte_cdk.models import (
9
9
  AirbyteCatalog,
@@ -16,6 +16,9 @@ from airbyte_cdk.sources.connector_state_manager import ConnectorStateManager
16
16
  from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel
17
17
  from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream
18
18
  from airbyte_cdk.sources.declarative.extractors import RecordSelector
19
+ from airbyte_cdk.sources.declarative.extractors.record_filter import (
20
+ ClientSideIncrementalRecordFilterDecorator,
21
+ )
19
22
  from airbyte_cdk.sources.declarative.incremental.datetime_based_cursor import DatetimeBasedCursor
20
23
  from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
21
24
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
@@ -24,18 +27,24 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
24
27
  )
25
28
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
26
29
  DatetimeBasedCursor as DatetimeBasedCursorModel,
30
+ DeclarativeStream as DeclarativeStreamModel,
27
31
  )
28
32
  from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
29
33
  ModelToComponentFactory,
34
+ ComponentDefinition,
30
35
  )
31
36
  from airbyte_cdk.sources.declarative.requesters import HttpRequester
32
- from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
37
+ from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever, Retriever
38
+ from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
39
+ DeclarativePartitionFactory,
40
+ StreamSlicerPartitionGenerator,
41
+ )
33
42
  from airbyte_cdk.sources.declarative.transformations.add_fields import AddFields
34
43
  from airbyte_cdk.sources.declarative.types import ConnectionDefinition
35
44
  from airbyte_cdk.sources.source import TState
45
+ from airbyte_cdk.sources.types import Config, StreamState
36
46
  from airbyte_cdk.sources.streams import Stream
37
47
  from airbyte_cdk.sources.streams.concurrent.abstract_stream import AbstractStream
38
- from airbyte_cdk.sources.streams.concurrent.adapters import CursorPartitionGenerator
39
48
  from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
40
49
  AlwaysAvailableAvailabilityStrategy,
41
50
  )
@@ -210,31 +219,18 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
210
219
  )
211
220
  )
212
221
 
213
- # This is an optimization so that we don't invoke any cursor or state management flows within the
214
- # low-code framework because state management is handled through the ConcurrentCursor.
215
- if (
216
- declarative_stream
217
- and declarative_stream.retriever
218
- and isinstance(declarative_stream.retriever, SimpleRetriever)
219
- ):
220
- # Also a temporary hack. In the legacy Stream implementation, as part of the read, set_initial_state() is
221
- # called to instantiate incoming state on the cursor. Although we no longer rely on the legacy low-code cursor
222
- # for concurrent checkpointing, low-code components like StopConditionPaginationStrategyDecorator and
223
- # ClientSideIncrementalRecordFilterDecorator still rely on a DatetimeBasedCursor that is properly initialized
224
- # with state.
225
- if declarative_stream.retriever.cursor:
226
- declarative_stream.retriever.cursor.set_initial_state(
227
- stream_state=stream_state
228
- )
229
- declarative_stream.retriever.cursor = None
230
-
231
- partition_generator = CursorPartitionGenerator(
232
- stream=declarative_stream,
233
- message_repository=self.message_repository, # type: ignore # message_repository is always instantiated with a value by factory
234
- cursor=cursor,
235
- connector_state_converter=connector_state_converter,
236
- cursor_field=[cursor.cursor_field.cursor_field_key],
237
- slice_boundary_fields=cursor.slice_boundary_fields,
222
+ partition_generator = StreamSlicerPartitionGenerator(
223
+ DeclarativePartitionFactory(
224
+ declarative_stream.name,
225
+ declarative_stream.get_json_schema(),
226
+ self._retriever_factory(
227
+ name_to_stream_mapping[declarative_stream.name],
228
+ config,
229
+ stream_state,
230
+ ),
231
+ self.message_repository,
232
+ ),
233
+ cursor,
238
234
  )
239
235
 
240
236
  concurrent_streams.append(
@@ -291,6 +287,9 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
291
287
  if isinstance(record_selector, RecordSelector):
292
288
  if (
293
289
  record_selector.record_filter
290
+ and not isinstance(
291
+ record_selector.record_filter, ClientSideIncrementalRecordFilterDecorator
292
+ )
294
293
  and "stream_state" in record_selector.record_filter.condition
295
294
  ):
296
295
  self.logger.warning(
@@ -344,3 +343,34 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
344
343
  if stream.stream.name not in concurrent_stream_names
345
344
  ]
346
345
  )
346
+
347
+ def _retriever_factory(
348
+ self, stream_config: ComponentDefinition, source_config: Config, stream_state: StreamState
349
+ ) -> Callable[[], Retriever]:
350
+ def _factory_method() -> Retriever:
351
+ declarative_stream: DeclarativeStream = self._constructor.create_component(
352
+ DeclarativeStreamModel,
353
+ stream_config,
354
+ source_config,
355
+ emit_connector_builder_messages=self._emit_connector_builder_messages,
356
+ )
357
+
358
+ # This is an optimization so that we don't invoke any cursor or state management flows within the
359
+ # low-code framework because state management is handled through the ConcurrentCursor.
360
+ if (
361
+ declarative_stream
362
+ and declarative_stream.retriever
363
+ and isinstance(declarative_stream.retriever, SimpleRetriever)
364
+ ):
365
+ # Also a temporary hack. In the legacy Stream implementation, as part of the read, set_initial_state() is
366
+ # called to instantiate incoming state on the cursor. Although we no longer rely on the legacy low-code cursor
367
+ # for concurrent checkpointing, low-code components like StopConditionPaginationStrategyDecorator and
368
+ # ClientSideIncrementalRecordFilterDecorator still rely on a DatetimeBasedCursor that is properly initialized
369
+ # with state.
370
+ if declarative_stream.retriever.cursor:
371
+ declarative_stream.retriever.cursor.set_initial_state(stream_state=stream_state)
372
+ declarative_stream.retriever.cursor = None
373
+
374
+ return declarative_stream.retriever
375
+
376
+ return _factory_method
@@ -1750,6 +1750,45 @@ definitions:
1750
1750
  type:
1751
1751
  type: string
1752
1752
  enum: [XmlDecoder]
1753
+ CustomDecoder:
1754
+ title: Custom Decoder
1755
+ description: Use this to implement custom decoder logic.
1756
+ type: object
1757
+ additionalProperties: true
1758
+ required:
1759
+ - type
1760
+ - class_name
1761
+ properties:
1762
+ type:
1763
+ type: string
1764
+ enum: [CustomDecoder]
1765
+ class_name:
1766
+ title: Class Name
1767
+ description: Fully-qualified name of the class that will be implementing the custom decoding. Has to be a sub class of Decoder. The format is `source_<name>.<package>.<class_name>`.
1768
+ type: string
1769
+ additionalProperties: true
1770
+ examples:
1771
+ - "source_amazon_ads.components.GzipJsonlDecoder"
1772
+ $parameters:
1773
+ type: object
1774
+ additionalProperties: true
1775
+ GzipJsonDecoder:
1776
+ title: GzipJson Decoder
1777
+ description: Use this if the response is Gzip compressed Json.
1778
+ type: object
1779
+ additionalProperties: true
1780
+ required:
1781
+ - type
1782
+ properties:
1783
+ type:
1784
+ type: string
1785
+ enum: [GzipJsonDecoder]
1786
+ encoding:
1787
+ type: string
1788
+ default: utf-8
1789
+ $parameters:
1790
+ type: object
1791
+ additionalProperties: true
1753
1792
  ListPartitionRouter:
1754
1793
  title: List Partition Router
1755
1794
  description: A Partition router that specifies a list of attributes where each attribute describes a portion of the complete data set for a stream. During a sync, each value is iterated over and can be used as input to outbound API requests.
@@ -2404,10 +2443,12 @@ definitions:
2404
2443
  title: Decoder
2405
2444
  description: Component decoding the response so records can be extracted.
2406
2445
  anyOf:
2446
+ - "$ref": "#/definitions/CustomDecoder"
2407
2447
  - "$ref": "#/definitions/JsonDecoder"
2408
2448
  - "$ref": "#/definitions/JsonlDecoder"
2409
2449
  - "$ref": "#/definitions/IterableDecoder"
2410
2450
  - "$ref": "#/definitions/XmlDecoder"
2451
+ - "$ref": "#/definitions/GzipJsonDecoder"
2411
2452
  $parameters:
2412
2453
  type: object
2413
2454
  additionalProperties: true
@@ -2520,10 +2561,12 @@ definitions:
2520
2561
  title: Decoder
2521
2562
  description: Component decoding the response so records can be extracted.
2522
2563
  anyOf:
2564
+ - "$ref": "#/definitions/CustomDecoder"
2523
2565
  - "$ref": "#/definitions/JsonDecoder"
2524
2566
  - "$ref": "#/definitions/JsonlDecoder"
2525
2567
  - "$ref": "#/definitions/IterableDecoder"
2526
2568
  - "$ref": "#/definitions/XmlDecoder"
2569
+ - "$ref": "#/definitions/GzipJsonDecoder"
2527
2570
  $parameters:
2528
2571
  type: object
2529
2572
  additionalProperties: true
@@ -3,9 +3,9 @@
3
3
  #
4
4
 
5
5
  from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
6
- from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder, JsonlDecoder, IterableDecoder
6
+ from airbyte_cdk.sources.declarative.decoders.json_decoder import JsonDecoder, JsonlDecoder, IterableDecoder, GzipJsonDecoder
7
7
  from airbyte_cdk.sources.declarative.decoders.noop_decoder import NoopDecoder
8
8
  from airbyte_cdk.sources.declarative.decoders.pagination_decoder_decorator import PaginationDecoderDecorator
9
9
  from airbyte_cdk.sources.declarative.decoders.xml_decoder import XmlDecoder
10
10
 
11
- __all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "NoopDecoder", "PaginationDecoderDecorator", "XmlDecoder"]
11
+ __all__ = ["Decoder", "JsonDecoder", "JsonlDecoder", "IterableDecoder", "GzipJsonDecoder", "NoopDecoder", "PaginationDecoderDecorator", "XmlDecoder"]
@@ -1,14 +1,15 @@
1
1
  #
2
2
  # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
3
  #
4
-
4
+ import codecs
5
5
  import logging
6
6
  from dataclasses import InitVar, dataclass
7
- from typing import Any, Generator, Mapping
7
+ from gzip import decompress
8
+ from typing import Any, Generator, Mapping, MutableMapping, List, Optional
8
9
 
9
10
  import requests
10
11
  from airbyte_cdk.sources.declarative.decoders.decoder import Decoder
11
- from orjson import orjson
12
+ import orjson
12
13
 
13
14
  logger = logging.getLogger("airbyte")
14
15
 
@@ -24,24 +25,32 @@ class JsonDecoder(Decoder):
24
25
  def is_stream_response(self) -> bool:
25
26
  return False
26
27
 
27
- def decode(self, response: requests.Response) -> Generator[Mapping[str, Any], None, None]:
28
+ def decode(
29
+ self, response: requests.Response
30
+ ) -> Generator[MutableMapping[str, Any], None, None]:
28
31
  """
29
32
  Given the response is an empty string or an emtpy list, the function will return a generator with an empty mapping.
30
33
  """
31
34
  try:
32
35
  body_json = response.json()
33
- if not isinstance(body_json, list):
34
- body_json = [body_json]
35
- if len(body_json) == 0:
36
- yield {}
37
- else:
38
- yield from body_json
36
+ yield from self.parse_body_json(body_json)
39
37
  except requests.exceptions.JSONDecodeError:
40
38
  logger.warning(
41
39
  f"Response cannot be parsed into json: {response.status_code=}, {response.text=}"
42
40
  )
43
41
  yield {}
44
42
 
43
+ @staticmethod
44
+ def parse_body_json(
45
+ body_json: MutableMapping[str, Any] | List[MutableMapping[str, Any]],
46
+ ) -> Generator[MutableMapping[str, Any], None, None]:
47
+ if not isinstance(body_json, list):
48
+ body_json = [body_json]
49
+ if len(body_json) == 0:
50
+ yield {}
51
+ else:
52
+ yield from body_json
53
+
45
54
 
46
55
  @dataclass
47
56
  class IterableDecoder(Decoder):
@@ -54,7 +63,9 @@ class IterableDecoder(Decoder):
54
63
  def is_stream_response(self) -> bool:
55
64
  return True
56
65
 
57
- def decode(self, response: requests.Response) -> Generator[Mapping[str, Any], None, None]:
66
+ def decode(
67
+ self, response: requests.Response
68
+ ) -> Generator[MutableMapping[str, Any], None, None]:
58
69
  for line in response.iter_lines():
59
70
  yield {"record": line.decode()}
60
71
 
@@ -70,8 +81,30 @@ class JsonlDecoder(Decoder):
70
81
  def is_stream_response(self) -> bool:
71
82
  return True
72
83
 
73
- def decode(self, response: requests.Response) -> Generator[Mapping[str, Any], None, None]:
84
+ def decode(
85
+ self, response: requests.Response
86
+ ) -> Generator[MutableMapping[str, Any], None, None]:
74
87
  # TODO???: set delimiter? usually it is `\n` but maybe it would be useful to set optional?
75
88
  # https://github.com/airbytehq/airbyte-internal-issues/issues/8436
76
89
  for record in response.iter_lines():
77
90
  yield orjson.loads(record)
91
+
92
+
93
+ @dataclass
94
+ class GzipJsonDecoder(JsonDecoder):
95
+ encoding: Optional[str]
96
+
97
+ def __post_init__(self, parameters: Mapping[str, Any]) -> None:
98
+ if self.encoding:
99
+ try:
100
+ codecs.lookup(self.encoding)
101
+ except LookupError:
102
+ raise ValueError(
103
+ f"Invalid encoding '{self.encoding}'. Please check provided encoding"
104
+ )
105
+
106
+ def decode(
107
+ self, response: requests.Response
108
+ ) -> Generator[MutableMapping[str, Any], None, None]:
109
+ raw_string = decompress(response.content).decode(encoding=self.encoding or "utf-8")
110
+ yield from self.parse_body_json(orjson.loads(raw_string))
@@ -8,7 +8,7 @@ import pkgutil
8
8
  import re
9
9
  from copy import deepcopy
10
10
  from importlib import metadata
11
- from typing import Any, Dict, Iterator, List, Mapping, Optional, Tuple, Union
11
+ from typing import Any, Dict, Iterator, List, Mapping, Optional, Tuple
12
12
 
13
13
  import yaml
14
14
  from airbyte_cdk.models import (
@@ -94,7 +94,7 @@ class ManifestDeclarativeSource(DeclarativeSource):
94
94
  return self._source_config
95
95
 
96
96
  @property
97
- def message_repository(self) -> Union[None, MessageRepository]:
97
+ def message_repository(self) -> MessageRepository:
98
98
  return self._message_repository
99
99
 
100
100
  @property
@@ -256,7 +256,10 @@ class ManifestDeclarativeSource(DeclarativeSource):
256
256
  manifest_version, "manifest"
257
257
  )
258
258
 
259
- if cdk_major < manifest_major or (
259
+ if cdk_version.startswith("0.0.0"):
260
+ # Skipping version compatibility check on unreleased dev branch
261
+ pass
262
+ elif cdk_major < manifest_major or (
260
263
  cdk_major == manifest_major and cdk_minor < manifest_minor
261
264
  ):
262
265
  raise ValidationError(
@@ -4,7 +4,11 @@ from typing import Any, Mapping
4
4
 
5
5
  from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
6
6
  from airbyte_cdk.sources.declarative.migrations.state_migration import StateMigration
7
- from airbyte_cdk.sources.declarative.models import DatetimeBasedCursor, SubstreamPartitionRouter
7
+ from airbyte_cdk.sources.declarative.models import (
8
+ DatetimeBasedCursor,
9
+ SubstreamPartitionRouter,
10
+ CustomIncrementalSync,
11
+ )
8
12
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import ParentStreamConfig
9
13
 
10
14
 
@@ -32,7 +36,7 @@ class LegacyToPerPartitionStateMigration(StateMigration):
32
36
  def __init__(
33
37
  self,
34
38
  partition_router: SubstreamPartitionRouter,
35
- cursor: DatetimeBasedCursor,
39
+ cursor: CustomIncrementalSync | DatetimeBasedCursor,
36
40
  config: Mapping[str, Any],
37
41
  parameters: Mapping[str, Any],
38
42
  ):
@@ -64,7 +68,7 @@ class LegacyToPerPartitionStateMigration(StateMigration):
64
68
  return False
65
69
 
66
70
  # There is exactly one parent stream
67
- number_of_parent_streams = len(self._partition_router.parent_stream_configs)
71
+ number_of_parent_streams = len(self._partition_router.parent_stream_configs) # type: ignore # custom partition will introduce this attribute if needed
68
72
  if number_of_parent_streams != 1:
69
73
  # There should be exactly one parent stream
70
74
  return False
@@ -4,10 +4,9 @@
4
4
  from __future__ import annotations
5
5
 
6
6
  from enum import Enum
7
- from typing import Any, Dict, List, Optional, Union
7
+ from typing import Any, Dict, List, Literal, Optional, Union
8
8
 
9
9
  from pydantic.v1 import BaseModel, Extra, Field
10
- from typing_extensions import Literal
11
10
 
12
11
 
13
12
  class AuthFlowType(Enum):
@@ -632,6 +631,7 @@ class HttpResponseFilter(BaseModel):
632
631
  description="Match the response if its HTTP code is included in this list.",
633
632
  examples=[[420, 429], [500]],
634
633
  title="HTTP Codes",
634
+ unique_items=True,
635
635
  )
636
636
  predicate: Optional[str] = Field(
637
637
  None,
@@ -687,6 +687,29 @@ class XmlDecoder(BaseModel):
687
687
  type: Literal["XmlDecoder"]
688
688
 
689
689
 
690
+ class CustomDecoder(BaseModel):
691
+ class Config:
692
+ extra = Extra.allow
693
+
694
+ type: Literal["CustomDecoder"]
695
+ class_name: str = Field(
696
+ ...,
697
+ description="Fully-qualified name of the class that will be implementing the custom decoding. Has to be a sub class of Decoder. The format is `source_<name>.<package>.<class_name>`.",
698
+ examples=["source_amazon_ads.components.GzipJsonlDecoder"],
699
+ title="Class Name",
700
+ )
701
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
702
+
703
+
704
+ class GzipJsonDecoder(BaseModel):
705
+ class Config:
706
+ extra = Extra.allow
707
+
708
+ type: Literal["GzipJsonDecoder"]
709
+ encoding: Optional[str] = "utf-8"
710
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
711
+
712
+
690
713
  class MinMaxDatetime(BaseModel):
691
714
  type: Literal["MinMaxDatetime"]
692
715
  datetime: str = Field(
@@ -1620,7 +1643,16 @@ class SimpleRetriever(BaseModel):
1620
1643
  description="PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.",
1621
1644
  title="Partition Router",
1622
1645
  )
1623
- decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder, XmlDecoder]] = Field(
1646
+ decoder: Optional[
1647
+ Union[
1648
+ CustomDecoder,
1649
+ JsonDecoder,
1650
+ JsonlDecoder,
1651
+ IterableDecoder,
1652
+ XmlDecoder,
1653
+ GzipJsonDecoder,
1654
+ ]
1655
+ ] = Field(
1624
1656
  None,
1625
1657
  description="Component decoding the response so records can be extracted.",
1626
1658
  title="Decoder",
@@ -1680,7 +1712,16 @@ class AsyncRetriever(BaseModel):
1680
1712
  description="PartitionRouter component that describes how to partition the stream, enabling incremental syncs and checkpointing.",
1681
1713
  title="Partition Router",
1682
1714
  )
1683
- decoder: Optional[Union[JsonDecoder, JsonlDecoder, IterableDecoder, XmlDecoder]] = Field(
1715
+ decoder: Optional[
1716
+ Union[
1717
+ CustomDecoder,
1718
+ JsonDecoder,
1719
+ JsonlDecoder,
1720
+ IterableDecoder,
1721
+ XmlDecoder,
1722
+ GzipJsonDecoder,
1723
+ ]
1724
+ ] = Field(
1684
1725
  None,
1685
1726
  description="Component decoding the response so records can be extracted.",
1686
1727
  title="Decoder",
@@ -58,6 +58,7 @@ from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime
58
58
  from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream
59
59
  from airbyte_cdk.sources.declarative.decoders import (
60
60
  Decoder,
61
+ GzipJsonDecoder,
61
62
  IterableDecoder,
62
63
  JsonDecoder,
63
64
  JsonlDecoder,
@@ -134,6 +135,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
134
135
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
135
136
  CustomBackoffStrategy as CustomBackoffStrategyModel,
136
137
  )
138
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
139
+ CustomDecoder as CustomDecoderModel,
140
+ )
137
141
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
138
142
  CustomErrorHandler as CustomErrorHandlerModel,
139
143
  )
@@ -182,6 +186,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
182
186
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
183
187
  ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
184
188
  )
189
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
190
+ GzipJsonDecoder as GzipJsonDecoderModel,
191
+ )
185
192
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
186
193
  HttpRequester as HttpRequesterModel,
187
194
  )
@@ -402,6 +409,7 @@ class ModelToComponentFactory:
402
409
  CursorPaginationModel: self.create_cursor_pagination,
403
410
  CustomAuthenticatorModel: self.create_custom_component,
404
411
  CustomBackoffStrategyModel: self.create_custom_component,
412
+ CustomDecoderModel: self.create_custom_component,
405
413
  CustomErrorHandlerModel: self.create_custom_component,
406
414
  CustomIncrementalSyncModel: self.create_custom_component,
407
415
  CustomRecordExtractorModel: self.create_custom_component,
@@ -425,6 +433,7 @@ class ModelToComponentFactory:
425
433
  InlineSchemaLoaderModel: self.create_inline_schema_loader,
426
434
  JsonDecoderModel: self.create_json_decoder,
427
435
  JsonlDecoderModel: self.create_jsonl_decoder,
436
+ GzipJsonDecoderModel: self.create_gzipjson_decoder,
428
437
  KeysToLowerModel: self.create_keys_to_lower_transformation,
429
438
  IterableDecoderModel: self.create_iterable_decoder,
430
439
  XmlDecoderModel: self.create_xml_decoder,
@@ -619,11 +628,16 @@ class ModelToComponentFactory:
619
628
  "LegacyToPerPartitionStateMigrations can only be applied with a parent stream configuration."
620
629
  )
621
630
 
631
+ if not hasattr(declarative_stream, "incremental_sync"):
632
+ raise ValueError(
633
+ "LegacyToPerPartitionStateMigrations can only be applied with an incremental_sync configuration."
634
+ )
635
+
622
636
  return LegacyToPerPartitionStateMigration(
623
- declarative_stream.retriever.partition_router,
624
- declarative_stream.incremental_sync,
637
+ partition_router, # type: ignore # was already checked above
638
+ declarative_stream.incremental_sync, # type: ignore # was already checked. Migration can be applied only to incremental streams.
625
639
  config,
626
- declarative_stream.parameters,
640
+ declarative_stream.parameters, # type: ignore # different type is expected here Mapping[str, Any], got Dict[str, Any]
627
641
  ) # type: ignore # The retriever type was already checked
628
642
 
629
643
  def create_session_token_authenticator(
@@ -1548,6 +1562,12 @@ class ModelToComponentFactory:
1548
1562
  def create_xml_decoder(model: XmlDecoderModel, config: Config, **kwargs: Any) -> XmlDecoder:
1549
1563
  return XmlDecoder(parameters={})
1550
1564
 
1565
+ @staticmethod
1566
+ def create_gzipjson_decoder(
1567
+ model: GzipJsonDecoderModel, config: Config, **kwargs: Any
1568
+ ) -> GzipJsonDecoder:
1569
+ return GzipJsonDecoder(parameters={}, encoding=model.encoding)
1570
+
1551
1571
  @staticmethod
1552
1572
  def create_json_file_schema_loader(
1553
1573
  model: JsonFileSchemaLoaderModel, config: Config, **kwargs: Any