airbyte-cdk 6.38.0.dev0__tar.gz → 6.38.1__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 (369) hide show
  1. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/PKG-INFO +3 -3
  2. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/entrypoint.py +6 -6
  3. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/logger.py +1 -4
  4. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +4 -0
  5. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +10 -2
  6. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +4 -0
  7. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/macros.py +3 -5
  8. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +7 -5
  9. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +1 -1
  10. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/http_requester.py +48 -22
  11. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +25 -4
  12. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +6 -1
  13. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +7 -2
  14. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/requester.py +7 -1
  15. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +21 -4
  16. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -1
  17. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +3 -3
  18. airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/utils/__init__.py +3 -0
  19. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/types.py +1 -0
  20. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/mapping_helpers.py +18 -1
  21. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/pyproject.toml +3 -3
  22. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -7
  23. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/__init__.py +0 -3
  24. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/base_integration.py +0 -61
  25. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/catalog.py +0 -57
  26. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/runner.py +0 -57
  27. airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/embedded/tools.py +0 -27
  28. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/LICENSE.txt +0 -0
  29. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/LICENSE_SHORT +0 -0
  30. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/README.md +0 -0
  31. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/__init__.py +0 -0
  32. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/__init__.py +0 -0
  33. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  34. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  35. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  36. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/config_observation.py +0 -0
  37. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector.py +0 -0
  38. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/README.md +0 -0
  39. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/__init__.py +0 -0
  40. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  41. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/main.py +0 -0
  42. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/models.py +0 -0
  43. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  44. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  45. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  46. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  47. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  48. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/__init__.py +0 -0
  49. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/destination.py +0 -0
  50. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  51. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  52. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  53. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  54. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  55. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  56. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  57. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  58. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  59. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/exception_handler.py +0 -0
  60. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/__init__.py +0 -0
  61. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  62. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  63. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  64. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/models/well_known_types.py +0 -0
  65. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/py.typed +0 -0
  66. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/__init__.py +0 -0
  67. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/abstract_source.py +0 -0
  68. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  69. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  70. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  71. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  72. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  73. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  74. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  75. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/config.py +0 -0
  76. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  77. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  78. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  79. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  80. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  81. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  82. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  83. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  84. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  85. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  86. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  87. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  88. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  89. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  90. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  91. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  92. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  93. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  94. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  95. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  96. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  97. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  98. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +0 -0
  99. {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/concurrent → airbyte_cdk-6.38.1/airbyte_cdk/sources/declarative/datetime}/__init__.py +0 -0
  100. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  101. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  102. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  103. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  104. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  105. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  106. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  107. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  108. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  109. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  110. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  111. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  112. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  113. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  114. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  115. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  116. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  117. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  118. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  119. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  120. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  121. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  122. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  123. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  124. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  125. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  126. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  127. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  128. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  129. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  130. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  131. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  132. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  133. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  134. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  135. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  136. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  137. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  138. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  139. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  140. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  141. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +0 -0
  142. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  143. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  144. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  145. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  146. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  147. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  148. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  149. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  150. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  151. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  152. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/README.md +0 -0
  153. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  154. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  155. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  156. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  157. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  158. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  159. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  160. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  161. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  162. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  163. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  164. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  165. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  166. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  167. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +0 -0
  168. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  169. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  170. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  171. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  172. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  173. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  174. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  175. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  176. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  177. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  178. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  179. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  180. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  181. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  182. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  183. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  184. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  185. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  186. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  187. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  188. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  189. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  190. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  191. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  192. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  193. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  194. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  195. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  196. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  197. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  198. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  199. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  200. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  201. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  202. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  203. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  204. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  205. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  206. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  207. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  208. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +0 -0
  209. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  210. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  211. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/declarative/types.py +0 -0
  212. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/README.md +0 -0
  213. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  214. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  215. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  216. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  217. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  218. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  219. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  220. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  221. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  222. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  223. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  224. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  225. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  226. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  227. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  228. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  229. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  230. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  231. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  232. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  233. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  234. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  235. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  236. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  237. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  238. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  239. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  240. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  241. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  242. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  243. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  244. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  245. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  246. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  247. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  248. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  249. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  250. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  251. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  252. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  253. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  254. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  255. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  256. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  257. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  258. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  259. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  260. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  261. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/file_based/types.py +0 -0
  262. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/http_config.py +0 -0
  263. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/http_logger.py +0 -0
  264. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/message/__init__.py +0 -0
  265. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/message/repository.py +0 -0
  266. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/source.py +0 -0
  267. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  268. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/__init__.py +0 -0
  269. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  270. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  271. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  272. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  273. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  274. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  275. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  276. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  277. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  278. {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/concurrent/partitions → airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/concurrent}/__init__.py +0 -0
  279. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  280. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  281. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  282. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  283. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  284. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  285. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  286. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  287. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  288. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  289. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  290. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  291. {airbyte_cdk-6.38.0.dev0/airbyte_cdk/sources/streams/utils → airbyte_cdk-6.38.1/airbyte_cdk/sources/streams/concurrent/partitions}/__init__.py +0 -0
  292. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  293. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  294. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  295. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  296. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  297. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +0 -0
  298. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  299. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +0 -0
  300. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/core.py +0 -0
  301. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  302. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  303. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  304. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  305. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  306. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  307. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  308. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  309. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  310. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  311. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  312. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/http.py +0 -0
  313. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  314. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  315. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  316. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  317. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  318. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  319. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  320. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  321. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/__init__.py +0 -0
  322. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/casing.py +0 -0
  323. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  324. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  325. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  326. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/transform.py +0 -0
  327. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sources/utils/types.py +0 -0
  328. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/__init__.py +0 -0
  329. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/__init__.py +0 -0
  330. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/hashing.py +0 -0
  331. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  332. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/constants.py +0 -0
  333. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/exceptions.py +0 -0
  334. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/secrets.py +0 -0
  335. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/__init__.py +0 -0
  336. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  337. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  338. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/sql/types.py +0 -0
  339. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/__init__.py +0 -0
  340. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/catalog_builder.py +0 -0
  341. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  342. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  343. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  344. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  345. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/request.py +0 -0
  346. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/response.py +0 -0
  347. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  348. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/state_builder.py +0 -0
  349. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/__init__.py +0 -0
  350. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/data.py +0 -0
  351. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  352. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  353. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/test/utils/reading.py +0 -0
  354. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/__init__.py +0 -0
  355. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  356. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/analytics_message.py +0 -0
  357. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/constants.py +0 -0
  358. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  359. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  360. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/event_timing.py +0 -0
  361. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  362. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/message_utils.py +0 -0
  363. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  364. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/print_buffer.py +0 -0
  365. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  366. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/slice_hasher.py +0 -0
  367. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  368. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  369. {airbyte_cdk-6.38.0.dev0 → airbyte_cdk-6.38.1}/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.38.0.dev0
