airbyte-cdk 6.45.1.post46.dev14423672753__tar.gz → 6.45.1.post47.dev14456468218__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 (389) hide show
  1. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/PKG-INFO +2 -3
  2. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/connector_builder_handler.py +3 -12
  3. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -2
  4. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/models/__init__.py +1 -0
  5. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/models/airbyte_protocol.py +1 -3
  6. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +1 -1
  7. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +8 -0
  8. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +36 -0
  9. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/record_selector.py +6 -1
  10. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +31 -0
  11. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +39 -1
  12. airbyte_cdk-6.45.1.post47.dev14456468218/airbyte_cdk/sources/declarative/retrievers/file_uploader.py +89 -0
  13. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +9 -4
  14. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +38 -16
  15. airbyte_cdk-6.45.1.post47.dev14456468218/airbyte_cdk/sources/file_based/file_record_data.py +22 -0
  16. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +8 -15
  17. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/schema_helpers.py +10 -1
  18. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +3 -12
  19. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +15 -38
  20. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +1 -3
  21. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/default_stream.py +3 -0
  22. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/types.py +11 -2
  23. airbyte_cdk-6.45.1.post47.dev14456468218/airbyte_cdk/sources/utils/files_directory.py +15 -0
  24. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/record_helper.py +8 -8
  25. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/entrypoint_wrapper.py +0 -4
  26. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/response_builder.py +8 -0
  27. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/pyproject.toml +4 -7
  28. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/models/file_transfer_record_message.py +0 -13
  29. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/__init__.py +0 -6
  30. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/models/__init__.py +0 -7
  31. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/models/scenario.py +0 -74
  32. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/__init__.py +0 -25
  33. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/connector_base.py +0 -223
  34. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/declarative_sources.py +0 -74
  35. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/destination_base.py +0 -12
  36. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/test_suites/source_base.py +0 -128
  37. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/utils/__init__.py +0 -0
  38. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/declarative/utils/job_runner.py +0 -150
  39. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/fixtures/__init__.py +0 -0
  40. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/fixtures/auto.py +0 -14
  41. airbyte_cdk-6.45.1.post46.dev14423672753/airbyte_cdk/test/pytest_config/plugin.py +0 -46
  42. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/LICENSE.txt +0 -0
  43. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/LICENSE_SHORT +0 -0
  44. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/README.md +0 -0
  45. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/__init__.py +0 -0
  46. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/cli/__init__.py +0 -0
  47. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  48. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  49. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  50. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/config_observation.py +0 -0
  51. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector.py +0 -0
  52. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/README.md +0 -0
  53. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/__init__.py +0 -0
  54. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/main.py +0 -0
  55. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/models.py +0 -0
  56. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  57. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  58. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  59. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  60. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/__init__.py +0 -0
  61. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/destination.py +0 -0
  62. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  63. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  64. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  65. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  66. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  67. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  68. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  69. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  70. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  71. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/entrypoint.py +0 -0
  72. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/exception_handler.py +0 -0
  73. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/logger.py +0 -0
  74. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  75. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/models/well_known_types.py +0 -0
  76. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/py.typed +0 -0
  77. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/__init__.py +0 -0
  78. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/abstract_source.py +0 -0
  79. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  80. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  81. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  82. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  83. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  84. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  85. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/config.py +0 -0
  86. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  87. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  88. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  89. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  90. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  91. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  92. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  93. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  94. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  95. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  96. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  97. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  98. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  99. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  100. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  101. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  102. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  103. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  104. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  105. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  106. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  107. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  108. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  109. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  110. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  111. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  112. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  113. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  114. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +0 -0
  115. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  116. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/decoder_parser.py +0 -0
  117. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  118. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  119. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  120. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  121. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  122. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  123. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  124. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  125. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  126. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  127. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  128. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  129. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  130. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  131. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  132. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  133. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  134. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  135. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  136. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  137. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  138. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  139. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  140. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  141. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  142. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  143. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  144. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  145. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  146. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  147. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  148. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  149. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  150. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  151. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  152. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  153. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  154. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  155. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  156. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  157. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  158. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  159. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  160. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/grouping_partition_router.py +0 -0
  161. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  162. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  163. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  164. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  165. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  166. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  167. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  168. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  169. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  170. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  171. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  172. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  173. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  174. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  175. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  176. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  177. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  178. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  179. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  180. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  181. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  182. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  183. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  184. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  185. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  186. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  187. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  188. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  189. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  190. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  191. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  192. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/__init__.py +0 -0
  193. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/properties_from_endpoint.py +0 -0
  194. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/property_chunking.py +0 -0
  195. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/query_properties.py +0 -0
  196. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/__init__.py +0 -0
  197. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/group_by_key.py +0 -0
  198. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/query_properties/strategies/merge_strategy.py +0 -0
  199. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  200. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  201. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  202. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  203. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  204. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  205. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  206. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  207. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  208. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  209. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  210. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  211. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  212. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  213. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  214. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  215. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  216. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  217. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  218. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  219. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  220. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  221. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  222. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  223. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  224. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  225. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  226. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  227. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  228. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  229. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  230. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  231. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  232. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  233. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  234. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  235. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  236. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/types.py +0 -0
  237. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  238. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/README.md +0 -0
  239. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  240. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  241. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  242. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  243. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  244. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  245. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  246. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  247. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  248. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  249. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  250. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  251. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  252. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  253. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  254. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  255. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  256. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  257. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  258. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_based_stream_permissions_reader.py +0 -0
  259. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  260. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  261. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  262. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  263. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  264. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  265. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  266. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  267. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  268. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  269. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  270. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  271. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  272. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  273. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  274. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  275. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  276. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  277. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  278. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  279. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  280. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  281. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  282. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/file_based/types.py +0 -0
  283. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/http_config.py +0 -0
  284. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/http_logger.py +0 -0
  285. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/message/__init__.py +0 -0
  286. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/message/repository.py +0 -0
  287. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/source.py +0 -0
  288. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  289. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/__init__.py +0 -0
  290. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  291. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  292. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  293. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  294. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  295. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  296. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  297. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  298. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  299. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  300. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  301. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  302. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  303. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  304. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  305. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  306. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  307. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  308. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  309. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  310. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  311. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  312. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  313. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  314. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  315. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  316. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  317. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  318. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  319. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  320. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/core.py +0 -0
  321. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  322. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  323. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  324. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  325. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  326. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  327. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  328. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  329. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  330. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  331. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  332. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  333. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/http.py +0 -0
  334. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  335. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  336. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  337. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  338. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  339. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  340. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  341. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  342. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  343. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/__init__.py +0 -0
  344. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/casing.py +0 -0
  345. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  346. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  347. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/transform.py +0 -0
  348. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sources/utils/types.py +0 -0
  349. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/__init__.py +0 -0
  350. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/_util/__init__.py +0 -0
  351. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/_util/hashing.py +0 -0
  352. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  353. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/constants.py +0 -0
  354. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/exceptions.py +0 -0
  355. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/secrets.py +0 -0
  356. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/shared/__init__.py +0 -0
  357. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  358. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  359. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/sql/types.py +0 -0
  360. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/__init__.py +0 -0
  361. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/catalog_builder.py +0 -0
  362. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  363. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  364. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  365. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/request.py +0 -0
  366. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/mock_http/response.py +0 -0
  367. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/state_builder.py +0 -0
  368. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/utils/__init__.py +0 -0
  369. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/utils/data.py +0 -0
  370. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  371. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  372. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/test/utils/reading.py +0 -0
  373. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/__init__.py +0 -0
  374. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  375. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/analytics_message.py +0 -0
  376. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/constants.py +0 -0
  377. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  378. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  379. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/event_timing.py +0 -0
  380. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  381. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  382. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/message_utils.py +0 -0
  383. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  384. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/print_buffer.py +0 -0
  385. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  386. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/slice_hasher.py +0 -0
  387. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  388. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  389. {airbyte_cdk-6.45.1.post46.dev14423672753 → airbyte_cdk-6.45.1.post47.dev14456468218}/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.1.post46.dev14423672753
