airbyte-cdk 6.7.0rc1__tar.gz → 6.7.0rc3__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 (337) hide show
  1. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/PKG-INFO +5 -5
  2. airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/__init__.py +6 -0
  3. airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/_run.py +223 -0
  4. airbyte_cdk-6.7.0rc3/airbyte_cdk/cli/source_declarative_manifest/spec.json +17 -0
  5. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +13 -13
  6. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +33 -24
  7. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +69 -19
  8. airbyte_cdk-6.7.0rc3/airbyte_cdk/test/utils/__init__.py +1 -0
  9. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/pyproject.toml +9 -4
  10. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/LICENSE.txt +0 -0
  11. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/README.md +0 -0
  12. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/__init__.py +0 -0
  13. {airbyte_cdk-6.7.0rc1/airbyte_cdk/test/utils → airbyte_cdk-6.7.0rc3/airbyte_cdk/cli}/__init__.py +0 -0
  14. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/config_observation.py +0 -0
  15. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector.py +0 -0
  16. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/README.md +0 -0
  17. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/__init__.py +0 -0
  18. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  19. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/main.py +0 -0
  20. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/message_grouper.py +0 -0
  21. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/connector_builder/models.py +0 -0
  22. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/__init__.py +0 -0
  23. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/destination.py +0 -0
  24. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  25. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  26. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  27. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  28. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  29. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  30. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  31. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  32. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  33. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/entrypoint.py +0 -0
  34. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/exception_handler.py +0 -0
  35. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/logger.py +0 -0
  36. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/__init__.py +0 -0
  37. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  38. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  39. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  40. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/models/well_known_types.py +0 -0
  41. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/py.typed +0 -0
  42. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/__init__.py +0 -0
  43. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/abstract_source.py +0 -0
  44. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  45. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  46. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  47. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  48. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  49. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  50. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  51. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/config.py +0 -0
  52. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  53. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  54. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  55. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  56. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  57. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  58. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  59. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  60. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  61. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  62. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  63. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  64. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  65. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  66. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  67. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  68. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  69. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  70. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  71. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  72. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  73. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  74. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  75. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  76. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  77. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  78. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  79. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  80. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  81. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  82. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  83. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  84. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  85. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  86. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  87. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  88. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  89. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  90. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  91. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  92. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  93. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  94. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  95. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  96. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  97. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  98. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  99. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  100. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  101. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  102. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  103. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  104. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  105. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  106. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  107. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  108. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  109. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  110. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  111. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  112. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  113. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +0 -0
  114. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  115. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  116. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  117. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  118. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +0 -0
  119. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  120. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  121. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  122. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  123. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  124. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  125. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  126. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  127. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  128. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  129. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  130. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  131. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  132. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  133. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  134. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  135. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  136. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  137. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  138. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  139. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  140. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  141. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  142. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  143. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  144. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  145. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  146. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  147. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  148. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  149. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  150. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  151. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  152. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  153. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  154. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  155. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  156. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  157. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  158. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  159. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  160. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  161. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  162. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  163. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  164. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  165. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  166. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  167. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  168. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  169. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  170. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  171. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  172. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  173. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  174. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  175. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  176. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  177. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  178. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  179. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  180. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/types.py +0 -0
  181. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  182. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/__init__.py +0 -0
  183. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/base_integration.py +0 -0
  184. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/catalog.py +0 -0
  185. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/runner.py +0 -0
  186. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/embedded/tools.py +0 -0
  187. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/README.md +0 -0
  188. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  189. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  190. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  191. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  192. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  193. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  194. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  195. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  196. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  197. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  198. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  199. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  200. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  201. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  202. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  203. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  204. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  205. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  206. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  207. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  208. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  209. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  210. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  211. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  212. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  213. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  214. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  215. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  216. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  217. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  218. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  219. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  220. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  221. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  222. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  223. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  224. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  225. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  226. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  227. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  228. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  229. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  230. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  231. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  232. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/file_based/types.py +0 -0
  233. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/http_config.py +0 -0
  234. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/http_logger.py +0 -0
  235. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/message/__init__.py +0 -0
  236. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/message/repository.py +0 -0
  237. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/source.py +0 -0
  238. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/__init__.py +0 -0
  239. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  240. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  241. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  242. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  243. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  244. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  245. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  246. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  247. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  248. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  249. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  250. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  251. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  252. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  253. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  254. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  255. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  256. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  257. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  258. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  259. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  260. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  261. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  262. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/record.py +0 -0
  263. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  264. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  265. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  266. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  267. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  268. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/core.py +0 -0
  269. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  270. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  271. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  272. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  273. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  274. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +0 -0
  275. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  276. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  277. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  278. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  279. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  280. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  281. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/http.py +0 -0
  282. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  283. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  284. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  285. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  286. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  287. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  288. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  289. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  290. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/types.py +0 -0
  291. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/__init__.py +0 -0
  292. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/casing.py +0 -0
  293. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  294. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  295. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  296. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/transform.py +0 -0
  297. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sources/utils/types.py +0 -0
  298. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/__init__.py +0 -0
  299. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/__init__.py +0 -0
  300. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/hashing.py +0 -0
  301. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  302. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/constants.py +0 -0
  303. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/exceptions.py +0 -0
  304. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/secrets.py +0 -0
  305. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/__init__.py +0 -0
  306. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  307. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  308. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/sql/types.py +0 -0
  309. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/__init__.py +0 -0
  310. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/catalog_builder.py +0 -0
  311. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  312. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  313. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  314. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  315. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/request.py +0 -0
  316. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/response.py +0 -0
  317. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  318. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/state_builder.py +0 -0
  319. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/data.py +0 -0
  320. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  321. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/test/utils/reading.py +0 -0
  322. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/__init__.py +0 -0
  323. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  324. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/analytics_message.py +0 -0
  325. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/constants.py +0 -0
  326. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  327. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/event_timing.py +0 -0
  328. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  329. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/mapping_helpers.py +0 -0
  330. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/message_utils.py +0 -0
  331. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  332. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/print_buffer.py +0 -0
  333. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  334. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/slice_hasher.py +0 -0
  335. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  336. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  337. {airbyte_cdk-6.7.0rc1 → airbyte_cdk-6.7.0rc3}/airbyte_cdk/utils/traced_exception.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.7.0rc1
