airbyte-cdk 6.45.0.post6.dev14369631849__tar.gz → 6.45.0.post20.dev14369762306__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 (387) hide show
  1. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/PKG-INFO +1 -1
  2. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/__init__.py +6 -0
  3. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/models/__init__.py +7 -0
  4. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/models/scenario.py +74 -0
  5. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/test_suites/__init__.py +24 -0
  6. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/test_suites/connector_base.py +197 -0
  7. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/test_suites/declarative_sources.py +47 -0
  8. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/test_suites/destination_base.py +12 -0
  9. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/test_suites/source_base.py +129 -0
  10. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/utils/__init__.py +0 -0
  11. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/declarative/utils/job_runner.py +128 -0
  12. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/entrypoint_wrapper.py +4 -0
  13. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/fixtures/__init__.py +0 -0
  14. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/fixtures/auto.py +14 -0
  15. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/fixtures/general.py +15 -0
  16. airbyte_cdk-6.45.0.post20.dev14369762306/airbyte_cdk/test/pytest_config/plugin.py +40 -0
  17. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/pyproject.toml +1 -1
  18. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/LICENSE.txt +0 -0
  19. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/LICENSE_SHORT +0 -0
  20. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/README.md +0 -0
  21. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/__init__.py +0 -0
  22. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/cli/__init__.py +0 -0
  23. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  24. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  25. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  26. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/config_observation.py +0 -0
  27. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector.py +0 -0
  28. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/README.md +0 -0
  29. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/__init__.py +0 -0
  30. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  31. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/main.py +0 -0
  32. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/models.py +0 -0
  33. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  34. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  35. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  36. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  37. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  38. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/__init__.py +0 -0
  39. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/destination.py +0 -0
  40. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  41. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  42. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  43. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  44. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  45. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  46. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  47. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  48. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  49. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/entrypoint.py +0 -0
  50. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/exception_handler.py +0 -0
  51. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/logger.py +0 -0
  52. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/models/__init__.py +0 -0
  53. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  54. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  55. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  56. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/models/well_known_types.py +0 -0
  57. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/py.typed +0 -0
  58. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/__init__.py +0 -0
  59. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/abstract_source.py +0 -0
  60. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  61. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  62. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  63. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  64. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  65. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  66. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  67. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/config.py +0 -0
  68. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  69. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  70. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  71. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  72. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  73. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  74. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  75. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  76. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  77. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  78. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  79. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  80. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  81. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  82. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  83. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  84. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  85. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  86. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  87. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  88. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  89. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  90. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  91. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  92. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  93. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  94. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +0 -0
  95. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  96. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  97. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  98. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  99. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  100. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  101. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  102. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  103. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  104. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  105. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  106. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  107. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  108. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  109. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  110. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  111. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  112. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  113. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  114. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  115. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  116. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  117. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  118. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  119. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  120. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  121. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  122. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  123. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  124. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  125. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  126. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  127. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  128. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  129. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  130. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  131. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  132. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  133. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  134. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  135. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  136. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  137. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  138. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  139. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  140. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  141. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  142. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  143. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
  144. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  145. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  146. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  147. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  148. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  149. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  150. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  151. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  152. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  153. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  154. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  155. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  156. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  157. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  158. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  159. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  160. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  161. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  162. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  163. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  164. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  165. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  166. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  167. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  168. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  169. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  170. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  171. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  172. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  173. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  174. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  175. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  176. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  177. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  178. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  179. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
  180. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
  181. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
  182. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
  183. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
  184. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
  185. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
  186. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  187. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  188. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  189. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  190. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  191. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  192. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  193. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  194. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  195. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  196. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  197. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  198. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  199. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  200. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  201. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  202. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  203. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  204. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  205. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  206. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  207. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  208. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  209. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  210. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  211. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  212. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  213. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  214. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  215. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  216. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  217. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  218. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  219. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  220. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  221. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  222. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  223. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  224. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/types.py +0 -0
  225. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  226. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/README.md +0 -0
  227. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  228. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  229. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  230. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  231. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  232. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  233. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  234. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  235. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  236. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  237. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  238. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  239. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  240. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  241. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  242. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  243. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  244. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  245. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  246. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  247. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  248. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  249. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  250. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  251. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  252. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  253. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  254. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  255. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  256. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  257. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  258. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  259. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  260. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  261. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  262. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  263. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  264. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  265. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  266. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  267. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  268. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  269. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  270. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  271. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  272. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  273. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  274. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  275. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  276. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/file_based/types.py +0 -0
  277. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/http_config.py +0 -0
  278. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/http_logger.py +0 -0
  279. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/message/__init__.py +0 -0
  280. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/message/repository.py +0 -0
  281. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/source.py +0 -0
  282. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  283. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/__init__.py +0 -0
  284. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  285. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  286. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  287. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  288. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  289. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  290. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  291. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  292. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  293. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  294. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  295. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  296. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  297. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  298. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  299. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  300. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  301. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  302. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  303. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  304. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  305. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  306. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  307. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  308. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  309. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  310. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  311. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  312. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  313. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  314. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  315. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/core.py +0 -0
  316. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  317. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  318. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  319. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  320. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  321. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  322. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  323. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  324. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  325. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  326. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  327. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  328. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/http.py +0 -0
  329. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  330. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  331. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  332. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  333. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  334. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  335. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  336. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  337. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  338. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/types.py +0 -0
  339. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/__init__.py +0 -0
  340. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/casing.py +0 -0
  341. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  342. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  343. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  344. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/transform.py +0 -0
  345. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sources/utils/types.py +0 -0
  346. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/__init__.py +0 -0
  347. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/_util/__init__.py +0 -0
  348. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/_util/hashing.py +0 -0
  349. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  350. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/constants.py +0 -0
  351. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/exceptions.py +0 -0
  352. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/secrets.py +0 -0
  353. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/shared/__init__.py +0 -0
  354. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  355. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  356. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/sql/types.py +0 -0
  357. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/__init__.py +0 -0
  358. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/catalog_builder.py +0 -0
  359. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  360. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  361. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  362. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/request.py +0 -0
  363. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/response.py +0 -0
  364. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  365. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/state_builder.py +0 -0
  366. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/utils/__init__.py +0 -0
  367. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/utils/data.py +0 -0
  368. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  369. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  370. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/test/utils/reading.py +0 -0
  371. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/__init__.py +0 -0
  372. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  373. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/analytics_message.py +0 -0
  374. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/constants.py +0 -0
  375. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  376. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  377. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/event_timing.py +0 -0
  378. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  379. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  380. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/message_utils.py +0 -0
  381. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  382. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/print_buffer.py +0 -0
  383. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  384. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/slice_hasher.py +0 -0
  385. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  386. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  387. {airbyte_cdk-6.45.0.post6.dev14369631849 → airbyte_cdk-6.45.0.post20.dev14369762306}/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.0.post6.dev14369631849
