airbyte-cdk 6.11.2.dev1__tar.gz → 6.12.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 (345) hide show
  1. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/PKG-INFO +2 -1
  2. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +43 -1
  3. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +36 -1
  4. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +38 -15
  5. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +1 -9
  6. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +31 -8
  7. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +20 -3
  8. airbyte_cdk-6.12.0/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +50 -0
  9. airbyte_cdk-6.12.0/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +68 -0
  10. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/http_client.py +4 -2
  11. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/pyproject.toml +2 -1
  12. airbyte_cdk-6.11.2.dev1/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -65
  13. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/LICENSE.txt +0 -0
  14. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/README.md +0 -0
  15. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/__init__.py +0 -0
  16. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/cli/__init__.py +0 -0
  17. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  18. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  19. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  20. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/config_observation.py +0 -0
  21. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector.py +0 -0
  22. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/README.md +0 -0
  23. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  24. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  25. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/main.py +0 -0
  26. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  27. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/connector_builder/models.py +0 -0
  28. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/__init__.py +0 -0
  29. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/destination.py +0 -0
  30. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  31. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  32. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  33. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  34. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  35. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  36. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  37. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  38. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  39. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/entrypoint.py +0 -0
  40. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/exception_handler.py +0 -0
  41. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/logger.py +0 -0
  42. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/models/__init__.py +0 -0
  43. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  44. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  45. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  46. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/models/well_known_types.py +0 -0
  47. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/py.typed +0 -0
  48. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/__init__.py +0 -0
  49. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  50. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  51. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  52. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  53. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  54. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  55. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  56. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  57. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/config.py +0 -0
  58. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  59. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  60. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  61. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  62. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  63. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  64. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  65. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  66. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  67. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  68. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  69. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  70. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  71. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  72. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  73. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  74. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  75. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  76. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  77. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  78. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  79. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  80. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  81. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  82. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  83. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  84. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  85. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  86. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  87. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  88. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  89. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  90. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  91. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  92. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  93. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  94. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  95. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  96. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  97. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  98. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  99. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  100. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  101. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  102. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  103. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  104. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  105. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  106. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  107. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  108. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  109. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  110. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  111. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  112. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  113. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  114. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  115. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  116. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  117. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  118. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  119. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  120. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  121. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  122. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  123. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  124. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  125. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  126. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  127. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  128. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  129. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  130. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  131. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  132. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  133. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  134. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  135. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  136. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  137. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  138. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  139. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  140. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  141. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  142. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  143. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  144. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  145. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  146. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  147. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  148. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  149. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  150. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  151. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  152. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  153. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  154. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  155. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  156. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  157. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  158. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  159. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  160. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  161. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  162. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  163. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  164. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  165. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  166. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  167. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  168. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  169. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  170. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  171. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  172. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  173. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  174. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  175. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  176. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  177. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  178. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  179. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  180. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  181. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  182. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  183. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  184. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  185. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  186. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  187. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  188. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  189. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  190. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  191. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  192. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/embedded/runner.py +0 -0
  193. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/embedded/tools.py +0 -0
  194. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  195. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  196. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  197. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  198. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  199. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  200. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  201. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  202. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  203. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  204. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  205. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  206. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  207. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  208. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  209. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  210. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  211. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  212. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  213. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  214. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  215. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  216. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  217. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  218. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  219. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  220. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  221. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  222. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  223. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  224. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  225. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  226. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  227. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  228. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  229. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  230. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  231. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  232. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  233. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  234. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  235. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  236. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  237. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  238. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  239. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  240. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  241. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/http_config.py +0 -0
  242. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/http_logger.py +0 -0
  243. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  244. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/message/repository.py +0 -0
  245. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/source.py +0 -0
  246. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  247. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  248. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  249. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  250. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  251. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  252. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  253. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  254. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  255. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  256. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  257. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  258. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  259. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  260. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  261. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  262. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  263. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  264. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  265. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  266. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  267. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  268. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  269. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  270. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  271. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  272. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  273. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  274. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  275. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/core.py +0 -0
  276. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  277. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  278. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  279. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  280. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  281. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  282. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  283. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  284. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  285. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  286. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  287. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  288. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  289. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  290. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  291. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  292. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  293. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  294. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  295. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  296. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/types.py +0 -0
  297. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  298. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  299. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  300. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  301. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  302. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  303. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sources/utils/types.py +0 -0
  304. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/__init__.py +0 -0
  305. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  306. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  307. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  308. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/constants.py +0 -0
  309. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/exceptions.py +0 -0
  310. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/secrets.py +0 -0
  311. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  312. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  313. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  314. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/sql/types.py +0 -0
  315. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/__init__.py +0 -0
  316. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  317. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  318. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  319. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  320. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  321. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  322. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  323. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  324. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/state_builder.py +0 -0
  325. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/utils/__init__.py +0 -0
  326. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/utils/data.py +0 -0
  327. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  328. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  329. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/test/utils/reading.py +0 -0
  330. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/__init__.py +0 -0
  331. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  332. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  333. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/constants.py +0 -0
  334. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  335. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/event_timing.py +0 -0
  336. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  337. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  338. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/message_utils.py +0 -0
  339. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  340. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  341. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  342. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  343. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  344. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  345. {airbyte_cdk-6.11.2.dev1 → airbyte_cdk-6.12.0}/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.11.2.dev1