3
+ Version: 6.7.0rc3
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
7
7
  Keywords: airbyte,connector-development-kit,cdk
8
8
  Author: Airbyte
9
9
  Author-email: contact@airbyte.io
10
- Requires-Python: >=3.10,<4.0
10
+ Requires-Python: >=3.10,<3.13
11
11
  Classifier: Development Status :: 3 - Alpha
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: MIT License
@@ -15,7 +15,6 @@ Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: Topic :: Scientific/Engineering
20
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
20
  Provides-Extra: file-based
@@ -38,11 +37,11 @@ Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
38
37
  Requires-Dist: genson (==1.3.0)
39
38
  Requires-Dist: isodate (>=0.6.1,<0.7.0)
40
39
  Requires-Dist: jsonref (>=0.2,<0.3)
41
- Requires-Dist: jsonschema (>=3.2.0,<3.3.0)
40
+ Requires-Dist: jsonschema (>=4.17.3,<4.18.0)
42
41
  Requires-Dist: langchain (==0.1.16) ; extra == "vector-db-based"
43
42
  Requires-Dist: langchain_core (==0.1.42)
44
43
  Requires-Dist: markdown ; extra == "file-based"
45
- Requires-Dist: nltk (==3.8.1)
44
+ Requires-Dist: nltk (==3.9.1)
46
45
  Requires-Dist: numpy (<2)
47
46
  Requires-Dist: openai[embeddings] (==0.27.9) ; extra == "vector-db-based"
48
47
  Requires-Dist: orjson (>=3.10.7,<4.0.0)
@@ -61,6 +60,7 @@ Requires-Dist: python-dateutil
61
60
  Requires-Dist: python-snappy (==0.7.3) ; extra == "file-based"
62
61
  Requires-Dist: python-ulid (>=3.0.0,<4.0.0)
63
62
  Requires-Dist: pytz (==2024.1)
63
+ Requires-Dist: rapidfuzz (>=3.10.1,<4.0.0)
64
64
  Requires-Dist: requests
65
65
  Requires-Dist: requests_cache
66
66
  Requires-Dist: serpyco-rs (>=1.10.2,<2.0.0)
@@ -0,0 +1,6 @@
1
+ from airbyte_cdk.cli.source_declarative_manifest._run import run
2
+
3
+
4
+ __all__ = [
5
+ "run",
6
+ ]
@@ -0,0 +1,223 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.
2
+ """Defines the `source-declarative-manifest` connector, which installs alongside CDK.
3
+
4
+ This file was originally imported from the dedicated connector directory, under the
5
+ `airbyte` monorepo.
6
+
7
+ Usage:
8
+
9
+ ```
10
+ pipx install airbyte-cdk
11
+ source-declarative-manifest --help
12
+ source-declarative-manifest spec
13
+ ...
14
+ ```
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import json
20
+ import pkgutil
21
+ import sys
22
+ import traceback
23
+ from collections.abc import Mapping
24
+ from datetime import datetime
25
+ from pathlib import Path
26
+ from typing import Any, cast
27
+
28
+ from airbyte_cdk.entrypoint import AirbyteEntrypoint, launch
29
+ from airbyte_cdk.models import (
30
+ AirbyteErrorTraceMessage,
31
+ AirbyteMessage,
32
+ AirbyteMessageSerializer,
33
+ AirbyteStateMessage,
34
+ AirbyteTraceMessage,
35
+ ConfiguredAirbyteCatalog,
36
+ ConnectorSpecificationSerializer,
37
+ TraceType,
38
+ Type,
39
+ )
40
+ from airbyte_cdk.sources.declarative.concurrent_declarative_source import (
41
+ ConcurrentDeclarativeSource,
42
+ )
43
+ from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource
44
+ from airbyte_cdk.sources.source import TState
45
+ from orjson import orjson
46
+
47
+
48
+ class SourceLocalYaml(YamlDeclarativeSource):
49
+ """
50
+ Declarative source defined by a yaml file in the local filesystem
51
+ """
52
+
53
+ def __init__(
54
+ self,
55
+ catalog: ConfiguredAirbyteCatalog | None,
56
+ config: Mapping[str, Any] | None,
57
+ state: TState,
58
+ **kwargs: Any,
59
+ ) -> None:
60
+ """
61
+ HACK!
62
+ Problem: YamlDeclarativeSource relies on the calling module name/path to find the yaml file.
63
+ Implication: If you call YamlDeclarativeSource directly it will look for the yaml file in the wrong place. (e.g. the airbyte-cdk package)
64
+ Solution: Subclass YamlDeclarativeSource from the same location as the manifest to load.
65
+
66
+ When can we remove this?
67
+ When the airbyte-cdk is updated to not rely on the calling module name/path to find the yaml file.
68
+ When all manifest connectors are updated to use the new airbyte-cdk.
69
+ When all manifest connectors are updated to use the source-declarative-manifest as the base image.
70
+ """
71
+ super().__init__(
72
+ catalog=catalog,
73
+ config=config,
74
+ state=state,
75
+ path_to_yaml="manifest.yaml",
76
+ )
77
+
78
+
79
+ def _is_local_manifest_command(args: list[str]) -> bool:
80
+ # Check for a local manifest.yaml file
81
+ return Path("/airbyte/integration_code/source_declarative_manifest/manifest.yaml").exists()
82
+
83
+
84
+ def handle_command(args: list[str]) -> None:
85
+ if _is_local_manifest_command(args):
86
+ handle_local_manifest_command(args)
87
+ else:
88
+ handle_remote_manifest_command(args)
89
+
90
+
91
+ def _get_local_yaml_source(args: list[str]) -> SourceLocalYaml:
92
+ try:
93
+ config, catalog, state = _parse_inputs_into_config_catalog_state(args)
94
+ return SourceLocalYaml(config=config, catalog=catalog, state=state)
95
+ except Exception as error:
96
+ print(
97
+ orjson.dumps(
98
+ AirbyteMessageSerializer.dump(
99
+ AirbyteMessage(
100
+ type=Type.TRACE,
101
+ trace=AirbyteTraceMessage(
102
+ type=TraceType.ERROR,
103
+ emitted_at=int(datetime.now().timestamp() * 1000),
104
+ error=AirbyteErrorTraceMessage(
105
+ message=f"Error starting the sync. This could be due to an invalid configuration or catalog. Please contact Support for assistance. Error: {error}",
106
+ stack_trace=traceback.format_exc(),
107
+ ),
108
+ ),
109
+ )
110
+ )
111
+ ).decode()
112
+ )
113
+ raise error
114
+
115
+
116
+ def handle_local_manifest_command(args: list[str]) -> None:
117
+ source = _get_local_yaml_source(args)
118
+ launch(
119
+ source=source,
120
+ args=args,
121
+ )
122
+
123
+
124
+ def handle_remote_manifest_command(args: list[str]) -> None:
125
+ """Overrides the spec command to return the generalized spec for the declarative manifest source.
126
+
127
+ This is different from a typical low-code, but built and published separately source built as a ManifestDeclarativeSource,
128
+ because that will have a spec method that returns the spec for that specific source. Other than spec,
129
+ the generalized connector behaves the same as any other, since the manifest is provided in the config.
130
+ """
131
+ if args[0] == "spec":
132
+ json_spec = pkgutil.get_data(
133
+ "airbyte_cdk.cli.source_declarative_manifest",
134
+ "spec.json",
135
+ )
136
+ if json_spec is None:
137
+ raise FileNotFoundError(
138
+ "Could not find `spec.json` file for source-declarative-manifest"
139
+ )
140
+
141
+ spec_obj = json.loads(json_spec)
142
+ spec = ConnectorSpecificationSerializer.load(spec_obj)
143
+
144
+ message = AirbyteMessage(type=Type.SPEC, spec=spec)
145
+ print(AirbyteEntrypoint.airbyte_message_to_string(message))
146
+ else:
147
+ source = create_declarative_source(args)
148
+ launch(
149
+ source=source,
150
+ args=args,
151
+ )
152
+
153
+
154
+ def create_declarative_source(args: list[str]) -> ConcurrentDeclarativeSource:
155
+ """Creates the source with the injected config.
156
+
157
+ This essentially does what other low-code sources do at build time, but at runtime,
158
+ with a user-provided manifest in the config. This better reflects what happens in the
159
+ connector builder.
160
+ """
161
+ try:
162
+ config, catalog, state = _parse_inputs_into_config_catalog_state(args)
163
+ if "__injected_declarative_manifest" not in config:
164
+ raise ValueError(
165
+ f"Invalid config: `__injected_declarative_manifest` should be provided at the root of the config but config only has keys {list(config.keys())}"
166
+ )
167
+ return ConcurrentDeclarativeSource(
168
+ config=config,
169
+ catalog=catalog,
170
+ state=state,
171
+ source_config=cast(dict[str, Any], config["__injected_declarative_manifest"]),
172
+ )
173
+ except Exception as error:
174
+ print(
175
+ orjson.dumps(
176
+ AirbyteMessageSerializer.dump(
177
+ AirbyteMessage(
178
+ type=Type.TRACE,
179
+ trace=AirbyteTraceMessage(
180
+ type=TraceType.ERROR,
181
+ emitted_at=int(datetime.now().timestamp() * 1000),
182
+ error=AirbyteErrorTraceMessage(
183
+ message=f"Error starting the sync. This could be due to an invalid configuration or catalog. Please contact Support for assistance. Error: {error}",
184
+ stack_trace=traceback.format_exc(),
185
+ ),
186
+ ),
187
+ )
188
+ )
189
+ ).decode()
190
+ )
191
+ raise error
192
+
193
+
194
+ def _parse_inputs_into_config_catalog_state(
195
+ args: list[str],
196
+ ) -> tuple[
197
+ Mapping[str, Any] | None,
198
+ ConfiguredAirbyteCatalog | None,
199
+ list[AirbyteStateMessage],
200
+ ]:
201
+ parsed_args = AirbyteEntrypoint.parse_args(args)
202
+ config = (
203
+ ConcurrentDeclarativeSource.read_config(parsed_args.config)
204
+ if hasattr(parsed_args, "config")
205
+ else None
206
+ )
207
+ catalog = (
208
+ ConcurrentDeclarativeSource.read_catalog(parsed_args.catalog)
209
+ if hasattr(parsed_args, "catalog")
210
+ else None
211
+ )
212
+ state = (
213
+ ConcurrentDeclarativeSource.read_state(parsed_args.state)
214
+ if hasattr(parsed_args, "state")
215
+ else []
216
+ )
217
+
218
+ return config, catalog, state
219
+
220
+
221
+ def run() -> None:
222
+ args: list[str] = sys.argv[1:]
223
+ handle_command(args)
@@ -0,0 +1,17 @@
1
+ {
2
+ "documentationUrl": "https://docs.airbyte.com/integrations/sources/low-code",
3
+ "connectionSpecification": {
4
+ "$schema": "http://json-schema.org/draft-07/schema#",
5
+ "title": "Low-code source spec",
6
+ "type": "object",
7
+ "required": ["__injected_declarative_manifest"],
8
+ "additionalProperties": true,
9
+ "properties": {
10
+ "__injected_declarative_manifest": {
11
+ "title": "Low-code manifest",
12
+ "type": "object",
13
+ "description": "The low-code manifest that defines the components of the source."
14
+ }
15
+ }
16
+ }
17
+ }
@@ -2790,21 +2790,21 @@ interpolation:
2790
2790
  - created_at: "2020-01-01 00:00:00.000+00:00"
2791
2791
  - updated_at: "2020-01-02 00:00:00.000+00:00"
2792
2792
  macros:
2793
- - title: Now (UTC)
2793
+ - title: now_utc
2794
2794
  description: Returns the current date and time in the UTC timezone.
2795
2795
  arguments: {}
2796
2796
  return_type: Datetime
2797
2797
  examples:
2798
2798
  - "'{{ now_utc() }}' -> '2021-09-01 00:00:00+00:00'"
2799
2799
  - "'{{ now_utc().strftime('%Y-%m-%d') }}' -> '2021-09-01'"
2800
- - title: Today (UTC)
2800
+ - title: today_utc
2801
2801
  description: Returns the current date in UTC timezone. The output is a date object.
2802
2802
  arguments: {}
2803
2803
  return_type: Date
2804
2804
  examples:
2805
2805
  - "'{{ today_utc() }}' -> '2021-09-01'"
2806
2806
  - "'{{ today_utc().strftime('%Y/%m/%d')}}' -> '2021/09/01'"
2807
- - title: Timestamp
2807
+ - title: timestamp
2808
2808
  description: Converts a number or a string representing a datetime (formatted as ISO8601) to a timestamp. If the input is a number, it is converted to an int. If no timezone is specified, the string is interpreted as UTC.
2809
2809
  arguments:
2810
2810
  datetime: A string formatted as ISO8601 or an integer representing a unix timestamp
@@ -2815,7 +2815,7 @@ interpolation:
2815
2815
  - "'{{ timestamp('2022-02-28T00:00:00Z') }}' -> 1646006400"
2816
2816
  - "'{{ timestamp('2022-02-28 00:00:00Z') }}' -> 1646006400"
2817
2817
  - "'{{ timestamp('2022-02-28T00:00:00-08:00') }}' -> 1646035200"
2818
- - title: Max
2818
+ - title: max
2819
2819
  description: Returns the largest object of a iterable, or or two or more arguments.
2820
2820
  arguments:
2821
2821
  args: iterable or a sequence of two or more arguments
@@ -2823,7 +2823,7 @@ interpolation:
2823
2823
  examples:
2824
2824
  - "'{{ max(2, 3) }}' -> 3"
2825
2825
  - "'{{ max([2, 3]) }}' -> 3"
2826
- - title: Day Delta
2826
+ - title: day_delta
2827
2827
  description: Returns the datetime of now() + num_days.
2828
2828
  arguments:
2829
2829
  num_days: The number of days to add to now
@@ -2833,8 +2833,8 @@ interpolation:
2833
2833
  - "'{{ day_delta(1) }}' -> '2021-09-02T00:00:00.000000+0000'"
2834
2834
  - "'{{ day_delta(-1) }}' -> '2021-08-31:00:00.000000+0000'"
2835
2835
  - "'{{ day_delta(25, format='%Y-%m-%d') }}' -> '2021-09-02'"
2836
- - title: Duration
2837
- description: Converts an ISO8601 duratioin to datetime.timedelta.
2836
+ - title: duration
2837
+ description: Converts an ISO8601 duration to datetime timedelta.
2838
2838
  arguments:
2839
2839
  duration_string: "A string representing an ISO8601 duration. See https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm for more details."
2840
2840
  return_type: datetime.timedelta
@@ -2842,7 +2842,7 @@ interpolation:
2842
2842
  - "'{{ duration('P1D') }}' -> '1 day, 0:00:00'"
2843
2843
  - "'{{ duration('P6DT23H') }}' -> '6 days, 23:00:00'"
2844
2844
  - "'{{ (now_utc() - duration('P1D')).strftime('%Y-%m-%dT%H:%M:%SZ') }}' -> '2021-08-31T00:00:00Z'"
2845
- - title: Format Datetime
2845
+ - title: format_datetime
2846
2846
  description: Converts a datetime or a datetime-string to the specified format.
2847
2847
  arguments:
2848
2848
  datetime: The datetime object or a string to convert. If datetime is a string, it must be formatted as ISO8601.
@@ -2854,7 +2854,7 @@ interpolation:
2854
2854
  - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ') }}"
2855
2855
  - "{{ format_datetime(config['start_date'], '%Y-%m-%dT%H:%M:%S.%fZ', '%a, %d %b %Y %H:%M:%S %z') }}"
2856
2856
  filters:
2857
- - title: Hash
2857
+ - title: hash
2858
2858
  description: Convert the specified value to a hashed string.
2859
2859
  arguments:
2860
2860
  hash_type: Valid hash type for converts ('md5' as default value).
@@ -2864,26 +2864,26 @@ interpolation:
2864
2864
  - "{{ 'Test client_secret' | hash() }} -> '3032d57a12f76b61a820e47b9a5a0cbb'"
2865
2865
  - "{{ 'Test client_secret' | hash('md5') }} -> '3032d57a12f76b61a820e47b9a5a0cbb'"
2866
2866
  - "{{ 'Test client_secret' | hash('md5', salt='salt') }} -> '5011a0168579c2d94cbbe1c6ad14327c'"
2867
- - title: Base64 encoder
2867
+ - title: base64encode
2868
2868
  description: Convert the specified value to a string in the base64 format.
2869
2869
  arguments: {}
2870
2870
  return_type: str
2871
2871
  examples:
2872
2872
  - "{{ 'Test client_secret' | base64encode }} -> 'VGVzdCBjbGllbnRfc2VjcmV0'"
2873
- - title: Base64 decoder
2873
+ - title: base64decode
2874
2874
  description: Decodes the specified base64 format value into a common string.
2875
2875
  arguments: {}
2876
2876
  return_type: str
2877
2877
  examples:
2878
2878
  - "{{ 'ZmFrZSByZWZyZXNoX3Rva2VuIHZhbHVl' | base64decode }} -> 'fake refresh_token value'"
2879
- - title: String
2879
+ - title: string
2880
2880
  description: Converts the specified value to a string.
2881
2881
  arguments: {}
2882
2882
  return_type: str
2883
2883
  examples:
2884
2884
  - '{{ 1 | string }} -> "1"'
2885
2885
  - '{{ ["hello", "world" | string }} -> "["hello", "world"]"'
2886
- - title: Regex Search
2886
+ - title: regex_search
2887
2887
  description: Match the input string against a regular expression and return the first match.
2888
2888
  arguments:
2889
2889
  regex: The regular expression to search for. It must include a capture group.
@@ -5,10 +5,10 @@
5
5
  import json
6
6
  import logging
7
7
  import pkgutil
8
- import re
9
8
  from copy import deepcopy
10
9
  from importlib import metadata
11
- from typing import Any, Dict, Iterator, List, Mapping, Optional, Tuple
10
+ from typing import Any, Dict, Iterator, List, Mapping, Optional
11
+ from packaging.version import Version, InvalidVersion
12
12
 
13
13
  import yaml
14
14
  from airbyte_cdk.models import (
@@ -245,45 +245,54 @@ class ManifestDeclarativeSource(DeclarativeSource):
245
245
  "Validation against json schema defined in declarative_component_schema.yaml schema failed"
246
246
  ) from e
247
247
 
248
- cdk_version = metadata.version("airbyte_cdk")
249
- cdk_major, cdk_minor, cdk_patch = self._get_version_parts(cdk_version, "airbyte-cdk")
250
- manifest_version = self._source_config.get("version")
251
- if manifest_version is None:
248
+ cdk_version_str = metadata.version("airbyte_cdk")
249
+ cdk_version = self._parse_version(cdk_version_str, "airbyte-cdk")
250
+ manifest_version_str = self._source_config.get("version")
251
+ if manifest_version_str is None:
252
252
  raise RuntimeError(
253
253
  "Manifest version is not defined in the manifest. This is unexpected since it should be a required field. Please contact support."
254
254
  )
255
- manifest_major, manifest_minor, manifest_patch = self._get_version_parts(
256
- manifest_version, "manifest"
257
- )
255
+ manifest_version = self._parse_version(manifest_version_str, "manifest")
258
256
 
259
- if cdk_version.startswith("0.0.0"):
257
+ if (cdk_version.major, cdk_version.minor, cdk_version.micro) == (0, 0, 0):
260
258
  # Skipping version compatibility check on unreleased dev branch
261
259
  pass
262
- elif cdk_major < manifest_major or (
263
- cdk_major == manifest_major and cdk_minor < manifest_minor
260
+ elif (cdk_version.major, cdk_version.minor) < (
261
+ manifest_version.major,
262
+ manifest_version.minor,
264
263
  ):
265
264
  raise ValidationError(
266
- f"The manifest version {manifest_version} is greater than the airbyte-cdk package version ({cdk_version}). Your "
265
+ f"The manifest version {manifest_version!s} is greater than the airbyte-cdk package version ({cdk_version!s}). Your "
267
266
  f"manifest may contain features that are not in the current CDK version."
268
267
  )
269
- elif manifest_major == 0 and manifest_minor < 29:
268
+ elif (manifest_version.major, manifest_version.minor) < (0, 29):
270
269
  raise ValidationError(
271
270
  f"The low-code framework was promoted to Beta in airbyte-cdk version 0.29.0 and contains many breaking changes to the "
272
- f"language. The manifest version {manifest_version} is incompatible with the airbyte-cdk package version "
273
- f"{cdk_version} which contains these breaking changes."
271
+ f"language. The manifest version {manifest_version!s} is incompatible with the airbyte-cdk package version "
272
+ f"{cdk_version!s} which contains these breaking changes."
274
273
  )
275
274
 
276
275
  @staticmethod
277
- def _get_version_parts(version: str, version_type: str) -> Tuple[int, int, int]:
278
- """
279
- Takes a semantic version represented as a string and splits it into a tuple of its major, minor, and patch versions.
276
+ def _parse_version(
277
+ version: str,
278
+ version_type: str,
279
+ ) -> Version:
280
+ """Takes a semantic version represented as a string and splits it into a tuple.
281
+
282
+ The fourth part (prerelease) is not returned in the tuple.
283
+
284
+ Returns:
285
+ Version: the parsed version object
280
286
  """