3
+ Version: 6.45.0.post20.dev14369762306
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -0,0 +1,6 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Declarative tests framework.
3
+
4
+ This module provides fixtures and utilities for testing Airbyte sources and destinations
5
+ in a declarative way.
6
+ """
@@ -0,0 +1,7 @@
1
+ from airbyte_cdk.test.declarative.models.scenario import (
2
+ ConnectorTestScenario,
3
+ )
4
+
5
+ __all__ = [
6
+ "ConnectorTestScenario",
7
+ ]
@@ -0,0 +1,74 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Run acceptance tests in PyTest.
3
+
4
+ These tests leverage the same `acceptance-test-config.yml` configuration files as the
5
+ acceptance tests in CAT, but they run in PyTest instead of CAT. This allows us to run
6
+ the acceptance tests in the same local environment as we are developing in, speeding
7
+ up iteration cycles.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from pathlib import Path
13
+ from typing import Literal
14
+
15
+ import yaml
16
+ from pydantic import BaseModel
17
+
18
+
19
+ class ConnectorTestScenario(BaseModel):
20
+ """Acceptance test instance, as a Pydantic model.
21
+
22
+ This class represents an acceptance test instance, which is a single test case
23
+ that can be run against a connector. It is used to deserialize and validate the
24
+ acceptance test configuration file.
25
+ """
26
+
27
+ class AcceptanceTestExpectRecords(BaseModel):
28
+ path: Path
29
+ exact_order: bool = False
30
+
31
+ class AcceptanceTestFileTypes(BaseModel):
32
+ skip_test: bool
33
+ bypass_reason: str
34
+
35
+ config_path: Path | None = None
36
+ config_dict: dict | None = None
37
+
38
+ id: str | None = None
39
+
40
+ configured_catalog_path: Path | None = None
41
+ timeout_seconds: int | None = None
42
+ expect_records: AcceptanceTestExpectRecords | None = None
43
+ file_types: AcceptanceTestFileTypes | None = None
44
+ status: Literal["succeed", "failed"] | None = None
45
+
46
+ def get_config_dict(self) -> dict:
47
+ """Return the config dictionary.
48
+
49
+ If a config dictionary has already been loaded, return it. Otherwise, load
50
+ Otherwise, load the config file and return the dictionary.
51
+ """
52
+ if self.config_dict:
53
+ return self.config_dict
54
+
55
+ if self.config_path:
56
+ return yaml.safe_load(self.config_path.read_text())
57
+
58
+ raise ValueError("No config dictionary or path provided.")
59
+
60
+ @property
61
+ def expect_exception(self) -> bool:
62
+ return self.status and self.status == "failed"
63
+
64
+ @property
65
+ def instance_name(self) -> str:
66
+ return self.config_path.stem
67
+
68
+ def __str__(self) -> str:
69
+ if self.id:
70
+ return f"'{self.id}' Test Scenario"
71
+ if self.config_path:
72
+ return f"'{self.config_path.name}' Test Scenario"
73
+
74
+ return f"'{hash(self)}' Test Scenario"
@@ -0,0 +1,24 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Declarative test suites.
3
+
4
+ Here we have base classes for a robust set of declarative connector test suites.
5
+ """
6
+
7
+ from airbyte_cdk.test.declarative.test_suites.connector_base import (
8
+ ConnectorTestScenario,
9
+ generate_tests,
10
+ )
11
+ from airbyte_cdk.test.declarative.test_suites.declarative_sources import (
12
+ DeclarativeSourceTestSuite,
13
+ )
14
+ from airbyte_cdk.test.declarative.test_suites.destination_base import DestinationTestSuiteBase
15
+ from airbyte_cdk.test.declarative.test_suites.source_base import SourceTestSuiteBase
16
+
17
+ __all__ = [
18
+ "ConnectorTestScenario",
19
+ "ConnectorTestSuiteBase",
20
+ "DeclarativeSourceTestSuite",
21
+ "DestinationTestSuiteBase",
22
+ "SourceTestSuiteBase",
23
+ "generate_tests",
24
+ ]
@@ -0,0 +1,197 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Base class for connector test suites."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import abc
7
+ import functools
8
+ import inspect
9
+ import sys
10
+ from pathlib import Path
11
+ from typing import Any, Callable, Literal
12
+
13
+ import pytest
14
+ import yaml
15
+ from pydantic import BaseModel
16
+ from typing_extensions import override
17
+
18
+ from airbyte_cdk import Connector
19
+ from airbyte_cdk.models import (
20
+ AirbyteMessage,
21
+ Type,
22
+ )
23
+ from airbyte_cdk.test import entrypoint_wrapper
24
+ from airbyte_cdk.test.declarative.models import (
25
+ ConnectorTestScenario,
26
+ )
27
+ from airbyte_cdk.test.declarative.utils.job_runner import run_test_job
28
+
29
+ ACCEPTANCE_TEST_CONFIG = "acceptance-test-config.yml"
30
+
31
+
32
+ class JavaClass(str):
33
+ """A string that represents a Java class."""
34
+
35
+
36
+ class DockerImage(str):
37
+ """A string that represents a Docker image."""
38
+
39
+
40
+ class RunnableConnector(abc.ABC):
41
+ """A connector that can be run in a test scenario."""
42
+
43
+ @abc.abstractmethod
44
+ def launch(cls, args: list[str] | None): ...
45
+
46
+
47
+ def generate_tests(metafunc):
48
+ """
49
+ A helper for pytest_generate_tests hook.
50
+
51
+ If a test method (in a class subclassed from our base class)
52
+ declares an argument 'instance', this function retrieves the
53
+ 'scenarios' attribute from the test class and parametrizes that
54
+ test with the values from 'scenarios'.
55
+
56
+ ## Usage
57
+
58
+ ```python
59
+ from airbyte_cdk.test.declarative.test_suites.connector_base import (
60
+ generate_tests,
61
+ ConnectorTestSuiteBase,
62
+ )
63
+
64
+ def pytest_generate_tests(metafunc):
65
+ generate_tests(metafunc)
66
+
67
+ class TestMyConnector(ConnectorTestSuiteBase):
68
+ ...
69
+
70
+ ```
71
+ """
72
+ # Check if the test function requires an 'instance' argument
73
+ if "instance" in metafunc.fixturenames:
74
+ # Retrieve the test class
75
+ test_class = metafunc.cls
76
+ if test_class is None:
77
+ raise ValueError("Expected a class here.")
78
+ # Get the 'scenarios' attribute from the class
79
+ scenarios_attr = getattr(test_class, "get_scenarios", None)
80
+ if scenarios_attr is None:
81
+ raise ValueError(
82
+ f"Test class {test_class} does not have a 'scenarios' attribute. "
83
+ "Please define the 'scenarios' attribute in the test class."
84
+ )
85
+
86
+ scenarios = test_class.get_scenarios()
87
+ ids = [str(scenario) for scenario in scenarios]
88
+ metafunc.parametrize("instance", scenarios, ids=ids)
89
+
90
+
91
+ class ConnectorTestSuiteBase(abc.ABC):
92
+ """Base class for connector test suites."""
93
+
94
+ acceptance_test_file_path = Path("./acceptance-test-config.json")
95
+ """The path to the acceptance test config file.
96
+
97
+ By default, this is set to the `acceptance-test-config.json` file in
98
+ the root of the connector source directory.
99
+ """
100
+
101
+ connector: type[Connector] | Path | JavaClass | DockerImage | None = None
102
+ """The connector class or path to the connector to test."""
103
+
104
+ working_dir: Path | None = None
105
+ """The root directory of the connector source code."""
106
+
107
+ @classmethod
108
+ def create_connector(
109
+ cls, scenario: ConnectorTestScenario
110
+ ) -> Source | AbstractSource | ConcurrentDeclarativeSource | RunnableConnector:
111
+ """Instantiate the connector class."""
112
+ raise NotImplementedError("Subclasses must implement this method.")
113
+
114
+ def run_test_scenario(
115
+ self,
116
+ verb: Literal["read", "check", "discover"],
117
+ test_scenario: ConnectorTestScenario,
118
+ *,
119
+ catalog: dict | None = None,
120
+ ) -> entrypoint_wrapper.EntrypointOutput:
121
+ """Run a test job from provided CLI args and return the result."""
122
+ return run_test_job(
123
+ self.create_connector(test_scenario),
124
+ verb,
125
+ test_instance=test_scenario,
126
+ catalog=catalog,
127
+ )
128
+
129
+ # Test Definitions
130
+
131
+ def test_check(
132
+ self,
133
+ instance: ConnectorTestScenario,
134
+ ) -> None:
135
+ """Run `connection` acceptance tests."""
136
+ result = self.run_test_scenario(
137
+ "check",
138
+ test_scenario=instance,
139
+ )
140
+ conn_status_messages: list[AirbyteMessage] = [
141
+ msg for msg in result._messages if msg.type == Type.CONNECTION_STATUS
142
+ ] # noqa: SLF001 # Non-public API
143
+ assert len(conn_status_messages) == 1, (
144
+ "Expected exactly one CONNECTION_STATUS message. Got: \n" + "\n".join(result._messages)
145
+ )
146
+
147
+ @classmethod
148
+ @property
149
+ def acceptance_test_config_path(self) -> Path:
150
+ """Get the path to the acceptance test config file.
151
+
152
+ Check vwd and parent directories of cwd for the config file, and return the first one found.
153
+
154
+ Give up if the config file is not found in any parent directory.
155
+ """
156
+ current_dir = Path.cwd()
157
+ for parent_dir in current_dir.parents:
158
+ config_path = parent_dir / ACCEPTANCE_TEST_CONFIG
159
+ if config_path.exists():
160
+ return config_path
161
+ raise FileNotFoundError(
162
+ f"Acceptance test config file not found in any parent directory from : {Path.cwd()}"
163
+ )
164
+
165
+ @classmethod
166
+ def get_scenarios(
167
+ cls,
168
+ ) -> list[ConnectorTestScenario]:
169
+ """Get acceptance tests for a given category.
170
+
171
+ This has to be a separate function because pytest does not allow
172
+ parametrization of fixtures with arguments from the test class itself.
173
+ """
174
+ category = "connection"
175
+ all_tests_config = yaml.safe_load(cls.acceptance_test_config_path.read_text())
176
+ if "acceptance_tests" not in all_tests_config:
177
+ raise ValueError(
178
+ f"Acceptance tests config not found in {cls.acceptance_test_config_path}."
179
+ f" Found only: {str(all_tests_config)}."
180
+ )
181
+ if category not in all_tests_config["acceptance_tests"]:
182
+ return []
183
+ if "tests" not in all_tests_config["acceptance_tests"][category]:
184
+ raise ValueError(f"No tests found for category {category}")
185
+
186
+ tests_scenarios = [
187
+ ConnectorTestScenario.model_validate(test)
188
+ for test in all_tests_config["acceptance_tests"][category]["tests"]
189
+ if "iam_role" not in test["config_path"]
190
+ ]
191
+ working_dir = cls.working_dir or Path()
192
+ for test in tests_scenarios:
193
+ if test.config_path:
194
+ test.config_path = working_dir / test.config_path
195
+ if test.configured_catalog_path:
196
+ test.configured_catalog_path = working_dir / test.configured_catalog_path
197
+ return tests_scenarios
@@ -0,0 +1,47 @@
1
+ import os
2
+ from hashlib import md5
3
+ from pathlib import Path
4
+ from typing import Any, cast
5
+
6
+ import yaml
7
+
8
+ from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
9
+ ConcurrentDeclarativeSource,
10
+ )
11
+ from airbyte_cdk.test.declarative.models import ConnectorTestScenario
12
+ from airbyte_cdk.test.declarative.test_suites.source_base import (
13
+ SourceTestSuiteBase,
14
+ )
15
+
16
+
17
+ def md5_checksum(file_path: Path) -> str:
18
+ with open(file_path, "rb") as file:
19
+ return md5(file.read()).hexdigest()
20
+
21
+
22
+ class DeclarativeSourceTestSuite(SourceTestSuiteBase):
23
+ manifest_path = Path("manifest.yaml")
24
+ components_py_path: Path | None = None
25
+
26
+ def create_connector(
27
+ self, connector_test: ConnectorTestScenario
28
+ ) -> ConcurrentDeclarativeSource:
29
+ config = connector_test.get_config_dict()
30
+ # catalog = connector_test.get_catalog()
31
+ # state = connector_test.get_state()
32
+ # source_config = connector_test.get_source_config()
33
+
34
+ manifest_dict = yaml.safe_load(self.manifest_path.read_text())
35
+ if self.components_py_path and self.components_py_path.exists():
36
+ os.environ["AIRBYTE_ENABLE_UNSAFE_CODE"] = "true"
37
+ config["__injected_components_py"] = self.components_py_path.read_text()
38
+ config["__injected_components_py_checksums"] = {
39
+ "md5": md5_checksum(self.components_py_path),
40
+ }
41
+
42
+ return ConcurrentDeclarativeSource(
43
+ config=config,
44
+ catalog=None,
45
+ state=None,
46
+ source_config=manifest_dict,
47
+ )
@@ -0,0 +1,12 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Base class for destination test suites."""
3
+
4
+ from airbyte_cdk.test.declarative.test_suites.connector_base import ConnectorTestSuiteBase
5
+
6
+
7
+ class DestinationTestSuiteBase(ConnectorTestSuiteBase):
8
+ """Base class for destination test suites.
9
+
10
+ This class provides a base set of functionality for testing destination connectors, and it
11
+ inherits all generic connector tests from the `ConnectorTestSuiteBase` class.
12
+ """
@@ -0,0 +1,129 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Base class for source test suites."""
3
+
4
+ from dataclasses import asdict
5
+ from pathlib import Path
6
+
7
+ import pytest
8
+
9
+ from airbyte_cdk.models import (
10
+ AirbyteMessage,
11
+ AirbyteStream,
12
+ ConfiguredAirbyteCatalog,
13
+ ConfiguredAirbyteStream,
14
+ DestinationSyncMode,
15
+ SyncMode,
16
+ Type,
17
+ )
18
+ from airbyte_cdk.test import entrypoint_wrapper
19
+ from airbyte_cdk.test.declarative.models import (
20
+ ConnectorTestScenario,
21
+ )
22
+ from airbyte_cdk.test.declarative.test_suites.connector_base import (
23
+ ConnectorTestSuiteBase,
24
+ )
25
+ from airbyte_cdk.test.declarative.utils.job_runner import run_test_job
26
+
27
+
28
+ class SourceTestSuiteBase(ConnectorTestSuiteBase):
29
+ """Base class for source test suites.
30
+
31
+ This class provides a base set of functionality for testing source connectors, and it
32
+ inherits all generic connector tests from the `ConnectorTestSuiteBase` class.
33
+ """
34
+
35
+ def test_check(
36
+ self,
37
+ instance: ConnectorTestScenario,
38
+ ) -> None:
39
+ """Run `connection` acceptance tests."""
40
+ result: entrypoint_wrapper.EntrypointOutput = run_test_job(
41
+ self.create_connector(instance),
42
+ "check",
43
+ test_instance=instance,
44
+ )
45
+ conn_status_messages: list[AirbyteMessage] = [
46
+ msg for msg in result._messages if msg.type == Type.CONNECTION_STATUS
47
+ ] # noqa: SLF001 # Non-public API
48
+ assert len(conn_status_messages) == 1, (
49
+ "Expected exactly one CONNECTION_STATUS message. Got: \n" + "\n".join(result._messages)
50
+ )
51
+
52
+ def test_basic_read(
53
+ self,
54
+ instance: ConnectorTestScenario,
55
+ ) -> None:
56
+ """Run acceptance tests."""
57
+ discover_result = run_test_job(
58
+ self.create_connector(instance),
59
+ "discover",
60
+ test_instance=instance,
61
+ )
62
+ if instance.expect_exception:
63
+ assert discover_result.errors, "Expected exception but got none."
64
+ return
65
+
66
+ configured_catalog = ConfiguredAirbyteCatalog(
67
+ streams=[
68
+ ConfiguredAirbyteStream(
69
+ stream=stream,
70
+ sync_mode=SyncMode.full_refresh,
71
+ destination_sync_mode=DestinationSyncMode.append_dedup,
72
+ )
73
+ for stream in discover_result.catalog.catalog.streams
74
+ ]
75
+ )
76
+ result = run_test_job(
77
+ self.create_connector(instance),
78
+ "read",
79
+ test_instance=instance,
80
+ catalog=configured_catalog,
81
+ )
82
+
83
+ if not result.records:
84
+ raise AssertionError("Expected records but got none.") # noqa: TRY003
85
+
86
+ def test_fail_with_bad_catalog(
87
+ self,
88
+ instance: ConnectorTestScenario,
89
+ ) -> None:
90
+ """Test that a bad catalog fails."""
91
+ invalid_configured_catalog = ConfiguredAirbyteCatalog(
92
+ streams=[
93
+ # Create ConfiguredAirbyteStream which is deliberately invalid
94
+ # with regard to the Airbyte Protocol.
95
+ # This should cause the connector to fail.
96
+ ConfiguredAirbyteStream(
97
+ stream=AirbyteStream(
98
+ name="__AIRBYTE__stream_that_does_not_exist",
99
+ json_schema={
100
+ "type": "object",
101
+ "properties": {"f1": {"type": "string"}},
102
+ },
103
+ supported_sync_modes=[SyncMode.full_refresh],
104
+ ),
105
+ sync_mode="INVALID",
106
+ destination_sync_mode="INVALID",
107
+ )
108
+ ]
109
+ )
110
+ # Set expected status to "failed" to ensure the test fails if the connector.
111
+ instance.status = "failed"
112
+ result = self.run_test_scenario(
113
+ "read",
114
+ test_scenario=instance,
115
+ catalog=asdict(invalid_configured_catalog),
116
+ )
117
+ assert result.errors, "Expected errors but got none."
118
+ assert result.trace_messages, "Expected trace messages but got none."
119
+
120
+ def test_discover(
121
+ self,
122
+ instance: ConnectorTestScenario,
123
+ ) -> None:
124
+ """Run acceptance tests."""
125
+ run_test_job(
126
+ self.create_connector(instance),
127
+ "check",
128
+ test_instance=instance,
129
+ )
@@ -0,0 +1,128 @@
1
+ import tempfile
2
+ import uuid
3
+ from pathlib import Path
4
+ from typing import Callable, Literal
5
+
6
+ import orjson
7
+
8
+ from airbyte_cdk import Connector
9
+ from airbyte_cdk.models import (
10
+ Status,
11
+ )
12
+ from airbyte_cdk.sources.abstract_source import AbstractSource
13
+ from airbyte_cdk.sources.declarative.declarative_source import DeclarativeSource
14
+ from airbyte_cdk.test import entrypoint_wrapper
15
+ from airbyte_cdk.test.declarative.models import (
16
+ ConnectorTestScenario,
17
+ )
18
+
19
+
20
+ def run_test_job(
21
+ connector: Connector | type[Connector] | Callable[[], Connector],
22
+ verb: Literal["read", "check", "discover"],
23
+ test_instance: ConnectorTestScenario,
24
+ *,
25
+ catalog: dict | None = None,
26
+ ) -> entrypoint_wrapper.EntrypointOutput:
27
+ """Run a test job from provided CLI args and return the result."""
28
+ if not connector:
29
+ raise ValueError("Connector is required")
30
+
31
+ connector_obj: Connector
32
+ if isinstance(connector, type):
33
+ connector_obj = connector()
34
+ elif isinstance(connector, Connector):
35
+ connector_obj = connector
36
+ elif isinstance(connector, DeclarativeSource | AbstractSource):
37
+ connector_obj = connector
38
+ elif isinstance(connector, Callable):
39
+ try:
40
+ connector_obj = connector()
41
+ except Exception as ex:
42
+ if not test_instance.expect_exception:
43
+ raise
44
+
45
+ return entrypoint_wrapper.EntrypointOutput(
46
+ messages=[],
47
+ uncaught_exception=ex,
48
+ )
49
+ else:
50
+ raise ValueError(f"Invalid source type: {type(connector)}")
51
+
52
+ args = [verb]
53
+ if test_instance.config_path:
54
+ args += ["--config", str(test_instance.config_path)]
55
+ elif test_instance.config_dict:
56
+ config_path = (
57
+ Path(tempfile.gettempdir()) / "airbyte-test" / f"temp_config_{uuid.uuid4().hex}.json"
58
+ )
59
+ config_path.parent.mkdir(parents=True, exist_ok=True)
60
+ config_path.write_text(orjson.dumps(test_instance.config_dict).decode())
61
+ args += ["--config", str(config_path)]
62
+
63
+ catalog_path: Path | None = None
64
+ if verb not in ["discover", "check"]:
65
+ # We need a catalog for read.
66
+ if catalog:
67
+ # Write the catalog to a temp json file and pass the path to the file as an argument.
68
+ catalog_path = (
69
+ Path(tempfile.gettempdir())
70
+ / "airbyte-test"
71
+ / f"temp_catalog_{uuid.uuid4().hex}.json"
72
+ )
73
+ catalog_path.parent.mkdir(parents=True, exist_ok=True)
74
+ catalog_path.write_text(orjson.dumps(catalog).decode())
75
+ elif test_instance.configured_catalog_path:
76
+ catalog_path = Path(test_instance.configured_catalog_path)
77
+
78
+ if catalog_path:
79
+ args += ["--catalog", str(catalog_path)]
80
+
81
+ # This is a bit of a hack because the source needs the catalog early.
82
+ # Because it *also* can fail, we have ot redundantly wrap it in a try/except block.
83
+
84
+ result: entrypoint_wrapper.EntrypointOutput = entrypoint_wrapper._run_command( # noqa: SLF001 # Non-public API
85
+ source=connector_obj,
86
+ args=args,
87
+ expecting_exception=test_instance.expect_exception,
88
+ )
89
+ if result.errors and not test_instance.expect_exception:
90
+ raise AssertionError(
91
+ "\n\n".join(
92
+ [str(err.trace.error).replace("\\n", "\n") for err in result.errors],
93
+ )
94
+ )
95
+
96
+ if verb == "check":
97
+ # Check is expected to fail gracefully without an exception.
98
+ # Instead, we assert that we have a CONNECTION_STATUS message with
99
+ # a failure status.
100
+ assert not result.errors, "Expected no errors from check. Got:\n" + "\n".join(
101
+ [str(error) for error in result.errors]
102
+ )
103
+ assert len(result.connection_status_messages) == 1, (
104
+ "Expected exactly one CONNECTION_STATUS message. Got "
105
+ f"{len(result.connection_status_messages)}:\n"
106
+ + "\n".join(result.connection_status_messages)
107
+ )
108
+ if test_instance.expect_exception:
109
+ assert result.connection_status_messages[0].connectionStatus.status == Status.FAILED, (
110
+ "Expected CONNECTION_STATUS message to be FAILED. Got: \n"
111
+ + "\n".join([str(result.connection_status_messages)])
112
+ )
113
+ return result
114
+
115
+ # For all other verbs, we assert check that an exception is raised (or not).
116
+ if test_instance.expect_exception:
117
+ if not result.errors:
118
+ raise AssertionError("Expected exception but got none.")
119
+
120
+ return result
121
+ if result.errors:
122
+ raise AssertionError(
123
+ "\n\n".join(
124
+ [str(err.trace.error).replace("\\n", "\n") for err in result.errors],
125
+ )
126
+ )
127
+
128
+ return result
@@ -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 connection_status_messages(self) -> List[AirbyteMessage]:
87
+ return self._get_message_by_types([Type.CONNECTION_STATUS])
88
+
85
89
  @property
86
90
  def most_recent_state(self) -> Any:
87
91
  state_messages = self._get_message_by_types([Type.STATE])
@@ -0,0 +1,14 @@
1
+ """Auto-use fixtures for pytest.
2
+
3
+ WARNING: Importing this module will automatically apply these fixtures. If you want to selectively
4
+ enable fixtures in a different context, you can import directly from the `fixtures.general` module.
5
+
6
+
7
+ Usage:
8
+
9
+ ```python
10
+ from airbyte_cdk.test.fixtures import auto
11
+ # OR
12
+ from airbyte_cdk.test.fixtures.auto import *
13
+ ```
14
+ """
@@ -0,0 +1,15 @@
1
+ """General fixtures for pytest.
2
+
3
+ Usage:
4
+
5
+ ```python
6
+ from airbyte_cdk.test.fixtures.general import *
7
+ # OR:
8
+ from airbyte_cdk.test.fixtures.general import connector_test_dir
9
+ ```
10
+ """
11
+
12
+
13
+ @pytest.fixture
14
+ def connector_test_dir():
15
+ return Path(__file__).parent