3
+ Version: 6.45.1.post47.dev14456468218
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -22,11 +22,10 @@ Provides-Extra: sql
22
22
  Provides-Extra: vector-db-based
23
23
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
24
24
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
25
- Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
25
+ Requires-Dist: airbyte-protocol-models-dataclasses (>=0.15,<0.16)
26
26
  Requires-Dist: anyascii (>=0.3.2,<0.4.0)
27
27
  Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
28
28
  Requires-Dist: backoff
29
- Requires-Dist: boltons (>=25.0.0,<26.0.0)
30
29
  Requires-Dist: cachetools
31
30
  Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
32
31
  Requires-Dist: cryptography (>=44.0.0,<45.0.0)
@@ -35,10 +35,8 @@ MAX_RECORDS_KEY = "max_records"
35
35
  MAX_STREAMS_KEY = "max_streams"
36
36
 
37
37
 
38
- @dataclass(kw_only=True)
38
+ @dataclass
39
39
  class TestLimits:
40
- __test__: bool = False # Prevent pytest from treating this as a test case, despite its name
41
-
42
40
  max_records: int = field(default=DEFAULT_MAXIMUM_RECORDS)
43
41
  max_pages_per_slice: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_PAGES_PER_SLICE)
44
42
  max_slices: int = field(default=DEFAULT_MAXIMUM_NUMBER_OF_SLICES)
@@ -53,12 +51,7 @@ def get_limits(config: Mapping[str, Any]) -> TestLimits:
53
51
  max_slices = command_config.get(MAX_SLICES_KEY) or DEFAULT_MAXIMUM_NUMBER_OF_SLICES
54
52
  max_records = command_config.get(MAX_RECORDS_KEY) or DEFAULT_MAXIMUM_RECORDS
55
53
  max_streams = command_config.get(MAX_STREAMS_KEY) or DEFAULT_MAXIMUM_STREAMS