281
- version_parts = re.split(r"\.", version)
282
- if len(version_parts) != 3 or not all([part.isdigit() for part in version_parts]):
287
+ try:
288
+ parsed_version = Version(version)
289
+ except InvalidVersion as ex:
283
290
  raise ValidationError(
284
- f"The {version_type} version {version} specified is not a valid version format (ex. 1.2.3)"
285
- )
286
- return tuple(int(part) for part in version_parts) # type: ignore # We already verified there were 3 parts and they are all digits
291
+ f"The {version_type} version '{version}' is not a valid version format."
292
+ ) from ex
293
+ else:
294
+ # No exception
295
+ return parsed_version
287
296
 
288
297
  def _stream_configs(self, manifest: Mapping[str, Any]) -> List[Dict[str, Any]]:
289
298
  # This has a warning flag for static, but after we finish part 4 we'll replace manifest with self._source_config
@@ -29,16 +29,25 @@ from airbyte_cdk.sources.file_based.schema_helpers import SchemaType
29
29
  from airbyte_cdk.utils import is_cloud_environment
30
30
  from airbyte_cdk.utils.traced_exception import AirbyteTracedException
31
31
  from unstructured.file_utils.filetype import (
32
+ EXT_TO_FILETYPE,
32
33
  FILETYPE_TO_MIMETYPE,
33
34
  STR_TO_FILETYPE,
34
35
  FileType,
35
36
  detect_filetype,
36
37
  )