3
+ Version: 6.38.1
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -28,7 +28,7 @@ Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
28
28
  Requires-Dist: backoff
29
29
  Requires-Dist: cachetools
30
30
  Requires-Dist: cohere (==4.21) ; extra == "vector-db-based"
31
- Requires-Dist: cryptography (>=42.0.5,<44.0.0)
31
+ Requires-Dist: cryptography (>=44.0.0,<45.0.0)
32
32
  Requires-Dist: dpath (>=2.1.6,<3.0.0)
33
33
  Requires-Dist: dunamai (>=1.22.0,<2.0.0)
34
34
  Requires-Dist: fastavro (>=1.8.0,<1.9.0) ; extra == "file-based"
@@ -47,7 +47,7 @@ Requires-Dist: pandas (==2.2.2)
47
47
  Requires-Dist: pdf2image (==1.16.3) ; extra == "file-based"
48
48
  Requires-Dist: pdfminer.six (==20221105) ; extra == "file-based"
49
49
  Requires-Dist: psutil (==6.1.0)
50
- Requires-Dist: pyarrow (>=15.0.0,<15.1.0) ; extra == "file-based"
50
+ Requires-Dist: pyarrow (>=19.0.0,<20.0.0) ; extra == "file-based"
51
51
  Requires-Dist: pydantic (>=2.7,<3.0)
52
52
  Requires-Dist: pyjwt (>=2.8.0,<3.0.0)
53
53
  Requires-Dist: pyrate-limiter (>=3.1.0,<3.2.0)
@@ -22,7 +22,7 @@ from requests import PreparedRequest, Response, Session
22
22
 
23
23
  from airbyte_cdk.connector import TConfig
24
24
  from airbyte_cdk.exception_handler import init_uncaught_exception_handler