56
- return TestLimits(
57
- max_records=max_records,
58
- max_pages_per_slice=max_pages_per_slice,
59
- max_slices=max_slices,
60
- max_streams=max_streams,
61
- )
54
+ return TestLimits(max_records, max_pages_per_slice, max_slices, max_streams)
62
55
 
63
56
 
64
57
  def create_source(config: Mapping[str, Any], limits: TestLimits) -> ManifestDeclarativeSource:
@@ -86,9 +79,7 @@ def read_stream(
86
79
  ) -> AirbyteMessage:
87
80
  try:
88
81
  test_read_handler = TestReader(
89
- max_pages_per_slice=limits.max_pages_per_slice,
90
- max_slices=limits.max_slices,
91
- max_record_limit=limits.max_records,
82
+ limits.max_pages_per_slice, limits.max_slices, limits.max_records
92
83
  )
93
84
  # The connector builder only supports a single stream
94
85
  stream_name = configured_catalog.streams[0].stream.name
@@ -66,8 +66,6 @@ class TestReader:
66
66
 
67
67
  """
68
68
 
69
- __test__: bool = False # Prevent pytest from treating this as a test case, despite its name
70
-
71
69
  logger = logging.getLogger("airbyte.connector-builder")
72
70
 
73
71
  def __init__(
@@ -19,6 +19,7 @@ from .airbyte_protocol import (
19
19
  AirbyteMessage,
20
20
  AirbyteProtocol,
21
21
  AirbyteRecordMessage,
22
+ AirbyteRecordMessageFileReference,
22
23
  AirbyteStateBlob,
23
24
  AirbyteStateMessage,
24
25
  AirbyteStateStats,
@@ -8,8 +8,6 @@ from typing import Annotated, Any, Dict, List, Mapping, Optional, Union
8
8
  from airbyte_protocol_dataclasses.models import * # noqa: F403 # Allow '*'
9
9
  from serpyco_rs.metadata import Alias
10
10
 
11
- from airbyte_cdk.models.file_transfer_record_message import AirbyteFileTransferRecordMessage
12
-
13
11
  # ruff: noqa: F405 # ignore fuzzy import issues with 'import *'
14
12
 
15
13
 
@@ -84,7 +82,7 @@ class AirbyteMessage:
84
82
  spec: Optional[ConnectorSpecification] = None # type: ignore [name-defined]
85
83
  connectionStatus: Optional[AirbyteConnectionStatus] = None # type: ignore [name-defined]
86
84
  catalog: Optional[AirbyteCatalog] = None # type: ignore [name-defined]
87
- record: Optional[Union[AirbyteFileTransferRecordMessage, AirbyteRecordMessage]] = None # type: ignore [name-defined]
85
+ record: Optional[AirbyteRecordMessage] = None # type: ignore [name-defined]
88
86
  state: Optional[AirbyteStateMessage] = None
89
87
  trace: Optional[AirbyteTraceMessage] = None # type: ignore [name-defined]
90
88
  control: Optional[AirbyteControlMessage] = None # type: ignore [name-defined]
@@ -149,7 +149,7 @@ class ConcurrentReadProcessor:
149
149
  message = stream_data_to_airbyte_message(
150
150
  stream_name=record.stream_name,
151
151
  data_or_message=record.data,
152
- is_file_transfer_message=record.is_file_transfer_message,
152
+ file_reference=record.file_reference,
153
153
  )
154
154
  stream = self._stream_name_to_instance[record.stream_name]
155
155
 
@@ -25,6 +25,7 @@ from airbyte_cdk.sources.declarative.incremental.per_partition_with_global impor
25
25
  PerPartitionWithGlobalCursor,
26
26
  )
27
27
  from airbyte_cdk.sources.declarative.manifest_declarative_source import ManifestDeclarativeSource
28
+ from airbyte_cdk.sources.declarative.models import FileUploader
28
29
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
29
30
  ConcurrencyLevel as ConcurrencyLevelModel,
30
31
  )
@@ -206,6 +207,10 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
206
207
  # these legacy Python streams the way we do low-code streams to determine if they are concurrent compatible,
207
208
  # so we need to treat them as synchronous
208
209
 
210
+ supports_file_transfer = (
211
+ "file_uploader" in name_to_stream_mapping[declarative_stream.name]
212
+ )
213
+
209
214
  if (
210
215
  isinstance(declarative_stream, DeclarativeStream)
211
216
  and name_to_stream_mapping[declarative_stream.name]["type"]
@@ -322,6 +327,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
322
327
  else None,
323
328
  logger=self.logger,
324
329
  cursor=cursor,
330
+ supports_file_transfer=supports_file_transfer,
325
331
  )
326
332
  )
327
333
  elif (
@@ -353,6 +359,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
353
359
  cursor_field=None,
354
360
  logger=self.logger,
355
361
  cursor=final_state_cursor,
362
+ supports_file_transfer=supports_file_transfer,
356
363
  )
357
364
  )
358
365
  elif (
@@ -406,6 +413,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
406
413
  cursor_field=perpartition_cursor.cursor_field.cursor_field_key,
407
414
  logger=self.logger,
408
415
  cursor=perpartition_cursor,
416
+ supports_file_transfer=supports_file_transfer,
409
417
  )
410
418
  )
411
419
  else:
@@ -1448,6 +1448,42 @@ definitions:
1448
1448
  - "$ref": "#/definitions/LegacyToPerPartitionStateMigration"
1449
1449
  - "$ref": "#/definitions/CustomStateMigration"
1450
1450
  default: []
1451
+ file_uploader:
1452
+ title: File Uploader
1453
+ description: (experimental) Describes how to fetch a file
1454
+ type: object
1455
+ required:
1456
+ - type
1457
+ - requester
1458
+ - download_target_extractor
1459
+ properties:
1460
+ type:
1461
+ type: string
1462
+ enum: [ FileUploader ]
1463
+ requester:
1464
+ description: Requester component that describes how to prepare HTTP requests to send to the source API.
1465
+ anyOf:
1466
+ - "$ref": "#/definitions/CustomRequester"
1467
+ - "$ref": "#/definitions/HttpRequester"
1468
+ download_target_extractor:
1469
+ description: Responsible for fetching the url where the file is located. This is applied on each records and not on the HTTP response
1470
+ anyOf:
1471
+ - "$ref": "#/definitions/CustomRecordExtractor"
1472
+ - "$ref": "#/definitions/DpathExtractor"
1473
+ file_extractor:
1474
+ description: Responsible for fetching the content of the file. If not defined, the assumption is that the whole response body is the file content
1475
+ anyOf:
1476
+ - "$ref": "#/definitions/CustomRecordExtractor"
1477
+ - "$ref": "#/definitions/DpathExtractor"
1478
+ filename_extractor:
1479
+ description: Defines the name to store the file. Stream name is automatically added to the file path. File unique ID can be used to avoid overwriting files. Random UUID will be used if the extractor is not provided.
1480
+ type: string
1481
+ interpolation_context:
1482
+ - config
1483
+ - record
1484
+ examples:
1485
+ - "{{ record.id }}/{{ record.file_name }}/"
1486
+ - "{{ record.id }}_{{ record.file_name }}/"
1451
1487
  $parameters:
1452
1488
  type: object
1453
1489
  additional_properties: true
@@ -15,6 +15,7 @@ from airbyte_cdk.sources.declarative.extractors.type_transformer import (
15
15
  )
16
16
  from airbyte_cdk.sources.declarative.interpolation import InterpolatedString
17
17
  from airbyte_cdk.sources.declarative.models import SchemaNormalization
18
+ from airbyte_cdk.sources.declarative.retrievers.file_uploader import FileUploader
18
19
  from airbyte_cdk.sources.declarative.transformations import RecordTransformation
19
20
  from airbyte_cdk.sources.types import Config, Record, StreamSlice, StreamState
20
21
  from airbyte_cdk.sources.utils.transform import TypeTransformer
@@ -42,6 +43,7 @@ class RecordSelector(HttpSelector):
42
43
  record_filter: Optional[RecordFilter] = None
43
44
  transformations: List[RecordTransformation] = field(default_factory=lambda: [])
44
45
  transform_before_filtering: bool = False
46
+ file_uploader: Optional[FileUploader] = None
45
47
 
46
48
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
47
49
  self._parameters = parameters
@@ -117,7 +119,10 @@ class RecordSelector(HttpSelector):
117
119
  transformed_filtered_data, schema=records_schema
118
120
  )
119
121
  for data in normalized_data:
120
- yield Record(data=data, stream_name=self.name, associated_slice=stream_slice)
122
+ record = Record(data=data, stream_name=self.name, associated_slice=stream_slice)
123
+ if self.file_uploader:
124
+ self.file_uploader.upload(record)
125
+ yield record
121
126
 
122
127
  def _normalize_by_schema(
123
128
  self, records: Iterable[Mapping[str, Any]], schema: Optional[Mapping[str, Any]]
@@ -2042,6 +2042,31 @@ class SelectiveAuthenticator(BaseModel):
2042
2042
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2043
2043
 
2044
2044
 
2045
+ class FileUploader(BaseModel):
2046
+ type: Literal["FileUploader"]
2047
+ requester: Union[CustomRequester, HttpRequester] = Field(
2048
+ ...,
2049
+ description="Requester component that describes how to prepare HTTP requests to send to the source API.",
2050
+ )
2051
+ download_target_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field(
2052
+ ...,
2053
+ description="Responsible for fetching the url where the file is located. This is applied on each records and not on the HTTP response",
2054
+ )
2055
+ file_extractor: Optional[Union[CustomRecordExtractor, DpathExtractor]] = Field(
2056
+ None,
2057
+ description="Responsible for fetching the content of the file. If not defined, the assumption is that the whole response body is the file content",
2058
+ )
2059
+ filename_extractor: Optional[str] = Field(
2060
+ None,
2061
+ description="Defines the name to store the file. Stream name is automatically added to the file path. File unique ID can be used to avoid overwriting files. Random UUID will be used if the extractor is not provided.",
2062
+ examples=[
2063
+ "{{ record.id }}/{{ record.file_name }}/",
2064
+ "{{ record.id }}_{{ record.file_name }}/",
2065
+ ],
2066
+ )
2067
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2068
+
2069
+
2045
2070
  class DeclarativeStream(BaseModel):
2046
2071
  class Config:
2047
2072
  extra = Extra.allow
@@ -2100,6 +2125,11 @@ class DeclarativeStream(BaseModel):
2100
2125
  description="Array of state migrations to be applied on the input state",
2101
2126
  title="State Migrations",
2102
2127
  )
2128
+ file_uploader: Optional[FileUploader] = Field(
2129
+ None,
2130
+ description="(experimental) Describes how to fetch a file",
2131
+ title="File Uploader",
2132
+ )
2103
2133
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
2104
2134
 
2105
2135
 
@@ -2593,6 +2623,7 @@ CompositeErrorHandler.update_forward_refs()
2593
2623
  DeclarativeSource1.update_forward_refs()
2594
2624
  DeclarativeSource2.update_forward_refs()
2595
2625
  SelectiveAuthenticator.update_forward_refs()
2626
+ FileUploader.update_forward_refs()
2596
2627
  DeclarativeStream.update_forward_refs()
2597
2628
  SessionTokenAuthenticator.update_forward_refs()
2598
2629
  DynamicSchemaLoader.update_forward_refs()
@@ -106,7 +106,6 @@ from airbyte_cdk.sources.declarative.migrations.legacy_to_per_partition_state_mi
106
106
  )
107
107
  from airbyte_cdk.sources.declarative.models import (
108
108
  CustomStateMigration,
109
- GzipDecoder,
110
109
  )
111
110
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
112
111
  AddedFieldDefinition as AddedFieldDefinitionModel,
@@ -228,6 +227,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
228
227
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
229
228
  ExponentialBackoffStrategy as ExponentialBackoffStrategyModel,
230
229
  )
230
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
231
+ FileUploader as FileUploaderModel,
232
+ )
231
233
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
232
234
  FixedWindowCallRatePolicy as FixedWindowCallRatePolicyModel,
233
235
  )
@@ -479,6 +481,7 @@ from airbyte_cdk.sources.declarative.retrievers import (
479
481
  SimpleRetriever,
480
482
  SimpleRetrieverTestReadDecorator,
481
483
  )
484
+ from airbyte_cdk.sources.declarative.retrievers.file_uploader import FileUploader
482
485
  from airbyte_cdk.sources.declarative.schema import (
483
486
  ComplexFieldType,
484
487
  DefaultSchemaLoader,
@@ -675,6 +678,7 @@ class ModelToComponentFactory:
675
678
  ComponentMappingDefinitionModel: self.create_components_mapping_definition,
676
679
  ZipfileDecoderModel: self.create_zipfile_decoder,
677
680
  HTTPAPIBudgetModel: self.create_http_api_budget,
681
+ FileUploaderModel: self.create_file_uploader,
678
682
  FixedWindowCallRatePolicyModel: self.create_fixed_window_call_rate_policy,
679
683
  MovingWindowCallRatePolicyModel: self.create_moving_window_call_rate_policy,
680
684
  UnlimitedCallRatePolicyModel: self.create_unlimited_call_rate_policy,
@@ -1826,6 +1830,11 @@ class ModelToComponentFactory:
1826
1830
  transformations.append(
1827
1831
  self._create_component_from_model(model=transformation_model, config=config)
1828
1832
  )
1833
+ file_uploader = None
1834
+ if model.file_uploader:
1835
+ file_uploader = self._create_component_from_model(
1836
+ model=model.file_uploader, config=config
1837
+ )
1829
1838
 
1830
1839
  retriever = self._create_component_from_model(
1831
1840
  model=model.retriever,
@@ -1837,6 +1846,7 @@ class ModelToComponentFactory:
1837
1846
  stop_condition_on_cursor=stop_condition_on_cursor,
1838
1847
  client_side_incremental_sync=client_side_incremental_sync,
1839
1848
  transformations=transformations,
1849
+ file_uploader=file_uploader,
1840
1850
  incremental_sync=model.incremental_sync,
1841
1851
  )
1842
1852
  cursor_field = model.incremental_sync.cursor_field if model.incremental_sync else None
@@ -2759,6 +2769,7 @@ class ModelToComponentFactory:
2759
2769
  transformations: List[RecordTransformation] | None = None,
2760
2770
  decoder: Decoder | None = None,
2761
2771
  client_side_incremental_sync: Dict[str, Any] | None = None,
2772
+ file_uploader: Optional[FileUploader] = None,
2762
2773
  **kwargs: Any,
2763
2774
  ) -> RecordSelector:
2764
2775
  extractor = self._create_component_from_model(
@@ -2796,6 +2807,7 @@ class ModelToComponentFactory:
2796
2807
  config=config,
2797
2808
  record_filter=record_filter,
2798
2809
  transformations=transformations or [],
2810
+ file_uploader=file_uploader,
2799
2811
  schema_normalization=schema_normalization,
2800
2812
  parameters=model.parameters or {},
2801
2813
  transform_before_filtering=transform_before_filtering,
@@ -2853,6 +2865,7 @@ class ModelToComponentFactory:
2853
2865
  stop_condition_on_cursor: bool = False,
2854
2866
  client_side_incremental_sync: Optional[Dict[str, Any]] = None,
2855
2867
  transformations: List[RecordTransformation],
2868
+ file_uploader: Optional[FileUploader] = None,
2856
2869
  incremental_sync: Optional[
2857
2870
  Union[
2858
2871
  IncrementingCountCursorModel, DatetimeBasedCursorModel, CustomIncrementalSyncModel
@@ -2873,6 +2886,7 @@ class ModelToComponentFactory:
2873
2886
  decoder=decoder,
2874
2887
  transformations=transformations,
2875
2888
  client_side_incremental_sync=client_side_incremental_sync,
2889
+ file_uploader=file_uploader,
2876
2890
  )
2877
2891
 
2878
2892
  query_properties: Optional[QueryProperties] = None
@@ -3538,6 +3552,30 @@ class ModelToComponentFactory:
3538
3552
  matchers=matchers,
3539
3553
  )
3540
3554
 
3555
+ def create_file_uploader(
3556
+ self, model: FileUploaderModel, config: Config, **kwargs: Any
3557
+ ) -> FileUploader:
3558
+ name = "File Uploader"
3559
+ requester = self._create_component_from_model(
3560
+ model=model.requester,
3561
+ config=config,
3562
+ name=name,
3563
+ **kwargs,
3564
+ )
3565
+ download_target_extractor = self._create_component_from_model(
3566
+ model=model.download_target_extractor,
3567
+ config=config,
3568
+ name=name,
3569
+ **kwargs,
3570
+ )
3571
+ return FileUploader(
3572
+ requester=requester,
3573
+ download_target_extractor=download_target_extractor,
3574
+ config=config,
3575
+ parameters=model.parameters or {},
3576
+ filename_extractor=model.filename_extractor if model.filename_extractor else None,
3577
+ )
3578
+
3541
3579
  def create_moving_window_call_rate_policy(
3542
3580
  self, model: MovingWindowCallRatePolicyModel, config: Config, **kwargs: Any
3543
3581
  ) -> MovingWindowCallRatePolicy:
@@ -0,0 +1,89 @@
1
+ #
2
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ import json
6
+ import logging
7
+ import uuid
8
+ from dataclasses import InitVar, dataclass, field
9
+ from pathlib import Path
10
+ from typing import Any, Mapping, Optional, Union
11
+
12
+ from airbyte_cdk.models import AirbyteRecordMessageFileReference
13
+ from airbyte_cdk.sources.declarative.extractors.record_extractor import RecordExtractor
14
+ from airbyte_cdk.sources.declarative.interpolation.interpolated_string import (
15
+ InterpolatedString,
16
+ )
17
+ from airbyte_cdk.sources.declarative.partition_routers.substream_partition_router import (
18
+ SafeResponse,
19
+ )
20
+ from airbyte_cdk.sources.declarative.requesters import Requester
21
+ from airbyte_cdk.sources.declarative.types import Record, StreamSlice
22
+ from airbyte_cdk.sources.types import Config
23
+ from airbyte_cdk.sources.utils.files_directory import get_files_directory
24
+
25
+ logger = logging.getLogger("airbyte")
26
+
27
+
28
+ @dataclass
29
+ class FileUploader:
30
+ requester: Requester
31
+ download_target_extractor: RecordExtractor
32
+ config: Config
33
+ parameters: InitVar[Mapping[str, Any]]
34
+
35
+ filename_extractor: Optional[Union[InterpolatedString, str]] = None
36
+ content_extractor: Optional[RecordExtractor] = None
37
+
38
+ def __post_init__(self, parameters: Mapping[str, Any]) -> None:
39
+ if self.filename_extractor:
40
+ self.filename_extractor = InterpolatedString.create(
41
+ self.filename_extractor,
42
+ parameters=parameters,
43
+ )
44
+
45
+ def upload(self, record: Record) -> None:
46
+ mocked_response = SafeResponse()
47
+ mocked_response.content = json.dumps(record.data).encode()
48
+ download_target = list(self.download_target_extractor.extract_records(mocked_response))[0]
49
+ if not isinstance(download_target, str):
50
+ raise ValueError(
51
+ f"download_target is expected to be a str but was {type(download_target)}: {download_target}"
52
+ )
53
+
54
+ response = self.requester.send_request(
55
+ stream_slice=StreamSlice(
56
+ partition={}, cursor_slice={}, extra_fields={"download_target": download_target}
57
+ ),
58
+ )
59
+
60
+ if self.content_extractor:
61
+ raise NotImplementedError("TODO")
62
+ else:
63
+ files_directory = Path(get_files_directory())
64
+
65
+ file_name = (
66
+ self.filename_extractor.eval(self.config, record=record)
67
+ if self.filename_extractor
68
+ else str(uuid.uuid4())
69
+ )
70
+ file_name = file_name.lstrip("/")
71
+ file_relative_path = Path(record.stream_name) / Path(file_name)
72
+
73
+ full_path = files_directory / file_relative_path
74
+ full_path.parent.mkdir(parents=True, exist_ok=True)
75
+
76
+ with open(str(full_path), "wb") as f:
77
+ f.write(response.content)
78
+ file_size_bytes = full_path.stat().st_size
79
+
80
+ logger.info("File uploaded successfully")
81
+ logger.info(f"File url: {str(full_path)}")
82
+ logger.info(f"File size: {file_size_bytes / 1024} KB")
83
+ logger.info(f"File relative path: {str(file_relative_path)}")
84
+
85
+ record.file_reference = AirbyteRecordMessageFileReference(
86
+ staging_file_url=str(full_path),
87
+ source_file_relative_path=str(file_relative_path),
88
+ file_size_bytes=file_size_bytes,
89
+ )
@@ -58,11 +58,16 @@ class DeclarativePartition(Partition):
58
58
  def read(self) -> Iterable[Record]:
59
59
  for stream_data in self._retriever.read_records(self._json_schema, self._stream_slice):
60
60
  if isinstance(stream_data, Mapping):
61
- yield Record(
62
- data=stream_data,
63
- stream_name=self.stream_name(),
64
- associated_slice=self._stream_slice,
61
+ record = (
62
+ stream_data
63
+ if isinstance(stream_data, Record)
64
+ else Record(
65
+ data=stream_data,
66
+ stream_name=self.stream_name(),
67
+ associated_slice=self._stream_slice,
68
+ )
65
69
  )
70
+ yield record
66
71
  else:
67
72
  self._message_repository.emit_message(stream_data)
68
73
 
@@ -8,16 +8,18 @@ from datetime import datetime
8
8
  from enum import Enum
9
9
  from io import IOBase
10
10
  from os import makedirs, path
11
- from typing import Any, Dict, Iterable, List, Optional, Set
11
+ from typing import Any, Callable, Iterable, List, MutableMapping, Optional, Set, Tuple
12
12
 
13
13
  from wcmatch.glob import GLOBSTAR, globmatch
14
14
 
15
+ from airbyte_cdk.models import AirbyteRecordMessageFileReference
15
16
  from airbyte_cdk.sources.file_based.config.abstract_file_based_spec import AbstractFileBasedSpec
16
17
  from airbyte_cdk.sources.file_based.config.validate_config_transfer_modes import (
17
18
  include_identities_stream,
18
19
  preserve_directory_structure,
19
20
  use_file_transfer,
20
21
  )
22
+ from airbyte_cdk.sources.file_based.file_record_data import FileRecordData
21
23
  from airbyte_cdk.sources.file_based.remote_file import RemoteFile
22
24
 
23
25
 
@@ -28,6 +30,10 @@ class FileReadMode(Enum):
28
30
 
29
31
  class AbstractFileBasedStreamReader(ABC):
30
32
  DATE_TIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%fZ"
33
+ FILE_RELATIVE_PATH = "file_relative_path"
34
+ FILE_NAME = "file_name"
35
+ LOCAL_FILE_PATH = "local_file_path"
36
+ FILE_FOLDER = "file_folder"
31
37
 
32
38
  def __init__(self) -> None:
33
39
  self._config = None
@@ -148,9 +154,9 @@ class AbstractFileBasedStreamReader(ABC):
148
154
  return False
149
155
 
150
156
  @abstractmethod
151
- def get_file(
157
+ def upload(
152
158
  self, file: RemoteFile, local_directory: str, logger: logging.Logger
153
- ) -> Dict[str, Any]:
159
+ ) -> Tuple[FileRecordData, AirbyteRecordMessageFileReference]:
154
160
  """