38
+ import nltk
37
39
 
38
40
  unstructured_partition_pdf = None
39
41
  unstructured_partition_docx = None
40
42
  unstructured_partition_pptx = None
41
43
 
44
+ try:
45
+ nltk.data.find("tokenizers/punkt.zip")
46
+ nltk.data.find("tokenizers/punkt_tab.zip")
47
+ except LookupError:
48
+ nltk.download("punkt")
49
+ nltk.download("punkt_tab")
50
+
42
51
 
43
52
  def optional_decode(contents: Union[str, bytes]) -> str:
44
53
  if isinstance(contents, bytes):
@@ -108,9 +117,11 @@ class UnstructuredParser(FileTypeParser):
108
117
  format = _extract_format(config)
109
118
  with stream_reader.open_file(file, self.file_read_mode, None, logger) as file_handle:
110
119
  filetype = self._get_filetype(file_handle, file)
111
-
112
120
  if filetype not in self._supported_file_types() and not format.skip_unprocessable_files:
113
- raise self._create_parse_error(file, self._get_file_type_error_message(filetype))
121
+ raise self._create_parse_error(
122
+ file,
123
+ self._get_file_type_error_message(filetype),
124
+ )
114
125
 
115
126
  return {
116
127
  "content": {
@@ -159,6 +170,10 @@ class UnstructuredParser(FileTypeParser):
159
170
  logger.warn(f"File {file.uri} cannot be parsed. Skipping it.")
160
171
  else:
161
172
  raise e
173
+ except Exception as e:
174
+ exception_str = str(e)
175
+ logger.error(f"File {file.uri} caused an error during parsing: {exception_str}.")
176
+ raise e
162
177
 
163
178
  def _read_file(
164
179
  self,
@@ -176,20 +191,32 @@ class UnstructuredParser(FileTypeParser):
176
191
  # check whether unstructured library is actually available for better error message and to ensure proper typing (can't be None after this point)
177
192
  raise Exception("unstructured library is not available")
178
193
 
179
- filetype = self._get_filetype(file_handle, remote_file)
194
+ filetype: FileType | None = self._get_filetype(file_handle, remote_file)
180
195
 
181
- if filetype == FileType.MD or filetype == FileType.TXT:
196
+ if filetype is None or filetype not in self._supported_file_types():
197
+ raise self._create_parse_error(
198
+ remote_file,
199
+ self._get_file_type_error_message(filetype),
200
+ )
201
+ if filetype in {FileType.MD, FileType.TXT}:
182
202
  file_content: bytes = file_handle.read()
183
203
  decoded_content: str = optional_decode(file_content)
184
204
  return decoded_content
185
- if filetype not in self._supported_file_types():
186
- raise self._create_parse_error(remote_file, self._get_file_type_error_message(filetype))
187
205
  if format.processing.mode == "local":
188
- return self._read_file_locally(file_handle, filetype, format.strategy, remote_file)
206
+ return self._read_file_locally(
207
+ file_handle,
208
+ filetype,
209
+ format.strategy,
210
+ remote_file,
211
+ )
189
212
  elif format.processing.mode == "api":
190
213
  try:
191
214
  result: str = self._read_file_remotely_with_retries(
192
- file_handle, format.processing, filetype, format.strategy, remote_file
215
+ file_handle,
216
+ format.processing,
217
+ filetype,
218
+ format.strategy,
219
+ remote_file,
193
220
  )
194
221
  except Exception as e:
195
222
  # If a parser error happens during remotely processing the file, this means the file is corrupted. This case is handled by the parse_records method, so just rethrow.
@@ -336,7 +363,11 @@ class UnstructuredParser(FileTypeParser):
336
363
 
337
364
  return self._render_markdown([element.to_dict() for element in elements])
338
365
 
339
- def _create_parse_error(self, remote_file: RemoteFile, message: str) -> RecordParseError:
366
+ def _create_parse_error(
367
+ self,
368
+ remote_file: RemoteFile,
369
+ message: str,
370
+ ) -> RecordParseError:
340
371
  return RecordParseError(
341
372
  FileBasedSourceError.ERROR_PARSING_RECORD, filename=remote_file.uri, message=message
342
373
  )
@@ -360,32 +391,51 @@ class UnstructuredParser(FileTypeParser):
360
391
  # detect_filetype is either using the file name or file content
361
392
  # if possible, try to leverage the file name to detect the file type
362
393
  # if the file name is not available, use the file content
363
- file_type = detect_filetype(
364
- filename=remote_file.uri,
365
- )
366
- if file_type is not None and not file_type == FileType.UNK:
394
+ file_type: FileType | None = None
395
+ try:
396
+ file_type = detect_filetype(
397
+ filename=remote_file.uri,
398
+ )
399
+ except Exception:
400
+ # Path doesn't exist locally. Try something else...
401
+ pass
402
+
403
+ if file_type and file_type != FileType.UNK:
367
404
  return file_type
368
405
 
369
406
  type_based_on_content = detect_filetype(file=file)
407
+ file.seek(0) # detect_filetype is reading to read the file content, so we need to reset
370
408
 
371
- # detect_filetype is reading to read the file content
372
- file.seek(0)
409
+ if type_based_on_content and type_based_on_content != FileType.UNK:
410
+ return type_based_on_content
373
411
 
374
- return type_based_on_content
412
+ extension = "." + remote_file.uri.split(".")[-1].lower()
413
+ if extension in EXT_TO_FILETYPE:
414
+ return EXT_TO_FILETYPE[extension]
415
+
416
+ return None
375
417
 
376
418
  def _supported_file_types(self) -> List[Any]:
377
419
  return [FileType.MD, FileType.PDF, FileType.DOCX, FileType.PPTX, FileType.TXT]
378
420
 
379
- def _get_file_type_error_message(self, file_type: FileType) -> str:
421
+ def _get_file_type_error_message(
422
+ self,
423
+ file_type: FileType | None,
424
+ ) -> str:
380
425
  supported_file_types = ", ".join([str(type) for type in self._supported_file_types()])
381
- return f"File type {file_type} is not supported. Supported file types are {supported_file_types}"
426
+ return f"File type {file_type or 'None'!s} is not supported. Supported file types are {supported_file_types}"
382
427
 
383
428
  def _render_markdown(self, elements: List[Any]) -> str:
384
429
  return "\n\n".join((self._convert_to_markdown(el) for el in elements))
385
430
 
386
431
  def _convert_to_markdown(self, el: Dict[str, Any]) -> str:
387
432
  if dpath.get(el, "type") == "Title":
388
- heading_str = "#" * (dpath.get(el, "metadata/category_depth", default=1) or 1)
433
+ category_depth = dpath.get(el, "metadata/category_depth", default=1) or 1
434
+ if not isinstance(category_depth, int):
435
+ category_depth = (
436
+ int(category_depth) if isinstance(category_depth, (str, float)) else 1
437
+ )
438
+ heading_str = "#" * category_depth
389
439
  return f"{heading_str} {dpath.get(el, 'text')}"
390
440
  elif dpath.get(el, "type") == "ListItem":
391
441
  return f"- {dpath.get(el, 'text')}"
@@ -0,0 +1 @@
1
+ # Copyright (c) 2024 Airbyte, Inc., all rights reserved.