airbyte-cdk 0.31.1__tar.gz → 0.33.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (270) hide show
  1. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/PKG-INFO +1 -1
  2. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector_builder/message_grouper.py +13 -5
  3. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/abstract_source.py +3 -7
  4. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/declarative_component_schema.yaml +143 -0
  5. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +83 -4
  6. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py +6 -1
  7. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/spec/spec.py +5 -0
  8. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk.egg-info/PKG-INFO +1 -1
  9. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/setup.py +1 -1
  10. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/parsers/test_model_to_component_factory.py +4 -0
  11. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/test_abstract_source.py +6 -8
  12. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/LICENSE.txt +0 -0
  13. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/README.md +0 -0
  14. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/__init__.py +0 -0
  15. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/config_observation.py +0 -0
  16. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector.py +0 -0
  17. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector_builder/__init__.py +0 -0
  18. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector_builder/connector_builder_handler.py +0 -0
  19. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector_builder/main.py +0 -0
  20. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/connector_builder/models.py +0 -0
  21. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/destinations/__init__.py +0 -0
  22. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/destinations/destination.py +0 -0
  23. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/entrypoint.py +0 -0
  24. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/exception_handler.py +0 -0
  25. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/logger.py +0 -0
  26. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/models/__init__.py +0 -0
  27. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/models/airbyte_protocol.py +0 -0
  28. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/models/well_known_types.py +0 -0
  29. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/py.typed +0 -0
  30. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/__init__.py +0 -0
  31. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/config.py +0 -0
  32. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/connector_state_manager.py +0 -0
  33. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/__init__.py +0 -0
  34. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/auth/__init__.py +0 -0
  35. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/auth/declarative_authenticator.py +0 -0
  36. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/auth/oauth.py +0 -0
  37. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/auth/token.py +0 -0
  38. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/checks/__init__.py +0 -0
  39. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/checks/check_stream.py +0 -0
  40. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/checks/connection_checker.py +0 -0
  41. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/create_partial.py +0 -0
  42. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/datetime/__init__.py +0 -0
  43. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/datetime/datetime_parser.py +0 -0
  44. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/datetime/min_max_datetime.py +0 -0
  45. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/declarative_source.py +0 -0
  46. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/declarative_stream.py +0 -0
  47. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/decoders/__init__.py +0 -0
  48. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/decoders/decoder.py +0 -0
  49. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/decoders/json_decoder.py +0 -0
  50. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/exceptions.py +0 -0
  51. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/__init__.py +0 -0
  52. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/dpath_extractor.py +0 -0
  53. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/http_selector.py +0 -0
  54. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/record_extractor.py +0 -0
  55. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/record_filter.py +0 -0
  56. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/extractors/record_selector.py +0 -0
  57. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/incremental/__init__.py +0 -0
  58. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py +0 -0
  59. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/__init__.py +0 -0
  60. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/filters.py +0 -0
  61. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_boolean.py +0 -0
  62. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py +0 -0
  63. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/interpolated_string.py +0 -0
  64. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/interpolation.py +0 -0
  65. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/jinja.py +0 -0
  66. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/interpolation/macros.py +0 -0
  67. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/manifest_declarative_source.py +0 -0
  68. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/models/__init__.py +0 -0
  69. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/__init__.py +0 -0
  70. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/class_types_registry.py +0 -0
  71. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/custom_exceptions.py +0 -0
  72. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py +0 -0
  73. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py +0 -0
  74. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py +0 -0
  75. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/partition_routers/__init__.py +0 -0
  76. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py +0 -0
  77. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py +0 -0
  78. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py +0 -0
  79. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/__init__.py +0 -0
  80. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  81. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  82. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/constant_backoff_strategy.py +0 -0
  83. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/exponential_backoff_strategy.py +0 -0
  84. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/header_helper.py +0 -0
  85. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_time_from_header_backoff_strategy.py +0 -0
  86. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategies/wait_until_time_from_header_backoff_strategy.py +0 -0
  87. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/backoff_strategy.py +0 -0
  88. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/composite_error_handler.py +0 -0
  89. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/default_error_handler.py +0 -0
  90. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py +0 -0
  91. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py +0 -0
  92. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/response_action.py +0 -0
  93. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/error_handlers/response_status.py +0 -0
  94. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/http_requester.py +0 -0
  95. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/__init__.py +0 -0
  96. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py +0 -0
  97. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py +0 -0
  98. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/paginator.py +0 -0
  99. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/__init__.py +0 -0
  100. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/cursor_pagination_strategy.py +0 -0
  101. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/offset_increment.py +0 -0
  102. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/page_increment.py +0 -0
  103. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/paginators/strategies/pagination_strategy.py +0 -0
  104. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_option.py +0 -0
  105. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_options/__init__.py +0 -0
  106. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_input_provider.py +0 -0
  107. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_options/interpolated_request_options_provider.py +0 -0
  108. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_options/request_options_provider.py +0 -0
  109. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/request_path.py +0 -0
  110. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/requesters/requester.py +0 -0
  111. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/retrievers/__init__.py +0 -0
  112. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/retrievers/retriever.py +0 -0
  113. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/retrievers/simple_retriever.py +0 -0
  114. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/schema/__init__.py +0 -0
  115. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/schema/default_schema_loader.py +0 -0
  116. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/schema/inline_schema_loader.py +0 -0
  117. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py +0 -0
  118. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/schema/schema_loader.py +0 -0
  119. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/spec/__init__.py +0 -0
  120. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/stream_slicers/__init__.py +0 -0
  121. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/stream_slicers/cartesian_product_stream_slicer.py +0 -0
  122. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py +0 -0
  123. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/transformations/__init__.py +0 -0
  124. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/transformations/add_fields.py +0 -0
  125. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/transformations/remove_fields.py +0 -0
  126. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/transformations/transformation.py +0 -0
  127. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/types.py +0 -0
  128. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/declarative/yaml_declarative_source.py +0 -0
  129. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/deprecated/__init__.py +0 -0
  130. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/deprecated/base_source.py +0 -0
  131. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/deprecated/client.py +0 -0
  132. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/singer/__init__.py +0 -0
  133. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/singer/singer_helpers.py +0 -0
  134. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/singer/source.py +0 -0
  135. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/source.py +0 -0
  136. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/__init__.py +0 -0
  137. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/availability_strategy.py +0 -0
  138. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/core.py +0 -0
  139. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/__init__.py +0 -0
  140. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/auth/__init__.py +0 -0
  141. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/auth/core.py +0 -0
  142. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/auth/oauth.py +0 -0
  143. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/auth/token.py +0 -0
  144. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/availability_strategy.py +0 -0
  145. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/exceptions.py +0 -0
  146. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/http.py +0 -0
  147. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/rate_limiting.py +0 -0
  148. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py +0 -0
  149. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py +0 -0
  150. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py +0 -0
  151. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py +0 -0
  152. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/http/requests_native_auth/token.py +0 -0
  153. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/utils/__init__.py +0 -0
  154. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/streams/utils/stream_helper.py +0 -0
  155. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/__init__.py +0 -0
  156. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/casing.py +0 -0
  157. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/catalog_helpers.py +0 -0
  158. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/record_helper.py +0 -0
  159. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/schema_helpers.py +0 -0
  160. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/schema_models.py +0 -0
  161. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/sources/utils/transform.py +0 -0
  162. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/utils/__init__.py +0 -0
  163. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/utils/airbyte_secrets_utils.py +0 -0
  164. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/utils/event_timing.py +0 -0
  165. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/utils/schema_inferrer.py +0 -0
  166. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk/utils/traced_exception.py +0 -0
  167. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk.egg-info/SOURCES.txt +0 -0
  168. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk.egg-info/dependency_links.txt +0 -0
  169. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk.egg-info/requires.txt +0 -0
  170. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/airbyte_cdk.egg-info/top_level.txt +0 -0
  171. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/pyproject.toml +0 -0
  172. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/setup.cfg +0 -0
  173. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/source_declarative_manifest/__init__.py +0 -0
  174. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/source_declarative_manifest/main.py +0 -0
  175. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/connector_builder/__init__.py +0 -0
  176. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/connector_builder/test_connector_builder_handler.py +0 -0
  177. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/connector_builder/test_message_grouper.py +0 -0
  178. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/connector_builder/utils.py +0 -0
  179. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/destinations/__init__.py +0 -0
  180. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/destinations/test_destination.py +0 -0
  181. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/singer/__init__.py +0 -0
  182. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/singer/test_singer_helpers.py +0 -0
  183. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/singer/test_singer_source.py +0 -0
  184. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/__init__.py +0 -0
  185. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/__init__.py +0 -0
  186. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/auth/__init__.py +0 -0
  187. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/auth/test_oauth.py +0 -0
  188. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/auth/test_session_token_auth.py +0 -0
  189. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/auth/test_token_auth.py +0 -0
  190. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/checks/__init__.py +0 -0
  191. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/checks/test_check_stream.py +0 -0
  192. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/decoders/__init__.py +0 -0
  193. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/decoders/test_json_decoder.py +0 -0
  194. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/external_component.py +0 -0
  195. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/extractors/__init__.py +0 -0
  196. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/extractors/test_dpath_extractor.py +0 -0
  197. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/extractors/test_record_filter.py +0 -0
  198. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/extractors/test_record_selector.py +0 -0
  199. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/incremental/__init__.py +0 -0
  200. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/incremental/test_datetime_based_cursor.py +0 -0
  201. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/__init__.py +0 -0
  202. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_filters.py +0 -0
  203. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_interpolated_boolean.py +0 -0
  204. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_interpolated_mapping.py +0 -0
  205. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_interpolated_string.py +0 -0
  206. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_jinja.py +0 -0
  207. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/interpolation/test_macros.py +0 -0
  208. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/parsers/__init__.py +0 -0
  209. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/parsers/test_manifest_component_transformer.py +0 -0
  210. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/parsers/test_manifest_reference_resolver.py +0 -0
  211. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/parsers/testing_components.py +0 -0
  212. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/partition_routers/__init__.py +0 -0
  213. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/partition_routers/test_list_partition_router.py +0 -0
  214. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/partition_routers/test_single_partition_router.py +0 -0
  215. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/partition_routers/test_substream_partition_router.py +0 -0
  216. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/__init__.py +0 -0
  217. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/__init__.py +0 -0
  218. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/__init__.py +0 -0
  219. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_constant_backoff.py +0 -0
  220. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_exponential_backoff.py +0 -0
  221. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_header_helper.py +0 -0
  222. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_wait_time_from_header.py +0 -0
  223. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/backoff_strategies/test_wait_until_time_from_header.py +0 -0
  224. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/test_composite_error_handler.py +0 -0
  225. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/test_default_error_handler.py +0 -0
  226. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/test_http_response_filter.py +0 -0
  227. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/error_handlers/test_response_status.py +0 -0
  228. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/__init__.py +0 -0
  229. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_cursor_pagination_strategy.py +0 -0
  230. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_default_paginator.py +0 -0
  231. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_no_paginator.py +0 -0
  232. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_offset_increment.py +0 -0
  233. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_page_increment.py +0 -0
  234. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/paginators/test_request_option.py +0 -0
  235. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/request_options/__init__.py +0 -0
  236. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/request_options/test_interpolated_request_options_provider.py +0 -0
  237. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/test_http_requester.py +0 -0
  238. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/requesters/test_interpolated_request_input_provider.py +0 -0
  239. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/retrievers/__init__.py +0 -0
  240. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/retrievers/test_simple_retriever.py +0 -0
  241. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/__init__.py +0 -0
  242. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/source_test/SourceTest.py +0 -0
  243. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/source_test/__init__.py +0 -0
  244. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/test_default_schema_loader.py +0 -0
  245. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/test_inline_schema_loader.py +0 -0
  246. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/schema/test_json_file_schema_loader.py +0 -0
  247. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/states/__init__.py +0 -0
  248. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/stream_slicers/__init__.py +0 -0
  249. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/stream_slicers/test_cartesian_product_stream_slicer.py +0 -0
  250. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/test_create_partial.py +0 -0
  251. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/test_declarative_stream.py +0 -0
  252. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/test_manifest_declarative_source.py +0 -0
  253. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/declarative/test_yaml_declarative_source.py +0 -0
  254. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/__init__.py +0 -0
  255. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/__init__.py +0 -0
  256. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/auth/__init__.py +0 -0
  257. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/auth/test_auth.py +0 -0
  258. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/requests_native_auth/__init__.py +0 -0
  259. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/requests_native_auth/test_requests_native_auth.py +0 -0
  260. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/test_availability_strategy.py +0 -0
  261. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/http/test_http.py +0 -0
  262. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/test_availability_strategy.py +0 -0
  263. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/streams/test_streams_core.py +0 -0
  264. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/test_config.py +0 -0
  265. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/test_connector_state_manager.py +0 -0
  266. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/sources/test_source.py +0 -0
  267. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/utils/__init__.py +0 -0
  268. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/utils/test_schema_inferrer.py +0 -0
  269. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/utils/test_secret_utils.py +0 -0
  270. {airbyte-cdk-0.31.1 → airbyte-cdk-0.33.0}/unit_tests/utils/test_traced_exception.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 0.31.1