155
161
  This is required for connectors that will support writing to
156
162
  files. It will handle the logic to download,get,read,acquire or
@@ -162,25 +168,41 @@ class AbstractFileBasedStreamReader(ABC):
162
168
  logger (logging.Logger): Logger for logging information and errors.
163
169
 
164
170
  Returns:
165
- dict: A dictionary containing the following:
166
- - "file_url" (str): The absolute path of the downloaded file.
167
- - "bytes" (int): The file size in bytes.
168
- - "file_relative_path" (str): The relative path of the file for local storage. Is relative to local_directory as
169
- this a mounted volume in the pod container.
170
-
171
+ AirbyteRecordMessageFileReference: A file reference object containing:
172
+ - staging_file_url (str): The absolute path to the referenced file in the staging area.
173
+ - file_size_bytes (int): The size of the referenced file in bytes.
174
+ - source_file_relative_path (str): The relative path to the referenced file in source.
171
175
  """
172
176
  ...
173
177
 
174
- def _get_file_transfer_paths(self, file: RemoteFile, local_directory: str) -> List[str]:
178
+ def _get_file_transfer_paths(
179
+ self, source_file_relative_path: str, staging_directory: str
180
+ ) -> MutableMapping[str, Any]:
181
+ """
182
+ This method is used to get the file transfer paths for a given source file relative path and local directory.
183
+ It returns a dictionary with the following keys:
184
+ - FILE_RELATIVE_PATH: The relative path to file in reference to the staging directory.
185
+ - LOCAL_FILE_PATH: The absolute path to the file.
186
+ - FILE_NAME: The name of the referenced file.
187
+ - FILE_FOLDER: The folder of the referenced file.
188
+ """
175
189
  preserve_directory_structure = self.preserve_directory_structure()
190
+
191
+ file_name = path.basename(source_file_relative_path)
192
+ file_folder = path.dirname(source_file_relative_path)
176
193
  if preserve_directory_structure:
177
194
  # Remove left slashes from source path format to make relative path for writing locally
178
- file_relative_path = file.uri.lstrip("/")
195
+ file_relative_path = source_file_relative_path.lstrip("/")
179
196
  else:
180
- file_relative_path = path.basename(file.uri)
181
- local_file_path = path.join(local_directory, file_relative_path)
182
-
197
+ file_relative_path = file_name
198
+ local_file_path = path.join(staging_directory, file_relative_path)
183
199
  # Ensure the local directory exists
184
200
  makedirs(path.dirname(local_file_path), exist_ok=True)
185
- absolute_file_path = path.abspath(local_file_path)
186
- return [file_relative_path, local_file_path, absolute_file_path]
201
+
202
+ file_paths = {
203
+ self.FILE_RELATIVE_PATH: file_relative_path,
204
+ self.LOCAL_FILE_PATH: local_file_path,
205
+ self.FILE_NAME: file_name,
206
+ self.FILE_FOLDER: file_folder,
207
+ }
208
+ return file_paths
@@ -0,0 +1,22 @@
1
+ #
2
+ # Copyright (c) 2025 Airbyte, Inc., all rights reserved.
3
+ #
4
+
5
+ from datetime import datetime
6
+ from typing import Optional
7
+
8
+ from pydantic.v1 import BaseModel
9
+
10
+
11
+ class FileRecordData(BaseModel):
12
+ """
13
+ A record in a file-based stream.
14
+ """
15
+
16
+ folder: str
17
+ filename: str
18
+ bytes: int
19
+ source_uri: str
20
+ id: Optional[str] = None
21
+ updated_at: Optional[str] = None
22
+ mime_type: Optional[str] = None
@@ -2,34 +2,27 @@
2
2
  # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
3
3
  #
4
4
  import logging
5
- import os
6
- from typing import Any, Dict, Iterable
5
+ from typing import Iterable, Tuple
7
6
 
8
- from airbyte_cdk.sources.file_based.config.file_based_stream_config import FileBasedStreamConfig
7
+ from airbyte_cdk.models import AirbyteRecordMessageFileReference
9
8
  from airbyte_cdk.sources.file_based.file_based_stream_reader import AbstractFileBasedStreamReader
9
+ from airbyte_cdk.sources.file_based.file_record_data import FileRecordData
10
10
  from airbyte_cdk.sources.file_based.remote_file import RemoteFile
11
-
12
- AIRBYTE_STAGING_DIRECTORY = os.getenv("AIRBYTE_STAGING_DIRECTORY", "/staging/files")
13
- DEFAULT_LOCAL_DIRECTORY = "/tmp/airbyte-file-transfer"
11
+ from airbyte_cdk.sources.utils.files_directory import get_files_directory
14
12
 
15
13
 
16
14
  class FileTransfer:
17
15
  def __init__(self) -> None:
18
- self._local_directory = (
19
- AIRBYTE_STAGING_DIRECTORY
20
- if os.path.exists(AIRBYTE_STAGING_DIRECTORY)
21
- else DEFAULT_LOCAL_DIRECTORY
22
- )
16
+ self._local_directory = get_files_directory()
23
17
 
24
- def get_file(
18
+ def upload(
25
19
  self,
26
- config: FileBasedStreamConfig,
27
20
  file: RemoteFile,
28
21
  stream_reader: AbstractFileBasedStreamReader,
29
22
  logger: logging.Logger,
30
- ) -> Iterable[Dict[str, Any]]:
23
+ ) -> Iterable[Tuple[FileRecordData, AirbyteRecordMessageFileReference]]:
31
24
  try:
32
- yield stream_reader.get_file(
25
+ yield stream_reader.upload(
33
26
  file=file, local_directory=self._local_directory, logger=logger
34
27
  )
35
28
  except Exception as ex: