airbyte-cdk 6.45.10__tar.gz → 6.46.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 (398) hide show
  1. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/PKG-INFO +6 -1
  2. airbyte_cdk-6.46.0/airbyte_cdk/cli/__init__.py +9 -0
  3. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/__init__.py +86 -0
  4. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_connector.py +179 -0
  5. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_image.py +95 -0
  6. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_manifest.py +24 -0
  7. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_secrets.py +150 -0
  8. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_util.py +43 -0
  9. airbyte_cdk-6.46.0/airbyte_cdk/cli/airbyte_cdk/_version.py +13 -0
  10. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +10 -0
  11. airbyte_cdk-6.46.0/airbyte_cdk/models/connector_metadata.py +97 -0
  12. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +108 -79
  13. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +122 -45
  14. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +87 -82
  15. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +9 -0
  16. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +2 -2
  17. airbyte_cdk-6.46.0/airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py +462 -0
  18. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +2 -2
  19. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +24 -24
  20. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/connector_base.py +51 -25
  21. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/declarative_sources.py +3 -1
  22. airbyte_cdk-6.46.0/airbyte_cdk/test/standard_tests/test_resources.py +69 -0
  23. airbyte_cdk-6.46.0/airbyte_cdk/test/standard_tests/util.py +79 -0
  24. airbyte_cdk-6.46.0/airbyte_cdk/utils/docker.py +337 -0
  25. airbyte_cdk-6.46.0/airbyte_cdk/utils/docker_image_templates.py +101 -0
  26. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/pyproject.toml +11 -3
  27. airbyte_cdk-6.45.10/airbyte_cdk/test/utils/__init__.py +0 -1
  28. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/LICENSE.txt +0 -0
  29. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/LICENSE_SHORT +0 -0
  30. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/README.md +0 -0
  31. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/__init__.py +0 -0
  32. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  33. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  34. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  35. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/config_observation.py +0 -0
  36. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector.py +0 -0
  37. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/README.md +0 -0
  38. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  39. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/main.py +0 -0
  40. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/models.py +0 -0
  41. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  42. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  43. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  44. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  45. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  46. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/__init__.py +0 -0
  47. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/destination.py +0 -0
  48. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  49. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  50. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  51. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  52. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  53. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  54. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  55. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  56. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  57. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/entrypoint.py +0 -0
  58. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/exception_handler.py +0 -0
  59. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/logger.py +0 -0
  60. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/models/__init__.py +0 -0
  61. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  62. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  63. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/models/well_known_types.py +0 -0
  64. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/py.typed +0 -0
  65. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/__init__.py +0 -0
  66. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/abstract_source.py +0 -0
  67. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  68. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  69. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  70. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  71. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  72. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  73. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  74. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/config.py +0 -0
  75. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  76. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  77. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  78. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  79. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  80. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  81. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  82. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  83. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  84. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  85. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  86. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  87. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  88. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  89. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  90. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  91. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  92. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  93. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  94. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  95. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  96. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  97. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  98. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  99. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  100. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  101. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  102. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  103. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  104. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  105. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  106. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  107. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  108. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  109. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  110. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  111. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  112. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  113. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  114. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  115. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  116. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  117. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  118. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  119. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  120. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  121. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  122. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  123. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  124. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  125. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  126. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  127. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  128. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  129. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  130. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  131. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  132. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  133. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  134. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  135. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  136. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  137. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  138. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  139. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  140. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  141. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  142. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  143. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  144. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  145. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  146. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  147. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  148. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  149. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  150. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  151. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  152. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  153. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  154. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  155. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  156. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  157. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  158. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  159. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  160. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  161. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  162. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  163. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  164. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  165. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  166. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  167. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  168. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  169. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  170. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  171. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  172. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  173. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  174. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  175. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  176. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  177. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  178. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  179. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
  180. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
  181. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
  182. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
  183. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
  184. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
  185. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
  186. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  187. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  188. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  189. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  190. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  191. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  192. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  193. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  194. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  195. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  196. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  197. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  198. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  199. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  200. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  201. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  202. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/retrievers/file_uploader.py +0 -0
  203. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  204. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  205. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  206. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  207. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  208. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  209. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  210. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  211. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  212. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  213. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  214. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  215. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  216. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  217. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  218. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  219. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  220. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  221. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  222. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  223. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  224. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  225. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  226. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  227. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/README.md +0 -0
  228. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  229. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  230. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  231. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  232. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  233. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  234. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  235. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  236. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  237. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  238. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  239. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  240. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  241. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  242. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  243. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  244. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  245. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  246. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  247. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  248. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  249. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_record_data.py +0 -0
  250. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  251. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  252. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  253. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  254. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  255. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  256. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  257. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  258. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  259. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  260. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  261. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  262. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  263. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  264. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  265. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  266. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  267. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  268. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  269. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  270. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  271. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  272. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  273. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  274. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  275. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  276. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  277. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  278. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/file_based/types.py +0 -0
  279. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/http_config.py +0 -0
  280. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/http_logger.py +0 -0
  281. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/message/__init__.py +0 -0
  282. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/message/repository.py +0 -0
  283. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/source.py +0 -0
  284. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  285. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  286. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  287. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  288. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  289. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  290. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  291. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  292. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  293. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  294. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  295. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  296. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  297. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  298. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  299. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  300. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  301. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  302. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  303. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  304. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  305. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  306. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  307. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  308. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  309. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  310. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  311. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  312. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  313. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  314. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  315. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  316. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  317. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/core.py +0 -0
  318. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  319. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  320. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  321. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  322. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  323. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  324. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  325. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  326. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  327. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  328. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  329. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  330. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  331. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  332. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  333. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  334. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  335. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  336. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  337. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  338. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  339. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  340. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/types.py +0 -0
  341. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  342. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  343. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/files_directory.py +0 -0
  344. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  345. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  346. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  347. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  348. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sources/utils/types.py +0 -0
  349. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/__init__.py +0 -0
  350. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/_util/__init__.py +0 -0
  351. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/_util/hashing.py +0 -0
  352. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  353. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/constants.py +0 -0
  354. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/exceptions.py +0 -0
  355. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/secrets.py +0 -0
  356. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/shared/__init__.py +0 -0
  357. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  358. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  359. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/sql/types.py +0 -0
  360. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/__init__.py +0 -0
  361. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/catalog_builder.py +0 -0
  362. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  363. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  364. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  365. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  366. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/request.py +0 -0
  367. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/response.py +0 -0
  368. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  369. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/__init__.py +0 -0
  370. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/_job_runner.py +0 -0
  371. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/destination_base.py +0 -0
  372. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/models/__init__.py +0 -0
  373. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/models/scenario.py +0 -0
  374. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/pytest_hooks.py +0 -0
  375. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/standard_tests/source_base.py +0 -0
  376. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/state_builder.py +0 -0
  377. {airbyte_cdk-6.45.10/airbyte_cdk/cli → airbyte_cdk-6.46.0/airbyte_cdk/test/utils}/__init__.py +0 -0
  378. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/utils/data.py +0 -0
  379. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  380. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  381. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/test/utils/reading.py +0 -0
  382. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/__init__.py +0 -0
  383. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  384. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/analytics_message.py +0 -0
  385. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/constants.py +0 -0
  386. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  387. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  388. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/event_timing.py +0 -0
  389. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  390. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  391. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/message_utils.py +0 -0
  392. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  393. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/print_buffer.py +0 -0
  394. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  395. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/slice_hasher.py +0 -0
  396. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  397. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.0}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  398. {airbyte_cdk-6.45.10 → airbyte_cdk-6.46.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.45.10
3
+ Version: 6.46.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Topic :: Scientific/Engineering
19
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Provides-Extra: dev
20
21
  Provides-Extra: file-based
21
22
  Provides-Extra: sql
22
23
  Provides-Extra: vector-db-based
@@ -28,12 +29,14 @@ Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
28
29
  Requires-Dist: backoff
29
30
  Requires-Dist: boltons (>=25.0.0,<26.0.0)
30
31
  Requires-Dist: cachetools
32
+ Requires-Dist: click (>=8.1.8,<9.0.0)
31
33
  Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
32
34
  Requires-Dist: cryptography (>=44.0.0,<45.0.0)
33
35
  Requires-Dist: dpath (>=2.1.6,<3.0.0)
34
36
  Requires-Dist: dunamai (>=1.22.0,<2.0.0)
35
37
  Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
36
38
  Requires-Dist: genson (==1.3.0)
39
+ Requires-Dist: google-cloud-secret-manager (>=2.17.0,<3.0.0)
37
40
  Requires-Dist: isodate (>=0.6.1,<0.7.0)
38
41
  Requires-Dist: jsonref (>=0.2,<0.3)
39
42
  Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
@@ -54,6 +57,7 @@ Requires-Dist: pydantic (>=2.7,<3.0)
54
57
  Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
55
58
  Requires-Dist: pyrate-limiter (>=3.1.0,<3.2.0)
56
59
  Requires-Dist: pytesseract (==0.3.10) ; extra == "file-based"
60
+ Requires-Dist: pytest (>=7,<8) ; extra == "dev"
57
61
  Requires-Dist: python-calamine (==0.2.3) ; extra == "file-based"
58
62
  Requires-Dist: python-dateutil (>=2.9.0,<3.0.0)
59
63
  Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
@@ -62,6 +66,7 @@ Requires-Dist: pytz (==2024.2)
62
66
  Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
63
67
  Requires-Dist: requests
64
68
  Requires-Dist: requests_cache
69
+ Requires-Dist: rich-click (>=1.8.8,<2.0.0)
65
70
  Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
66
71
  Requires-Dist: sqlalchemy (>=2.0,<3.0,!=2.0.36) ; extra == "sql"
67
72
  Requires-Dist: tiktoken (==0.8.0) ; extra == "vector-db-based"
@@ -0,0 +1,9 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """The `airbyte-cdk.cli` module provides command-line interfaces for the Airbyte CDK.
3
+
4
+ As of now, it includes the following CLI entry points:
5
+
6
+ - `airbyte-cdk`: Commands for working with connectors.
7
+ - `source-declarative-manifest`: Directly invoke the declarative manifests connector.
8
+
9
+ """
@@ -0,0 +1,86 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """CLI commands for `airbyte-cdk`.
3
+
4
+ This CLI interface allows you to interact with your connector, including
5
+ testing and running commands.
6
+
7
+ **Basic Usage:**
8
+
9
+ ```bash
10
+ airbyte-cdk --help
11
+ airbyte-cdk --version
12
+ airbyte-cdk connector --help
13
+ airbyte-cdk manifest --help
14
+ ```
15
+
16
+ **Running Statelessly:**
17
+
18
+ You can run the latest version of this CLI, from any machine, using `pipx` or `uvx`:
19
+
20
+ ```bash
21
+ # Run the latest version of the CLI:
22
+ pipx run airbyte-cdk connector --help
23
+ uvx airbyte-cdk connector --help
24
+
25
+ # Run from a specific CDK version:
26
+ pipx run airbyte-cdk==6.5.1 connector --help
27
+ uvx airbyte-cdk==6.5.1 connector --help
28
+ ```
29
+
30
+ **Running within your virtualenv:**
31
+
32
+ You can also run from your connector's virtualenv:
33
+
34
+ ```bash
35
+ poetry run airbyte-cdk connector --help
36
+ ```
37
+
38
+ """
39
+
40
+ from typing import cast
41
+
42
+ import rich_click as click
43
+
44
+ from airbyte_cdk.cli.airbyte_cdk._connector import connector_cli_group
45
+ from airbyte_cdk.cli.airbyte_cdk._image import image_cli_group
46
+ from airbyte_cdk.cli.airbyte_cdk._manifest import manifest_cli_group
47
+ from airbyte_cdk.cli.airbyte_cdk._secrets import secrets_cli_group
48
+ from airbyte_cdk.cli.airbyte_cdk._version import print_version
49
+
50
+
51
+ @click.group(
52
+ help=__doc__.replace("\n", "\n\n"), # Render docstring as help text (markdown)
53
+ invoke_without_command=True,
54
+ )
55
+ @click.option(
56
+ "--version",
57
+ is_flag=True,
58
+ help="Show the version of the Airbyte CDK.",
59
+ )
60
+ @click.pass_context
61
+ def cli(
62
+ ctx: click.Context,
63
+ version: bool,
64
+ ) -> None:
65
+ """Airbyte CDK CLI.
66
+
67
+ Help text is provided from the file-level docstring.
68
+ """
69
+ if version:
70
+ print_version(short=False)
71
+ ctx.exit()
72
+
73
+ if ctx.invoked_subcommand is None:
74
+ # If no subcommand is provided, show the help message.
75
+ click.echo(ctx.get_help())
76
+ ctx.exit()
77
+
78
+
79
+ cli.add_command(connector_cli_group)
80
+ cli.add_command(manifest_cli_group)
81
+ cli.add_command(image_cli_group)
82
+ cli.add_command(secrets_cli_group)
83
+
84
+
85
+ if __name__ == "__main__":
86
+ cli()
@@ -0,0 +1,179 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """CLI command for `airbyte-cdk`."""
3
+
4
+ USAGE = """CLI command for `airbyte-cdk`.
5
+
6
+ This CLI interface allows you to interact with your connector, including
7
+ testing and running commands.
8
+
9
+ **Basic Usage:**
10
+
11
+ ```bash
12
+ airbyte-cdk --help
13
+ airbyte-cdk connector --help
14
+ airbyte-cdk manifest --help
15
+ ```
16
+
17
+ **Running Statelessly:**
18
+
19
+ You can run the latest version of this CLI, from any machine, using `pipx` or `uvx`:
20
+
21
+ ```bash
22
+ # Run the latest version of the CLI:
23
+ pipx run airbyte-cdk connector --help
24
+ uvx airbyte-cdk connector --help
25
+
26
+ # Run from a specific CDK version:
27
+ pipx run airbyte-cdk==6.5.1 connector --help
28
+ uvx airbyte-cdk==6.5.1 connector --help
29
+ ```
30
+
31
+ **Running within your virtualenv:**
32
+
33
+ You can also run from your connector's virtualenv:
34
+
35
+ ```bash
36
+ poetry run airbyte-cdk connector --help
37
+ ```
38
+
39
+ """
40
+
41
+ import os
42
+ from pathlib import Path
43
+ from types import ModuleType
44
+
45
+ import rich_click as click
46
+
47
+ # from airbyte_cdk.test.standard_tests import pytest_hooks
48
+ from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
49
+ from airbyte_cdk.test.standard_tests.test_resources import find_connector_root_from_name
50
+ from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
51
+
52
+ click.rich_click.TEXT_MARKUP = "markdown"
53
+
54
+ pytest: ModuleType | None
55
+ try:
56
+ import pytest
57
+ except ImportError:
58
+ pytest = None
59
+ # Handle the case where pytest is not installed.
60
+ # This prevents import errors when running the script without pytest installed.
61
+ # We will raise an error later if pytest is required for a given command.
62
+
63
+
64
+ TEST_FILE_TEMPLATE = '''
65
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
66
+ """FAST Airbyte Standard Tests for the source_pokeapi_w_components source."""
67
+
68
+ #from airbyte_cdk.test.standard_tests import {base_class_name}
69
+ from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
70
+ from pathlib import Path
71
+
72
+ pytest_plugins = [
73
+ "airbyte_cdk.test.standard_tests.pytest_hooks",
74
+ ]
75
+
76
+ TestSuite = create_connector_test_suite(
77
+ connector_directory=Path(),
78
+ )
79
+
80
+ # class TestSuite({base_class_name}):
81
+ # """Test suite for the source_pokeapi_w_components source.
82
+
83
+ # This class inherits from SourceTestSuiteBase and implements all of the tests in the suite.
84
+
85
+ # As long as the class name starts with "Test", pytest will automatically discover and run the
86
+ # tests in this class.
87
+ # """
88
+ '''
89
+
90
+
91
+ @click.group(
92
+ name="connector",
93
+ help=__doc__.replace("\n", "\n\n"), # Render docstring as help text (markdown)
94
+ )
95
+ def connector_cli_group() -> None:
96
+ """Connector related commands."""
97
+ pass
98
+
99
+
100
+ @connector_cli_group.command()
101
+ @click.option(
102
+ "--connector-name",
103
+ type=str,
104
+ help="Name of the connector to test. Ignored if --connector-directory is provided.",
105
+ )
106
+ @click.option(
107
+ "--connector-directory",
108
+ type=click.Path(exists=True, file_okay=False, path_type=Path),
109
+ help="Path to the connector directory.",
110
+ )
111
+ @click.option(
112
+ "--collect-only",
113
+ is_flag=True,
114
+ default=False,
115
+ help="Only collect tests, do not run them.",
116
+ )
117
+ def test(
118
+ connector_name: str | None = None,
119
+ connector_directory: Path | None = None,
120
+ *,
121
+ collect_only: bool = False,
122
+ ) -> None:
123
+ """Run connector tests.
124
+
125
+ This command runs the standard connector tests for a specific connector.
126
+
127
+ If no connector name or directory is provided, we will look within the current working
128
+ directory. If the current working directory is not a connector directory (e.g. starting
129
+ with 'source-') and no connector name or path is provided, the process will fail.
130
+ """
131
+ if pytest is None:
132
+ raise ImportError(
133
+ "pytest is not installed. Please install pytest to run the connector tests."
134
+ )
135
+ click.echo("Connector test command executed.")
136
+ connector_name, connector_directory = resolve_connector_name_and_directory(
137
+ connector_name=connector_name,
138
+ connector_directory=connector_directory,
139
+ )
140
+
141
+ connector_test_suite = create_connector_test_suite(
142
+ connector_name=connector_name if not connector_directory else None,
143
+ connector_directory=connector_directory,
144
+ )
145
+
146
+ pytest_args: list[str] = []
147
+ if connector_directory:
148
+ pytest_args.append(f"--rootdir={connector_directory}")
149
+ os.chdir(str(connector_directory))
150
+ else:
151
+ print("No connector directory provided. Running tests in the current directory.")
152
+
153
+ file_text = TEST_FILE_TEMPLATE.format(
154
+ base_class_name=connector_test_suite.__bases__[0].__name__,
155
+ connector_directory=str(connector_directory),
156
+ )
157
+ test_file_path = Path() / ".tmp" / "integration_tests/test_airbyte_standards.py"
158
+ test_file_path = test_file_path.resolve().absolute()
159
+ test_file_path.parent.mkdir(parents=True, exist_ok=True)
160
+ test_file_path.write_text(file_text)
161
+
162
+ if collect_only:
163
+ pytest_args.append("--collect-only")
164
+
165
+ pytest_args.append(str(test_file_path))
166
+ click.echo(f"Running tests from connector directory: {connector_directory}...")
167
+ click.echo(f"Test file: {test_file_path}")
168
+ click.echo(f"Collect only: {collect_only}")
169
+ click.echo(f"Pytest args: {pytest_args}")
170
+ click.echo("Invoking Pytest...")
171
+ pytest.main(
172
+ pytest_args,
173
+ plugins=[],
174
+ )
175
+
176
+
177
+ __all__ = [
178
+ "connector_cli_group",
179
+ ]
@@ -0,0 +1,95 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """Airbyte CDK 'image' commands.
3
+
4
+ The `airbyte-cdk image build` command provides a simple way to work with Airbyte
5
+ connector images.
6
+ """
7
+
8
+ import sys
9
+ from pathlib import Path
10
+
11
+ import rich_click as click
12
+
13
+ from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
14
+ from airbyte_cdk.models.connector_metadata import MetadataFile
15
+ from airbyte_cdk.utils.docker import (
16
+ ConnectorImageBuildError,
17
+ build_connector_image,
18
+ verify_docker_installation,
19
+ )
20
+
21
+
22
+ @click.group(
23
+ name="image",
24
+ help=__doc__.replace("\n", "\n\n"), # Render docstring as help text (markdown)
25
+ )
26
+ def image_cli_group() -> None:
27
+ """Commands for working with connector Docker images."""
28
+
29
+
30
+ @image_cli_group.command()
31
+ @click.option(
32
+ "--connector-name",
33
+ type=str,
34
+ help="Name of the connector to test. Ignored if --connector-directory is provided.",
35
+ )
36
+ @click.option(
37
+ "--connector-directory",
38
+ type=click.Path(exists=True, file_okay=False, path_type=Path),
39
+ help="Path to the connector directory.",
40
+ )
41
+ @click.option("--tag", default="dev", help="Tag to apply to the built image (default: dev)")
42
+ @click.option("--no-verify", is_flag=True, help="Skip verification of the built image")
43
+ def build(
44
+ connector_name: str | None = None,
45
+ connector_directory: Path | None = None,
46
+ *,
47
+ tag: str = "dev",
48
+ no_verify: bool = False,
49
+ ) -> None:
50
+ """Build a connector Docker image.
51
+
52
+ This command builds a Docker image for a connector, using either
53
+ the connector's Dockerfile or a base image specified in the metadata.
54
+ The image is built for both AMD64 and ARM64 architectures.
55
+ """
56
+ if not verify_docker_installation():
57
+ click.echo(
58
+ "Docker is not installed or not running. Please install Docker and try again.", err=True
59
+ )
60
+ sys.exit(1)
61
+
62
+ connector_name, connector_directory = resolve_connector_name_and_directory(
63
+ connector_name=connector_name,
64
+ connector_directory=connector_directory,
65
+ )
66
+
67
+ metadata_file_path: Path = connector_directory / "metadata.yaml"
68
+ try:
69
+ metadata = MetadataFile.from_file(metadata_file_path)
70
+ except (FileNotFoundError, ValueError) as e:
71
+ click.echo(
72
+ f"Error loading metadata file '{metadata_file_path}': {e!s}",
73
+ err=True,
74
+ )
75
+ sys.exit(1)
76
+ click.echo(f"Building Image for Connector: {metadata.data.dockerRepository}:{tag}")
77
+ try:
78
+ build_connector_image(
79
+ connector_directory=connector_directory,
80
+ connector_name=connector_name,
81
+ metadata=metadata,
82
+ tag=tag,
83
+ no_verify=no_verify,
84
+ )
85
+ except ConnectorImageBuildError as e:
86
+ click.echo(
87
+ f"Error building connector image: {e!s}",
88
+ err=True,
89
+ )
90
+ sys.exit(1)
91
+
92
+
93
+ __all__ = [
94
+ "image_cli_group",
95
+ ]
@@ -0,0 +1,24 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """Manifest related commands.
3
+
4
+ Coming soon.
5
+
6
+ This module is planned to provide a command line interface (CLI) for validating
7
+ Airbyte CDK manifests.
8
+ """
9
+
10
+ import rich_click as click
11
+
12
+
13
+ @click.group(
14
+ name="manifest",
15
+ help=__doc__.replace("\n", "\n\n"), # Render docstring as help text (markdown)
16
+ )
17
+ def manifest_cli_group() -> None:
18
+ """Manifest related commands."""
19
+ pass
20
+
21
+
22
+ __all__ = [
23
+ "manifest_cli_group",
24
+ ]
@@ -0,0 +1,150 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """Secret management commands.
3
+
4
+ This module provides commands for managing secrets for Airbyte connectors.
5
+
6
+ Usage:
7
+ airbyte-cdk secrets fetch --connector-name source-github
8
+ airbyte-cdk secrets fetch --connector-directory /path/to/connector
9
+ airbyte-cdk secrets fetch # Run from within a connector directory
10
+
11
+ Usage without pre-installing (stateless):
12
+ pipx run airbyte-cdk secrets fetch ...
13
+ uvx airbyte-cdk secrets fetch ...
14
+
15
+ The 'fetch' command retrieves secrets from Google Secret Manager based on connector
16
+ labels and writes them to the connector's `secrets` directory.
17
+ """
18
+
19
+ import json
20
+ import os
21
+ from pathlib import Path
22
+
23
+ import rich_click as click
24
+
25
+ from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
26
+
27
+ AIRBYTE_INTERNAL_GCP_PROJECT = "dataline-integration-testing"
28
+ CONNECTOR_LABEL = "connector"
29
+
30
+
31
+ @click.group(
32
+ name="secrets",
33
+ help=__doc__.replace("\n", "\n\n"), # Render docstring as help text (markdown)
34
+ )
35
+ def secrets_cli_group() -> None:
36
+ """Secret management commands."""
37
+ pass
38
+
39
+
40
+ @secrets_cli_group.command()
41
+ @click.option(
42
+ "--connector-name",
43
+ type=str,
44
+ help="Name of the connector to fetch secrets for. Ignored if --connector-directory is provided.",
45
+ )
46
+ @click.option(
47
+ "--connector-directory",
48
+ type=click.Path(exists=True, file_okay=False, path_type=Path),
49
+ help="Path to the connector directory.",
50
+ )
51
+ @click.option(
52
+ "--gcp-project-id",
53
+ type=str,
54
+ default=AIRBYTE_INTERNAL_GCP_PROJECT,
55
+ help=f"GCP project ID. Defaults to '{AIRBYTE_INTERNAL_GCP_PROJECT}'.",
56
+ )
57
+ def fetch(
58
+ connector_name: str | None = None,
59
+ connector_directory: Path | None = None,
60
+ gcp_project_id: str = AIRBYTE_INTERNAL_GCP_PROJECT,
61
+ ) -> None:
62
+ """Fetch secrets for a connector from Google Secret Manager.
63
+
64
+ This command fetches secrets for a connector from Google Secret Manager and writes them
65
+ to the connector's secrets directory.
66
+
67
+ If no connector name or directory is provided, we will look within the current working
68
+ directory. If the current working directory is not a connector directory (e.g. starting
69
+ with 'source-') and no connector name or path is provided, the process will fail.
70
+ """
71
+ try:
72
+ from google.cloud import secretmanager_v1 as secretmanager
73
+ except ImportError:
74
+ raise ImportError(
75
+ "google-cloud-secret-manager package is required for Secret Manager integration. "
76
+ "Install it with 'pip install airbyte-cdk[dev]' "
77
+ "or 'pip install google-cloud-secret-manager'."
78
+ )
79
+
80
+ click.echo("Fetching secrets...")
81
+
82
+ # Resolve connector name/directory
83
+ try:
84
+ connector_name, connector_directory = resolve_connector_name_and_directory(
85
+ connector_name=connector_name,
86
+ connector_directory=connector_directory,
87
+ )
88
+ except FileNotFoundError as e:
89
+ raise FileNotFoundError(
90
+ f"Could not find connector directory for '{connector_name}'. "
91
+ "Please provide the --connector-directory option with the path to the connector. "
92
+ "Note: This command requires either running from within a connector directory, "
93
+ "being in the airbyte monorepo, or explicitly providing the connector directory path."
94
+ ) from e
95
+ except ValueError as e:
96
+ raise ValueError(str(e))
97
+
98
+ # Create secrets directory if it doesn't exist
99
+ secrets_dir = connector_directory / "secrets"
100
+ secrets_dir.mkdir(parents=True, exist_ok=True)
101
+
102
+ gitignore_path = secrets_dir / ".gitignore"
103
+ gitignore_path.write_text("*")
104
+
105
+ # Get GSM client
106
+ credentials_json = os.environ.get("GCP_GSM_CREDENTIALS")
107
+ if not credentials_json:
108
+ raise ValueError(
109
+ "No Google Cloud credentials found. Please set the GCP_GSM_CREDENTIALS environment variable."
110
+ )
111
+
112
+ client = secretmanager.SecretManagerServiceClient.from_service_account_info(
113
+ json.loads(credentials_json)
114
+ )
115
+
116
+ # List all secrets with the connector label
117
+ parent = f"projects/{gcp_project_id}"
118
+ filter_string = f"labels.{CONNECTOR_LABEL}={connector_name}"
119
+ secrets = client.list_secrets(
120
+ request=secretmanager.ListSecretsRequest(
121
+ parent=parent,
122
+ filter=filter_string,
123
+ )
124
+ )
125
+
126
+ # Fetch and write secrets
127
+ secret_count = 0
128
+ for secret in secrets:
129
+ secret_name = secret.name
130
+ version_name = f"{secret_name}/versions/latest"
131
+ response = client.access_secret_version(name=version_name)
132
+ payload = response.payload.data.decode("UTF-8")
133
+
134
+ filename_base = "config" # Default filename
135
+ if secret.labels and "filename" in secret.labels:
136
+ filename_base = secret.labels["filename"]
137
+
138
+ secret_file_path = secrets_dir / f"{filename_base}.json"
139
+ secret_file_path.write_text(payload)
140
+ secret_file_path.chmod(0o600) # default to owner read/write only
141
+ click.echo(f"Secret written to: {secret_file_path.absolute()!s}")
142
+ secret_count += 1
143
+
144
+ if secret_count == 0:
145
+ click.echo(f"No secrets found for connector: {connector_name}")
146
+
147
+
148
+ __all__ = [
149
+ "secrets_cli_group",
150
+ ]
@@ -0,0 +1,43 @@
1
+ """Common utilities for Airbyte CDK CLI."""
2
+
3
+ from pathlib import Path
4
+
5
+ from airbyte_cdk.test.standard_tests.test_resources import find_connector_root_from_name
6
+
7
+
8
+ def resolve_connector_name_and_directory(
9
+ connector_name: str | None = None,
10
+ connector_directory: Path | None = None,
11
+ ) -> tuple[str, Path]:
12
+ """Resolve the connector name and directory.
13
+
14
+ This function will resolve the connector name and directory based on the provided
15
+ arguments. If no connector name or directory is provided, it will look within the
16
+ current working directory. If the current working directory is not a connector
17
+ directory (e.g. starting with 'source-') and no connector name or path is provided,
18
+ the process will fail.
19
+ """
20
+ if not connector_directory:
21
+ if connector_name:
22
+ connector_directory = find_connector_root_from_name(connector_name)
23
+ else:
24
+ cwd = Path().resolve().absolute()
25
+ if cwd.name.startswith("source-") or cwd.name.startswith("destination-"):
26
+ connector_directory = cwd
27
+ else:
28
+ raise ValueError(
29
+ "Either connector_name or connector_directory must be provided if not "
30
+ "running from a connector directory."
31
+ )
32
+
33
+ if not connector_name:
34
+ connector_name = connector_directory.name
35
+
36
+ if connector_directory:
37
+ connector_directory = connector_directory.resolve().absolute()
38
+ elif connector_name:
39
+ connector_directory = find_connector_root_from_name(connector_name)
40
+ else:
41
+ raise ValueError("Either connector_name or connector_directory must be provided.")
42
+
43
+ return connector_name, connector_directory
@@ -0,0 +1,13 @@
1
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
2
+ """Version information for the Airbyte CDK CLI."""
3
+
4
+ from airbyte_cdk import __version__
5
+
6
+
7
+ def print_version(short: bool = False) -> None:
8
+ """Print the version of the Airbyte CDK CLI."""
9
+
10
+ if short:
11
+ print(__version__)
12
+ else:
13
+ print(f"Airbyte CDK version: {__version__}")
@@ -56,12 +56,22 @@ def get_limits(config: Mapping[str, Any]) -> TestLimits:
56
56
  return TestLimits(max_records, max_pages_per_slice, max_slices, max_streams)
57
57
 
58
58
 
59
+ def should_normalize_manifest(config: Mapping[str, Any]) -> bool:
60
+ """
61
+ Check if the manifest should be normalized.
62
+ :param config: The configuration to check
63
+ :return: True if the manifest should be normalized, False otherwise.
64
+ """
65
+ return config.get("__should_normalize", False)
66
+
67
+
59
68
  def create_source(config: Mapping[str, Any], limits: TestLimits) -> ManifestDeclarativeSource:
60
69
  manifest = config["__injected_declarative_manifest"]
61
70
  return ManifestDeclarativeSource(
62
71
  config=config,
63
72
  emit_connector_builder_messages=True,
64
73
  source_config=manifest,
74
+ normalize_manifest=should_normalize_manifest(config),
65
75
  component_factory=ModelToComponentFactory(
66
76
  emit_connector_builder_messages=True,
67
77
  limit_pages_fetched_per_slice=limits.max_pages_per_slice,