airbyte-cdk 6.9.0.dev0__tar.gz → 6.9.1__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 (340) hide show
  1. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/PKG-INFO +1 -4
  2. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +23 -32
  3. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +1 -87
  4. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +36 -35
  5. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +4 -42
  6. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -4
  7. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -72
  8. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/schema/__init__.py +1 -2
  9. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/http_client.py +15 -5
  10. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/pyproject.toml +5 -5
  11. airbyte_cdk-6.9.0.dev0/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -219
  12. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/LICENSE.txt +0 -0
  13. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/README.md +0 -0
  14. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/__init__.py +0 -0
  15. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/cli/__init__.py +0 -0
  16. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  17. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  18. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  19. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/config_observation.py +0 -0
  20. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector.py +0 -0
  21. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/README.md +0 -0
  22. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  23. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  24. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/main.py +0 -0
  25. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  26. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/connector_builder/models.py +0 -0
  27. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/__init__.py +0 -0
  28. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/destination.py +0 -0
  29. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  30. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  31. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  32. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  33. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  34. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  35. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  36. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  37. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  38. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/entrypoint.py +0 -0
  39. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/exception_handler.py +0 -0
  40. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/logger.py +0 -0
  41. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/models/__init__.py +0 -0
  42. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  43. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  44. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  45. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/models/well_known_types.py +0 -0
  46. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/py.typed +0 -0
  47. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/__init__.py +0 -0
  48. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/abstract_source.py +0 -0
  49. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  50. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  51. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  52. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  53. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  54. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  55. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  56. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/config.py +0 -0
  57. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  58. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  59. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  60. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  61. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  62. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  63. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  64. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  65. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  66. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  67. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  68. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  69. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  70. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  71. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  72. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  73. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  74. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  75. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  76. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  77. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  78. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  79. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  80. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  81. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  82. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  83. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  84. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  85. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  86. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  87. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  88. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  89. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  90. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  91. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  92. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  93. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  94. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  95. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  96. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  97. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  98. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  99. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  100. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  101. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  102. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  103. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  104. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  105. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  106. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  107. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  108. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  109. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  110. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  111. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  112. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  113. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  114. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  115. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  116. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  117. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  118. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  119. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  120. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  121. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  122. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  123. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  124. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  125. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  126. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  127. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  128. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  129. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  130. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  131. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  132. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  133. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  134. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  135. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  136. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  137. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  138. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  139. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  140. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  141. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  142. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  143. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  144. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  145. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  146. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  147. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  148. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  149. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  150. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  151. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  152. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  153. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  154. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  155. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  156. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  157. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  158. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  159. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  160. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  161. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  162. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  163. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  164. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  165. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  166. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  167. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  168. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  169. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  170. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  171. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  172. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  173. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  174. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  175. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  176. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  177. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  178. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  179. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  180. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  181. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  182. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  183. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/types.py +0 -0
  184. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  185. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  186. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  187. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  188. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/embedded/runner.py +0 -0
  189. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/embedded/tools.py +0 -0
  190. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/README.md +0 -0
  191. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  192. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  193. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  194. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  195. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  196. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  197. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  198. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  199. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  200. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  201. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  202. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  203. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  204. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  205. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  206. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  207. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  208. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  209. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  210. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  211. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  212. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  213. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  214. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  215. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  216. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  217. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  218. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  219. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  220. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  221. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  222. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  223. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  224. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  225. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  226. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  227. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  228. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  229. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  230. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  231. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  232. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  233. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  234. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  235. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  236. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/file_based/types.py +0 -0
  237. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/http_config.py +0 -0
  238. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/http_logger.py +0 -0
  239. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/message/__init__.py +0 -0
  240. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/message/repository.py +0 -0
  241. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/source.py +0 -0
  242. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  243. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  244. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  245. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  246. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  247. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  248. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  249. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  250. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  251. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  252. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  253. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  254. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  255. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  256. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  257. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  258. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  259. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  260. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  261. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  262. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  263. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  264. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  265. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  266. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  267. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  268. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  269. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  270. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  271. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/core.py +0 -0
  272. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  273. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  274. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  275. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  276. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  277. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  278. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  279. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  280. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  281. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  282. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  283. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  284. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
  285. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  286. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  287. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  288. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  289. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  290. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  291. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  292. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/types.py +0 -0
  293. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  294. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/casing.py +0 -0
  295. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  296. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  297. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  298. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/transform.py +0 -0
  299. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sources/utils/types.py +0 -0
  300. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/__init__.py +0 -0
  301. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  302. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  303. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  304. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/constants.py +0 -0
  305. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/exceptions.py +0 -0
  306. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/secrets.py +0 -0
  307. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  308. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  309. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  310. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/sql/types.py +0 -0
  311. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/__init__.py +0 -0
  312. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/catalog_builder.py +0 -0
  313. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  314. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  315. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  316. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  317. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/request.py +0 -0
  318. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/response.py +0 -0
  319. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  320. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/state_builder.py +0 -0
  321. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/utils/__init__.py +0 -0
  322. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/utils/data.py +0 -0
  323. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  324. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/test/utils/reading.py +0 -0
  325. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/__init__.py +0 -0
  326. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  327. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/analytics_message.py +0 -0
  328. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/constants.py +0 -0
  329. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  330. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/event_timing.py +0 -0
  331. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  332. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  333. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/message_utils.py +0 -0
  334. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  335. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/print_buffer.py +0 -0
  336. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  337. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  338. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  339. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  340. {airbyte_cdk-6.9.0.dev0 → airbyte_cdk-6.9.1}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.9.0.dev0