3
+ Version: 6.12.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -22,6 +22,7 @@ Provides-Extra: sql
22
22
  Provides-Extra: vector-db-based
23
23
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
24
24
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
25
+ Requires-Dist: Unidecode (>=1.3,<2.0)
25
26
  Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
26
27
  Requires-Dist: avro (>=1.11.2,<1.12.0) ; extra == "file-based"
27
28
  Requires-Dist: backoff
@@ -1234,6 +1234,8 @@ definitions:
1234
1234
  - "$ref": "#/definitions/CustomTransformation"
1235
1235
  - "$ref": "#/definitions/RemoveFields"
1236
1236
  - "$ref": "#/definitions/KeysToLower"
1237
+ - "$ref": "#/definitions/KeysToSnakeCase"
1238
+ - "$ref": "#/definitions/FlattenFields"
1237
1239
  state_migrations:
1238
1240
  title: State Migrations
1239
1241
  description: Array of state migrations to be applied on the input state
@@ -1766,6 +1768,18 @@ definitions:
1766
1768
  - "$ref": "#/definitions/AsyncRetriever"
1767
1769
  - "$ref": "#/definitions/CustomRetriever"
1768
1770
  - "$ref": "#/definitions/SimpleRetriever"
1771
+ schema_transformations:
1772
+ title: Schema Transformations
1773
+ description: A list of transformations to be applied to the schema.
1774
+ type: array
1775
+ items:
1776
+ anyOf:
1777
+ - "$ref": "#/definitions/AddFields"
1778
+ - "$ref": "#/definitions/CustomTransformation"
1779
+ - "$ref": "#/definitions/RemoveFields"
1780
+ - "$ref": "#/definitions/KeysToLower"
1781
+ - "$ref": "#/definitions/KeysToSnakeCase"
1782
+ - "$ref": "#/definitions/FlattenFields"
1769
1783
  schema_type_identifier:
1770
1784
  "$ref": "#/definitions/SchemaTypeIdentifier"
1771
1785
  $parameters:
@@ -1838,6 +1852,32 @@ definitions:
1838
1852
  $parameters:
1839
1853
  type: object
1840
1854
  additionalProperties: true
1855
+ KeysToSnakeCase:
1856
+ title: Key to Snake Case
1857
+ description: A transformation that renames all keys to snake case.
1858
+ type: object
1859
+ required:
1860
+ - type
1861
+ properties:
1862
+ type:
1863
+ type: string
1864
+ enum: [KeysToSnakeCase]
1865
+ $parameters:
1866
+ type: object
1867
+ additionalProperties: true
1868
+ FlattenFields:
1869
+ title: Flatten Fields
1870
+ description: A transformation that flatten record to single level format.
1871
+ type: object
1872
+ required:
1873
+ - type
1874
+ properties:
1875
+ type:
1876
+ type: string
1877
+ enum: [FlattenFields]
1878
+ $parameters:
1879
+ type: object
1880
+ additionalProperties: true
1841
1881
  IterableDecoder:
1842
1882
  title: Iterable Decoder
1843
1883
  description: Use this if the response consists of strings separated by new lines (`\n`). The Decoder will wrap each row into a JSON object with the `record` key.
@@ -2160,7 +2200,9 @@ definitions:
2160
2200
  description: |-
2161
2201
  The DeclarativeOAuth Specific optional headers to inject while exchanging the `auth_code` to `access_token` during `completeOAuthFlow` step.
2162
2202
  examples:
2163
- - {"Authorization": "Basic {base64Encoder:{client_id}:{client_secret}}"}
2203
+ - {
2204
+ "Authorization": "Basic {base64Encoder:{client_id}:{client_secret}}",
2205
+ }
2164
2206
  access_token_params:
2165
2207
  title: Access Token Query Params (Json Encoded)
2166
2208
  type: object
@@ -710,6 +710,16 @@ class KeysToLower(BaseModel):
710
710
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
711
711
 
712
712
 
713
+ class KeysToSnakeCase(BaseModel):
714
+ type: Literal["KeysToSnakeCase"]
715
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
716
+
717
+
718
+ class FlattenFields(BaseModel):
719
+ type: Literal["FlattenFields"]
720
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
721
+
722
+
713
723
  class IterableDecoder(BaseModel):
714
724
  type: Literal["IterableDecoder"]
715
725
 
@@ -1654,7 +1664,16 @@ class DeclarativeStream(BaseModel):
1654
1664
  title="Schema Loader",
1655
1665
  )
1656
1666
  transformations: Optional[
1657
- List[Union[AddFields, CustomTransformation, RemoveFields, KeysToLower]]
1667
+ List[
1668
+ Union[
1669
+ AddFields,
1670
+ CustomTransformation,
1671
+ RemoveFields,
1672
+ KeysToLower,
1673
+ KeysToSnakeCase,
1674
+ FlattenFields,
1675
+ ]
1676
+ ]
1658
1677
  ] = Field(
1659
1678
  None,
1660
1679
  description="A list of transformations to be applied to each output record.",
@@ -1818,6 +1837,22 @@ class DynamicSchemaLoader(BaseModel):
1818
1837
  description="Component used to coordinate how records are extracted across stream slices and request pages.",
1819
1838
  title="Retriever",
1820
1839
  )
1840
+ schema_transformations: Optional[
1841
+ List[
1842
+ Union[
1843
+ AddFields,
1844
+ CustomTransformation,
1845
+ RemoveFields,
1846
+ KeysToLower,
1847
+ KeysToSnakeCase,
1848
+ FlattenFields,
1849
+ ]
1850
+ ]
1851
+ ] = Field(
1852
+ None,
1853
+ description="A list of transformations to be applied to the schema.",
1854
+ title="Schema Transformations",
1855
+ )
1821
1856
  schema_type_identifier: SchemaTypeIdentifier
1822
1857
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1823
1858
 
@@ -197,6 +197,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
197
197
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
198
198
  ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
199
199
  )
200
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
201
+ FlattenFields as FlattenFieldsModel,
202
+ )
200
203
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
201
204
  GzipJsonDecoder as GzipJsonDecoderModel,
202
205
  )
@@ -236,6 +239,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
236
239
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
237
240
  KeysToLower as KeysToLowerModel,
238
241
  )
242
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
243
+ KeysToSnakeCase as KeysToSnakeCaseModel,
244
+ )
239
245
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
240
246
  LegacySessionTokenAuthenticator as LegacySessionTokenAuthenticatorModel,
241
247
  )
@@ -323,9 +329,6 @@ from airbyte_cdk.sources.declarative.partition_routers import (
323
329
  SinglePartitionRouter,
324
330
  SubstreamPartitionRouter,
325
331
  )
326
- from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_router import (
327
- AsyncJobPartitionRouter,
328
- )
329
332
  from airbyte_cdk.sources.declarative.partition_routers.substream_partition_router import (
330
333
  ParentStreamConfig,
331
334
  )
@@ -390,9 +393,15 @@ from airbyte_cdk.sources.declarative.transformations import (
390
393
  RemoveFields,
391
394
  )
392
395
  from airbyte_cdk.sources.declarative.transformations.add_fields import AddedFieldDefinition
396
+ from airbyte_cdk.sources.declarative.transformations.flatten_fields import (
397
+ FlattenFields,
398
+ )
393
399
  from airbyte_cdk.sources.declarative.transformations.keys_to_lower_transformation import (
394
400
  KeysToLowerTransformation,
395
401
  )
402
+ from airbyte_cdk.sources.declarative.transformations.keys_to_snake_transformation import (
403
+ KeysToSnakeCaseTransformation,
404
+ )
396
405
  from airbyte_cdk.sources.message import (
397
406
  InMemoryMessageRepository,
398
407
  LogAppenderMessageRepositoryDecorator,
@@ -475,6 +484,8 @@ class ModelToComponentFactory:
475
484
  JsonlDecoderModel: self.create_jsonl_decoder,
476
485
  GzipJsonDecoderModel: self.create_gzipjson_decoder,
477
486
  KeysToLowerModel: self.create_keys_to_lower_transformation,
487
+ KeysToSnakeCaseModel: self.create_keys_to_snake_transformation,
488
+ FlattenFieldsModel: self.create_flatten_fields,
478
489
  IterableDecoderModel: self.create_iterable_decoder,
479
490
  XmlDecoderModel: self.create_xml_decoder,
480
491
  JsonFileSchemaLoaderModel: self.create_json_file_schema_loader,
@@ -590,6 +601,16 @@ class ModelToComponentFactory:
590
601
  ) -> KeysToLowerTransformation:
591
602
  return KeysToLowerTransformation()
592
603
 
604
+ def create_keys_to_snake_transformation(
605
+ self, model: KeysToSnakeCaseModel, config: Config, **kwargs: Any
606
+ ) -> KeysToSnakeCaseTransformation:
607
+ return KeysToSnakeCaseTransformation()
608
+
609
+ def create_flatten_fields(
610
+ self, model: FlattenFieldsModel, config: Config, **kwargs: Any
611
+ ) -> FlattenFields:
612
+ return FlattenFields()
613
+
593
614
  @staticmethod
594
615
  def _json_schema_type_name_to_type(value_type: Optional[ValueType]) -> Optional[Type[Any]]:
595
616
  if not value_type:
@@ -1641,6 +1662,13 @@ class ModelToComponentFactory:
1641
1662
  model.retriever, stream_slicer
1642
1663
  )
1643
1664
 
1665
+ schema_transformations = []
1666
+ if model.schema_transformations:
1667
+ for transformation_model in model.schema_transformations:
1668
+ schema_transformations.append(
1669
+ self._create_component_from_model(model=transformation_model, config=config)
1670
+ )
1671
+
1644
1672
  retriever = self._create_component_from_model(
1645
1673
  model=model.retriever,
1646
1674
  config=config,
@@ -1655,6 +1683,7 @@ class ModelToComponentFactory:
1655
1683
  return DynamicSchemaLoader(
1656
1684
  retriever=retriever,
1657
1685
  config=config,
1686
+ schema_transformations=schema_transformations,
1658
1687
  schema_type_identifier=schema_type_identifier,
1659
1688
  parameters=model.parameters or {},
1660
1689
  )
@@ -2231,24 +2260,18 @@ class ModelToComponentFactory:
2231
2260
  urls_extractor=urls_extractor,
2232
2261
  )
2233
2262
 
