airbyte-cdk 6.37.2.dev1__tar.gz → 6.37.3__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 (368) hide show
  1. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/PKG-INFO +4 -4
  2. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/concurrent_declarative_source.py +28 -7
  3. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +7 -1
  4. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +72 -5
  5. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py +2 -3
  6. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/macros.py +2 -0
  7. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +34 -8
  8. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py +18 -4
  9. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +119 -7
  10. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/README.md +5 -5
  11. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/http_job_repository.py +18 -13
  12. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/http_requester.py +49 -17
  13. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +25 -4
  14. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +6 -1
  15. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +7 -2
  16. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/requester.py +7 -1
  17. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +21 -4
  18. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/keys_to_snake_transformation.py +2 -2
  19. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -1
  20. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/state_converters/abstract_stream_state_converter.py +2 -1
  21. airbyte_cdk-6.37.3/airbyte_cdk/sources/streams/concurrent/state_converters/incrementing_count_stream_state_converter.py +92 -0
  22. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/default_error_mapping.py +3 -3
  23. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/types.py +1 -0
  24. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/mapping_helpers.py +18 -1
  25. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/pyproject.toml +4 -4
  26. airbyte_cdk-6.37.2.dev1/airbyte_cdk/sources/embedded/__init__.py +0 -3
  27. airbyte_cdk-6.37.2.dev1/airbyte_cdk/sources/embedded/base_integration.py +0 -61
  28. airbyte_cdk-6.37.2.dev1/airbyte_cdk/sources/embedded/catalog.py +0 -57
  29. airbyte_cdk-6.37.2.dev1/airbyte_cdk/sources/embedded/runner.py +0 -57
  30. airbyte_cdk-6.37.2.dev1/airbyte_cdk/sources/embedded/tools.py +0 -27
  31. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/LICENSE.txt +0 -0
  32. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/LICENSE_SHORT +0 -0
  33. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/README.md +0 -0
  34. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/__init__.py +0 -0
  35. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/cli/__init__.py +0 -0
  36. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/cli/source_declarative_manifest/__init__.py +0 -0
  37. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/cli/source_declarative_manifest/_run.py +0 -0
  38. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/cli/source_declarative_manifest/spec.json +0 -0
  39. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/config_observation.py +0 -0
  40. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector.py +0 -0
  41. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/README.md +0 -0
  42. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/__init__.py +0 -0
  43. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  44. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/main.py +0 -0
  45. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/models.py +0 -0
  46. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/test_reader/__init__.py +0 -0
  47. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/test_reader/helpers.py +0 -0
  48. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/test_reader/message_grouper.py +0 -0
  49. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/test_reader/reader.py +0 -0
  50. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/connector_builder/test_reader/types.py +0 -0
  51. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/__init__.py +0 -0
  52. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/destination.py +0 -0
  53. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/README.md +0 -0
  54. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/__init__.py +0 -0
  55. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/config.py +0 -0
  56. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/document_processor.py +0 -0
  57. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/embedder.py +0 -0
  58. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/indexer.py +0 -0
  59. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/test_utils.py +0 -0
  60. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/utils.py +0 -0
  61. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/destinations/vector_db_based/writer.py +0 -0
  62. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/entrypoint.py +0 -0
  63. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/exception_handler.py +0 -0
  64. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/logger.py +0 -0
  65. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/models/__init__.py +0 -0
  66. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  67. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/models/airbyte_protocol_serializers.py +0 -0
  68. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/models/file_transfer_record_message.py +0 -0
  69. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/models/well_known_types.py +0 -0
  70. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/py.typed +0 -0
  71. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/__init__.py +0 -0
  72. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/abstract_source.py +0 -0
  73. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/__init__.py +0 -0
  74. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py +0 -0
  75. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/concurrent_source.py +0 -0
  76. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py +0 -0
  77. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py +0 -0
  78. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/stream_thread_exception.py +0 -0
  79. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +0 -0
  80. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/config.py +0 -0
  81. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  82. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  83. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/__init__.py +0 -0
  84. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/job.py +0 -0
  85. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/job_orchestrator.py +0 -0
  86. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/job_tracker.py +0 -0
  87. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/repository.py +0 -0
  88. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/status.py +0 -0
  89. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/async_job/timer.py +0 -0
  90. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  91. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  92. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/jwt.py +0 -0
  93. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  94. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/selective_authenticator.py +0 -0
  95. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  96. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/auth/token_provider.py +0 -0
  97. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  98. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/checks/check_dynamic_stream.py +0 -0
  99. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  100. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  101. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/concurrency_level/__init__.py +0 -0
  102. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py +0 -0
  103. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  104. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  105. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  106. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  107. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  108. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  109. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  110. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/noop_decoder.py +0 -0
  111. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py +0 -0
  112. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/xml_decoder.py +0 -0
  113. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/decoders/zipfile_decoder.py +0 -0
  114. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  115. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  116. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  117. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  118. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  119. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  120. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  121. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py +0 -0
  122. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/extractors/type_transformer.py +0 -0
  123. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  124. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py +0 -0
  125. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  126. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/declarative_cursor.py +0 -0
  127. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py +0 -0
  128. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/per_partition_cursor.py +0 -0
  129. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/per_partition_with_global.py +0 -0
  130. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/incremental/resumable_full_refresh_cursor.py +0 -0
  131. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  132. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  133. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  134. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  135. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py +0 -0
  136. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  137. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  138. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  139. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  140. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/migrations/__init__.py +0 -0
  141. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py +0 -0
  142. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/migrations/state_migration.py +0 -0
  143. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  144. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  145. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  146. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  147. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  148. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  149. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py +0 -0
  150. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py +0 -0
  151. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  152. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/partition_router.py +0 -0
  153. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  154. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  155. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  156. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  157. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  158. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  159. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  160. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  161. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  162. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  163. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  164. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  165. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  166. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_filter.py +0 -0
  167. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  168. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  169. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  170. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  171. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  172. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  173. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  174. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  175. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/stop_condition.py +0 -0
  176. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  177. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  178. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/datetime_based_request_options_provider.py +0 -0
  179. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/default_request_options_provider.py +0 -0
  180. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_nested_request_input_provider.py +0 -0
  181. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  182. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  183. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  184. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  185. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/resolvers/__init__.py +0 -0
  186. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/resolvers/components_resolver.py +0 -0
  187. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/resolvers/config_components_resolver.py +0 -0
  188. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/resolvers/http_components_resolver.py +0 -0
  189. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  190. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/retrievers/async_retriever.py +0 -0
  191. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  192. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  193. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  194. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/dynamic_schema_loader.py +0 -0
  195. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  196. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  197. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  198. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  199. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/spec/spec.py +0 -0
  200. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  201. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/stream_slicers/declarative_partition_generator.py +0 -0
  202. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  203. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  204. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  205. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/dpath_flatten_fields.py +0 -0
  206. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/flatten_fields.py +0 -0
  207. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/keys_replace_transformation.py +0 -0
  208. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/keys_to_lower_transformation.py +0 -0
  209. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  210. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  211. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/declarative/types.py +0 -0
  212. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/README.md +0 -0
  213. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/__init__.py +0 -0
  214. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/availability_strategy/__init__.py +0 -0
  215. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/availability_strategy/abstract_file_based_availability_strategy.py +0 -0
  216. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/availability_strategy/default_file_based_availability_strategy.py +0 -0
  217. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/__init__.py +0 -0
  218. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/abstract_file_based_spec.py +0 -0
  219. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/avro_format.py +0 -0
  220. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/csv_format.py +0 -0
  221. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/excel_format.py +0 -0
  222. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/file_based_stream_config.py +0 -0
  223. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/jsonl_format.py +0 -0
  224. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/parquet_format.py +0 -0
  225. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/unstructured_format.py +0 -0
  226. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/config/validate_config_transfer_modes.py +0 -0
  227. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/discovery_policy/__init__.py +0 -0
  228. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/discovery_policy/abstract_discovery_policy.py +0 -0
  229. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/discovery_policy/default_discovery_policy.py +0 -0
  230. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/exceptions.py +0 -0
  231. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_based_source.py +0 -0
  232. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_based_stream_reader.py +0 -0
  233. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/__init__.py +0 -0
  234. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/avro_parser.py +0 -0
  235. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/csv_parser.py +0 -0
  236. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/excel_parser.py +0 -0
  237. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/file_transfer.py +0 -0
  238. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/file_type_parser.py +0 -0
  239. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/jsonl_parser.py +0 -0
  240. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/parquet_parser.py +0 -0
  241. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/file_types/unstructured_parser.py +0 -0
  242. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/remote_file.py +0 -0
  243. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/schema_helpers.py +0 -0
  244. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/schema_validation_policies/__init__.py +0 -0
  245. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/schema_validation_policies/abstract_schema_validation_policy.py +0 -0
  246. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/schema_validation_policies/default_schema_validation_policies.py +0 -0
  247. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/__init__.py +0 -0
  248. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/abstract_file_based_stream.py +0 -0
  249. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/__init__.py +0 -0
  250. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/adapters.py +0 -0
  251. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/__init__.py +0 -0
  252. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/abstract_concurrent_file_based_cursor.py +0 -0
  253. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_concurrent_cursor.py +0 -0
  254. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/concurrent/cursor/file_based_final_state_cursor.py +0 -0
  255. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/cursor/__init__.py +0 -0
  256. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/cursor/abstract_file_based_cursor.py +0 -0
  257. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/cursor/default_file_based_cursor.py +0 -0
  258. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/default_file_based_stream.py +0 -0
  259. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/identities_stream.py +0 -0
  260. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/stream/permissions_file_based_stream.py +0 -0
  261. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/file_based/types.py +0 -0
  262. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/http_config.py +0 -0
  263. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/http_logger.py +0 -0
  264. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/message/__init__.py +0 -0
  265. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/message/repository.py +0 -0
  266. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/source.py +0 -0
  267. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/specs/transfer_modes.py +0 -0
  268. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/__init__.py +0 -0
  269. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  270. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/call_rate.py +0 -0
  271. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/__init__.py +0 -0
  272. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py +0 -0
  273. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/cursor.py +0 -0
  274. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/per_partition_key_serializer.py +0 -0
  275. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/resumable_full_refresh_cursor.py +0 -0
  276. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/checkpoint/substream_resumable_full_refresh_cursor.py +0 -0
  277. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/README.md +0 -0
  278. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/__init__.py +0 -0
  279. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/abstract_stream.py +0 -0
  280. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py +0 -0
  281. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/adapters.py +0 -0
  282. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/availability_strategy.py +0 -0
  283. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/clamping.py +0 -0
  284. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/cursor.py +0 -0
  285. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/cursor_types.py +0 -0
  286. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/default_stream.py +0 -0
  287. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/exceptions.py +0 -0
  288. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/helpers.py +0 -0
  289. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partition_enqueuer.py +0 -0
  290. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partition_reader.py +0 -0
  291. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partitions/__init__.py +0 -0
  292. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partitions/partition.py +0 -0
  293. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partitions/partition_generator.py +0 -0
  294. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partitions/stream_slicer.py +0 -0
  295. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/partitions/types.py +0 -0
  296. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/state_converters/__init__.py +0 -0
  297. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/concurrent/state_converters/datetime_stream_state_converter.py +0 -0
  298. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/core.py +0 -0
  299. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  300. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  301. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/__init__.py +0 -0
  302. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/backoff_strategy.py +0 -0
  303. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/default_backoff_strategy.py +0 -0
  304. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/error_handler.py +0 -0
  305. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/error_message_parser.py +0 -0
  306. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/http_status_error_handler.py +0 -0
  307. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/json_error_message_parser.py +0 -0
  308. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/error_handlers/response_models.py +0 -0
  309. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  310. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/http.py +0 -0
  311. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/http_client.py +0 -0
  312. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  313. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  314. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  315. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  316. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  317. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  318. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/permissions/identities_stream.py +0 -0
  319. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  320. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/__init__.py +0 -0
  321. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/casing.py +0 -0
  322. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  323. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  324. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/slice_logger.py +0 -0
  325. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/transform.py +0 -0
  326. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sources/utils/types.py +0 -0
  327. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/__init__.py +0 -0
  328. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/_util/__init__.py +0 -0
  329. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/_util/hashing.py +0 -0
  330. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/_util/name_normalizers.py +0 -0
  331. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/constants.py +0 -0
  332. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/exceptions.py +0 -0
  333. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/secrets.py +0 -0
  334. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/shared/__init__.py +0 -0
  335. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/shared/catalog_providers.py +0 -0
  336. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/shared/sql_processor.py +0 -0
  337. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/sql/types.py +0 -0
  338. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/__init__.py +0 -0
  339. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/catalog_builder.py +0 -0
  340. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/entrypoint_wrapper.py +0 -0
  341. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/__init__.py +0 -0
  342. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/matcher.py +0 -0
  343. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/mocker.py +0 -0
  344. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/request.py +0 -0
  345. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/response.py +0 -0
  346. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/mock_http/response_builder.py +0 -0
  347. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/state_builder.py +0 -0
  348. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/utils/__init__.py +0 -0
  349. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/utils/data.py +0 -0
  350. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/utils/http_mocking.py +0 -0
  351. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/utils/manifest_only_fixtures.py +0 -0
  352. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/test/utils/reading.py +0 -0
  353. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/__init__.py +0 -0
  354. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  355. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/analytics_message.py +0 -0
  356. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/constants.py +0 -0
  357. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/datetime_format_inferrer.py +0 -0
  358. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/datetime_helpers.py +0 -0
  359. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/event_timing.py +0 -0
  360. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/is_cloud_environment.py +0 -0
  361. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/message_utils.py +0 -0
  362. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/oneof_option_config.py +0 -0
  363. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/print_buffer.py +0 -0
  364. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  365. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/slice_hasher.py +0 -0
  366. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/spec_schema_transformations.py +0 -0
  367. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/airbyte_cdk/utils/stream_status_utils.py +0 -0
  368. {airbyte_cdk-6.37.2.dev1 → airbyte_cdk-6.37.3}/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.37.2.dev1