3
+ Version: 0.33.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://github.com/airbytehq/airbyte
6
6
  Author: Airbyte
@@ -6,10 +6,18 @@ import json
6
6
  import logging
7
7
  from copy import deepcopy
8
8
  from json import JSONDecodeError
9
- from typing import Any, Iterable, Iterator, Mapping, Optional, Union
9
+ from typing import Any, Iterable, Iterator, List, Mapping, Optional, Union
10
10
  from urllib.parse import parse_qs, urlparse
11
11
 
12
- from airbyte_cdk.connector_builder.models import HttpRequest, HttpResponse, LogMessage, StreamRead, StreamReadPages, StreamReadSlices
12
+ from airbyte_cdk.connector_builder.models import (
13
+ HttpRequest,
14
+ HttpResponse,
15
+ LogMessage,
16
+ StreamRead,
17
+ StreamReadPages,
18
+ StreamReadSlices,
19
+ StreamReadSlicesInner,
20
+ )
13
21
  from airbyte_cdk.sources.declarative.declarative_source import DeclarativeSource
14
22
  from airbyte_cdk.utils import AirbyteTracedException
15
23
  from airbyte_cdk.utils.schema_inferrer import SchemaInferrer
@@ -133,7 +141,7 @@ class MessageGrouper:
133
141
  yield StreamReadSlices(pages=current_slice_pages)