2234
- async_job_partition_router = AsyncJobPartitionRouter(
2263
+ return AsyncRetriever(
2235
2264
  job_orchestrator_factory=lambda stream_slices: AsyncJobOrchestrator(
2236
2265
  job_repository,
2237
2266
  stream_slices,
2238
- JobTracker(1),
2239
- # FIXME eventually make the number of concurrent jobs in the API configurable. Until then, we limit to 1
2267
+ JobTracker(
2268
+ 1
2269
+ ), # FIXME eventually make the number of concurrent jobs in the API configurable. Until then, we limit to 1
2240
2270
  self._message_repository,
2241
- has_bulk_parent=False,
2242
- # FIXME work would need to be done here in order to detect if a stream as a parent stream that is bulk
2271
+ has_bulk_parent=False, # FIXME work would need to be done here in order to detect if a stream as a parent stream that is bulk
2243
2272
  ),
2244
- stream_slicer=stream_slicer,
2245
- config=config,
2246
- parameters=model.parameters or {},
2247
- )
2248
-
2249
- return AsyncRetriever(
2250
2273
  record_selector=record_selector,
2251
- stream_slicer=async_job_partition_router,
2274
+ stream_slicer=stream_slicer,
2252
2275
  config=config,
2253
2276
  parameters=model.parameters or {},
2254
2277
  )
@@ -2,18 +2,10 @@
2
2
  # Copyright (c) 2022 Airbyte, Inc., all rights reserved.
3
3
  #
4
4
 
5
- from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_router import AsyncJobPartitionRouter
6
5
  from airbyte_cdk.sources.declarative.partition_routers.cartesian_product_stream_slicer import CartesianProductStreamSlicer
7
6
  from airbyte_cdk.sources.declarative.partition_routers.list_partition_router import ListPartitionRouter
8
7
  from airbyte_cdk.sources.declarative.partition_routers.single_partition_router import SinglePartitionRouter
9
8
  from airbyte_cdk.sources.declarative.partition_routers.substream_partition_router import SubstreamPartitionRouter
10
9
  from airbyte_cdk.sources.declarative.partition_routers.partition_router import PartitionRouter
11
10
 
12
- __all__ = [
13
- "AsyncJobPartitionRouter",
14
- "CartesianProductStreamSlicer",
15
- "ListPartitionRouter",
16
- "SinglePartitionRouter",
17
- "SubstreamPartitionRouter",
18
- "PartitionRouter"
19
- ]
11
+ __all__ = ["CartesianProductStreamSlicer", "ListPartitionRouter", "SinglePartitionRouter", "SubstreamPartitionRouter", "PartitionRouter"]
@@ -1,8 +1,8 @@
1
1
  # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
2
 
3
3
 
4
- from dataclasses import InitVar, dataclass
5
- from typing import Any, Iterable, Mapping, Optional
4
+ from dataclasses import InitVar, dataclass, field
5
+ from typing import Any, Callable, Iterable, Mapping, Optional
6
6
 
7
7
  from typing_extensions import deprecated
8
8
 
@@ -12,10 +12,9 @@ from airbyte_cdk.sources.declarative.async_job.job_orchestrator import (
12
12
  AsyncPartition,
13
13
  )
14
14
  from airbyte_cdk.sources.declarative.extractors.record_selector import RecordSelector
15
- from airbyte_cdk.sources.declarative.partition_routers.async_job_partition_router import (
16
- AsyncJobPartitionRouter,
17
- )
15
+ from airbyte_cdk.sources.declarative.partition_routers import SinglePartitionRouter
18
16
  from airbyte_cdk.sources.declarative.retrievers import Retriever
17
+ from airbyte_cdk.sources.declarative.stream_slicers import StreamSlicer
19
18
  from airbyte_cdk.sources.source import ExperimentalClassWarning
20
19
  from airbyte_cdk.sources.streams.core import StreamData
21
20
  from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
@@ -30,10 +29,15 @@ from airbyte_cdk.utils.traced_exception import AirbyteTracedException
30
29
  class AsyncRetriever(Retriever):
31
30
  config: Config
32
31
  parameters: InitVar[Mapping[str, Any]]
32
+ job_orchestrator_factory: Callable[[Iterable[StreamSlice]], AsyncJobOrchestrator]
33
33
  record_selector: RecordSelector
34
- stream_slicer: AsyncJobPartitionRouter
34
+ stream_slicer: StreamSlicer = field(
35
+ default_factory=lambda: SinglePartitionRouter(parameters={})
36
+ )
35
37
 
36
38
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
39
+ self._job_orchestrator_factory = self.job_orchestrator_factory
40
+ self.__job_orchestrator: Optional[AsyncJobOrchestrator] = None
37
41
  self._parameters = parameters
38
42
 
39
43
  @property
@@ -50,6 +54,17 @@ class AsyncRetriever(Retriever):
50
54
  """
51
55
  pass
52
56
 
57
+ @property
58
+ def _job_orchestrator(self) -> AsyncJobOrchestrator:
59
+ if not self.__job_orchestrator:
60
+ raise AirbyteTracedException(
61
+ message="Invalid state within AsyncJobRetriever. Please contact Airbyte Support",
62
+ internal_message="AsyncPartitionRepository is expected to be accessed only after `stream_slices`",
63
+ failure_type=FailureType.system_error,
64
+ )
65
+
66
+ return self.__job_orchestrator
67
+
53
68
  def _get_stream_state(self) -> StreamState:
54
69
  """
55
70
  Gets the current state of the stream.
@@ -84,7 +99,15 @@ class AsyncRetriever(Retriever):
84
99
  return stream_slice["partition"] # type: ignore # stream_slice["partition"] has been added as an AsyncPartition as part of stream_slices
85
100
 
86
101
  def stream_slices(self) -> Iterable[Optional[StreamSlice]]:
87
- return self.stream_slicer.stream_slices()
102
+ slices = self.stream_slicer.stream_slices()
103
+ self.__job_orchestrator = self._job_orchestrator_factory(slices)
104
+
105
+ for completed_partition in self._job_orchestrator.create_and_get_completed_partitions():
106
+ yield StreamSlice(
107
+ partition=dict(completed_partition.stream_slice.partition)
108
+ | {"partition": completed_partition},
109
+ cursor_slice=completed_partition.stream_slice.cursor_slice,
110
+ )
88
111
 
89
112
  def read_records(
90
113
  self,
@@ -93,7 +116,7 @@ class AsyncRetriever(Retriever):
93
116
  ) -> Iterable[StreamData]:
94
117
  stream_state: StreamState = self._get_stream_state()
95
118
  partition: AsyncPartition = self._validate_and_get_stream_slice_partition(stream_slice)
96
- records: Iterable[Mapping[str, Any]] = self.stream_slicer.fetch_records(partition)
119
+ records: Iterable[Mapping[str, Any]] = self._job_orchestrator.fetch_records(partition)
97
120
 
98
121
  yield from self.record_selector.filter_and_transform(
99
122
  all_data=records,
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
  from copy import deepcopy
7
- from dataclasses import InitVar, dataclass
7
+ from dataclasses import InitVar, dataclass, field
8
8
  from typing import Any, List, Mapping, MutableMapping, Optional, Union
9
9
 
10
10
  import dpath
@@ -13,8 +13,9 @@ from typing_extensions import deprecated
13
13
  from airbyte_cdk.sources.declarative.interpolation.interpolated_string import InterpolatedString
14
14
  from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever
15
15
  from airbyte_cdk.sources.declarative.schema.schema_loader import SchemaLoader
16
+ from airbyte_cdk.sources.declarative.transformations import RecordTransformation
16
17
  from airbyte_cdk.sources.source import ExperimentalClassWarning
17
- from airbyte_cdk.sources.types import Config
18
+ from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
18
19
 
19
20
  AIRBYTE_DATA_TYPES: Mapping[str, Mapping[str, Any]] = {
20
21
  "string": {"type": ["null", "string"]},
@@ -103,6 +104,7 @@ class DynamicSchemaLoader(SchemaLoader):
103
104
  config: Config
104
105
  parameters: InitVar[Mapping[str, Any]]
105
106
  schema_type_identifier: SchemaTypeIdentifier
107
+ schema_transformations: List[RecordTransformation] = field(default_factory=lambda: [])
106
108
 
107
109
  def get_json_schema(self) -> Mapping[str, Any]:
108
110
  """
@@ -128,12 +130,27 @@ class DynamicSchemaLoader(SchemaLoader):
128
130
  )
129
131
  properties[key] = value
130
132
 
133
+ transformed_properties = self._transform(properties, {})
134
+
131
135
  return {
132
136
  "$schema": "http://json-schema.org/draft-07/schema#",
133
137
  "type": "object",
134
- "properties": properties,
138
+ "properties": transformed_properties,
135
139
  }
136
140
 
141
+ def _transform(
142
+ self,
143
+ properties: Mapping[str, Any],
144
+ stream_state: StreamState,
145
+ stream_slice: Optional[StreamSlice] = None,
146
+ ) -> Mapping[str, Any]:
147
+ for transformation in self.schema_transformations:
148
+ transformation.transform(
149
+ properties, # type: ignore # properties has type Mapping[str, Any], but Dict[str, Any] expected
150
+ config=self.config,
151
+ )
152
+ return properties
153
+
137
154
  def _get_key(
138
155
  self,
139
156
  raw_schema: MutableMapping[str, Any],
@@ -0,0 +1,50 @@
1
+ #
2
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ from dataclasses import dataclass
6
+ from typing import Any, Dict, Optional
7
+
8
+ from airbyte_cdk.sources.declarative.transformations import RecordTransformation
9
+ from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
10
+
11
+
12
+ @dataclass
13
+ class FlattenFields(RecordTransformation):
14
+ def transform(
15
+ self,
16
+ record: Dict[str, Any],
17
+ config: Optional[Config] = None,
18
+ stream_state: Optional[StreamState] = None,
19
+ stream_slice: Optional[StreamSlice] = None,
20
+ ) -> None:
21
+ transformed_record = self.flatten_record(record)
22
+ record.clear()
23
+ record.update(transformed_record)
24
+
25
+ def flatten_record(self, record: Dict[str, Any]) -> Dict[str, Any]:
26
+ stack = [(record, "_")]
27
+ transformed_record: Dict[str, Any] = {}
28
+ force_with_parent_name = False
29
+
30
+ while stack:
31
+ current_record, parent_key = stack.pop()
32
+
33
+ if isinstance(current_record, dict):
34
+ for current_key, value in current_record.items():
35
+ new_key = (
36
+ f"{parent_key}.{current_key}"
37
+ if (current_key in transformed_record or force_with_parent_name)
38
+ else current_key
39
+ )
40
+ stack.append((value, new_key))
41
+
42
+ elif isinstance(current_record, list):
43
+ for i, item in enumerate(current_record):
44
+ force_with_parent_name = True
45
+ stack.append((item, f"{parent_key}.{i}"))
46
+
47
+ else:
48
+ transformed_record[parent_key] = current_record
49
+
50
+ return transformed_record
@@ -0,0 +1,68 @@
1
+ #
2
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ import re
6
+ from dataclasses import dataclass
7
+ from typing import Any, Dict, List, Optional
8
+
9
+ import unidecode
10
+
11
+ from airbyte_cdk.sources.declarative.transformations import RecordTransformation
12
+ from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
13
+
14
+
15
+ @dataclass
16
+ class KeysToSnakeCaseTransformation(RecordTransformation):
17
+ token_pattern: re.Pattern[str] = re.compile(
18
+ r"[A-Z]+[a-z]*|[a-z]+|\d+|(?P<NoToken>[^a-zA-Z\d]+)"
19
+ )
20
+
21
+ def transform(
22
+ self,
23
+ record: Dict[str, Any],
24
+ config: Optional[Config] = None,
25
+ stream_state: Optional[StreamState] = None,
26
+ stream_slice: Optional[StreamSlice] = None,
27
+ ) -> None:
28
+ transformed_record = self._transform_record(record)
29
+ record.clear()
30
+ record.update(transformed_record)
31
+
32
+ def _transform_record(self, record: Dict[str, Any]) -> Dict[str, Any]:
33
+ transformed_record = {}
34
+ for key, value in record.items():
35
+ transformed_key = self.process_key(key)
36
+ transformed_value = value
37
+
38
+ if isinstance(value, dict):
39
+ transformed_value = self._transform_record(value)
40
+
41
+ transformed_record[transformed_key] = transformed_value
42
+ return transformed_record
43
+
44
+ def process_key(self, key: str) -> str:
45
+ key = self.normalize_key(key)
46
+ tokens = self.tokenize_key(key)
47
+ tokens = self.filter_tokens(tokens)
48
+ return self.tokens_to_snake_case(tokens)
49
+
50
+ def normalize_key(self, key: str) -> str:
51
+ return unidecode.unidecode(key)
52
+
53
+ def tokenize_key(self, key: str) -> List[str]:
54
+ tokens = []
55
+ for match in self.token_pattern.finditer(key):
56
+ token = match.group(0) if match.group("NoToken") is None else ""
57
+ tokens.append(token)
58
+ return tokens
59
+
60
+ def filter_tokens(self, tokens: List[str]) -> List[str]:
61
+ if len(tokens) >= 3:
62
+ tokens = tokens[:1] + [t for t in tokens[1:-1] if t] + tokens[-1:]
63
+ if tokens and tokens[0].isdigit():
64
+ tokens.insert(0, "")
65
+ return tokens
66
+
67
+ def tokens_to_snake_case(self, tokens: List[str]) -> str:
68
+ return "_".join(token.lower() for token in tokens)
@@ -262,7 +262,7 @@ class HttpClient:
262
262
  user_backoff_handler = user_defined_backoff_handler(max_tries=max_tries, max_time=max_time)(
263
263
  self._send
264
264
  )
265
- rate_limit_backoff_handler = rate_limit_default_backoff_handler()
265
+ rate_limit_backoff_handler = rate_limit_default_backoff_handler(max_tries=max_tries)
266
266
  backoff_handler = http_client_default_backoff_handler(
267
267
  max_tries=max_tries, max_time=max_time
268
268
  )
@@ -472,7 +472,9 @@ class HttpClient:
472
472
 
473
473
  elif retry_endlessly:
474
474
  raise RateLimitBackoffException(
475
- request=request, response=response or exc, error_message=error_message
475
+ request=request,
476
+ response=(response if response is not None else exc),
477
+ error_message=error_message,
476
478
  )
477
479
 
478
480
  raise DefaultBackoffException(
@@ -23,7 +23,7 @@ classifiers = [
23
23
  keywords = ["airbyte", "connector-development-kit", "cdk"]
24
24
 
25
25
  # Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
26
- version = "6.11.2dev1" # Version will be calculated dynamically.
26
+ version = "6.12.0" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false
@@ -80,6 +80,7 @@ orjson = "^3.10.7"
80
80
  serpyco-rs = "^1.10.2"
81
81
  sqlalchemy = {version = "^2.0,!=2.0.36", optional = true }
82
82
  xmltodict = "^0.13.0"
83
+ Unidecode = "^1.3"
83
84
 
84
85
  [tool.poetry.group.dev.dependencies]
85
86
  freezegun = "*"
@@ -1,65 +0,0 @@
1
- # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
-
3
- from dataclasses import InitVar, dataclass, field
4
- from typing import Any, Callable, Iterable, Mapping, Optional
5
-
6
- from airbyte_cdk.models import FailureType
7
- from airbyte_cdk.sources.declarative.async_job.job_orchestrator import (
8
- AsyncJobOrchestrator,
9
- AsyncPartition,
10
- )
11
- from airbyte_cdk.sources.declarative.partition_routers.single_partition_router import (
12
- SinglePartitionRouter,
13
- )
14
- from airbyte_cdk.sources.streams.concurrent.partitions.stream_slicer import StreamSlicer
15
- from airbyte_cdk.sources.types import Config, StreamSlice
16
- from airbyte_cdk.utils.traced_exception import AirbyteTracedException
17
-
18
-
19
- @dataclass
20
- class AsyncJobPartitionRouter(StreamSlicer):
21
- """
22
- Partition router that creates async jobs in a source API, periodically polls for job
23
- completion, and supplies the completed job URL locations as stream slices so that
24
- records can be extracted.
25
- """
26
-
27
- config: Config
28
- parameters: InitVar[Mapping[str, Any]]
29
- job_orchestrator_factory: Callable[[Iterable[StreamSlice]], AsyncJobOrchestrator]
30
- stream_slicer: StreamSlicer = field(
31
- default_factory=lambda: SinglePartitionRouter(parameters={})
32
- )
33
-
34
- def __post_init__(self, parameters: Mapping[str, Any]) -> None:
35
- self._job_orchestrator_factory = self.job_orchestrator_factory
36
- self._job_orchestrator: Optional[AsyncJobOrchestrator] = None
37
- self._parameters = parameters
38
-
39
- def stream_slices(self) -> Iterable[StreamSlice]:
40
- slices = self.stream_slicer.stream_slices()
41
- self._job_orchestrator = self._job_orchestrator_factory(slices)
42
-
43
- for completed_partition in self._job_orchestrator.create_and_get_completed_partitions():
44
- yield StreamSlice(
45
- partition=dict(completed_partition.stream_slice.partition)
46
- | {"partition": completed_partition},
47
- cursor_slice=completed_partition.stream_slice.cursor_slice,
48
- )
49
-
50
- def fetch_records(self, partition: AsyncPartition) -> Iterable[Mapping[str, Any]]:
51
- """
52
- This method of fetching records extends beyond what a PartitionRouter/StreamSlicer should
53
- be responsible for. However, this was added in because the JobOrchestrator is required to
54
- retrieve records. And without defining fetch_records() on this class, we're stuck with either
55
- passing the JobOrchestrator to the AsyncRetriever or storing it on multiple classes.
56
- """
57
-
58
- if not self._job_orchestrator:
59
- raise AirbyteTracedException(
60
- message="Invalid state within AsyncJobRetriever. Please contact Airbyte Support",
61
- internal_message="AsyncPartitionRepository is expected to be accessed only after `stream_slices`",
62
- failure_type=FailureType.system_error,
63
- )
64
-
65
- return self._job_orchestrator.fetch_records(partition=partition)