airbyte-cdk 6.48.7.post2.dev14899985028__tar.gz → 6.48.9__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 (417) hide show
  1. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/PKG-INFO +1 -1
  2. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/_connector.py +15 -17
  3. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/_image.py +16 -18
  4. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/_secrets.py +14 -33
  5. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/entrypoint_wrapper.py +4 -0
  6. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/_job_runner.py +9 -6
  7. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/connector_base.py +22 -15
  8. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/declarative_sources.py +8 -4
  9. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/models/scenario.py +14 -3
  10. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/source_base.py +24 -0
  11. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/util.py +1 -1
  12. airbyte_cdk-6.48.9/airbyte_cdk/utils/connector_paths.py +223 -0
  13. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/docker.py +116 -29
  14. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/pyproject.toml +1 -1
  15. airbyte_cdk-6.48.7.post2.dev14899985028/airbyte_cdk/cli/airbyte_cdk/_util.py +0 -69
  16. airbyte_cdk-6.48.7.post2.dev14899985028/airbyte_cdk/test/standard_tests/test_resources.py +0 -69
  17. airbyte_cdk-6.48.7.post2.dev14899985028/airbyte_cdk/utils/docker_image_templates.py +0 -136
  18. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/LICENSE.txt +0 -0
  19. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/LICENSE_SHORT +0 -0
  20. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/README.md +0 -0
  21. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/__init__.py +0 -0
  22. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/__init__.py +0 -0
  23. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/__init__.py +0 -0
  24. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/_manifest.py +0 -0
  25. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/airbyte_cdk/_version.py +0 -0
  26. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  27. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  28. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  29. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/config_observation.py +0 -0
  30. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector.py +0 -0
  31. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/README.md +0 -0
  32. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/__init__.py +0 -0
  33. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  34. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/main.py +0 -0
  35. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/models.py +0 -0
  36. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  37. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  38. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  39. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  40. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  41. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/__init__.py +0 -0
  42. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/destination.py +0 -0
  43. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  44. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  45. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  46. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  47. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  48. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  49. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  50. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  51. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  52. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/entrypoint.py +0 -0
  53. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/exception_handler.py +0 -0
  54. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/logger.py +0 -0
  55. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/README.md +0 -0
  56. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/__init__.py +0 -0
  57. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/exceptions.py +0 -0
  58. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/manifest_migration.py +0 -0
  59. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migration_handler.py +0 -0
  60. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations/__init__.py +0 -0
  61. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_path_to_url.py +0 -0
  62. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_request_body_json_data_to_request_body.py +0 -0
  63. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations/http_requester_url_base_to_url.py +0 -0
  64. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations/registry.yaml +0 -0
  65. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/manifest_migrations/migrations_registry.py +0 -0
  66. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/models/__init__.py +0 -0
  67. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  68. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  69. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/models/connector_metadata.py +0 -0
  70. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/models/well_known_types.py +0 -0
  71. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/py.typed +0 -0
  72. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/__init__.py +0 -0
  73. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/abstract_source.py +0 -0
  74. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  75. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  76. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  77. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  78. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  79. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  80. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  81. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/config.py +0 -0
  82. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  83. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  84. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  85. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  86. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  87. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  88. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  89. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  90. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  91. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  92. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  93. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  94. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  95. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  96. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  97. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  98. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  99. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  100. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  101. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  102. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  103. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  104. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  105. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  106. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  107. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  108. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
  109. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  110. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  111. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  112. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  113. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  114. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  115. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  116. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  117. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  118. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  119. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  120. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  121. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  122. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  123. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  124. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  125. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  126. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  127. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  128. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  129. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  130. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  131. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  132. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  133. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  134. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  135. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  136. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  137. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  138. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  139. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  140. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  141. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  142. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  143. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  144. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  145. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  146. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  147. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  148. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  149. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  150. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  151. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/models/base_model_with_deprecations.py +0 -0
  152. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  153. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  154. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  155. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  156. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  157. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/manifest_normalizer.py +0 -0
  158. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  159. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
  160. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  161. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  162. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  163. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  164. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  165. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  166. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  167. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  168. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  169. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  170. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  171. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  172. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  173. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  174. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  175. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  176. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  177. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  178. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  179. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  180. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  181. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  182. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  183. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  184. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  185. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  186. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  187. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  188. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  189. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  190. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  191. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  192. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  193. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  194. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  195. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
  196. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
  197. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
  198. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
  199. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
  200. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
  201. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
  202. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  203. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  204. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  205. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  206. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  207. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  208. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  209. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  210. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  211. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  212. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  213. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  214. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  215. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  216. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  217. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  218. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/__init__.py +0 -0
  219. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/connector_builder_file_uploader.py +0 -0
  220. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/default_file_uploader.py +0 -0
  221. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_uploader.py +0 -0
  222. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/file_writer.py +0 -0
  223. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/local_file_system_file_writer.py +0 -0
  224. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/file_uploader/noop_file_writer.py +0 -0
  225. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  226. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  227. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  228. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/composite_schema_loader.py +0 -0
  229. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  230. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  231. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  232. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  233. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  234. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  235. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  236. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  237. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  238. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  239. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  240. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  241. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  242. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  243. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  244. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  245. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  246. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  247. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  248. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/types.py +0 -0
  249. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  250. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/README.md +0 -0
  251. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  252. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  253. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  254. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  255. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  256. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  257. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  258. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  259. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  260. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  261. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  262. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  263. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  264. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  265. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  266. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  267. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  268. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  269. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  270. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  271. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  272. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_record_data.py +0 -0
  273. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  274. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  275. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  276. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  277. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  278. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  279. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  280. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  281. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  282. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  283. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  284. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  285. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  286. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  287. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  288. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  289. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  290. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  291. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  292. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  293. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  294. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  295. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  296. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  297. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  298. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  299. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  300. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  301. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/file_based/types.py +0 -0
  302. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/http_config.py +0 -0
  303. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/http_logger.py +0 -0
  304. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/message/__init__.py +0 -0
  305. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/message/repository.py +0 -0
  306. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/source.py +0 -0
  307. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  308. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/__init__.py +0 -0
  309. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  310. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  311. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  312. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  313. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  314. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  315. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  316. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  317. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  318. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  319. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  320. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  321. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  322. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  323. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  324. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  325. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  326. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  327. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  328. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  329. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  330. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  331. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  332. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  333. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  334. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  335. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  336. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  337. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  338. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  339. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  340. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/core.py +0 -0
  341. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  342. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  343. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  344. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  345. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  346. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  347. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  348. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  349. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  350. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  351. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  352. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  353. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/http.py +0 -0
  354. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  355. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  356. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  357. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  358. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  359. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  360. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  361. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  362. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  363. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/types.py +0 -0
  364. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/__init__.py +0 -0
  365. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/casing.py +0 -0
  366. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/files_directory.py +0 -0
  367. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  368. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  369. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  370. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/transform.py +0 -0
  371. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sources/utils/types.py +0 -0
  372. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/__init__.py +0 -0
  373. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/_util/__init__.py +0 -0
  374. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/_util/hashing.py +0 -0
  375. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  376. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/constants.py +0 -0
  377. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/exceptions.py +0 -0
  378. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/secrets.py +0 -0
  379. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/shared/__init__.py +0 -0
  380. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  381. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  382. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/sql/types.py +0 -0
  383. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/__init__.py +0 -0
  384. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/catalog_builder.py +0 -0
  385. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  386. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  387. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  388. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/request.py +0 -0
  389. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/response.py +0 -0
  390. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  391. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/__init__.py +0 -0
  392. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/destination_base.py +0 -0
  393. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/models/__init__.py +0 -0
  394. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/standard_tests/pytest_hooks.py +0 -0
  395. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/state_builder.py +0 -0
  396. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/utils/__init__.py +0 -0
  397. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/utils/data.py +0 -0
  398. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  399. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  400. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/test/utils/reading.py +0 -0
  401. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/__init__.py +0 -0
  402. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  403. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/analytics_message.py +0 -0
  404. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/constants.py +0 -0
  405. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  406. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  407. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/event_timing.py +0 -0
  408. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  409. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  410. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/message_utils.py +0 -0
  411. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  412. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/print_buffer.py +0 -0
  413. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  414. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/slice_hasher.py +0 -0
  415. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  416. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  417. {airbyte_cdk-6.48.7.post2.dev14899985028 → airbyte_cdk-6.48.9}/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.48.7.post2.dev14899985028