134
142
 
135
143
  @staticmethod
136
- def _need_to_close_page(at_least_one_page_in_group, message) -> bool:
144
+ def _need_to_close_page(at_least_one_page_in_group: bool, message: AirbyteMessage) -> bool:
137
145
  return (
138
146
  at_least_one_page_in_group
139
147
  and message.type == MessageType.LOG
@@ -155,7 +163,7 @@ class MessageGrouper:
155
163
  )
156
164
  current_page_records.clear()
157
165
 
158
- def _read_stream(self, source, config, configured_catalog) -> Iterator[AirbyteMessage]:
166
+ def _read_stream(self, source: DeclarativeSource, config: Mapping[str, Any], configured_catalog: ConfiguredAirbyteCatalog) -> Iterator[AirbyteMessage]:
159
167
  # the generator can raise an exception
160
168
  # iterate over the generated messages. if next raise an exception, catch it and yield it as an AirbyteLogMessage
161
169
  try:
@@ -198,7 +206,7 @@ class MessageGrouper:
198
206
  self.logger.warning(f"Failed to parse log message into response object with error: {error}")
199
207
  return None
200
208
 
201
- def _has_reached_limit(self, slices):
209
+ def _has_reached_limit(self, slices: List[StreamReadSlicesInner]):
202
210
  if len(slices) >= self._max_slices:
203
211
  return True
204
212
 
@@ -79,13 +79,9 @@ class AbstractSource(Source, ABC):
79
79
  """Implements the Check Connection operation from the Airbyte Specification.
80
80
  See https://docs.airbyte.com/understanding-airbyte/airbyte-protocol/#check.
81
81
  """
82
- try:
83
- check_succeeded, error = self.check_connection(logger, config)
84
- if not check_succeeded:
85
- return AirbyteConnectionStatus(status=Status.FAILED, message=repr(error))
86
- except Exception as e:
87
- return AirbyteConnectionStatus(status=Status.FAILED, message=repr(e))
88
-
82
+ check_succeeded, error = self.check_connection(logger, config)
83
+ if not check_succeeded:
84
+ return AirbyteConnectionStatus(status=Status.FAILED, message=repr(error))
89
85
  return AirbyteConnectionStatus(status=Status.SUCCEEDED)
90
86
 
91
87
  def read(
@@ -1043,6 +1043,149 @@ definitions:
1043
1043
  additionalProperties: true
1044
1044
  documentation_url:
1045
1045
  type: string
1046
+ advanced_auth:
1047
+ "$ref": "#/definitions/AuthFlow"
1048
+ AuthFlow:
1049
+ title: "Auth flow"
1050
+ type: object
1051
+ description: |-
1052
+ Additional and optional specification object to describe what an 'advanced' Auth flow would need to function.
1053
+ - A connector should be able to fully function with the configuration as described by the ConnectorSpecification in a 'basic' mode.
1054
+ - The 'advanced' mode provides easier UX for the user with UI improvements and automations. However, this requires further setup on the
1055
+ server side by instance or workspace admins beforehand. The trade-off is that the user does not have to provide as many technical
1056
+ inputs anymore and the auth process is faster and easier to complete.
1057
+ properties:
1058
+ auth_flow_type:
1059
+ title: "Auth flow type"
1060
+ description: "The type of auth to use"
1061
+ type: string
1062
+ enum: ["oauth2.0", "oauth1.0"] # Future auth types should be added here
1063
+ predicate_key:
1064
+ title: "Predicate key"
1065
+ description: Json Path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.
1066
+ type: array
1067
+ items:
1068
+ type: string
1069
+ examples:
1070
+ - ["credentials", "auth_type"]
1071
+ predicate_value:
1072
+ title: "Predicate value"
1073
+ description: Value of the predicate_key fields for the advanced auth to be applicable.
1074
+ type: string
1075
+ examples:
1076
+ - "Oauth"
1077
+ oauth_config_specification:
1078
+ "$ref": "#/definitions/OAuthConfigSpecification"
1079
+ OAuthConfigSpecification:
1080
+ type: object
1081
+ additionalProperties: true
1082
+ properties:
1083
+ oauth_user_input_from_connector_config_specification:
1084
+ title: "OAuth user input"
1085
+ description: |-
1086
+ OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.
1087
+ Must be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification
1088
+ using special annotation 'path_in_connector_config'.
1089
+ These are input values the user is entering through the UI to authenticate to the connector, that might also shared
1090
+ as inputs for syncing data via the connector.
1091
+ Examples:
1092
+ if no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]
1093
+ if connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,
1094
+ oauth_user_input_from_connector_config_specification={
1095
+ app_id: {
1096
+ type: string
1097
+ path_in_connector_config: ['app_id']
1098
+ }
1099
+ }
1100
+ if connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,
1101
+ oauth_user_input_from_connector_config_specification={
1102
+ app_id: {
1103
+ type: string
1104
+ path_in_connector_config: ['info', 'app_id']
1105
+ }
1106
+ }
1107
+ type: object
1108
+ examples:
1109
+ - app_id:
1110
+ type: string
1111
+ path_in_connector_config: ["app_id"]
1112
+ - app_id:
1113
+ type: string
1114
+ path_in_connector_config: ["info", "app_id"]
1115
+ complete_oauth_output_specification:
1116
+ title: "OAuth output specification"
1117
+ description: |-
1118
+ OAuth specific blob. This is a Json Schema used to validate Json configurations produced by the OAuth flows as they are
1119
+ returned by the distant OAuth APIs.
1120
+ Must be a valid JSON describing the fields to merge back to `ConnectorSpecification.connectionSpecification`.
1121
+ For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
1122
+ Examples:
1123
+ complete_oauth_output_specification={
1124
+ refresh_token: {
1125
+ type: string,
1126
+ path_in_connector_config: ['credentials', 'refresh_token']
1127
+ }
1128
+ }
1129
+ type: object
1130
+ additionalProperties: true
1131
+ examples:
1132
+ - refresh_token:
1133
+ type: string,
1134
+ path_in_connector_config: ["credentials", "refresh_token"]
1135
+ complete_oauth_server_input_specification:
1136
+ title: "OAuth input specification"
1137
+ description: |-
1138
+ OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.
1139
+ Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
1140
+ server when completing an OAuth flow (typically exchanging an auth code for refresh token).
1141
+ Examples:
1142
+ complete_oauth_server_input_specification={
1143
+ client_id: {
1144
+ type: string
1145
+ },
1146
+ client_secret: {
1147
+ type: string
1148
+ }
1149
+ }
1150
+ type: object
1151
+ additionalProperties: true
1152
+ examples:
1153
+ - client_id:
1154
+ type: string
1155
+ client_secret:
1156
+ type: string
1157
+ complete_oauth_server_output_specification:
1158
+ title: "OAuth server output specification"
1159
+ description: |-
1160
+ OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations that
1161
+ also need to be merged back into the connector configuration at runtime.
1162
+ This is a subset configuration of `complete_oauth_server_input_specification` that filters fields out to retain only the ones that
1163
+ are necessary for the connector to function with OAuth. (some fields could be used during oauth flows but not needed afterwards, therefore
1164
+ they would be listed in the `complete_oauth_server_input_specification` but not `complete_oauth_server_output_specification`)
1165
+ Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
1166
+ connector when using OAuth flow APIs.
1167
+ These fields are to be merged back to `ConnectorSpecification.connectionSpecification`.
1168
+ For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
1169
+ Examples:
1170
+ complete_oauth_server_output_specification={
1171
+ client_id: {
1172
+ type: string,
1173
+ path_in_connector_config: ['credentials', 'client_id']
1174
+ },
1175
+ client_secret: {
1176
+ type: string,
1177
+ path_in_connector_config: ['credentials', 'client_secret']
1178
+ }
1179
+ }
1180
+ type: object
1181
+ additionalProperties: true
1182
+ examples:
1183
+ - client_id:
1184
+ type: string,
1185
+ path_in_connector_config: ["credentials", "client_id"]
1186
+ client_secret:
1187
+ type: string,
1188
+ path_in_connector_config: ["credentials", "client_secret"]
1046
1189
  SubstreamPartitionRouter:
1047
1190
  description: Partition router that is used to retrieve records that have been partitioned according to records from the specified parent streams
1048
1191
  type: object
@@ -309,10 +309,65 @@ class SessionTokenAuthenticator(BaseModel):
309
309
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
310
310
 
311
311
 
312
- class Spec(BaseModel):
313
- type: Literal["Spec"]
314
- connection_specification: Dict[str, Any]
315
- documentation_url: Optional[str] = None
312
+ class AuthFlowType(Enum):
313
+ oauth2_0 = "oauth2.0"
314
+ oauth1_0 = "oauth1.0"
315
+
316
+
317
+ class OAuthConfigSpecification(BaseModel):
318
+ class Config:
319
+ extra = Extra.allow
320
+
321
+ oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = Field(
322
+ None,
323
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.\nMust be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification\nusing special annotation 'path_in_connector_config'.\nThese are input values the user is entering through the UI to authenticate to the connector, that might also shared\nas inputs for syncing data via the connector.\nExamples:\nif no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]\nif connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['app_id']\n }\n }\nif connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['info', 'app_id']\n }\n }",
324
+ examples=[
325
+ {"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
326
+ {
327
+ "app_id": {
328
+ "type": "string",
329
+ "path_in_connector_config": ["info", "app_id"],
330
+ }
331
+ },
332
+ ],
333
+ title="OAuth user input",
334
+ )
335
+ complete_oauth_output_specification: Optional[Dict[str, Any]] = Field(
336
+ None,
337
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations produced by the OAuth flows as they are\nreturned by the distant OAuth APIs.\nMust be a valid JSON describing the fields to merge back to `ConnectorSpecification.connectionSpecification`.\nFor each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,\nExamples:\n complete_oauth_output_specification={\n refresh_token: {\n type: string,\n path_in_connector_config: ['credentials', 'refresh_token']\n }\n }",
338
+ examples=[
339
+ {
340
+ "refresh_token": {
341
+ "type": "string,",
342
+ "path_in_connector_config": ["credentials", "refresh_token"],
343
+ }
344
+ }
345
+ ],
346
+ title="OAuth output specification",
347
+ )
348
+ complete_oauth_server_input_specification: Optional[Dict[str, Any]] = Field(
349
+ None,
350
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.\nMust be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the\nserver when completing an OAuth flow (typically exchanging an auth code for refresh token).\nExamples:\n complete_oauth_server_input_specification={\n client_id: {\n type: string\n },\n client_secret: {\n type: string\n }\n }",
351
+ examples=[{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}],
352
+ title="OAuth input specification",
353
+ )
354
+ complete_oauth_server_output_specification: Optional[Dict[str, Any]] = Field(
355
+ None,
356
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations that\nalso need to be merged back into the connector configuration at runtime.\nThis is a subset configuration of `complete_oauth_server_input_specification` that filters fields out to retain only the ones that\nare necessary for the connector to function with OAuth. (some fields could be used during oauth flows but not needed afterwards, therefore\nthey would be listed in the `complete_oauth_server_input_specification` but not `complete_oauth_server_output_specification`)\nMust be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the\nconnector when using OAuth flow APIs.\nThese fields are to be merged back to `ConnectorSpecification.connectionSpecification`.\nFor each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,\nExamples:\n complete_oauth_server_output_specification={\n client_id: {\n type: string,\n path_in_connector_config: ['credentials', 'client_id']\n },\n client_secret: {\n type: string,\n path_in_connector_config: ['credentials', 'client_secret']\n }\n }",
357
+ examples=[
358
+ {
359
+ "client_id": {
360
+ "type": "string,",
361
+ "path_in_connector_config": ["credentials", "client_id"],
362
+ },
363
+ "client_secret": {
364
+ "type": "string,",
365
+ "path_in_connector_config": ["credentials", "client_secret"],
366
+ },
367
+ }
368
+ ],
369
+ title="OAuth server output specification",
370
+ )
316
371
 