3
+ Version: 6.37.3
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -22,13 +22,13 @@ Provides-Extra: sql
22
22
  Provides-Extra: vector-db-based
23
23
  Requires-Dist: Jinja2 (>=3.1.2,<3.2.0)
24
24
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
25
- Requires-Dist: Unidecode (>=1.3,<2.0)
26
25
  Requires-Dist: airbyte-protocol-models-dataclasses (>=0.14,<0.15)
26
+ Requires-Dist: anyascii (>=0.3.2,<0.4.0)
27
27
  Requires-Dist: avro (>=1.11.2,<1.13.0) ; extra == "file-based"
28
28
  Requires-Dist: backoff
29
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)
@@ -31,6 +31,9 @@ from airbyte_cdk.sources.declarative.models.declarative_component_schema import
31
31
  from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
32
32
  DatetimeBasedCursor as DatetimeBasedCursorModel,
33
33
  )
34
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import (
35
+ IncrementingCountCursor as IncrementingCountCursorModel,
36
+ )
34
37
  from airbyte_cdk.sources.declarative.parsers.model_to_component_factory import (
35
38
  ModelToComponentFactory,
36
39
  )
@@ -222,7 +225,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
222
225
  and not incremental_sync_component_definition
223
226
  )
224
227
 
225
- if self._is_datetime_incremental_without_partition_routing(
228
+ if self._is_concurrent_cursor_incremental_without_partition_routing(
226
229
  declarative_stream, incremental_sync_component_definition
227
230
  ):
228
231
  stream_state = self._connector_state_manager.get_stream_state(
@@ -254,15 +257,26 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
254
257
  stream_slicer=declarative_stream.retriever.stream_slicer,
255
258
  )
256
259
  else:
257
- cursor = (
258
- self._constructor.create_concurrent_cursor_from_datetime_based_cursor(
260
+ if (
261
+ incremental_sync_component_definition
262
+ and incremental_sync_component_definition.get("type")
263
+ == IncrementingCountCursorModel.__name__
264
+ ):
265
+ cursor = self._constructor.create_concurrent_cursor_from_incrementing_count_cursor(
266
+ model_type=IncrementingCountCursorModel,
267
+ component_definition=incremental_sync_component_definition, # type: ignore # Not None because of the if condition above
268
+ stream_name=declarative_stream.name,
269
+ stream_namespace=declarative_stream.namespace,
270
+ config=config or {},
271
+ )
272
+ else:
273
+ cursor = self._constructor.create_concurrent_cursor_from_datetime_based_cursor(
259
274
  model_type=DatetimeBasedCursorModel,
260
275
  component_definition=incremental_sync_component_definition, # type: ignore # Not None because of the if condition above
261
276
  stream_name=declarative_stream.name,
262
277
  stream_namespace=declarative_stream.namespace,
263
278
  config=config or {},
264
279
  )
265
- )
266
280
  partition_generator = StreamSlicerPartitionGenerator(
267
281
  partition_factory=DeclarativePartitionFactory(
268
282
  declarative_stream.name,
@@ -389,7 +403,7 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
389
403
 
390
404
  return concurrent_streams, synchronous_streams
391
405
 
392
- def _is_datetime_incremental_without_partition_routing(
406
+ def _is_concurrent_cursor_incremental_without_partition_routing(
393
407
  self,
394
408
  declarative_stream: DeclarativeStream,
395
409
  incremental_sync_component_definition: Mapping[str, Any] | None,
@@ -397,11 +411,18 @@ class ConcurrentDeclarativeSource(ManifestDeclarativeSource, Generic[TState]):
397
411
  return (
398
412
  incremental_sync_component_definition is not None
399
413
  and bool(incremental_sync_component_definition)
400
- and incremental_sync_component_definition.get("type", "")
401
- == DatetimeBasedCursorModel.__name__
414
+ and (
415
+ incremental_sync_component_definition.get("type", "")
416
+ in (DatetimeBasedCursorModel.__name__, IncrementingCountCursorModel.__name__)
417
+ )
402
418
  and hasattr(declarative_stream.retriever, "stream_slicer")
403
419
  and (
404
420
  isinstance(declarative_stream.retriever.stream_slicer, DatetimeBasedCursor)
421
+ # IncrementingCountCursorModel is hardcoded to be of type DatetimeBasedCursor
422
+ # add isintance check here if we want to create a Declarative IncrementingCountCursor
423
+ # or isinstance(
424
+ # declarative_stream.retriever.stream_slicer, IncrementingCountCursor
425
+ # )
405
426
  or isinstance(declarative_stream.retriever.stream_slicer, AsyncJobPartitionRouter)
406
427
  )
407
428
  )
@@ -31,7 +31,8 @@ class DatetimeParser:
31
31
  return datetime.datetime.fromtimestamp(float(date), tz=datetime.timezone.utc)
32
32
  elif format == "%ms":
33
33
  return self._UNIX_EPOCH + datetime.timedelta(milliseconds=int(date))
34
-
34
+ elif "%_ms" in format:
35
+ format = format.replace("%_ms", "%f")
35
36
  parsed_datetime = datetime.datetime.strptime(str(date), format)
36
37
  if self._is_naive(parsed_datetime):
37
38
  return parsed_datetime.replace(tzinfo=datetime.timezone.utc)
@@ -48,6 +49,11 @@ class DatetimeParser:
48
49
  if format == "%ms":
49
50
  # timstamp() returns a float representing the number of seconds since the unix epoch
50
51
  return str(int(dt.timestamp() * 1000))
52
+ if "%_ms" in format:
53
+ _format = format.replace("%_ms", "%f")
54
+ milliseconds = int(dt.microsecond / 1000)
55
+ formatted_dt = dt.strftime(_format).replace(dt.strftime("%f"), "%03d" % milliseconds)
56
+ return formatted_dt
51
57
  else:
52
58
  return dt.strftime(format)
53
59
 
@@ -777,6 +777,44 @@ definitions:
777
777
  type:
778
778
  type: string
779
779
  enum: [LegacyToPerPartitionStateMigration]
780
+ IncrementingCountCursor:
781
+ title: Incrementing Count Cursor
782
+ description: Cursor that allows for incremental sync according to a continuously increasing integer.
783
+ type: object
784
+ required:
785
+ - type
786
+ - cursor_field
787
+ properties:
788
+ type:
789
+ type: string
790
+ enum: [IncrementingCountCursor]
791
+ cursor_field:
792
+ title: Cursor Field
793
+ description: The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.
794
+ type: string
795
+ interpolation_context:
796
+ - config
797
+ examples:
798
+ - "created_at"
799
+ - "{{ config['record_cursor'] }}"
800
+ start_value:
801
+ title: Start Value
802
+ description: The value that determines the earliest record that should be synced.
803
+ anyOf:
804
+ - type: string
805
+ - type: integer
806
+ interpolation_context:
807
+ - config
808
+ examples:
809
+ - 0
810
+ - "{{ config['start_value'] }}"
811
+ start_value_option:
812
+ title: Inject Start Value Into Outgoing HTTP Request
813
+ description: Optionally configures how the start value will be sent in requests to the source API.
814
+ "$ref": "#/definitions/RequestOption"
815
+ $parameters:
816
+ type: object
817
+ additionalProperties: true
780
818
  DatetimeBasedCursor:
781
819
  title: Datetime Based Cursor
782
820
  description: Cursor to provide incremental capabilities over datetime.
@@ -844,6 +882,7 @@ definitions:
844
882
  * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`
845
883
  * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`
846
884
  * **%f**: Microsecond (zero-padded to 6 digits) - `000000`
885
+ * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`
847
886
  * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`
848
887
  * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`
849
888
  * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`
@@ -1318,6 +1357,7 @@ definitions:
1318
1357
  anyOf:
1319
1358
  - "$ref": "#/definitions/CustomIncrementalSync"
1320
1359
  - "$ref": "#/definitions/DatetimeBasedCursor"
1360
+ - "$ref": "#/definitions/IncrementingCountCursor"
1321
1361
  name:
1322
1362
  title: Name
1323
1363
  description: The stream name.
@@ -1754,7 +1794,6 @@ definitions:
1754
1794
  type: object
1755
1795
  required:
1756
1796
  - type
1757
- - path
1758
1797
  - url_base
1759
1798
  properties:
1760
1799
  type:
@@ -1766,9 +1805,18 @@ definitions:
1766
1805
  type: string
1767
1806
  interpolation_context:
1768
1807
  - config
1808
+ - next_page_token
1809
+ - stream_interval
1810
+ - stream_partition
1811
+ - stream_slice
1812
+ - creation_response
1813
+ - polling_response
1814
+ - download_target
1769
1815
  examples:
1770
1816
  - "https://connect.squareup.com/v2"
1771
- - "{{ 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'] }}"
1772
1820
  path:
1773
1821
  title: URL Path
1774
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.
@@ -1779,6 +1827,9 @@ definitions:
1779
1827
  - stream_interval
1780
1828
  - stream_partition
1781
1829
  - stream_slice
1830
+ - creation_response
1831
+ - polling_response
1832
+ - download_target
1782
1833
  examples:
1783
1834
  - "/products"
1784
1835
  - "/quotes/{{ stream_partition['id'] }}/quote_line_groups"
@@ -2398,6 +2449,7 @@ definitions:
2398
2449
  * **%M**: Minute (zero-padded) - `00`, `01`, ..., `59`
2399
2450
  * **%S**: Second (zero-padded) - `00`, `01`, ..., `59`
2400
2451
  * **%f**: Microsecond (zero-padded to 6 digits) - `000000`, `000001`, ..., `999999`
2452
+ * **%_ms**: Millisecond (zero-padded to 3 digits) - `000`, `001`, ..., `999`
2401
2453
  * **%z**: UTC offset - `(empty)`, `+0000`, `-04:00`
2402
2454
  * **%Z**: Time zone name - `(empty)`, `UTC`, `GMT`
2403
2455
  * **%j**: Day of the year (zero-padded) - `001`, `002`, ..., `366`
@@ -3223,7 +3275,7 @@ definitions:
3223
3275
  - polling_requester
3224
3276
  - download_requester
3225
3277
  - status_extractor
3226
- - urls_extractor
3278
+ - download_target_extractor
3227
3279
  properties:
3228
3280
  type:
3229
3281
  type: string
@@ -3240,7 +3292,7 @@ definitions:
3240
3292
  anyOf:
3241
3293
  - "$ref": "#/definitions/CustomRecordExtractor"
3242
3294
  - "$ref": "#/definitions/DpathExtractor"
3243
- urls_extractor:
3295
+ download_target_extractor:
3244
3296
  description: Responsible for fetching the final result `urls` provided by the completed / finished / ready async job.
3245
3297
  anyOf:
3246
3298
  - "$ref": "#/definitions/CustomRecordExtractor"
@@ -3261,7 +3313,7 @@ definitions:
3261
3313
  anyOf:
3262
3314
  - "$ref": "#/definitions/CustomRequester"
3263
3315
  - "$ref": "#/definitions/HttpRequester"
3264
- url_requester:
3316
+ download_target_requester:
3265
3317
  description: Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.
3266
3318
  anyOf:
3267
3319
  - "$ref": "#/definitions/CustomRequester"
@@ -3667,6 +3719,21 @@ interpolation:
3667
3719
  self: https://api.sendgrid.com/v3/marketing/lists?page_size=1&page_token=
3668
3720
  next: https://api.sendgrid.com/v3/marketing/lists?page_size=1&page_token=0236d6d2
3669
3721
  count: 82
3722
+ - title: creation_response
3723
+ description: The response received from the creation_requester in the AsyncRetriever component.
3724
+ type: object
3725
+ examples:
3726
+ - id: "1234"
3727
+ - title: polling_response
3728
+ description: The response received from the polling_requester in the AsyncRetriever component.
3729
+ type: object
3730
+ examples:
3731
+ - id: "1234"
3732
+ - title: download_target
3733
+ description: The `URL` received from the polling_requester in the AsyncRetriever with jobStatus as `COMPLETED`.
3734
+ type: string
3735
+ examples:
3736
+ - "https://api.sendgrid.com/v3/marketing/lists?page_size=1&page_token=0236d6d2&filename=xxx_yyy_zzz.csv"
3670
3737
  - title: stream_interval
3671
3738
  description: The current stream interval being processed. The keys are defined by the incremental sync component. Default keys are `start_time` and `end_time`.
3672
3739
  type: object
@@ -5,7 +5,7 @@ import json
5
5
  import logging
6
6
  from abc import ABC, abstractmethod
7
7
  from dataclasses import dataclass
8
- from io import BufferedIOBase, BytesIO, TextIOWrapper
8
+ from io import BufferedIOBase, TextIOWrapper
9
9
  from typing import Any, Generator, MutableMapping, Optional
10
10
 
11
11
  import orjson
@@ -124,8 +124,7 @@ class CsvParser(Parser):
124
124
  """
125
125
  Parse CSV data from decompressed bytes.
126
126
  """
127
- bytes_data = BytesIO(data.read())
128
- text_data = TextIOWrapper(bytes_data, encoding=self.encoding) # type: ignore
127
+ text_data = TextIOWrapper(data, encoding=self.encoding) # type: ignore
129
128
  reader = csv.DictReader(text_data, delimiter=self._get_delimiter() or ",")
130
129
  for row in reader:
131
130
  yield row
@@ -173,6 +173,8 @@ def format_datetime(
173
173
  )
174
174
  if format == "%s":
175
175
  return str(int(dt_datetime.timestamp()))
176
+ elif format == "%ms":
177
+ return str(int(dt_datetime.timestamp() * 1_000_000))
176
178
  return dt_datetime.strftime(format)
177
179
 
178
180
 
@@ -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
  )
@@ -1508,6 +1508,28 @@ class AuthFlow(BaseModel):
1508
1508
  oauth_config_specification: Optional[OAuthConfigSpecification] = None
1509
1509
 
1510
1510
 
1511
+ class IncrementingCountCursor(BaseModel):
1512
+ type: Literal["IncrementingCountCursor"]
1513
+ cursor_field: str = Field(
1514
+ ...,
1515
+ description="The location of the value on a record that will be used as a bookmark during sync. To ensure no data loss, the API must return records in ascending order based on the cursor field. Nested fields are not supported, so the field must be at the top level of the record. You can use a combination of Add Field and Remove Field transformations to move the nested field to the top.",
1516
+ examples=["created_at", "{{ config['record_cursor'] }}"],
1517
+ title="Cursor Field",
1518
+ )
1519
+ start_value: Optional[Union[str, int]] = Field(
1520
+ None,
1521
+ description="The value that determines the earliest record that should be synced.",
1522
+ examples=[0, "{{ config['start_value'] }}"],
1523
+ title="Start Value",
1524
+ )
1525
+ start_value_option: Optional[RequestOption] = Field(
1526
+ None,
1527
+ description="Optionally configures how the start value will be sent in requests to the source API.",
1528
+ title="Inject Start Value Into Outgoing HTTP Request",
1529
+ )
1530
+ parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
1531
+
1532
+
1511
1533
  class DatetimeBasedCursor(BaseModel):
1512
1534
  type: Literal["DatetimeBasedCursor"]
1513
1535
  clamping: Optional[Clamping] = Field(
@@ -1523,7 +1545,7 @@ class DatetimeBasedCursor(BaseModel):
1523
1545
  )
1524
1546
  datetime_format: str = Field(
1525
1547
  ...,
1526
- 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",
1527
1549
  examples=["%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%d", "%s", "%ms", "%s_as_float"],
1528
1550
  title="Outgoing Datetime Format",
1529
1551
  )
@@ -1948,7 +1970,9 @@ class DeclarativeStream(BaseModel):
1948
1970
  description="Component used to coordinate how records are extracted across stream slices and request pages.",
1949
1971
  title="Retriever",
1950
1972
  )
1951
- incremental_sync: Optional[Union[CustomIncrementalSync, DatetimeBasedCursor]] = Field(
1973
+ incremental_sync: Optional[
1974
+ Union[CustomIncrementalSync, DatetimeBasedCursor, IncrementingCountCursor]
1975
+ ] = Field(
1952
1976
  None,
1953
1977
  description="Component used to fetch data incrementally based on a time field in the data.",
1954
1978
  title="Incremental Sync",
@@ -2048,12 +2072,14 @@ class HttpRequester(BaseModel):
2048
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.",
2049
2073
  examples=[
2050
2074
  "https://connect.squareup.com/v2",
2051
- "{{ 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'] }}",
2052
2078
  ],
2053
2079
  title="API Base URL",
2054
2080
  )
2055
- path: str = Field(
2056
- ...,
2081
+ path: Optional[str] = Field(
2082
+ None,
2057
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.",
2058
2084
  examples=[
2059
2085
  "/products",
@@ -2263,7 +2289,7 @@ class AsyncRetriever(BaseModel):
2263
2289
  status_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field(
2264
2290
  ..., description="Responsible for fetching the actual status of the async job."
2265
2291
  )
2266
- urls_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field(
2292
+ download_target_extractor: Union[CustomRecordExtractor, DpathExtractor] = Field(
2267
2293
  ...,
2268
2294
  description="Responsible for fetching the final result `urls` provided by the completed / finished / ready async job.",
2269
2295
  )
@@ -2278,7 +2304,7 @@ class AsyncRetriever(BaseModel):
2278
2304
  ...,
2279
2305
  description="Requester component that describes how to prepare HTTP requests to send to the source API to fetch the status of the running async job.",
2280
2306
  )
2281
- url_requester: Optional[Union[CustomRequester, HttpRequester]] = Field(
2307
+ download_target_requester: Optional[Union[CustomRequester, HttpRequester]] = Field(
2282
2308
  None,
2283
2309
  description="Requester component that describes how to prepare HTTP requests to send to the source API to extract the url from polling response by the completed async job.",
2284
2310
  )
@@ -45,7 +45,7 @@ class AirbyteCustomCodeNotPermittedError(Exception):
45
45
  def _hash_text(input_text: str, hash_type: str = "md5") -> str:
46
46
  """Return the hash of the input text using the specified hash type."""
47
47
  if not input_text:
48
- raise ValueError("Input text cannot be empty.")
48
+ raise ValueError("Hash input text cannot be empty.")
49
49
 
50
50
  hash_object = CHECKSUM_FUNCTIONS[hash_type]()
51
51
  hash_object.update(input_text.encode())
@@ -68,6 +68,10 @@ def validate_python_code(
68
68
 
69
69
  Currently we fail if no checksums are provided, although this may change in the future.
70
70
  """
71
+ if not code_text:
72
+ # No code provided, nothing to validate.
73
+ return
74
+
71
75
  if not checksums:
72
76
  raise ValueError(f"A checksum is required to validate the code. Received: {checksums}")
73
77
 
@@ -77,8 +81,18 @@ def validate_python_code(
77
81
  f"Unsupported checksum type: {checksum_type}. Supported checksum types are: {CHECKSUM_FUNCTIONS.keys()}"
78
82
  )
79
83
 
80
- if _hash_text(code_text, checksum_type) != checksum:
81
- raise AirbyteCodeTamperedError(f"{checksum_type} checksum does not match.")
84
+ calculated_checksum = _hash_text(code_text, checksum_type)
85
+ if calculated_checksum != checksum:
86
+ raise AirbyteCodeTamperedError(
87
+ f"{checksum_type} checksum does not match."
88
+ + str(
89
+ {
90
+ "expected_checksum": checksum,
91
+ "actual_checksum": calculated_checksum,
92
+ "code_text": code_text,
93
+ }
94
+ ),
95
+ )
82
96
 
83
97
 
84
98
  def get_registered_components_module(
@@ -94,7 +108,7 @@ def get_registered_components_module(
94
108
 
95
109
  Returns `None` if no components is provided and the `components` module is not found.
96
110
  """
97
- if config and INJECTED_COMPONENTS_PY in config:
111
+ if config and config.get(INJECTED_COMPONENTS_PY, None):
98
112
  if not custom_code_execution_permitted():
99
113
  raise AirbyteCustomCodeNotPermittedError
100
114