airbyte-cdk 6.16.0__tar.gz → 6.17.0__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 (348) hide show
  1. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/entrypoint.py +13 -1
  3. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +24 -51
  4. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +52 -35
  5. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +10 -7
  6. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +9 -4
  7. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +11 -6
  8. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +13 -13
  9. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +14 -13
  10. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +6 -7
  11. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +10 -10
  12. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +1 -4
  13. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +71 -64
  14. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +4 -4
  15. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/pyproject.toml +1 -1
  16. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/LICENSE.txt +0 -0
  17. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/README.md +0 -0
  18. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/__init__.py +0 -0
  19. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/cli/__init__.py +0 -0
  20. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  21. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  22. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  23. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/config_observation.py +0 -0
  24. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector.py +0 -0
  25. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/README.md +0 -0
  26. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  27. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  28. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/main.py +0 -0
  29. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  30. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/connector_builder/models.py +0 -0
  31. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/__init__.py +0 -0
  32. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/destination.py +0 -0
  33. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  34. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  35. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  36. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  37. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  38. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  39. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  40. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  41. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  42. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/exception_handler.py +0 -0
  43. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/logger.py +0 -0
  44. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/models/__init__.py +0 -0
  45. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  46. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  47. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  48. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/models/well_known_types.py +0 -0
  49. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/py.typed +0 -0
  50. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/__init__.py +0 -0
  51. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  52. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  53. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  54. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  55. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  56. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  57. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  58. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  59. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/config.py +0 -0
  60. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  61. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  62. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  63. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  64. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  65. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  66. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  67. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  68. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  69. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  70. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  71. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  72. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  73. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  74. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  75. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  76. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  77. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  78. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  79. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  80. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  81. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  82. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  83. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  84. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
  85. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  86. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  87. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  88. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  89. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  90. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  91. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  92. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  93. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  94. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  95. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  96. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  97. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  98. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  99. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  100. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  101. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  102. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  103. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  104. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  105. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  106. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  107. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  108. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  109. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  110. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  111. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  112. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  113. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  114. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  115. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  116. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  117. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  118. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  119. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  120. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  121. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  122. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  123. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  124. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  125. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  126. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  127. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  128. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  129. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
  130. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  131. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  132. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  133. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  134. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  135. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  136. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  137. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  138. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  139. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  140. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  141. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  142. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  143. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  144. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  145. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  146. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  147. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  148. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  149. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  150. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  151. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  152. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  153. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  154. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  155. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  156. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  157. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  158. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  159. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  160. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  161. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  162. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  163. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  164. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  165. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  166. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  167. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  168. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  169. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  170. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  171. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  172. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  173. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  174. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  175. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  176. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  177. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  178. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  179. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  180. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  181. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  182. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  183. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  184. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  185. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  186. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  187. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  188. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  189. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  190. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  191. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  192. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  193. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  194. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
  195. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
  196. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  197. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  198. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  199. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  200. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  201. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  202. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  203. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  204. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  205. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  206. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  207. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  208. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  209. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  210. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  211. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  212. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  213. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  214. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  215. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  216. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  217. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  218. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  219. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  220. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  221. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  222. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  223. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  224. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  225. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  226. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  227. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  228. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  229. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  230. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  231. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  232. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  233. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  234. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  235. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  236. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  237. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  238. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  239. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  240. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  241. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  242. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  243. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/http_config.py +0 -0
  244. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/http_logger.py +0 -0
  245. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  246. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/message/repository.py +0 -0
  247. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/source.py +0 -0
  248. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  249. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  250. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  251. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  252. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  253. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  254. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  255. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  256. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  257. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  258. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  259. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  260. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  261. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  262. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  263. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  264. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  265. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  266. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  267. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  268. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  269. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  270. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  271. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  272. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  273. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  274. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  275. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  276. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  277. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/core.py +0 -0
  278. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  279. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  280. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  281. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  282. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  283. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  284. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  285. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  286. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  287. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  288. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  289. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  290. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  291. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  292. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  293. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  294. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  295. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  296. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  297. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  298. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  299. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/types.py +0 -0
  300. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  301. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  302. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  303. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  304. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  305. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  306. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sources/utils/types.py +0 -0
  307. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/__init__.py +0 -0
  308. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  309. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  310. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  311. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/constants.py +0 -0
  312. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/exceptions.py +0 -0
  313. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/secrets.py +0 -0
  314. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  315. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  316. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  317. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/sql/types.py +0 -0
  318. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/__init__.py +0 -0
  319. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  320. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  321. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  322. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  323. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  324. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  325. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  326. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  327. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/state_builder.py +0 -0
  328. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/utils/__init__.py +0 -0
  329. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/utils/data.py +0 -0
  330. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  331. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  332. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/test/utils/reading.py +0 -0
  333. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/__init__.py +0 -0
  334. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  335. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  336. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/constants.py +0 -0
  337. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  338. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/event_timing.py +0 -0
  339. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  340. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  341. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/message_utils.py +0 -0
  342. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  343. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  344. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  345. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  346. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  347. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  348. {airbyte_cdk-6.16.0 → airbyte_cdk-6.17.0}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: airbyte-cdk
3
- Version: 6.16.0
3
+ Version: 6.17.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -5,6 +5,7 @@
5
5
  import argparse
6
6
  import importlib
7
7
  import ipaddress
8
+ import json
8
9
  import logging
9
10
  import os.path
10
11
  import socket
@@ -46,6 +47,7 @@ logger = init_logger("airbyte")
46
47
 
47
48
  VALID_URL_SCHEMES = ["https"]
48
49
  CLOUD_DEPLOYMENT_MODE = "cloud"
50
+ _HAS_LOGGED_FOR_SERIALIZATION_ERROR = False
49
51
 
50
52
 
51
53
  class AirbyteEntrypoint(object):
@@ -291,7 +293,17 @@ class AirbyteEntrypoint(object):
291
293
 
292
294
  @staticmethod
293
295
  def airbyte_message_to_string(airbyte_message: AirbyteMessage) -> str:
294
- return orjson.dumps(AirbyteMessageSerializer.dump(airbyte_message)).decode()
296
+ global _HAS_LOGGED_FOR_SERIALIZATION_ERROR
297
+ serialized_message = AirbyteMessageSerializer.dump(airbyte_message)
298
+ try:
299
+ return orjson.dumps(serialized_message).decode()
300
+ except Exception as exception:
301
+ if not _HAS_LOGGED_FOR_SERIALIZATION_ERROR:
302
+ logger.warning(
303
+ f"There was an error during the serialization of an AirbyteMessage: `{exception}`. This might impact the sync performances."
304
+ )
305
+ _HAS_LOGGED_FOR_SERIALIZATION_ERROR = True
306
+ return json.dumps(serialized_message)
295
307
 
296
308
  @classmethod
297
309
  def extract_state(cls, args: List[str]) -> Optional[Any]:
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  import logging
6
- from typing import Any, Callable, Generic, Iterator, List, Mapping, Optional, Tuple, Union
6
+ from typing import Any, Generic, Iterator, List, Mapping, Optional, Tuple
7
7
 
8
8
  from airbyte_cdk.models import (
9
9
  AirbyteCatalog,
@@ -28,15 +28,11 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
28
28
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
29
29
  DatetimeBasedCursor as DatetimeBasedCursorModel,
30
30
  )
31
- from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
32
- DeclarativeStream as DeclarativeStreamModel,
33
- )
34
31
  from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
35
- ComponentDefinition,
36
32
  ModelToComponentFactory,
37
33
  )
38
34
  from airbyte_cdk.sources.declarative.requesters import HttpRequester
39
- from airbyte_cdk.sources.declarative.retrievers import Retriever, SimpleRetriever
35
+ from airbyte_cdk.sources.declarative.retrievers import SimpleRetriever
40
36
  from airbyte_cdk.sources.declarative.stream_slicers.declarative_partition_generator import (
41
37
  DeclarativePartitionFactory,
42
38
  StreamSlicerPartitionGenerator,
@@ -52,7 +48,6 @@ from airbyte_cdk.sources.streams.concurrent.availability_strategy import (
52
48
  from airbyte_cdk.sources.streams.concurrent.cursor import FinalStateCursor
53
49
  from airbyte_cdk.sources.streams.concurrent.default_stream import DefaultStream
54
50
  from airbyte_cdk.sources.streams.concurrent.helpers import get_primary_key_from_stream
55
- from airbyte_cdk.sources.types import Config, StreamState
56
51
 
57
52
 
58
53
  class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
@@ -194,10 +189,11 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
194
189
  # Some low-code sources use a combination of DeclarativeStream and regular Python streams. We can't inspect
195
190
  # these legacy Python streams the way we do low-code streams to determine if they are concurrent compatible,
196
191
  # so we need to treat them as synchronous
197
- if (
198
- isinstance(declarative_stream, DeclarativeStream)
199
- and name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
192
+ if isinstance(declarative_stream, DeclarativeStream) and (
193
+ name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
200
194
  == "SimpleRetriever"
195
+ or name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
196
+ == "AsyncRetriever"
201
197
  ):
202
198
  incremental_sync_component_definition = name_to_stream_mapping[
203
199
  declarative_stream.name
@@ -234,15 +230,27 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
234
230
  stream_state=stream_state,
235
231
  )
236
232
 
233
+ retriever = declarative_stream.retriever
234
+
235
+ # This is an optimization so that we don't invoke any cursor or state management flows within the
236
+ # low-code framework because state management is handled through the ConcurrentCursor.
237
+ if declarative_stream and isinstance(retriever, SimpleRetriever):
238
+ # Also a temporary hack. In the legacy Stream implementation, as part of the read,
239
+ # set_initial_state() is called to instantiate incoming state on the cursor. Although we no
240
+ # longer rely on the legacy low-code cursor for concurrent checkpointing, low-code components
241
+ # like StopConditionPaginationStrategyDecorator and ClientSideIncrementalRecordFilterDecorator
242
+ # still rely on a DatetimeBasedCursor that is properly initialized with state.
243
+ if retriever.cursor:
244
+ retriever.cursor.set_initial_state(stream_state=stream_state)
245
+ # We zero it out here, but since this is a cursor reference, the state is still properly
246
+ # instantiated for the other components that reference it
247
+ retriever.cursor = None
248
+
237
249
  partition_generator = StreamSlicerPartitionGenerator(
238
250
  DeclarativePartitionFactory(
239
251
  declarative_stream.name,
240
252
  declarative_stream.get_json_schema(),
241
- self._retriever_factory(
242
- name_to_stream_mapping[declarative_stream.name],
243
- config,
244
- stream_state,
245
- ),
253
+ retriever,
246
254
  self.message_repository,
247
255
  ),
248
256
  cursor,
@@ -272,11 +280,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
272
280
  DeclarativePartitionFactory(
273
281
  declarative_stream.name,
274
282
  declarative_stream.get_json_schema(),
275
- self._retriever_factory(
276
- name_to_stream_mapping[declarative_stream.name],
277
- config,
278
- {},
279
- ),
283
+ declarative_stream.retriever,
280
284
  self.message_repository,
281
285
  ),
282
286
  declarative_stream.retriever.stream_slicer,
@@ -415,34 +419,3 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
415
419
  if stream.stream.name not in concurrent_stream_names
416
420
  ]
417
421
  )
418
-
419
- def _retriever_factory(
420
- self, stream_config: ComponentDefinition, source_config: Config, stream_state: StreamState
421
- ) -> Callable[[], Retriever]:
422
- def _factory_method() -> Retriever:
423
- declarative_stream: DeclarativeStream = self._constructor.create_component(
424
- DeclarativeStreamModel,
425
- stream_config,
426
- source_config,
427
- emit_connector_builder_messages=self._emit_connector_builder_messages,
428
- )
429
-
430
- # This is an optimization so that we don't invoke any cursor or state management flows within the
431
- # low-code framework because state management is handled through the ConcurrentCursor.
432
- if (
433
- declarative_stream
434
- and declarative_stream.retriever
435
- and isinstance(declarative_stream.retriever, SimpleRetriever)
436
- ):
437
- # Also a temporary hack. In the legacy Stream implementation, as part of the read, set_initial_state() is
438
- # called to instantiate incoming state on the cursor. Although we no longer rely on the legacy low-code cursor
439
- # for concurrent checkpointing, low-code components like StopConditionPaginationStrategyDecorator and
440
- # ClientSideIncrementalRecordFilterDecorator still rely on a DatetimeBasedCursor that is properly initialized
441
- # with state.
442
- if declarative_stream.retriever.cursor:
443
- declarative_stream.retriever.cursor.set_initial_state(stream_state=stream_state)
444
- declarative_stream.retriever.cursor = None
445
-
446
- return declarative_stream.retriever
447
-
448
- return _factory_method
@@ -112,27 +112,39 @@ class DefaultPaginator(Paginator):
112
112
  )
113
113
  if isinstance(self.url_base, str):
114
114
  self.url_base = InterpolatedString(string=self.url_base, parameters=parameters)
115
- self._token: Optional[Any] = self.pagination_strategy.initial_token
115
+
116
+ def get_initial_token(self) -> Optional[Any]:
117
+ """
118
+ Return the page token that should be used for the first request of a stream
119
+
120
+ WARNING: get_initial_token() should not be used by streams that use RFR that perform checkpointing
121
+ of state using page numbers. Because paginators are stateless
122
+ """
123
+ return self.pagination_strategy.initial_token
116
124
 
117
125
  def next_page_token(
118
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
126
+ self,
127
+ response: requests.Response,
128
+ last_page_size: int,
129
+ last_record: Optional[Record],
130
+ last_page_token_value: Optional[Any] = None,
119
131
  ) -> Optional[Mapping[str, Any]]:
120
- self._token = self.pagination_strategy.next_page_token(
121
- response, last_page_size, last_record
132
+ next_page_token = self.pagination_strategy.next_page_token(
133
+ response=response,
134
+ last_page_size=last_page_size,
135
+ last_record=last_record,
136
+ last_page_token_value=last_page_token_value,
122
137
  )
123
- if self._token:
124
- return {"next_page_token": self._token}
138
+ if next_page_token:
139
+ return {"next_page_token": next_page_token}
125
140
  else:
126
141
  return None
127
142
 
128
- def path(self) -> Optional[str]:
129
- if (
130
- self._token
131
- and self.page_token_option
132
- and isinstance(self.page_token_option, RequestPath)
133
- ):
143
+ def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
144
+ token = next_page_token.get("next_page_token") if next_page_token else None
145
+ if token and self.page_token_option and isinstance(self.page_token_option, RequestPath):
134
146
  # Replace url base to only return the path
135
- return str(self._token).replace(self.url_base.eval(self.config), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
147
+ return str(token).replace(self.url_base.eval(self.config), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
136
148
  else:
137
149
  return None
138
150
 
@@ -143,7 +155,7 @@ class DefaultPaginator(Paginator):
143
155
  stream_slice: Optional[StreamSlice] = None,
144
156
  next_page_token: Optional[Mapping[str, Any]] = None,
145
157
  ) -> MutableMapping[str, Any]:
146
- return self._get_request_options(RequestOptionType.request_parameter)
158
+ return self._get_request_options(RequestOptionType.request_parameter, next_page_token)
147
159
 
148
160
  def get_request_headers(
149
161
  self,
@@ -152,7 +164,7 @@ class DefaultPaginator(Paginator):
152
164
  stream_slice: Optional[StreamSlice] = None,
153
165
  next_page_token: Optional[Mapping[str, Any]] = None,
154
166
  ) -> Mapping[str, str]:
155
- return self._get_request_options(RequestOptionType.header)
167
+ return self._get_request_options(RequestOptionType.header, next_page_token)
156
168
 
157
169
  def get_request_body_data(
158
170
  self,
@@ -161,7 +173,7 @@ class DefaultPaginator(Paginator):
161
173
  stream_slice: Optional[StreamSlice] = None,
162
174
  next_page_token: Optional[Mapping[str, Any]] = None,
163
175
  ) -> Mapping[str, Any]:
164
- return self._get_request_options(RequestOptionType.body_data)
176
+ return self._get_request_options(RequestOptionType.body_data, next_page_token)
165
177
 
166
178
  def get_request_body_json(
167
179
  self,
@@ -170,25 +182,21 @@ class DefaultPaginator(Paginator):
170
182
  stream_slice: Optional[StreamSlice] = None,
171
183
  next_page_token: Optional[Mapping[str, Any]] = None,
172
184
  ) -> Mapping[str, Any]:
173
- return self._get_request_options(RequestOptionType.body_json)
174
-
175
- def reset(self, reset_value: Optional[Any] = None) -> None:
176
- if reset_value:
177
- self.pagination_strategy.reset(reset_value=reset_value)
178
- else:
179
- self.pagination_strategy.reset()
180
- self._token = self.pagination_strategy.initial_token
185
+ return self._get_request_options(RequestOptionType.body_json, next_page_token)
181
186
 
182
- def _get_request_options(self, option_type: RequestOptionType) -> MutableMapping[str, Any]:
187
+ def _get_request_options(
188
+ self, option_type: RequestOptionType, next_page_token: Optional[Mapping[str, Any]]
189
+ ) -> MutableMapping[str, Any]:
183
190
  options = {}
184
191
 
192
+ token = next_page_token.get("next_page_token") if next_page_token else None
185
193
  if (
186
194
  self.page_token_option
187
- and self._token is not None
195
+ and token is not None
188
196
  and isinstance(self.page_token_option, RequestOption)
189
197
  and self.page_token_option.inject_into == option_type
190
198
  ):
191
- options[self.page_token_option.field_name.eval(config=self.config)] = self._token # type: ignore # field_name is always cast to an interpolated string
199
+ options[self.page_token_option.field_name.eval(config=self.config)] = token # type: ignore # field_name is always cast to an interpolated string
192
200
  if (
193
201
  self.page_size_option
194
202
  and self.pagination_strategy.get_page_size()
@@ -204,6 +212,9 @@ class PaginatorTestReadDecorator(Paginator):
204
212
  """
205
213
  In some cases, we want to limit the number of requests that are made to the backend source. This class allows for limiting the number of
206
214
  pages that are queried throughout a read command.
215
+
216
+ WARNING: This decorator is not currently thread-safe like the rest of the low-code framework because it has
217
+ an internal state to track the current number of pages counted so that it can exit early during a test read
207
218
  """
208
219
 
209
220
  _PAGE_COUNT_BEFORE_FIRST_NEXT_CALL = 1
@@ -217,17 +228,27 @@ class PaginatorTestReadDecorator(Paginator):
217
228
  self._decorated = decorated
218
229
  self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
219
230
 
231
+ def get_initial_token(self) -> Optional[Any]:
232
+ self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
233
+ return self._decorated.get_initial_token()
234
+
220
235
  def next_page_token(
221
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
236
+ self,
237
+ response: requests.Response,
238
+ last_page_size: int,
239
+ last_record: Optional[Record],
240
+ last_page_token_value: Optional[Any] = None,
222
241
  ) -> Optional[Mapping[str, Any]]:
223
242
  if self._page_count >= self._maximum_number_of_pages:
224
243
  return None
225
244
 
226
245
  self._page_count += 1
227
- return self._decorated.next_page_token(response, last_page_size, last_record)
246
+ return self._decorated.next_page_token(
247
+ response, last_page_size, last_record, last_page_token_value
248
+ )
228
249
 
229
- def path(self) -> Optional[str]:
230
- return self._decorated.path()
250
+ def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
251
+ return self._decorated.path(next_page_token)
231
252
 
232
253
  def get_request_params(
233
254
  self,
@@ -272,7 +293,3 @@ class PaginatorTestReadDecorator(Paginator):
272
293
  return self._decorated.get_request_body_json(
273
294
  stream_state=stream_state, stream_slice=stream_slice, next_page_token=next_page_token
274
295
  )
275
-
276
- def reset(self, reset_value: Optional[Any] = None) -> None:
277
- self._decorated.reset()
278
- self._page_count = self._PAGE_COUNT_BEFORE_FIRST_NEXT_CALL
@@ -19,7 +19,7 @@ class NoPagination(Paginator):
19
19
 
20
20
  parameters: InitVar[Mapping[str, Any]]
21
21
 
22
- def path(self) -> Optional[str]:
22
+ def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
23
23
  return None
24
24
 
25
25
  def get_request_params(
@@ -58,11 +58,14 @@ class NoPagination(Paginator):
58
58
  ) -> Mapping[str, Any]:
59
59
  return {}
60
60
 
61
+ def get_initial_token(self) -> Optional[Any]:
62
+ return None
63
+
61
64
  def next_page_token(
62
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
63
- ) -> Mapping[str, Any]:
65
+ self,
66
+ response: requests.Response,
67
+ last_page_size: int,
68
+ last_record: Optional[Record],
69
+ last_page_token_value: Optional[Any],
70
+ ) -> Optional[Mapping[str, Any]]:
64
71
  return {}
65
-
66
- def reset(self, reset_value: Optional[Any] = None) -> None:
67
- # No state to reset
68
- pass
@@ -24,14 +24,18 @@ class Paginator(ABC, RequestOptionsProvider):
24
24
  """
25
25
 
26
26
  @abstractmethod
27
- def reset(self, reset_value: Optional[Any] = None) -> None:
27
+ def get_initial_token(self) -> Optional[Any]:
28
28
  """
29
- Reset the pagination's inner state
29
+ Get the page token that should be included in the request to get the first page of records
30
30
  """
31
31
 
32
32
  @abstractmethod
33
33
  def next_page_token(
34
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
34
+ self,
35
+ response: requests.Response,
36
+ last_page_size: int,
37
+ last_record: Optional[Record],
38
+ last_page_token_value: Optional[Any],
35
39
  ) -> Optional[Mapping[str, Any]]:
36
40
  """
37
41
  Returns the next_page_token to use to fetch the next page of records.
@@ -39,12 +43,13 @@ class Paginator(ABC, RequestOptionsProvider):
39
43
  :param response: the response to process
40
44
  :param last_page_size: the number of records read from the response
41
45
  :param last_record: the last record extracted from the response
46
+ :param last_page_token_value: The current value of the page token made on the last request
42
47
  :return: A mapping {"next_page_token": <token>} for the next page from the input response object. Returning None means there are no more pages to read in this response.
43
48
  """
44
49
  pass
45
50
 
46
51
  @abstractmethod
47
- def path(self) -> Optional[str]:
52
+ def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
48
53
  """
49
54
  Returns the URL path to hit to fetch the next page of records
50
55
 
@@ -43,7 +43,6 @@ class CursorPaginationStrategy(PaginationStrategy):
43
43
  )
44
44
 
45
45
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
46
- self._initial_cursor = None
47
46
  if isinstance(self.cursor_value, str):
48
47
  self._cursor_value = InterpolatedString.create(self.cursor_value, parameters=parameters)
49
48
  else:
@@ -57,10 +56,19 @@ class CursorPaginationStrategy(PaginationStrategy):
57
56
 
58
57
  @property
59
58
  def initial_token(self) -> Optional[Any]:
60
- return self._initial_cursor
59
+ """
60
+ CursorPaginationStrategy does not have an initial value because the next cursor is typically included
61
+ in the response of the first request. For Resumable Full Refresh streams that checkpoint the page
62
+ cursor, the next cursor should be read from the state or stream slice object.
63
+ """
64
+ return None
61
65
 
62
66
  def next_page_token(
63
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
67
+ self,
68
+ response: requests.Response,
69
+ last_page_size: int,
70
+ last_record: Optional[Record],
71
+ last_page_token_value: Optional[Any] = None,
64
72
  ) -> Optional[Any]:
65
73
  decoded_response = next(self.decoder.decode(response))
66
74
 
@@ -87,8 +95,5 @@ class CursorPaginationStrategy(PaginationStrategy):
87
95
  )
88
96
  return token if token else None
89
97
 
90
- def reset(self, reset_value: Optional[Any] = None) -> None:
91
- self._initial_cursor = reset_value
92
-
93
98
  def get_page_size(self) -> Optional[int]:
94
99
  return self.page_size
@@ -52,7 +52,6 @@ class OffsetIncrement(PaginationStrategy):
52
52
  inject_on_first_request: bool = False
53
53
 
54
54
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
55
- self._offset = 0
56
55
  page_size = str(self.page_size) if isinstance(self.page_size, int) else self.page_size
57
56
  if page_size:
58
57
  self._page_size: Optional[InterpolatedString] = InterpolatedString(
@@ -64,11 +63,15 @@ class OffsetIncrement(PaginationStrategy):
64
63
  @property
65
64
  def initial_token(self) -> Optional[Any]:
66
65
  if self.inject_on_first_request:
67
- return self._offset
66
+ return 0
68
67
  return None
69
68
 
70
69
  def next_page_token(
71
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
70
+ self,
71
+ response: requests.Response,
72
+ last_page_size: int,
73
+ last_record: Optional[Record],
74
+ last_page_token_value: Optional[Any] = None,
72
75
  ) -> Optional[Any]:
73
76
  decoded_response = next(self.decoder.decode(response))
74
77
 
@@ -78,19 +81,16 @@ class OffsetIncrement(PaginationStrategy):
78
81
  and last_page_size < self._page_size.eval(self.config, response=decoded_response)
79
82
  ) or last_page_size == 0:
80
83
  return None
81
- else:
82
- self._offset += last_page_size
83
- return self._offset
84
-
85
- def reset(self, reset_value: Optional[Any] = 0) -> None:
86
- if reset_value is None:
87
- self._offset = 0
88
- elif not isinstance(reset_value, int):
84
+ elif last_page_token_value is None:
85
+ # If the OffsetIncrement strategy does not inject on the first request, the incoming last_page_token_value
86
+ # will be None. For this case, we assume that None was the first page and progress to the next offset
87
+ return 0 + last_page_size
88
+ elif not isinstance(last_page_token_value, int):
89
89
  raise ValueError(
90
- f"Reset value {reset_value} for OffsetIncrement pagination strategy was not an integer"
90
+ f"Last page token value {last_page_token_value} for OffsetIncrement pagination strategy was not an integer"
91
91
  )
92
92
  else:
93
- self._offset = reset_value
93
+ return last_page_token_value + last_page_size
94
94
 
95
95
  def get_page_size(self) -> Optional[int]:
96
96
  if self._page_size:
@@ -31,7 +31,6 @@ class PageIncrement(PaginationStrategy):
31
31
  inject_on_first_request: bool = False
32
32
 
33
33
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
34
- self._page = self.start_from_page
35
34
  if isinstance(self.page_size, int) or (self.page_size is None):
36
35
  self._page_size = self.page_size
37
36
  else:
@@ -43,28 +42,30 @@ class PageIncrement(PaginationStrategy):
43
42
  @property
44
43
  def initial_token(self) -> Optional[Any]:
45
44
  if self.inject_on_first_request:
46
- return self._page
45
+ return self.start_from_page
47
46
  return None
48
47
 
49
48
  def next_page_token(
50
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
49
+ self,
50
+ response: requests.Response,
51
+ last_page_size: int,
52
+ last_record: Optional[Record],
53
+ last_page_token_value: Optional[Any],
51
54
  ) -> Optional[Any]:
52
55
  # Stop paginating when there are fewer records than the page size or the current page has no records
53
56
  if (self._page_size and last_page_size < self._page_size) or last_page_size == 0:
54
57
  return None
55
- else:
56
- self._page += 1
57
- return self._page
58
-
59
- def reset(self, reset_value: Optional[Any] = None) -> None:
60
- if reset_value is None:
61
- self._page = self.start_from_page
62
- elif not isinstance(reset_value, int):
58
+ elif last_page_token_value is None:
59
+ # If the PageIncrement strategy does not inject on the first request, the incoming last_page_token_value
60
+ # may be None. When this is the case, we assume we've already requested the first page specified by
61
+ # start_from_page and must now get the next page
62
+ return self.start_from_page + 1
63
+ elif not isinstance(last_page_token_value, int):
63
64
  raise ValueError(
64
- f"Reset value {reset_value} for PageIncrement pagination strategy was not an integer"
65
+ f"Last page token value {last_page_token_value} for PageIncrement pagination strategy was not an integer"
65
66
  )
66
67
  else:
67
- self._page = reset_value
68
+ return last_page_token_value + 1
68
69
 
69
70
  def get_page_size(self) -> Optional[int]:
70
71
  return self._page_size
@@ -26,22 +26,21 @@ class PaginationStrategy:
26
26
 
27
27
  @abstractmethod
28
28
  def next_page_token(
29
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
29
+ self,
30
+ response: requests.Response,
31
+ last_page_size: int,
32
+ last_record: Optional[Record],
33
+ last_page_token_value: Optional[Any],
30
34
  ) -> Optional[Any]:
31
35
  """
32
36
  :param response: response to process
33
37
  :param last_page_size: the number of records read from the response
34
38
  :param last_record: the last record extracted from the response
39
+ :param last_page_token_value: The current value of the page token made on the last request
35
40
  :return: next page token. Returns None if there are no more pages to fetch
36
41
  """
37
42
  pass
38
43
 
39
- @abstractmethod
40
- def reset(self, reset_value: Optional[Any] = None) -> None:
41
- """
42
- Reset the pagination's inner state
43
- """
44
-
45
44
  @abstractmethod
46
45
  def get_page_size(self) -> Optional[int]:
47
46
  """
@@ -44,19 +44,19 @@ class StopConditionPaginationStrategyDecorator(PaginationStrategy):
44
44
  self._stop_condition = stop_condition
45
45
 
46
46
  def next_page_token(
47
- self, response: requests.Response, last_page_size: int, last_record: Optional[Record]
47
+ self,
48
+ response: requests.Response,
49
+ last_page_size: int,
50
+ last_record: Optional[Record],
51
+ last_page_token_value: Optional[Any] = None,
48
52
  ) -> Optional[Any]:
49
- # We evaluate in reverse order because the assumption is that most of the APIs using data feed structure will return records in
50
- # descending order. In terms of performance/memory, we return the records lazily
53
+ # We evaluate in reverse order because the assumption is that most of the APIs using data feed structure
54
+ # will return records in descending order. In terms of performance/memory, we return the records lazily
51
55
  if last_record and self._stop_condition.is_met(last_record):
52
56
  return None
53
- return self._delegate.next_page_token(response, last_page_size, last_record)
54
-
55
- def reset(self, reset_value: Optional[Any] = None) -> None:
56
- if reset_value:
57
- self._delegate.reset(reset_value)
58
- else:
59
- self._delegate.reset()
57
+ return self._delegate.next_page_token(
58
+ response, last_page_size, last_record, last_page_token_value
59
+ )
60
60
 
61
61
  def get_page_size(self) -> Optional[int]:
62
62
  return self._delegate.get_page_size()
@@ -7,10 +7,7 @@ from typing import Any, Iterable, Mapping, Optional
7
7
  from typing_extensions import deprecated
8
8
 
9
9
  from airbyte_cdk.models import FailureType
10
- from airbyte_cdk.sources.declarative.async_job.job_orchestrator import (
11
- AsyncJobOrchestrator,
12
- AsyncPartition,
13
- )
10
+ from airbyte_cdk.sources.declarative.async_job.job_orchestrator import AsyncPartition
14
11
  from airbyte_cdk.sources.declarative.extractors.record_selector import RecordSelector
15
12
  from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_router import (
16
13
  AsyncJobPartitionRouter,