317
372
 
318
373
  class WaitTimeFromHeader(BaseModel):
@@ -419,6 +474,23 @@ class RecordSelector(BaseModel):
419
474
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
420
475
 
421
476
 
477
+ class AuthFlow(BaseModel):
478
+ auth_flow_type: Optional[AuthFlowType] = Field(None, description="The type of auth to use", title="Auth flow type")
479
+ predicate_key: Optional[List[str]] = Field(
480
+ None,
481
+ description="Json Path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.",
482
+ examples=[["credentials", "auth_type"]],
483
+ title="Predicate key",
484
+ )
485
+ predicate_value: Optional[str] = Field(
486
+ None,
487
+ description="Value of the predicate_key fields for the advanced auth to be applicable.",
488
+ examples=["Oauth"],
489
+ title="Predicate value",
490
+ )
491
+ oauth_config_specification: Optional[OAuthConfigSpecification] = None
492
+
493
+
422
494
  class CompositeErrorHandler(BaseModel):
423
495
  type: Literal["CompositeErrorHandler"]
424
496
  error_handlers: List[Union[CompositeErrorHandler, DefaultErrorHandler]]
@@ -469,6 +541,13 @@ class HttpRequester(BaseModel):
469
541
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
470
542
 
471
543
 
544
+ class Spec(BaseModel):
545
+ type: Literal["Spec"]
546
+ connection_specification: Dict[str, Any]
547
+ documentation_url: Optional[str] = None
548
+ advanced_auth: Optional[AuthFlow] = None
549
+
550
+
472
551
  class DeclarativeSource(BaseModel):
473
552
  class Config:
474
553
  extra = Extra.forbid
@@ -759,7 +759,12 @@ class ModelToComponentFactory:
759
759
 
760
760
  @staticmethod
761
761
  def create_spec(model: SpecModel, config: Config, **kwargs) -> Spec:
762
- return Spec(connection_specification=model.connection_specification, documentation_url=model.documentation_url, parameters={})
762
+ return Spec(
763
+ connection_specification=model.connection_specification,
764
+ documentation_url=model.documentation_url,
765
+ advanced_auth=model.advanced_auth,
766
+ parameters={},
767
+ )
763
768
 
764
769
  def create_substream_partition_router(self, model: SubstreamPartitionRouterModel, config: Config, **kwargs) -> SubstreamPartitionRouter:
765
770
  parent_stream_configs = []
@@ -6,6 +6,7 @@ from dataclasses import InitVar, dataclass
6
6
  from typing import Any, Mapping, Optional
7
7
 
8
8
  from airbyte_cdk.models.airbyte_protocol import ConnectorSpecification
9
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import AuthFlow
9
10
 
10
11
 
11
12
  @dataclass
@@ -21,6 +22,7 @@ class Spec:
21
22
  connection_specification: Mapping[str, Any]
22
23
  parameters: InitVar[Mapping[str, Any]]
23
24
  documentation_url: Optional[str] = None
25
+ advanced_auth: Optional[AuthFlow] = None
24
26
 
25
27
  def generate_spec(self) -> ConnectorSpecification:
26
28
  """
@@ -31,6 +33,9 @@ class Spec:
31
33
 
32
34
  if self.documentation_url:
33
35
  obj["documentationUrl"] = self.documentation_url
36
+ if self.advanced_auth:
37
+ obj["advanced_auth"] = self.advanced_auth
38
+ obj["advanced_auth"].auth_flow_type = obj["advanced_auth"].auth_flow_type.value # Get enum value
34
39
 
35
40
  # We remap these keys to camel case because that's the existing format expected by the rest of the platform
36
41
  return ConnectorSpecification.parse_obj(obj)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 0.31.1
3
+ Version: 0.33.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://github.com/airbytehq/airbyte
6
6
  Author: Airbyte
@@ -17,7 +17,7 @@ setup(
17
17
  name="airbyte-cdk",
18
18
  # The version of the airbyte-cdk package is used at runtime to validate manifests. That validation must be
19
19
  # updated if our semver format changes such as using release candidate versions.
20
- version="0.31.1",
20
+ version="0.33.0",
21
21
  description="A framework for writing Airbyte Connectors.",
22
22
  long_description=README,
23
23
  long_description_content_type="text/markdown",
@@ -172,6 +172,8 @@ spec:
172
172
  title: API Key
173
173
  description: Test API Key
174
174
  order: 0
175
+ advanced_auth:
176
+ auth_flow_type: "oauth2.0"
175
177
  """
176
178
  parsed_manifest = YamlDeclarativeSource._parse(content)
177
179
  resolved_manifest = resolver.preprocess_manifest(parsed_manifest)
@@ -257,6 +259,8 @@ spec:
257
259
  "description": "Test API Key",
258
260
  "order": 0,
259
261
  }
262
+ advanced_auth = spec.advanced_auth
263
+ assert advanced_auth.auth_flow_type.value == "oauth2.0"
260
264
 
261
265
 
262
266
  def test_interpolate_config():
@@ -104,10 +104,11 @@ def test_failed_check():
104
104
  assert expected == MockSource(check_lambda=lambda: (False, "womp womp")).check(logger, {})
105
105
 
106
106
 
107
- def test_raising_check():
107
+ def test_raising_check(mocker):
108
108
  """Tests that if a source raises an unexpected exception the appropriate connectionStatus failure message is returned."""
109
- expected = AirbyteConnectionStatus(status=Status.FAILED, message="Exception('this should fail')")
110
- assert expected == MockSource(check_lambda=lambda: exec('raise Exception("this should fail")')).check(logger, {})
109
+ check_lambda = mocker.Mock(side_effect=BaseException("this should fail"))
110
+ with pytest.raises(BaseException):
111
+ MockSource(check_lambda=check_lambda).check(logger, {})
111
112
 
112
113
 
113
114
  class MockStream(Stream):
@@ -334,10 +335,7 @@ def test_valid_full_refresh_read_with_slices(mocker):
334
335
 
335
336
  @pytest.mark.parametrize(
336
337
  "slices",
337
- [
338
- [{"1": "1"}, {"2": "2"}],
339
- [{"date": datetime.date(year=2023, month=1, day=1)}, {"date": datetime.date(year=2023, month=1, day=1)}]
340
- ]
338
+ [[{"1": "1"}, {"2": "2"}], [{"date": datetime.date(year=2023, month=1, day=1)}, {"date": datetime.date(year=2023, month=1, day=1)}]],
341
339
  )
342
340
  def test_read_full_refresh_with_slices_sends_slice_messages(mocker, slices):
343
341
  """Given the logger is debug and a full refresh, AirbyteMessages are sent for slices"""
@@ -369,7 +367,7 @@ def test_read_incremental_with_slices_sends_slice_messages(mocker):
369
367
  debug_logger.setLevel(logging.DEBUG)
370
368
  slices = [{"1": "1"}, {"2": "2"}]
371
369
  stream = MockStream(
372
- [({"sync_mode": SyncMode.incremental, "stream_slice": s, 'stream_state': {}}, [s]) for s in slices],
370
+ [({"sync_mode": SyncMode.incremental, "stream_slice": s, "stream_state": {}}, [s]) for s in slices],
373
371
  name="s1",
374
372
  )
375
373
 
File without changes
File without changes