3
+ Version: 6.48.9
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -44,11 +44,14 @@ from types import ModuleType
44
44
 
45
45
  import rich_click as click
46
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
47
  from airbyte_cdk.test.standard_tests.util import create_connector_test_suite
51
48
 
49
+ # from airbyte_cdk.test.standard_tests import pytest_hooks
50
+ from airbyte_cdk.utils.connector_paths import (
51
+ find_connector_root_from_name,
52
+ resolve_connector_name_and_directory,
53
+ )
54
+
52
55
  click.rich_click.TEXT_MARKUP = "markdown"
53
56
 
54
57
  pytest: ModuleType | None
@@ -98,15 +101,11 @@ def connector_cli_group() -> None:
98
101
 
99
102
 
100
103
  @connector_cli_group.command()
101
- @click.option(
102
- "--connector-name",
104
+ @click.argument(
105
+ "connector",
106
+ required=False,
103
107
  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.",
108
+ metavar="[CONNECTOR]",
110
109
  )
111
110
  @click.option(
112
111
  "--collect-only",
@@ -115,8 +114,7 @@ def connector_cli_group() -> None:
115
114
  help="Only collect tests, do not run them.",
116
115
  )
117
116
  def test(
118
- connector_name: str | None = None,
119
- connector_directory: Path | None = None,
117
+ connector: str | Path | None = None,
120
118
  *,
121
119
  collect_only: bool = False,
122
120
  ) -> None:
@@ -124,6 +122,9 @@ def test(
124
122
 
125
123
  This command runs the standard connector tests for a specific connector.
126
124
 
125
+ [CONNECTOR] can be a connector name (e.g. 'source-pokeapi'), a path to a connector directory, or omitted to use the current working directory.
126
+ If a string containing '/' is provided, it is treated as a path. Otherwise, it is treated as a connector name.
127
+
127
128
  If no connector name or directory is provided, we will look within the current working
128
129
  directory. If the current working directory is not a connector directory (e.g. starting
129
130
  with 'source-') and no connector name or path is provided, the process will fail.
@@ -133,10 +134,7 @@ def test(
133
134
  "pytest is not installed. Please install pytest to run the connector tests."
134
135
  )
135
136
  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
- )
137
+ connector_name, connector_directory = resolve_connector_name_and_directory(connector)
140
138
 
141
139
  connector_test_suite = create_connector_test_suite(
142
140
  connector_name=connector_name if not connector_directory else None,
@@ -10,8 +10,8 @@ from pathlib import Path
10
10
 
11
11
  import rich_click as click
12
12
 
13
- from airbyte_cdk.cli.airbyte_cdk._util import resolve_connector_name_and_directory
14
13
  from airbyte_cdk.models.connector_metadata import MetadataFile
14
+ from airbyte_cdk.utils.connector_paths import resolve_connector_name_and_directory
15
15
  from airbyte_cdk.utils.docker import (
16
16
  ConnectorImageBuildError,
17
17
  build_connector_image,
@@ -28,30 +28,30 @@ def image_cli_group() -> None:
28
28
 
29
29
 
30
30
  @image_cli_group.command()
31
- @click.option(
32
- "--connector-name",
31
+ @click.argument(
32
+ "connector",
33
+ required=False,
33
34
  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.",
35
+ metavar="[CONNECTOR]",
40
36
  )
41
37
  @click.option("--tag", default="dev", help="Tag to apply to the built image (default: dev)")
42
38
  @click.option("--no-verify", is_flag=True, help="Skip verification of the built image")
39
+ @click.option(
40
+ "--dockerfile",
41
+ type=click.Path(exists=True, file_okay=True, path_type=Path),
42
+ help="Optional. Override the Dockerfile used for building the image.",
43
+ )
43
44
  def build(
44
- connector_name: str | None = None,
45
- connector_directory: Path | None = None,
45
+ connector: str | None = None,
46
46
  *,
47
47
  tag: str = "dev",
48
48
  no_verify: bool = False,
49
+ dockerfile: Path | None = None,
49
50
  ) -> None:
50
51
  """Build a connector Docker image.
51
52
 
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.
53
+ [CONNECTOR] can be a connector name (e.g. 'source-pokeapi'), a path to a connector directory, or omitted to use the current working directory.
54
+ If a string containing '/' is provided, it is treated as a path. Otherwise, it is treated as a connector name.
55
55
  """
56
56
  if not verify_docker_installation():
57
57
  click.echo(
@@ -59,10 +59,7 @@ def build(
59
59
  )
60
60
  sys.exit(1)
61
61
 
62
- connector_name, connector_directory = resolve_connector_name_and_directory(
63
- connector_name=connector_name,
64
- connector_directory=connector_directory,
65
- )
62
+ connector_name, connector_directory = resolve_connector_name_and_directory(connector)
66
63
 
67
64
  metadata_file_path: Path = connector_directory / "metadata.yaml"
68
65
  try:
@@ -81,6 +78,7 @@ def build(
81
78
  metadata=metadata,
82
79
  tag=tag,
83
80
  no_verify=no_verify,
81
+ dockerfile_override=dockerfile or None,
84
82
  )
85
83
  except ConnectorImageBuildError as e:
86
84
  click.echo(
@@ -43,7 +43,7 @@ from click import style
43
43
  from rich.console import Console
44
44
  from rich.table import Table
45
45
 
46
- from airbyte_cdk.cli.airbyte_cdk._util import (
46
+ from airbyte_cdk.utils.connector_paths import (
47
47
  resolve_connector_name,
48
48
  resolve_connector_name_and_directory,
49
49
  )
@@ -73,15 +73,11 @@ def secrets_cli_group() -> None:
73
73
 
74
74
 
75
75
  @secrets_cli_group.command()
76
- @click.option(
77
- "--connector-name",
76
+ @click.argument(
77
+ "connector",
78
+ required=False,
78
79
  type=str,
79
- help="Name of the connector to fetch secrets for. Ignored if --connector-directory is provided.",
80
- )
81
- @click.option(
82
- "--connector-directory",
83
- type=click.Path(exists=True, file_okay=False, path_type=Path),
84
- help="Path to the connector directory.",
80
+ metavar="[CONNECTOR]",
85
81
  )
86
82
  @click.option(
87
83
  "--gcp-project-id",
@@ -97,8 +93,7 @@ def secrets_cli_group() -> None:
97
93
  default=False,
98
94
  )
99
95
  def fetch(
100
- connector_name: str | None = None,
101
- connector_directory: Path | None = None,
96
+ connector: str | Path | None = None,
102
97
  gcp_project_id: str = AIRBYTE_INTERNAL_GCP_PROJECT,
103
98
  print_ci_secrets_masks: bool = False,
104
99
  ) -> None:
@@ -107,6 +102,9 @@ def fetch(
107
102
  This command fetches secrets for a connector from Google Secret Manager and writes them
108
103
  to the connector's secrets directory.
109
104
 
105
+ [CONNECTOR] can be a connector name (e.g. 'source-pokeapi'), a path to a connector directory, or omitted to use the current working directory.
106
+ If a string containing '/' is provided, it is treated as a path. Otherwise, it is treated as a connector name.
107
+
110
108
  If no connector name or directory is provided, we will look within the current working
111
109
  directory. If the current working directory is not a connector directory (e.g. starting
112
110
  with 'source-') and no connector name or path is provided, the process will fail.
@@ -114,17 +112,14 @@ def fetch(
114
112
  The `--print-ci-secrets-masks` option will print the GitHub CI mask for the secrets.
115
113
  This is useful for masking secrets in CI logs.
116
114
 
117
- WARNING: This action causes the secrets to be printed in clear text to `STDOUT`. For security
118
- reasons, this function will only execute if the `CI` environment variable is set. Otherwise,
119
- masks will not be printed.
115
+ WARNING: The `--print-ci-secrets-masks` option causes the secrets to be printed in clear text to
116
+ `STDOUT`. For security reasons, this argument will be ignored if the `CI` environment
117
+ variable is not set.
120
118
  """
121
119
  click.echo("Fetching secrets...", err=True)
122
120
 
123
121
  client = _get_gsm_secrets_client()
124
- connector_name, connector_directory = resolve_connector_name_and_directory(
125
- connector_name=connector_name,
126
- connector_directory=connector_directory,
127
- )
122
+ connector_name, connector_directory = resolve_connector_name_and_directory(connector)
128
123
  secrets_dir = _get_secrets_dir(
129
124
  connector_directory=connector_directory,
130
125
  connector_name=connector_name,
@@ -289,21 +284,7 @@ def _get_secrets_dir(
289
284
  connector_name: str,
290
285
  ensure_exists: bool = True,
291
286
  ) -> Path:
292
- try:
293
- connector_name, connector_directory = resolve_connector_name_and_directory(
294
- connector_name=connector_name,
295
- connector_directory=connector_directory,
296
- )
297
- except FileNotFoundError as e:
298
- raise FileNotFoundError(
299
- f"Could not find connector directory for '{connector_name}'. "
300
- "Please provide the --connector-directory option with the path to the connector. "
301
- "Note: This command requires either running from within a connector directory, "
302
- "being in the airbyte monorepo, or explicitly providing the connector directory path."
303
- ) from e
304
- except ValueError as e:
305
- raise ValueError(str(e))
306
-
287
+ _ = connector_name # Unused, but it may be used in the future for logging
307
288
  secrets_dir = connector_directory / "secrets"
308
289
  if ensure_exists:
309
290
  secrets_dir.mkdir(parents=True, exist_ok=True)
@@ -82,6 +82,10 @@ class EntrypointOutput:
82
82
  def state_messages(self) -> List[AirbyteMessage]:
83
83
  return self._get_message_by_types([Type.STATE])
84
84
 
85
+ @property
86
+ def spec_messages(self) -> List[AirbyteMessage]:
87
+ return self._get_message_by_types([Type.SPEC])
88
+
85
89
  @property
86
90
  def connection_status_messages(self) -> List[AirbyteMessage]:
87
91
  return self._get_message_by_types([Type.CONNECTION_STATUS])
@@ -56,12 +56,15 @@ class IConnector(Protocol):
56
56
 
57
57
  def run_test_job(
58
58
  connector: IConnector | type[IConnector] | Callable[[], IConnector],
59
- verb: Literal["read", "check", "discover"],
60
- test_scenario: ConnectorTestScenario,
59
+ verb: Literal["spec", "read", "check", "discover"],
61
60
  *,
61
+ test_scenario: ConnectorTestScenario | None = None,
62
62
  catalog: ConfiguredAirbyteCatalog | dict[str, Any] | None = None,
63
63
  ) -> entrypoint_wrapper.EntrypointOutput:
64
64
  """Run a test scenario from provided CLI args and return the result."""
65
+ # Use default (empty) scenario if not provided:
66
+ test_scenario = test_scenario or ConnectorTestScenario()
67
+
65
68
  if not connector:
66
69
  raise ValueError("Connector is required")
67
70
 
@@ -81,14 +84,14 @@ def run_test_job(
81
84
  )
82
85
 
83
86
  args: list[str] = [verb]
84
- if test_scenario.config_path:
85
- args += ["--config", str(test_scenario.config_path)]
86
- elif test_scenario.config_dict:
87
+ config_dict = test_scenario.get_config_dict(empty_if_missing=True)
88
+ if config_dict and verb != "spec":
89
+ # Write the config to a temp json file and pass the path to the file as an argument.
87
90
  config_path = (
88
91
  Path(tempfile.gettempdir()) / "airbyte-test" / f"temp_config_{uuid.uuid4().hex}.json"
89
92
  )
90
93
  config_path.parent.mkdir(parents=True, exist_ok=True)
91
- config_path.write_text(orjson.dumps(test_scenario.config_dict).decode())
94
+ config_path.write_text(orjson.dumps(config_dict).decode())
92
95
  args += ["--config", str(config_path)]
93
96
 
94
97
  catalog_path: Path | None = None
@@ -24,7 +24,7 @@ from airbyte_cdk.test.standard_tests._job_runner import IConnector, run_test_job
24
24
  from airbyte_cdk.test.standard_tests.models import (
25
25
  ConnectorTestScenario,
26
26
  )
27
- from airbyte_cdk.test.standard_tests.test_resources import (
27
+ from airbyte_cdk.utils.connector_paths import (
28
28
  ACCEPTANCE_TEST_CONFIG,
29
29
  find_connector_root,
30
30
  )
@@ -89,7 +89,7 @@ class ConnectorTestSuiteBase(abc.ABC):
89
89
  @classmethod
90
90
  def create_connector(
91
91
  cls,
92
- scenario: ConnectorTestScenario,
92
+ scenario: ConnectorTestScenario | None,
93
93
  ) -> IConnector:
94
94
  """Instantiate the connector class."""
95
95
  connector = cls.connector # type: ignore
@@ -147,28 +147,35 @@ class ConnectorTestSuiteBase(abc.ABC):
147
147
  This has to be a separate function because pytest does not allow
148
148
  parametrization of fixtures with arguments from the test class itself.
149
149
  """
150
- category = "connection"
150
+ categories = ["connection", "spec"]
151
151
  all_tests_config = yaml.safe_load(cls.acceptance_test_config_path.read_text())
152
152
  if "acceptance_tests" not in all_tests_config:
153
153
  raise ValueError(
154
154
  f"Acceptance tests config not found in {cls.acceptance_test_config_path}."
155
155
  f" Found only: {str(all_tests_config)}."
156
156
  )
157
- if category not in all_tests_config["acceptance_tests"]:
158
- return []
159
- if "tests" not in all_tests_config["acceptance_tests"][category]:
160
- raise ValueError(f"No tests found for category {category}")
161
-
162
- tests_scenarios = [
163
- ConnectorTestScenario.model_validate(test)
164
- for test in all_tests_config["acceptance_tests"][category]["tests"]
165
- if "iam_role" not in test["config_path"]
166
- ]
157
+
158
+ test_scenarios: list[ConnectorTestScenario] = []
159
+ for category in categories:
160
+ if (
161
+ category not in all_tests_config["acceptance_tests"]
162
+ or "tests" not in all_tests_config["acceptance_tests"][category]
163
+ ):
164
+ continue
165
+
166
+ test_scenarios.extend(
167
+ [
168
+ ConnectorTestScenario.model_validate(test)
169
+ for test in all_tests_config["acceptance_tests"][category]["tests"]
170
+ if "config_path" in test and "iam_role" not in test["config_path"]
171
+ ]
172
+ )
173
+
167
174
  connector_root = cls.get_connector_root_dir().absolute()
168
- for test in tests_scenarios:
175
+ for test in test_scenarios:
169
176
  if test.config_path:
170
177
  test.config_path = connector_root / test.config_path
171
178
  if test.configured_catalog_path:
172
179
  test.configured_catalog_path = connector_root / test.configured_catalog_path
173
180
 
174
- return tests_scenarios
181
+ return test_scenarios
@@ -12,7 +12,7 @@ from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
12
12
  from airbyte_cdk.test.standard_tests._job_runner import IConnector
13
13
  from airbyte_cdk.test.standard_tests.models import ConnectorTestScenario
14
14
  from airbyte_cdk.test.standard_tests.source_base import SourceTestSuiteBase
15
- from airbyte_cdk.test.standard_tests.test_resources import MANIFEST_YAML
15
+ from airbyte_cdk.utils.connector_paths import MANIFEST_YAML
16
16
 
17
17
 
18
18
  def md5_checksum(file_path: Path) -> str:
@@ -64,7 +64,7 @@ class DeclarativeSourceTestSuite(SourceTestSuiteBase):
64
64
  @classmethod
65
65
  def create_connector(
66
66
  cls,
67
- scenario: ConnectorTestScenario,
67
+ scenario: ConnectorTestScenario | None,
68
68
  ) -> IConnector:
69
69
  """Create a connector scenario for the test suite.
70
70
 
@@ -73,9 +73,13 @@ class DeclarativeSourceTestSuite(SourceTestSuiteBase):
73
73
 
74
74
  Subclasses should not need to override this method.
75
75
  """
76
- config: dict[str, Any] = scenario.get_config_dict()
77
-
76
+ scenario = scenario or ConnectorTestScenario() # Use default (empty) scenario if None
78
77
  manifest_dict = yaml.safe_load(cls.manifest_yaml_path.read_text())
78
+ config = {
79
+ "__injected_manifest": manifest_dict,
80
+ }
81
+ config.update(scenario.get_config_dict(empty_if_missing=True))
82
+
79
83
  if cls.components_py_path and cls.components_py_path.exists():
80
84
  os.environ["AIRBYTE_ENABLE_UNSAFE_CODE"] = "true"
81
85
  config["__injected_components_py"] = cls.components_py_path.read_text()
@@ -43,18 +43,29 @@ class ConnectorTestScenario(BaseModel):
43
43
  file_types: AcceptanceTestFileTypes | None = None
44
44
  status: Literal["succeed", "failed"] | None = None
45
45
 
46
- def get_config_dict(self) -> dict[str, Any]:
46
+ def get_config_dict(
47
+ self,
48
+ *,
49
+ empty_if_missing: bool,
50
+ ) -> dict[str, Any]:
47
51
  """Return the config dictionary.
48
52
 
49
53
  If a config dictionary has already been loaded, return it. Otherwise, load
50
54
  the config file and return the dictionary.
55
+
56
+ If `self.config_dict` and `self.config_path` are both `None`:
57
+ - return an empty dictionary if `empty_if_missing` is True
58
+ - raise a ValueError if `empty_if_missing` is False
51
59
  """
52
- if self.config_dict:
60
+ if self.config_dict is not None:
53
61
  return self.config_dict
54
62
 
55
- if self.config_path:
63
+ if self.config_path is not None:
56
64
  return cast(dict[str, Any], yaml.safe_load(self.config_path.read_text()))
57
65
 
66
+ if empty_if_missing:
67
+ return {}
68
+
58
69
  raise ValueError("No config dictionary or path provided.")
59
70
 
60
71
  @property
@@ -64,6 +64,30 @@ class SourceTestSuiteBase(ConnectorTestSuiteBase):
64
64
  test_scenario=scenario,
65
65
  )
66
66
 
67
+ def test_spec(self) -> None:
68
+ """Standard test for `spec`.
69
+
70
+ This test does not require a `scenario` input, since `spec`
71
+ does not require any inputs.
72
+
73
+ We assume `spec` should always succeed and it should always generate
74
+ a valid `SPEC` message.
75
+
76
+ Note: the parsing of messages by type also implicitly validates that
77
+ the generated `SPEC` message is valid JSON.
78
+ """
79
+ result = run_test_job(
80
+ verb="spec",
81
+ test_scenario=None,
82
+ connector=self.create_connector(scenario=None),
83
+ )
84
+ # If an error occurs, it will be raised above.
85
+
86
+ assert len(result.spec_messages) == 1, (
87
+ "Expected exactly 1 spec message but got {len(result.spec_messages)}",
88
+ result.errors,
89
+ )
90
+
67
91
  def test_basic_read(
68
92
  self,
69
93
  scenario: ConnectorTestScenario,
@@ -12,7 +12,7 @@ from airbyte_cdk.test.standard_tests.declarative_sources import (
12
12
  )
13
13
  from airbyte_cdk.test.standard_tests.destination_base import DestinationTestSuiteBase
14
14
  from airbyte_cdk.test.standard_tests.source_base import SourceTestSuiteBase
15
- from airbyte_cdk.test.standard_tests.test_resources import (
15
+ from airbyte_cdk.utils.connector_paths import (
16
16
  METADATA_YAML,
17
17
  find_connector_root_from_name,
18
18
  )