3
+ Version: 6.9.1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -18,12 +18,10 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Topic :: Scientific/Engineering
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
20
  Provides-Extra: file-based
21
- Provides-Extra: sphinx-docs
22
21
  Provides-Extra: sql
23
22
  Provides-Extra: vector-db-based
24
23
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
25
24
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
26
- Requires-Dist: Sphinx (>=4.2,<4.3) ; extra == "sphinx-docs"
27
25
  Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
28
26
  Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
29
27
  Requires-Dist: backoff
@@ -63,7 +61,6 @@ Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
63
61
  Requires-Dist: requests
64
62
  Requires-Dist: requests_cache
65
63
  Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
66
- Requires-Dist: sphinx-rtd-theme (>=1.0,<1.1) ; extra == "sphinx-docs"
67
64
  Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
68
65
  Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
69
66
  Requires-Dist: unstructured.pytesseract (>=0.3.12) ; extra == "file-based"
@@ -56,8 +56,9 @@ from airbyte_cdk.sources.types import Config, StreamState
56
56
 
57
57
 
58
58
  class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
59
- # By default, we defer to a value of 1 which represents running a connector using the Concurrent CDK engine on only one thread.
60
- SINGLE_THREADED_CONCURRENCY_LEVEL = 1
59
+ # By default, we defer to a value of 2. A value lower than than could cause a PartitionEnqueuer to be stuck in a state of deadlock
60
+ # because it has hit the limit of futures but not partition reader is consuming them.
61
+ _LOWEST_SAFE_CONCURRENCY_LEVEL = 2
61
62
 
62
63
  def __init__(
63
64
  self,
@@ -86,23 +87,10 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
86
87
  component_factory=component_factory,
87
88
  )
88
89
 
90
+ # todo: We could remove state from initialization. Now that streams are grouped during the read(), a source
91
+ # no longer needs to store the original incoming state. But maybe there's an edge case?
89
92
  self._state = state
90
93
 
91
- self._concurrent_streams: Optional[List[AbstractStream]]
92
- self._synchronous_streams: Optional[List[Stream]]
93
-
94
- # If the connector command was SPEC, there is no incoming config, and we cannot instantiate streams because
95
- # they might depend on it. Ideally we want to have a static method on this class to get the spec without
96
- # any other arguments, but the existing entrypoint.py isn't designed to support this. Just noting this
97
- # for our future improvements to the CDK.
98
- if config:
99
- self._concurrent_streams, self._synchronous_streams = self._group_streams(
100
- config=config or {}
101
- )
102
- else:
103
- self._concurrent_streams = None
104
- self._synchronous_streams = None
105
-
106
94
  concurrency_level_from_manifest = self._source_config.get("concurrency_level")
107
95
  if concurrency_level_from_manifest:
108
96
  concurrency_level_component = self._constructor.create_component(
@@ -120,8 +108,8 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
120
108
  concurrency_level // 2, 1
121
109
  ) # Partition_generation iterates using range based on this value. If this is floored to zero we end up in a dead lock during start up
122
110
  else:
123
- concurrency_level = self.SINGLE_THREADED_CONCURRENCY_LEVEL
124
- initial_number_of_partitions_to_generate = self.SINGLE_THREADED_CONCURRENCY_LEVEL
111
+ concurrency_level = self._LOWEST_SAFE_CONCURRENCY_LEVEL
112
+ initial_number_of_partitions_to_generate = self._LOWEST_SAFE_CONCURRENCY_LEVEL // 2
125
113
 
126
114
  self._concurrent_source = ConcurrentSource.create(
127
115
  num_workers=concurrency_level,
@@ -136,17 +124,20 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
136
124
  logger: logging.Logger,
137
125
  config: Mapping[str, Any],
138
126
  catalog: ConfiguredAirbyteCatalog,
139
- state: Optional[Union[List[AirbyteStateMessage]]] = None,
127
+ state: Optional[List[AirbyteStateMessage]] = None,
140
128
  ) -> Iterator[AirbyteMessage]:
141
- # ConcurrentReadProcessor pops streams that are finished being read so before syncing, the names of the concurrent
142
- # streams must be saved so that they can be removed from the catalog before starting synchronous streams
143
- if self._concurrent_streams:
129
+ concurrent_streams, _ = self._group_streams(config=config)
130
+
131
+ # ConcurrentReadProcessor pops streams that are finished being read so before syncing, the names of
132
+ # the concurrent streams must be saved so that they can be removed from the catalog before starting
133
+ # synchronous streams
134
+ if len(concurrent_streams) > 0:
144
135
  concurrent_stream_names = set(
145
- [concurrent_stream.name for concurrent_stream in self._concurrent_streams]
136
+ [concurrent_stream.name for concurrent_stream in concurrent_streams]
146
137
  )
147
138
 
148
139
  selected_concurrent_streams = self._select_streams(
149
- streams=self._concurrent_streams, configured_catalog=catalog
140
+ streams=concurrent_streams, configured_catalog=catalog
150
141
  )
151
142
  # It would appear that passing in an empty set of streams causes an infinite loop in ConcurrentReadProcessor.
152
143
  # This is also evident in concurrent_source_adapter.py so I'll leave this out of scope to fix for now
@@ -165,8 +156,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
165
156
  yield from super().read(logger, config, filtered_catalog, state)
166
157
 
167
158
  def discover(self, logger: logging.Logger, config: Mapping[str, Any]) -> AirbyteCatalog:
168
- concurrent_streams = self._concurrent_streams or []
169
- synchronous_streams = self._synchronous_streams or []
159
+ concurrent_streams, synchronous_streams = self._group_streams(config=config)
170
160
  return AirbyteCatalog(
171
161
  streams=[
172
162
  stream.as_airbyte_stream() for stream in concurrent_streams + synchronous_streams
@@ -206,7 +196,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
206
196
  # so we need to treat them as synchronous
207
197
  if (
208
198
  isinstance(declarative_stream, DeclarativeStream)
209
- and name_to_stream_mapping[declarative_stream.name].get("retriever")["type"]
199
+ and name_to_stream_mapping[declarative_stream.name]["retriever"]["type"]
210
200
  == "SimpleRetriever"
211
201
  ):
212
202
  incremental_sync_component_definition = name_to_stream_mapping[
@@ -215,7 +205,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
215
205
 
216
206
  partition_router_component_definition = (
217
207
  name_to_stream_mapping[declarative_stream.name]
218
- .get("retriever")
208
+ .get("retriever", {})
219
209
  .get("partition_router")
220
210
  )
221
211
  is_without_partition_router_or_cursor = not bool(
@@ -237,7 +227,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
237
227
  cursor = self._constructor.create_concurrent_cursor_from_datetime_based_cursor(
238
228
  state_manager=state_manager,
239
229
  model_type=DatetimeBasedCursorModel,
240
- component_definition=incremental_sync_component_definition,
230
+ component_definition=incremental_sync_component_definition, # type: ignore # Not None because of the if condition above
241
231
  stream_name=declarative_stream.name,
242
232
  stream_namespace=declarative_stream.namespace,
243
233
  config=config or {},
@@ -320,10 +310,11 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
320
310
  def _is_datetime_incremental_without_partition_routing(
321
311
  self,
322
312
  declarative_stream: DeclarativeStream,
323
- incremental_sync_component_definition: Mapping[str, Any],
313
+ incremental_sync_component_definition: Mapping[str, Any] | None,
324
314
  ) -> bool:
325
315
  return (
326
- bool(incremental_sync_component_definition)
316
+ incremental_sync_component_definition is not None
317
+ and bool(incremental_sync_component_definition)
327
318
  and incremental_sync_component_definition.get("type", "")
328
319
  == DatetimeBasedCursorModel.__name__
329
320
  and self._stream_supports_concurrent_partition_processing(
@@ -327,7 +327,7 @@ definitions:
327
327
  additionalProperties: true
328
328
  ConcurrencyLevel:
329
329
  title: Concurrency Level
330
- description: Defines the amount of parallelization for the streams that are being synced. The factor of parallelization is how many partitions or streams are synced at the same time. For example, with a concurrency_level of 10, ten streams or partitions of data will processed at the same time.
330
+ description: Defines the amount of parallelization for the streams that are being synced. The factor of parallelization is how many partitions or streams are synced at the same time. For example, with a concurrency_level of 10, ten streams or partitions of data will processed at the same time. Note that a value of 1 could create deadlock if a stream has a very high number of partitions.
331
331
  type: object
332
332
  required:
333
333
  - default_concurrency
@@ -1684,92 +1684,6 @@ definitions:
1684
1684
  $parameters:
1685
1685
  type: object
1686
1686
  additionalProperties: true
1687
- TypesMap:
1688
- title: Types Map
1689
- description: (This component is experimental. Use at your own risk.) Represents a mapping between a current type and its corresponding target type.
1690
- type: object
1691
- required:
1692
- - target_type
1693
- - current_type
1694
- properties:
1695
- target_type:
1696
- anyOf:
1697
- - type: string
1698
- - type: array
1699
- items:
1700
- type: string
1701
- current_type:
1702
- anyOf:
1703
- - type: string
1704
- - type: array
1705
- items:
1706
- type: string
1707
- SchemaTypeIdentifier:
1708
- title: Schema Type Identifier
1709
- description: (This component is experimental. Use at your own risk.) Identifies schema details for dynamic schema extraction and processing.
1710
- type: object
1711
- required:
1712
- - key_pointer
1713
- properties:
1714
- type:
1715
- type: string
1716
- enum: [SchemaTypeIdentifier]
1717
- schema_pointer:
1718
- title: Schema Path
1719
- description: List of nested fields defining the schema field path to extract. Defaults to [].
1720
- type: array
1721
- default: []
1722
- items:
1723
- - type: string
1724
- interpolation_content:
1725
- - config
1726
- key_pointer:
1727
- title: Key Path
1728
- description: List of potentially nested fields describing the full path of the field key to extract.
1729
- type: array
1730
- items:
1731
- - type: string
1732
- interpolation_content:
1733
- - config
1734
- type_pointer:
1735
- title: Type Path
1736
- description: List of potentially nested fields describing the full path of the field type to extract.
1737
- type: array
1738
- items:
1739
- - type: string
1740
- interpolation_content:
1741
- - config
1742
- types_mapping:
1743
- type: array
1744
- items:
1745
- - "$ref": "#/definitions/TypesMap"
1746
- $parameters:
1747
- type: object
1748
- additionalProperties: true
1749
- DynamicSchemaLoader:
1750
- title: Dynamic Schema Loader
1751
- description: (This component is experimental. Use at your own risk.) Loads a schema by extracting data from retrieved records.
1752
- type: object
1753
- required:
1754
- - type
1755
- - retriever
1756
- - schema_type_identifier
1757
- properties:
1758
- type:
1759
- type: string
1760
- enum: [DynamicSchemaLoader]
1761
- retriever:
1762
- title: Retriever
1763
- description: Component used to coordinate how records are extracted across stream slices and request pages.
1764
- anyOf:
1765
- - "$ref": "#/definitions/AsyncRetriever"
1766
- - "$ref": "#/definitions/CustomRetriever"
1767
- - "$ref": "#/definitions/SimpleRetriever"
1768
- schema_type_identifier:
1769
- "$ref": "#/definitions/SchemaTypeIdentifier"
1770
- $parameters:
1771
- type: object
1772
- additionalProperties: true
1773
1687
  InlineSchemaLoader:
1774
1688
  title: Inline Schema Loader
1775
1689
  description: Loads a schema that is defined directly in the manifest file.
@@ -4,7 +4,7 @@
4
4
 
5
5
  import ast
6
6
  from functools import cache
7
- from typing import Any, Mapping, Optional, Tuple, Type
7
+ from typing import Any, Mapping, Optional, Set, Tuple, Type
8
8
 
9
9
  from jinja2 import meta
10
10
  from jinja2.environment import Template
@@ -27,7 +27,35 @@ class StreamPartitionAccessEnvironment(SandboxedEnvironment):
27
27
  def is_safe_attribute(self, obj: Any, attr: str, value: Any) -> bool:
28
28
  if attr in ["_partition"]:
29
29
  return True
30
- return super().is_safe_attribute(obj, attr, value)
30
+ return super().is_safe_attribute(obj, attr, value) # type: ignore # for some reason, mypy says 'Returning Any from function declared to return "bool"'
31
+
32
+
33
+ # These aliases are used to deprecate existing keywords without breaking all existing connectors.
34
+ _ALIASES = {
35
+ "stream_interval": "stream_slice", # Use stream_interval to access incremental_sync values
36
+ "stream_partition": "stream_slice", # Use stream_partition to access partition router's values
37
+ }
38
+
39
+ # These extensions are not installed so they're not currently a problem,
40
+ # but we're still explicitly removing them from the jinja context.
41
+ # At worst, this is documentation that we do NOT want to include these extensions because of the potential security risks
42
+ _RESTRICTED_EXTENSIONS = ["jinja2.ext.loopcontrols"] # Adds support for break continue in loops
43
+
44
+ # By default, these Python builtin functions are available in the Jinja context.
45
+ # We explicitly remove them because of the potential security risk.
46
+ # Please add a unit test to test_jinja.py when adding a restriction.
47
+ _RESTRICTED_BUILTIN_FUNCTIONS = [
48
+ "range"
49
+ ] # The range function can cause very expensive computations
50
+
51
+ _ENVIRONMENT = StreamPartitionAccessEnvironment()
52
+ _ENVIRONMENT.filters.update(**filters)
53
+ _ENVIRONMENT.globals.update(**macros)
54
+
55
+ for extension in _RESTRICTED_EXTENSIONS:
56
+ _ENVIRONMENT.extensions.pop(extension, None)
57
+ for builtin in _RESTRICTED_BUILTIN_FUNCTIONS:
58
+ _ENVIRONMENT.globals.pop(builtin, None)
31
59
 
32
60
 
33
61
  class JinjaInterpolation(Interpolation):
@@ -48,34 +76,6 @@ class JinjaInterpolation(Interpolation):
48
76
  Additional information on jinja templating can be found at https://jinja.palletsprojects.com/en/3.1.x/templates/#
49
77
  """
50
78
 
51
- # These aliases are used to deprecate existing keywords without breaking all existing connectors.
52
- ALIASES = {
53
- "stream_interval": "stream_slice", # Use stream_interval to access incremental_sync values
54
- "stream_partition": "stream_slice", # Use stream_partition to access partition router's values
55
- }
56
-
57
- # These extensions are not installed so they're not currently a problem,
58
- # but we're still explicitely removing them from the jinja context.
59
- # At worst, this is documentation that we do NOT want to include these extensions because of the potential security risks
60
- RESTRICTED_EXTENSIONS = ["jinja2.ext.loopcontrols"] # Adds support for break continue in loops
61
-
62
- # By default, these Python builtin functions are available in the Jinja context.
63
- # We explicitely remove them because of the potential security risk.
64
- # Please add a unit test to test_jinja.py when adding a restriction.
65
- RESTRICTED_BUILTIN_FUNCTIONS = [
66
- "range"
67
- ] # The range function can cause very expensive computations
68
-
69
- def __init__(self) -> None:
70
- self._environment = StreamPartitionAccessEnvironment()
71
- self._environment.filters.update(**filters)
72
- self._environment.globals.update(**macros)
73
-
74
- for extension in self.RESTRICTED_EXTENSIONS:
75
- self._environment.extensions.pop(extension, None)
76
- for builtin in self.RESTRICTED_BUILTIN_FUNCTIONS:
77
- self._environment.globals.pop(builtin, None)
78
-
79
79
  def eval(
80
80
  self,
81
81
  input_str: str,
@@ -86,7 +86,7 @@ class JinjaInterpolation(Interpolation):
86
86
  ) -> Any:
87
87
  context = {"config": config, **additional_parameters}
88
88
 
89
- for alias, equivalent in self.ALIASES.items():
89
+ for alias, equivalent in _ALIASES.items():
90
90
  if alias in context:
91
91
  # This is unexpected. We could ignore or log a warning, but failing loudly should result in fewer surprises
92
92
  raise ValueError(
@@ -105,6 +105,7 @@ class JinjaInterpolation(Interpolation):
105
105
  raise Exception(f"Expected a string, got {input_str}")
106
106
  except UndefinedError:
107
107
  pass
108
+
108
109
  # If result is empty or resulted in an undefined error, evaluate and return the default string
109
110
  return self._literal_eval(self._eval(default, context), valid_types)
110
111
 
@@ -132,16 +133,16 @@ class JinjaInterpolation(Interpolation):
132
133
  return s
133
134
 
134
135
  @cache
135
- def _find_undeclared_variables(self, s: Optional[str]) -> set[str]:
136
+ def _find_undeclared_variables(self, s: Optional[str]) -> Set[str]:
136
137
  """
137
138
  Find undeclared variables and cache them
138
139
  """
139
- ast = self._environment.parse(s) # type: ignore # parse is able to handle None
140
+ ast = _ENVIRONMENT.parse(s) # type: ignore # parse is able to handle None
140
141
  return meta.find_undeclared_variables(ast)
141
142
 
142
143
  @cache
143
- def _compile(self, s: Optional[str]) -> Template:
144
+ def _compile(self, s: str) -> Template:
144
145
  """
145
146
  We must cache the Jinja Template ourselves because we're using `from_string` instead of a template loader
146
147
  """
147
- return self._environment.from_string(s) # type: ignore [arg-type] # Expected `str | Template` but passed `str | None`
148
+ return _ENVIRONMENT.from_string(s)
@@ -650,32 +650,6 @@ class HttpResponseFilter(BaseModel):
650
650
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
651
651
 
652
652
 
653
- class TypesMap(BaseModel):
654
- target_type: Union[str, List[str]]
655
- current_type: Union[str, List[str]]
656
-
657
-
658
- class SchemaTypeIdentifier(BaseModel):
659
- type: Optional[Literal["SchemaTypeIdentifier"]] = None
660
- schema_pointer: Optional[List[str]] = Field(
661
- [],
662
- description="List of nested fields defining the schema field path to extract. Defaults to [].",
663
- title="Schema Path",
664
- )
665
- key_pointer: List[str] = Field(
666
- ...,
667
- description="List of potentially nested fields describing the full path of the field key to extract.",
668
- title="Key Path",
669
- )
670
- type_pointer: Optional[List[str]] = Field(
671
- None,
672
- description="List of potentially nested fields describing the full path of the field type to extract.",
673
- title="Type Path",
674
- )
675
- types_mapping: Optional[List[TypesMap]] = None
676
- parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
677
-
678
-
679
653
  class InlineSchemaLoader(BaseModel):
680
654
  type: Literal["InlineSchemaLoader"]
681
655
  schema_: Optional[Dict[str, Any]] = Field(
@@ -848,13 +822,13 @@ class OauthConnectorInputSpecification(BaseModel):
848
822
  )
849
823
  extract_output: List[str] = Field(
850
824
  ...,
851
- description="The DeclarativeOAuth Specific list of strings to indicate which keys should be extracted and returned back to the input config.",
825
+ description="The DeclarativeOAuth Specific list of strings to indicate which keys should be extracted and returned back to the input config. ",
852
826
  examples=[{"extract_output": ["access_token", "refresh_token", "other_field"]}],
853
827
  title="DeclarativeOAuth Extract Output",
854
828
  )
855
829
  state: Optional[State] = Field(
856
830
  None,
857
- description="The DeclarativeOAuth Specific object to provide the criteria of how the `state` query param should be constructed,\nincluding length and complexity.",
831
+ description="The DeclarativeOAuth Specific object to provide the criteria of how the `state` query param should be constructed,\nincluding length and complexity. ",
858
832
  examples=[{"state": {"min": 7, "max": 128}}],
859
833
  title="(Optional) DeclarativeOAuth Configurable State Query Param",
860
834
  )
@@ -878,13 +852,13 @@ class OauthConnectorInputSpecification(BaseModel):
878
852
  )
879
853
  state_key: Optional[str] = Field(
880
854
  None,
881
- description="The DeclarativeOAuth Specific optional override to provide the custom `state` key name, if required by data-provider.",
855
+ description="The DeclarativeOAuth Specific optional override to provide the custom `state` key name, if required by data-provider. ",
882
856
  examples=[{"state_key": "my_custom_state_key_key_name"}],
883
857
  title="(Optional) DeclarativeOAuth State Key Override",
884
858
  )
885
859
  auth_code_key: Optional[str] = Field(
886
860
  None,
887
- description="The DeclarativeOAuth Specific optional override to provide the custom `code` key name to something like `auth_code` or `custom_auth_code`, if required by data-provider.",
861
+ description="The DeclarativeOAuth Specific optional override to provide the custom `code` key name to something like `auth_code` or `custom_auth_code`, if required by data-provider. ",
888
862
  examples=[{"auth_code_key": "my_custom_auth_code_key_name"}],
889
863
  title="(Optional) DeclarativeOAuth Auth Code Key Override",
890
864
  )
@@ -1800,17 +1774,6 @@ class HttpRequester(BaseModel):
1800
1774
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1801
1775
 
1802
1776
 
1803
- class DynamicSchemaLoader(BaseModel):
1804
- type: Literal["DynamicSchemaLoader"]
1805
- retriever: Union[AsyncRetriever, CustomRetriever, SimpleRetriever] = Field(
1806
- ...,
1807
- description="Component used to coordinate how records are extracted across stream slices and request pages.",
1808
- title="Retriever",
1809
- )
1810
- schema_type_identifier: SchemaTypeIdentifier
1811
- parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1812
-
1813
-
1814
1777
  class ParentStreamConfig(BaseModel):
1815
1778
  type: Literal["ParentStreamConfig"]
1816
1779
  parent_key: str = Field(
@@ -2018,6 +1981,5 @@ DeclarativeSource2.update_forward_refs()
2018
1981
  SelectiveAuthenticator.update_forward_refs()
2019
1982
  DeclarativeStream.update_forward_refs()
2020
1983
  SessionTokenAuthenticator.update_forward_refs()
2021
- DynamicSchemaLoader.update_forward_refs()
2022
1984
  SimpleRetriever.update_forward_refs()
2023
1985
  AsyncRetriever.update_forward_refs()
@@ -64,10 +64,6 @@ DEFAULT_MODEL_TYPES: Mapping[str, str] = {
64
64
  "AddFields.fields": "AddedFieldDefinition",
65
65
  # CustomPartitionRouter
66
66
  "CustomPartitionRouter.parent_stream_configs": "ParentStreamConfig",
67
- # DynamicSchemaLoader
68
- "DynamicSchemaLoader.retriever": "SimpleRetriever",
69
- # SchemaTypeIdentifier
70
- "SchemaTypeIdentifier.types_map": "TypesMap",
71
67
  }
72
68
 
73
69
  # We retain a separate registry for custom components to automatically insert the type if it is missing. This is intended to
@@ -188,9 +188,6 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
188
188
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
189
189
  DpathExtractor as DpathExtractorModel,
190
190
  )
191
- from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
192
- DynamicSchemaLoader as DynamicSchemaLoaderModel,
193
- )
194
191
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
195
192
  ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
196
193
  )
@@ -281,9 +278,6 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
281
278
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
282
279
  ResponseToFileExtractor as ResponseToFileExtractorModel,
283
280
  )
284
- from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
285
- SchemaTypeIdentifier as SchemaTypeIdentifierModel,
286
- )
287
281
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
288
282
  SelectiveAuthenticator as SelectiveAuthenticatorModel,
289
283
  )
@@ -297,9 +291,6 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
297
291
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
298
292
  SubstreamPartitionRouter as SubstreamPartitionRouterModel,
299
293
  )
300
- from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
301
- TypesMap as TypesMapModel,
302
- )
303
294
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import ValueType
304
295
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
305
296
  WaitTimeFromHeader as WaitTimeFromHeaderModel,
@@ -365,11 +356,8 @@ from airbyte_cdk.sources.declarative.retrievers import (
365
356
  )
366
357
  from airbyte_cdk.sources.declarative.schema import (
367
358
  DefaultSchemaLoader,
368
- DynamicSchemaLoader,
369
359
  InlineSchemaLoader,
370
360
  JsonFileSchemaLoader,
371
- SchemaTypeIdentifier,
372
- TypesMap,
373
361
  )
374
362
  from airbyte_cdk.sources.declarative.spec import Spec
375
363
  from airbyte_cdk.sources.declarative.stream_slicers import StreamSlicer
@@ -467,9 +455,6 @@ class ModelToComponentFactory:
467
455
  IterableDecoderModel: self.create_iterable_decoder,
468
456
  XmlDecoderModel: self.create_xml_decoder,
469
457
  JsonFileSchemaLoaderModel: self.create_json_file_schema_loader,
470
- DynamicSchemaLoaderModel: self.create_dynamic_schema_loader,
471
- SchemaTypeIdentifierModel: self.create_schema_type_identifier,
472
- TypesMapModel: self.create_types_map,
473
458
  JwtAuthenticatorModel: self.create_jwt_authenticator,
474
459
  LegacyToPerPartitionStateMigrationModel: self.create_legacy_to_per_partition_state_migration,
475
460
  ListPartitionRouterModel: self.create_list_partition_router,
@@ -1589,63 +1574,6 @@ class ModelToComponentFactory:
1589
1574
  ) -> InlineSchemaLoader:
1590
1575
  return InlineSchemaLoader(schema=model.schema_ or {}, parameters={})
1591
1576
 
1592
- @staticmethod
1593
- def create_types_map(model: TypesMapModel, **kwargs: Any) -> TypesMap:
1594
- return TypesMap(target_type=model.target_type, current_type=model.current_type)
1595
-
1596
- def create_schema_type_identifier(
1597
- self, model: SchemaTypeIdentifierModel, config: Config, **kwargs: Any
1598
- ) -> SchemaTypeIdentifier:
1599
- types_mapping = []
1600
- if model.types_mapping:
1601
- types_mapping.extend(
1602
- [
1603
- self._create_component_from_model(types_map, config=config)
1604
- for types_map in model.types_mapping
1605
- ]
1606
- )
1607
- model_schema_pointer: List[Union[InterpolatedString, str]] = (
1608
- [x for x in model.schema_pointer] if model.schema_pointer else []
1609
- )
1610
- model_key_pointer: List[Union[InterpolatedString, str]] = [x for x in model.key_pointer]
1611
- model_type_pointer: Optional[List[Union[InterpolatedString, str]]] = (
1612
- [x for x in model.type_pointer] if model.type_pointer else None
1613
- )
1614
-
1615
- return SchemaTypeIdentifier(
1616
- schema_pointer=model_schema_pointer,
1617
- key_pointer=model_key_pointer,
1618
- type_pointer=model_type_pointer,
1619
- types_mapping=types_mapping,
1620
- parameters=model.parameters or {},
1621
- )
1622
-
1623
- def create_dynamic_schema_loader(
1624
- self, model: DynamicSchemaLoaderModel, config: Config, **kwargs: Any
1625
- ) -> DynamicSchemaLoader:
1626
- stream_slicer = self._build_stream_slicer_from_partition_router(model.retriever, config)
1627
- combined_slicers = self._build_resumable_cursor_from_paginator(
1628
- model.retriever, stream_slicer
1629
- )
1630
-
1631
- retriever = self._create_component_from_model(
1632
- model=model.retriever,
1633
- config=config,
1634
- name="",
1635
- primary_key=None,
1636
- stream_slicer=combined_slicers,
1637
- transformations=[],
1638
- )
1639
- schema_type_identifier = self._create_component_from_model(
1640
- model.schema_type_identifier, config=config, parameters=model.parameters or {}
1641
- )
1642
- return DynamicSchemaLoader(
1643
- retriever=retriever,
1644
- config=config,
1645
- schema_type_identifier=schema_type_identifier,
1646
- parameters=model.parameters or {},
1647
- )
1648
-
1649
1577
  @staticmethod
1650
1578
  def create_json_decoder(model: JsonDecoderModel, config: Config, **kwargs: Any) -> JsonDecoder:
1651
1579
  return JsonDecoder(parameters={})
@@ -6,6 +6,5 @@ from airbyte_cdk.sources.declarative.schema.default_schema_loader import Default
6
6
  from airbyte_cdk.sources.declarative.schema.inline_schema_loader import InlineSchemaLoader
7
7
  from airbyte_cdk.sources.declarative.schema.json_file_schema_loader import JsonFileSchemaLoader
8
8
  from airbyte_cdk.sources.declarative.schema.schema_loader import SchemaLoader
9
- from airbyte_cdk.sources.declarative.schema.dynamic_schema_loader import DynamicSchemaLoader, TypesMap, SchemaTypeIdentifier
10
9
 
11
- __all__ = ["JsonFileSchemaLoader", "DefaultSchemaLoader", "SchemaLoader", "InlineSchemaLoader", "DynamicSchemaLoader", "TypesMap", "SchemaTypeIdentifier"]
10
+ __all__ = ["JsonFileSchemaLoader", "DefaultSchemaLoader", "SchemaLoader", "InlineSchemaLoader"]
@@ -138,12 +138,22 @@ class HttpClient:
138
138
  cache_dir = os.getenv(ENV_REQUEST_CACHE_PATH)
139
139
  # Use in-memory cache if cache_dir is not set
140
140
  # This is a non-obvious interface, but it ensures we don't write sql files when running unit tests
141
- if cache_dir:
142
- sqlite_path = str(Path(cache_dir) / self.cache_filename)
143
- else:
144
- sqlite_path = "file::memory:?cache=shared"
141
+ # Use in-memory cache if cache_dir is not set
142
+ # This is a non-obvious interface, but it ensures we don't write sql files when running unit tests
143
+ sqlite_path = (
144
+ str(Path(cache_dir) / self.cache_filename)
145
+ if cache_dir
146
+ else "file::memory:?cache=shared"
147
+ )
148
+ # By using `PRAGMA synchronous=OFF` and `PRAGMA journal_mode=WAL`, we reduce the possible occurrences of `database table is locked` errors.
149
+ # Note that those were blindly added at the same time and one or the other might be sufficient to prevent the issues but we have seen good results with both. Feel free to revisit given more information.
150
+ # There are strong signals that `fast_save` might create problems but if the sync crashes, we start back from the beginning in terms of sqlite anyway so the impact should be minimal. Signals are:
151
+ # * https://github.com/requests-cache/requests-cache/commit/7fa89ffda300331c37d8fad7f773348a3b5b0236#diff-f43db4a5edf931647c32dec28ea7557aae4cae8444af4b26c8ecbe88d8c925aaR238
152
+ # * https://github.com/requests-cache/requests-cache/commit/7fa89ffda300331c37d8fad7f773348a3b5b0236#diff-2e7f95b7d7be270ff1a8118f817ea3e6663cdad273592e536a116c24e6d23c18R164-R168
153
+ # * `If the application running SQLite crashes, the data will be safe, but the database [might become corrupted](https://www.sqlite.org/howtocorrupt.html#cfgerr) if the operating system crashes or the computer loses power before that data has been written to the disk surface.` in [this description](https://www.sqlite.org/pragma.html#pragma_synchronous).
154
+ backend = requests_cache.SQLiteCache(sqlite_path, fast_save=True, wal=True)
145
155
  return CachedLimiterSession(
146
- sqlite_path, backend="sqlite", api_budget=self._api_budget, match_headers=True
156
+ sqlite_path, backend=backend, api_budget=self._api_budget, match_headers=True
147
157
  )
148
158
  else:
149
159
  return LimiterSession(api_budget=self._api_budget)