25
- from airbyte_cdk.logger import PRINT_BUFFER, init_logger
25
+ from airbyte_cdk.logger import init_logger
26
26
  from airbyte_cdk.models import (
27
27
  AirbyteConnectionStatus,
28
28
  AirbyteMessage,
@@ -337,11 +337,11 @@ def launch(source: Source, args: List[str]) -> None:
337
337
  parsed_args = source_entrypoint.parse_args(args)
338
338
  # temporarily removes the PrintBuffer because we're seeing weird print behavior for concurrent syncs
339
339
  # Refer to: https://github.com/airbytehq/oncall/issues/6235
340
- with PRINT_BUFFER:
341
- for message in source_entrypoint.run(parsed_args):
342
- # simply printing is creating issues for concurrent CDK as Python uses different two instructions to print: one for the message and
343
- # the other for the break line. Adding `\n` to the message ensure that both are printed at the same time
344
- print(f"{message}\n", end="")
340
+ # with PrintBuffer():
341
+ for message in source_entrypoint.run(parsed_args):
342
+ # simply printing is creating issues for concurrent CDK as Python uses different two instructions to print: one for the message and
343
+ # the other for the break line. Adding `\n` to the message ensure that both are printed at the same time
344
+ print(f"{message}\n", end="", flush=True)
345
345
 
346
346
 
347
347
  def _init_internal_request_filter() -> None:
@@ -16,11 +16,8 @@ from airbyte_cdk.models import (
16
16
  Level,
17
17
  Type,
18
18
  )
19
- from airbyte_cdk.utils import PrintBuffer
20
19
  from airbyte_cdk.utils.airbyte_secrets_utils import filter_secrets
21
20
 
22
- PRINT_BUFFER = PrintBuffer(flush_interval=0.1)
23
-
24
21
  LOGGING_CONFIG = {
25
22
  "version": 1,
26
23
  "disable_existing_loggers": False,
@@ -30,7 +27,7 @@ LOGGING_CONFIG = {
30
27
  "handlers": {
31
28
  "console": {
32
29
  "class": "logging.StreamHandler",
33
- "stream": PRINT_BUFFER,
30
+ "stream": "ext://sys.stdout",
34
31
  "formatter": "airbyte",
35
32
  },
36
33
  },
@@ -29,6 +29,8 @@ class DatetimeParser:
29
29
  return datetime.datetime.fromtimestamp(int(date), tz=datetime.timezone.utc)
30
30
  elif format == "%s_as_float":
31
31
  return datetime.datetime.fromtimestamp(float(date), tz=datetime.timezone.utc)
32
+ elif format == "%epoch_microseconds":
33
+ return self._UNIX_EPOCH + datetime.timedelta(microseconds=int(date))
32
34
  elif format == "%ms":
33
35
  return self._UNIX_EPOCH + datetime.timedelta(milliseconds=int(date))
34
36
  elif "%_ms" in format:
@@ -46,6 +48,8 @@ class DatetimeParser:
46
48
  return str(int(dt.timestamp()))
47
49
  if format == "%s_as_float":
48
50
  return str(float(dt.timestamp()))
51
+ if format == "%epoch_microseconds":
52
+ return str(int(dt.timestamp() * 1_000_000))
49
53
  if format == "%ms":
50
54
  # timstamp() returns a float representing the number of seconds since the unix epoch
51
55
  return str(int(dt.timestamp() * 1000))
@@ -1794,7 +1794,6 @@ definitions:
1794
1794
  type: object
1795
1795
  required:
1796
1796
  - type
1797
- - path
1798
1797
  - url_base
1799
1798
  properties:
1800
1799
  type:
@@ -1806,9 +1805,18 @@ definitions:
1806
1805
  type: string
1807
1806
  interpolation_context:
1808
1807
  - config
1808
+ - next_page_token
1809
+ - stream_interval
1810
+ - stream_partition
1811
+ - stream_slice
1812
+ - creation_response
1813
+ - polling_response
1814
+ - download_target
1809
1815
  examples:
1810
1816
  - "https://connect.squareup.com/v2"
1811
- - "{{ config['base_url'] or 'https://app.posthog.com'}}/api/"
1817
+ - "{{ config['base_url'] or 'https://app.posthog.com'}}/api"
1818
+ - "https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups"
1819
+ - "https://example.com/api/v1/resource/{{ next_page_token['id'] }}"
1812
1820
  path:
1813
1821
  title: URL Path
1814
1822
  description: Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.
@@ -151,6 +151,10 @@ class CompositeRawDecoder(Decoder):
151
151
  self, response: requests.Response
152
152
  ) -> Generator[MutableMapping[str, Any], None, None]:
153
153
  if self.is_stream_response():
154
+ # urllib mentions that some interfaces don't play nice with auto_close [here](https://urllib3.readthedocs.io/en/stable/user-guide.html#using-io-wrappers-with-response-content)
155
+ # We have indeed observed some issues with CSV parsing. Hence, we will manage the closing of the file ourselves until we find a better solution.
156
+ response.raw.auto_close = False
154
157
  yield from self.parser.parse(data=response.raw) # type: ignore[arg-type]
158
+ response.raw.close()
155
159
  else:
156
160
  yield from self.parser.parse(data=io.BytesIO(response.content))
@@ -12,6 +12,8 @@ import pytz
12
12
  from dateutil import parser
13
13
  from isodate import parse_duration
14
14
 
15
+ from airbyte_cdk.sources.declarative.datetime.datetime_parser import DatetimeParser
16
+
15
17
  """
16
18
  This file contains macros that can be evaluated by a `JinjaInterpolation` object
17
19
  """
@@ -171,11 +173,7 @@ def format_datetime(
171
173
  dt_datetime = (
172
174
  datetime.datetime.strptime(dt, input_format) if input_format else str_to_datetime(dt)
173
175
  )
174
- if format == "%s":
175
- return str(int(dt_datetime.timestamp()))
176
- elif format == "%ms":
177
- return str(int(dt_datetime.timestamp() * 1_000_000))
178
- return dt_datetime.strftime(format)
176
+ return DatetimeParser().format(dt=dt_datetime, format=format)
179
177
 
180
178
 
181
179
  _macros_list = [
@@ -939,7 +939,7 @@ class MinMaxDatetime(BaseModel):
939
939
  )
940
940
  datetime_format: Optional[str] = Field(
941
941
  "",
942
- description='Format of the datetime value. Defaults to "%Y-%m-%dT%H:%M:%S.%f%z" if left empty. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (Sunday as first day) - `00`, `01`, ..., `53`\n * **%W**: Week number of the year (Monday as first day) - `00`, `01`, ..., `53`\n * **%c**: Date and time representation - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date representation - `08/16/1988`\n * **%X**: Time representation - `21:30:00`\n * **%%**: Literal \'%\' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n',
942
+ description='Format of the datetime value. Defaults to "%Y-%m-%dT%H:%M:%S.%f%z" if left empty. Use placeholders starting with "%" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`\n * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`, `001`, ..., `999`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (Sunday as first day) - `00`, `01`, ..., `53`\n * **%W**: Week number of the year (Monday as first day) - `00`, `01`, ..., `53`\n * **%c**: Date and time representation - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date representation - `08/16/1988`\n * **%X**: Time representation - `21:30:00`\n * **%%**: Literal \'%\' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n',
943
943
  examples=["%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%d", "%s"],
944
944
  title="Datetime Format",
945
945
  )
@@ -1545,7 +1545,7 @@ class DatetimeBasedCursor(BaseModel):
1545
1545
  )
1546
1546
  datetime_format: str = Field(
1547
1547
  ...,
1548
- description="The datetime format used to format the datetime values that are sent in outgoing requests to the API. Use placeholders starting with \"%\" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp (milliseconds) - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (starting Sunday) - `00`, ..., `53`\n * **%W**: Week number of the year (starting Monday) - `00`, ..., `53`\n * **%c**: Date and time - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date standard format - `08/16/1988`\n * **%X**: Time standard format - `21:30:00`\n * **%%**: Literal '%' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n",
1548
+ description="The datetime format used to format the datetime values that are sent in outgoing requests to the API. Use placeholders starting with \"%\" to describe the format the API is using. The following placeholders are available:\n * **%s**: Epoch unix timestamp - `1686218963`\n * **%s_as_float**: Epoch unix timestamp in seconds as float with microsecond precision - `1686218963.123456`\n * **%ms**: Epoch unix timestamp (milliseconds) - `1686218963123`\n * **%a**: Weekday (abbreviated) - `Sun`\n * **%A**: Weekday (full) - `Sunday`\n * **%w**: Weekday (decimal) - `0` (Sunday), `6` (Saturday)\n * **%d**: Day of the month (zero-padded) - `01`, `02`, ..., `31`\n * **%b**: Month (abbreviated) - `Jan`\n * **%B**: Month (full) - `January`\n * **%m**: Month (zero-padded) - `01`, `02`, ..., `12`\n * **%y**: Year (without century, zero-padded) - `00`, `01`, ..., `99`\n * **%Y**: Year (with century) - `0001`, `0002`, ..., `9999`\n * **%H**: Hour (24-hour, zero-padded) - `00`, `01`, ..., `23`\n * **%I**: Hour (12-hour, zero-padded) - `01`, `02`, ..., `12`\n * **%p**: AM/PM indicator\n * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`\n * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`\n * **%f**: Microsecond (zero-padded to 6 digits) - `000000`\n * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`\n * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`\n * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`\n * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`\n * **%U**: Week number of the year (starting Sunday) - `00`, ..., `53`\n * **%W**: Week number of the year (starting Monday) - `00`, ..., `53`\n * **%c**: Date and time - `Tue Aug 16 21:30:00 1988`\n * **%x**: Date standard format - `08/16/1988`\n * **%X**: Time standard format - `21:30:00`\n * **%%**: Literal '%' character\n\n Some placeholders depend on the locale of the underlying system - in most cases this locale is configured as en/US. For more information see the [Python documentation](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes).\n",
1549
1549
  examples=["%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%d", "%s", "%ms", "%s_as_float"],
1550
1550
  title="Outgoing Datetime Format",
1551
1551
  )
@@ -2072,12 +2072,14 @@ class HttpRequester(BaseModel):
2072
2072
  description="Base URL of the API source. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.",
2073
2073
  examples=[
2074
2074
  "https://connect.squareup.com/v2",
2075
- "{{ config['base_url'] or 'https://app.posthog.com'}}/api/",
2075
+ "{{ config['base_url'] or 'https://app.posthog.com'}}/api",
2076
+ "https://connect.squareup.com/v2/quotes/{{ stream_partition['id'] }}/quote_line_groups",
2077
+ "https://example.com/api/v1/resource/{{ next_page_token['id'] }}",
2076
2078
  ],
2077
2079
  title="API Base URL",
2078
2080
  )
2079
- path: str = Field(
2080
- ...,
2081
+ path: Optional[str] = Field(
2082
+ None,
2081
2083
  description="Path the specific API endpoint that this stream represents. Do not put sensitive information (e.g. API tokens) into this field - Use the Authentication component for this.",
2082
2084
  examples=[
2083
2085
  "/products",
@@ -56,7 +56,7 @@ from airbyte_cdk.sources.declarative.auth.token_provider import (
56
56
  )
57
57
  from airbyte_cdk.sources.declarative.checks import CheckDynamicStream, CheckStream
58
58
  from airbyte_cdk.sources.declarative.concurrency_level import ConcurrencyLevel
59
- from airbyte_cdk.sources.declarative.datetime import MinMaxDatetime
59
+ from airbyte_cdk.sources.declarative.datetime.min_max_datetime import MinMaxDatetime
60
60
  from airbyte_cdk.sources.declarative.declarative_stream import DeclarativeStream
61
61
  from airbyte_cdk.sources.declarative.decoders import (
62
62
  Decoder,
@@ -25,8 +25,8 @@ from airbyte_cdk.sources.message import MessageRepository, NoopMessageRepository
25
25
  from airbyte_cdk.sources.streams.call_rate import APIBudget
26
26
  from airbyte_cdk.sources.streams.http import HttpClient
27
27
  from airbyte_cdk.sources.streams.http.error_handlers import ErrorHandler
28
- from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
29
- from airbyte_cdk.utils.mapping_helpers import combine_mappings
28
+ from airbyte_cdk.sources.types import Config, EmptyString, StreamSlice, StreamState
29
+ from airbyte_cdk.utils.mapping_helpers import combine_mappings, get_interpolation_context
30
30
 
31
31
 
32
32
  @dataclass
@@ -49,9 +49,10 @@ class HttpRequester(Requester):
49
49
 
50
50
  name: str
51
51
  url_base: Union[InterpolatedString, str]
52
- path: Union[InterpolatedString, str]
53
52
  config: Config
54
53
  parameters: InitVar[Mapping[str, Any]]
54
+
55
+ path: Optional[Union[InterpolatedString, str]] = None
55
56
  authenticator: Optional[DeclarativeAuthenticator] = None
56
57
  http_method: Union[str, HttpMethod] = HttpMethod.GET
57
58
  request_options_provider: Optional[InterpolatedRequestOptionsProvider] = None
@@ -66,7 +67,9 @@ class HttpRequester(Requester):
66
67
 
67
68
  def __post_init__(self, parameters: Mapping[str, Any]) -> None:
68
69
  self._url_base = InterpolatedString.create(self.url_base, parameters=parameters)
69
- self._path = InterpolatedString.create(self.path, parameters=parameters)
70
+ self._path = InterpolatedString.create(
71
+ self.path if self.path else EmptyString, parameters=parameters
72
+ )
70
73
  if self.request_options_provider is None:
71
74
  self._request_options_provider = InterpolatedRequestOptionsProvider(
72
75
  config=self.config, parameters=parameters
@@ -112,27 +115,33 @@ class HttpRequester(Requester):
112
115
  def get_authenticator(self) -> DeclarativeAuthenticator:
113
116
  return self._authenticator
114
117
 
115
- def get_url_base(self) -> str:
116
- return os.path.join(self._url_base.eval(self.config), "")
118
+ def get_url_base(
119
+ self,
120
+ *,
121
+ stream_state: Optional[StreamState] = None,
122
+ stream_slice: Optional[StreamSlice] = None,
123
+ next_page_token: Optional[Mapping[str, Any]] = None,
124
+ ) -> str:
125
+ interpolation_context = get_interpolation_context(
126
+ stream_state=stream_state,
127
+ stream_slice=stream_slice,
128
+ next_page_token=next_page_token,
129
+ )
130
+ return os.path.join(self._url_base.eval(self.config, **interpolation_context), EmptyString)
117
131
 
118
132
  def get_path(
119
133
  self,
120
134
  *,
121
- stream_state: Optional[StreamState],
122
- stream_slice: Optional[StreamSlice],
123
- next_page_token: Optional[Mapping[str, Any]],
135
+ stream_state: Optional[StreamState] = None,
136
+ stream_slice: Optional[StreamSlice] = None,
137
+ next_page_token: Optional[Mapping[str, Any]] = None,
124
138
  ) -> str:
125
- kwargs = {
126
- "stream_slice": stream_slice,
127
- "next_page_token": next_page_token,
128
- # update the interpolation context with extra fields, if passed.
129
- **(
130
- stream_slice.extra_fields
131
- if stream_slice is not None and hasattr(stream_slice, "extra_fields")
132
- else {}
133
- ),
134
- }
135
- path = str(self._path.eval(self.config, **kwargs))
139
+ interpolation_context = get_interpolation_context(
140
+ stream_state=stream_state,
141
+ stream_slice=stream_slice,
142
+ next_page_token=next_page_token,
143
+ )
144
+ path = str(self._path.eval(self.config, **interpolation_context))
136
145
  return path.lstrip("/")
137
146
 
138
147
  def get_method(self) -> HttpMethod:
@@ -330,7 +339,20 @@ class HttpRequester(Requester):
330
339
 
331
340
  @classmethod
332
341
  def _join_url(cls, url_base: str, path: str) -> str:
333
- return urljoin(url_base, path)
342
+ """
343
+ Joins a base URL with a given path and returns the resulting URL with any trailing slash removed.
344
+
345
+ This method ensures that there are no duplicate slashes when concatenating the base URL and the path,
346
+ which is useful when the full URL is provided from an interpolation context.
347
+
348
+ Args:
349
+ url_base (str): The base URL to which the path will be appended.
350
+ path (str): The path to join with the base URL.
351
+
352
+ Returns:
353
+ str: The concatenated URL with the trailing slash (if any) removed.
354
+ """
355
+ return urljoin(url_base, path).rstrip("/")
334
356
 
335
357
  def send_request(
336
358
  self,
@@ -347,7 +369,11 @@ class HttpRequester(Requester):
347
369
  request, response = self._http_client.send_request(
348
370
  http_method=self.get_method().value,
349
371
  url=self._join_url(
350
- self.get_url_base(),
372
+ self.get_url_base(
373
+ stream_state=stream_state,
374
+ stream_slice=stream_slice,
375
+ next_page_token=next_page_token,
376
+ ),
351
377
  path
352
378
  or self.get_path(
353
379
  stream_state=stream_state,
@@ -25,6 +25,7 @@ from airbyte_cdk.sources.declarative.requesters.request_path import RequestPath
25
25
  from airbyte_cdk.sources.types import Config, Record, StreamSlice, StreamState
26
26
  from airbyte_cdk.utils.mapping_helpers import (
27
27
  _validate_component_request_option_paths,
28
+ get_interpolation_context,
28
29
  )
29
30
 
30
31
 
@@ -150,11 +151,22 @@ class DefaultPaginator(Paginator):
150
151
  else:
151
152
  return None
152
153
 
153
- def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
154
+ def path(
155
+ self,
156
+ next_page_token: Optional[Mapping[str, Any]],
157
+ stream_state: Optional[Mapping[str, Any]] = None,
158
+ stream_slice: Optional[StreamSlice] = None,
159
+ ) -> Optional[str]:
154
160
  token = next_page_token.get("next_page_token") if next_page_token else None
155
161
  if token and self.page_token_option and isinstance(self.page_token_option, RequestPath):
162
+ # make additional interpolation context
163
+ interpolation_context = get_interpolation_context(
164
+ stream_state=stream_state,
165
+ stream_slice=stream_slice,
166
+ next_page_token=next_page_token,
167
+ )
156
168
  # Replace url base to only return the path
157
- return str(token).replace(self.url_base.eval(self.config), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
169
+ return str(token).replace(self.url_base.eval(self.config, **interpolation_context), "") # type: ignore # url_base is casted to a InterpolatedString in __post_init__
158
170
  else:
159
171
  return None
160
172
 
@@ -258,8 +270,17 @@ class PaginatorTestReadDecorator(Paginator):
258
270
  response, last_page_size, last_record, last_page_token_value
259
271
  )
260
272
 
261
- def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
262
- return self._decorated.path(next_page_token)
273
+ def path(
274
+ self,
275
+ next_page_token: Optional[Mapping[str, Any]],
276
+ stream_state: Optional[Mapping[str, Any]] = None,
277
+ stream_slice: Optional[StreamSlice] = None,
278
+ ) -> Optional[str]:
279
+ return self._decorated.path(
280
+ next_page_token=next_page_token,
281
+ stream_state=stream_state,
282
+ stream_slice=stream_slice,
283
+ )
263
284
 
264
285
  def get_request_params(
265
286
  self,
@@ -19,7 +19,12 @@ class NoPagination(Paginator):
19
19
 
20
20
  parameters: InitVar[Mapping[str, Any]]
21
21
 
22
- def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
22
+ def path(
23
+ self,
24
+ next_page_token: Optional[Mapping[str, Any]],
25
+ stream_state: Optional[Mapping[str, Any]] = None,
26
+ stream_slice: Optional[StreamSlice] = None,
27
+ ) -> Optional[str]:
23
28
  return None
24
29
 
25
30
  def get_request_params(
@@ -11,7 +11,7 @@ import requests
11
11
  from airbyte_cdk.sources.declarative.requesters.request_options.request_options_provider import (
12
12
  RequestOptionsProvider,
13
13
  )
14
- from airbyte_cdk.sources.types import Record
14
+ from airbyte_cdk.sources.types import Record, StreamSlice
15
15
 
16
16
 
17
17
  @dataclass
@@ -49,7 +49,12 @@ class Paginator(ABC, RequestOptionsProvider):
49
49
  pass
50
50
 
51
51
  @abstractmethod
52
- def path(self, next_page_token: Optional[Mapping[str, Any]]) -> Optional[str]:
52
+ def path(
53
+ self,
54
+ next_page_token: Optional[Mapping[str, Any]],
55
+ stream_state: Optional[Mapping[str, Any]] = None,
56
+ stream_slice: Optional[StreamSlice] = None,
57
+ ) -> Optional[str]:
53
58
  """
54
59
  Returns the URL path to hit to fetch the next page of records
55
60
 
@@ -35,7 +35,13 @@ class Requester(RequestOptionsProvider):
35
35
  pass
36
36
 
37
37
  @abstractmethod
38
- def get_url_base(self) -> str:
38
+ def get_url_base(
39
+ self,
40
+ *,
41
+ stream_state: Optional[StreamState],
42
+ stream_slice: Optional[StreamSlice],
43
+ next_page_token: Optional[Mapping[str, Any]],
44
+ ) -> str:
39
45
  """
40
46
  :return: URL base for the API endpoint e.g: if you wanted to hit https://myapi.com/v1/some_entity then this should return "https://myapi.com/v1/"
41
47
  """
@@ -234,13 +234,22 @@ class SimpleRetriever(Retriever):
234
234
  raise ValueError("Request body json cannot be a string")
235
235
  return body_json
236
236
 
237
- def _paginator_path(self, next_page_token: Optional[Mapping[str, Any]] = None) -> Optional[str]:
237
+ def _paginator_path(
238
+ self,
239
+ next_page_token: Optional[Mapping[str, Any]] = None,
240
+ stream_state: Optional[Mapping[str, Any]] = None,
241
+ stream_slice: Optional[StreamSlice] = None,
242
+ ) -> Optional[str]:
238
243
  """
239
244
  If the paginator points to a path, follow it, else return nothing so the requester is used.
240
245
  :param next_page_token:
241
246
  :return:
242
247
  """
243
- return self._paginator.path(next_page_token=next_page_token)
248
+ return self._paginator.path(
249
+ next_page_token=next_page_token,
250
+ stream_state=stream_state,
251
+ stream_slice=stream_slice,
252
+ )
244
253
 
245
254
  def _parse_response(
246
255
  self,
@@ -299,7 +308,11 @@ class SimpleRetriever(Retriever):
299
308
  next_page_token: Optional[Mapping[str, Any]] = None,
300
309
  ) -> Optional[requests.Response]:
301
310
  return self.requester.send_request(
302
- path=self._paginator_path(next_page_token=next_page_token),
311
+ path=self._paginator_path(
312
+ next_page_token=next_page_token,
313
+ stream_state=stream_state,
314
+ stream_slice=stream_slice,
315
+ ),
303
316
  stream_state=stream_state,
304
317
  stream_slice=stream_slice,
305
318
  next_page_token=next_page_token,
@@ -570,7 +583,11 @@ class SimpleRetrieverTestReadDecorator(SimpleRetriever):
570
583
  next_page_token: Optional[Mapping[str, Any]] = None,
571
584
  ) -> Optional[requests.Response]:
572
585
  return self.requester.send_request(
573
- path=self._paginator_path(next_page_token=next_page_token),
586
+ path=self._paginator_path(
587
+ next_page_token=next_page_token,
588
+ stream_state=stream_state,
589
+ stream_slice=stream_slice,
590
+ ),
574
591
  stream_state=stream_state,
575
592
  stream_slice=stream_slice,
576
593
  next_page_token=next_page_token,
@@ -50,7 +50,6 @@ class YamlDeclarativeSource(ConcurrentDeclarativeSource[List[AirbyteStateMessage
50
50
 
51
51
  def _emit_manifest_debug_message(self, extra_args: dict[str, Any]) -> None:
52
52
  extra_args["path_to_yaml"] = self._path_to_yaml
53
- self.logger.debug("declarative source created from parsed YAML manifest", extra=extra_args)
54
53
 
55
54
  @staticmethod
56
55
  def _parse(connection_definition_str: str) -> ConnectionDefinition:
@@ -19,9 +19,9 @@ DEFAULT_ERROR_MAPPING: Mapping[Union[int, str, Type[Exception]], ErrorResolution
19
19
  error_message="Invalid Protocol Schema: The endpoint that data is being requested from is using an invalid or insecure. Exception: requests.exceptions.InvalidSchema",
20
20
  ),
21
21
  InvalidURL: ErrorResolution(
22
- response_action=ResponseAction.FAIL,
23
- failure_type=FailureType.config_error,
24
- error_message="Invalid URL specified: The endpoint that data is being requested from is not a valid URL. Exception: requests.exceptions.InvalidURL",
22
+ response_action=ResponseAction.RETRY,
23
+ failure_type=FailureType.transient_error,
24
+ error_message="Invalid URL specified or DNS error occurred: The endpoint that data is being requested from is not a valid URL. Exception: requests.exceptions.InvalidURL",
25
25
  ),
26
26
  RequestException: ErrorResolution(
27
27
  response_action=ResponseAction.RETRY,
@@ -0,0 +1,3 @@
1
+ #
2
+ # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
+ #
@@ -14,6 +14,7 @@ FieldPointer = List[str]
14
14
  Config = Mapping[str, Any]
15
15
  ConnectionDefinition = Mapping[str, Any]
16
16
  StreamState = Mapping[str, Any]
17
+ EmptyString = str()
17
18
 
18
19
 
19
20
  class Record(Mapping[str, Any]):
@@ -10,7 +10,7 @@ from airbyte_cdk.sources.declarative.requesters.request_option import (
10
10
  RequestOption,
11
11
  RequestOptionType,
12
12
  )
13
- from airbyte_cdk.sources.types import Config
13
+ from airbyte_cdk.sources.types import Config, StreamSlice, StreamState
14
14
 
15
15
 
16
16
  def _merge_mappings(
@@ -143,3 +143,20 @@ def _validate_component_request_option_paths(
143
143
  )
144
144
  except ValueError as error:
145
145
  raise ValueError(error)
146
+
147
+
148
+ def get_interpolation_context(
149
+ stream_state: Optional[StreamState] = None,
150
+ stream_slice: Optional[StreamSlice] = None,
151
+ next_page_token: Optional[Mapping[str, Any]] = None,
152
+ ) -> Mapping[str, Any]:
153
+ return {
154
+ "stream_slice": stream_slice,
155
+ "next_page_token": next_page_token,
156
+ # update the context with extra fields, if passed.
157
+ **(
158
+ stream_slice.extra_fields
159
+ if stream_slice is not None and hasattr(stream_slice, "extra_fields")
160
+ else {}
161
+ ),
162
+ }
@@ -23,7 +23,7 @@ classifiers = [
23
23
  keywords = ["airbyte", "connector-development-kit", "cdk"]
24
24
 
25
25
  # Python CDK uses dynamic versioning: https://github.com/mtkennerly/poetry-dynamic-versioning
26
- version = "6.38.0.dev0" # Version will be calculated dynamically.
26
+ version = "6.38.1" # Version will be calculated dynamically.
27
27
 
28
28
  [tool.poetry-dynamic-versioning]
29
29
  enable = false
@@ -61,7 +61,7 @@ markdown = { version = "*", optional = true }
61
61
  openai = { version = "0.27.9", extras = ["embeddings"], optional = true }
62
62
  pdf2image = { version = "1.16.3", optional = true }
63
63
  "pdfminer.six" = { version = "20221105", optional = true }
64
- pyarrow = { version = "~15.0.0", optional = true }
64
+ pyarrow = { version = "^19.0.0", optional = true }
65
65
  pytesseract = { version = "0.3.10", optional = true }
66
66
  python-calamine = { version = "0.2.3", optional = true }
67
67
  python-snappy = { version = "0.7.3", optional = true }
@@ -73,7 +73,7 @@ numpy = "<2"
73
73
  unstructured = { version = "0.10.27", extras = ["docx", "pptx"], optional = true }
74
74
  "unstructured.pytesseract" = { version = ">=0.3.12", optional = true }
75
75
  pyjwt = "^2.8.0"
76
- cryptography = ">=42.0.5,<44.0.0"
76
+ cryptography = ">=44.0.0,<45.0.0"
77
77
  pytz = "2024.2"
78
78
  orjson = "^3.10.7"
79
79
  serpyco-rs = "^1.10.2"
@@ -1,7 +0,0 @@
1
- #
2
- # Copyright (c) 2023 Airbyte, Inc., all rights reserved.
3
- #
4
-
5
- from airbyte_cdk.sources.declarative.datetime.min_max_datetime import MinMaxDatetime
6
-
7
- __all__ = ["MinMaxDatetime"]
@@ -1,3 +0,0 @@
1
- #
2
- # Copyright (c) 2021 Airbyte, Inc., all rights reserved.
3
- #