unique_toolkit 1.14.0__tar.gz → 1.14.2__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 (157) hide show
  1. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/CHANGELOG.md +6 -0
  2. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/PKG-INFO +7 -1
  3. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/pyproject.toml +1 -1
  4. unique_toolkit-1.14.2/unique_toolkit/test_utilities/events.py +197 -0
  5. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/LICENSE +0 -0
  6. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/README.md +0 -0
  7. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/__init__.py +0 -0
  8. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/_base_service.py +0 -0
  9. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/_time_utils.py +0 -0
  10. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/api_calling/human_verification_manager.py +0 -0
  11. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/base_model_type_attribute.py +0 -0
  12. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/chunk_relevancy_sorter/config.py +0 -0
  13. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/chunk_relevancy_sorter/exception.py +0 -0
  14. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/chunk_relevancy_sorter/schemas.py +0 -0
  15. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/chunk_relevancy_sorter/service.py +0 -0
  16. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/chunk_relevancy_sorter/tests/test_service.py +0 -0
  17. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/default_language_model.py +0 -0
  18. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/endpoint_builder.py +0 -0
  19. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/endpoint_requestor.py +0 -0
  20. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/exception.py +0 -0
  21. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/feature_flags/schema.py +0 -0
  22. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/pydantic/rjsf_tags.py +0 -0
  23. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/pydantic_helpers.py +0 -0
  24. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/string_utilities.py +0 -0
  25. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/token/image_token_counting.py +0 -0
  26. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/token/token_counting.py +0 -0
  27. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/utils/__init__.py +0 -0
  28. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/utils/files.py +0 -0
  29. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/utils/structured_output/__init__.py +0 -0
  30. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/utils/structured_output/schema.py +0 -0
  31. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/utils/write_configuration.py +0 -0
  32. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/validate_required_values.py +0 -0
  33. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/_common/validators.py +0 -0
  34. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/__init__.py +0 -0
  35. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/debug_info_manager/debug_info_manager.py +0 -0
  36. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/config.py +0 -0
  37. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/context_relevancy/prompts.py +0 -0
  38. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/context_relevancy/schema.py +0 -0
  39. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/context_relevancy/service.py +0 -0
  40. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/evaluation_manager.py +0 -0
  41. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/exception.py +0 -0
  42. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/hallucination/constants.py +0 -0
  43. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/hallucination/hallucination_evaluation.py +0 -0
  44. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/hallucination/prompts.py +0 -0
  45. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/hallucination/service.py +0 -0
  46. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/hallucination/utils.py +0 -0
  47. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/output_parser.py +0 -0
  48. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/schemas.py +0 -0
  49. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/tests/test_context_relevancy_service.py +0 -0
  50. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/evaluation/tests/test_output_parser.py +0 -0
  51. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/history_manager/history_construction_with_contents.py +0 -0
  52. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/history_manager/history_manager.py +0 -0
  53. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/history_manager/loop_token_reducer.py +0 -0
  54. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/history_manager/utils.py +0 -0
  55. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/postprocessor/postprocessor_manager.py +0 -0
  56. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/reference_manager/reference_manager.py +0 -0
  57. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/short_term_memory_manager/persistent_short_term_memory_manager.py +0 -0
  58. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/thinking_manager/thinking_manager.py +0 -0
  59. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/__init__.py +0 -0
  60. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/__init__.py +0 -0
  61. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/config.py +0 -0
  62. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/evaluation/__init__.py +0 -0
  63. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/evaluation/_utils.py +0 -0
  64. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/evaluation/config.py +0 -0
  65. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/evaluation/evaluator.py +0 -0
  66. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/evaluation/summarization_user_message.j2 +0 -0
  67. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/manager.py +0 -0
  68. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/__init__.py +0 -0
  69. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_display.py +0 -0
  70. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/_utils.py +0 -0
  71. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/config.py +0 -0
  72. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/postprocessor.py +0 -0
  73. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_consolidate_references.py +0 -0
  74. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_display.py +0 -0
  75. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/postprocessing/test/test_postprocessor_reference_functions.py +0 -0
  76. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/prompts.py +0 -0
  77. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/tool/__init__.py +0 -0
  78. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/tool/_memory.py +0 -0
  79. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/tool/_schema.py +0 -0
  80. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/tool/config.py +0 -0
  81. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/a2a/tool/service.py +0 -0
  82. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/agent_chunks_hanlder.py +0 -0
  83. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/config.py +0 -0
  84. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/factory.py +0 -0
  85. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/mcp/__init__.py +0 -0
  86. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/mcp/manager.py +0 -0
  87. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/mcp/models.py +0 -0
  88. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/mcp/tool_wrapper.py +0 -0
  89. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/schemas.py +0 -0
  90. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/test/test_mcp_manager.py +0 -0
  91. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/test/test_tool_progress_reporter.py +0 -0
  92. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/tool.py +0 -0
  93. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/tool_manager.py +0 -0
  94. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/tool_progress_reporter.py +0 -0
  95. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/__init__.py +0 -0
  96. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/execution/__init__.py +0 -0
  97. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/execution/execution.py +0 -0
  98. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/source_handling/__init__.py +0 -0
  99. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/source_handling/schema.py +0 -0
  100. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/source_handling/source_formatting.py +0 -0
  101. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/agentic/tools/utils/source_handling/tests/test_source_formatting.py +0 -0
  102. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/__init__.py +0 -0
  103. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/dev_util.py +0 -0
  104. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/init_logging.py +0 -0
  105. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/init_sdk.py +0 -0
  106. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/performance/async_tasks.py +0 -0
  107. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/performance/async_wrapper.py +0 -0
  108. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/schemas.py +0 -0
  109. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/unique_settings.py +0 -0
  110. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/app/verification.py +0 -0
  111. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/__init__.py +0 -0
  112. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/constants.py +0 -0
  113. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/deprecated/service.py +0 -0
  114. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/functions.py +0 -0
  115. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/schemas.py +0 -0
  116. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/service.py +0 -0
  117. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/state.py +0 -0
  118. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/chat/utils.py +0 -0
  119. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/__init__.py +0 -0
  120. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/constants.py +0 -0
  121. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/functions.py +0 -0
  122. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/schemas.py +0 -0
  123. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/service.py +0 -0
  124. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/smart_rules.py +0 -0
  125. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/content/utils.py +0 -0
  126. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/__init__.py +0 -0
  127. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/constants.py +0 -0
  128. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/functions.py +0 -0
  129. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/schemas.py +0 -0
  130. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/service.py +0 -0
  131. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/embedding/utils.py +0 -0
  132. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/__init__.py +0 -0
  133. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/langchain/client.py +0 -0
  134. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/langchain/history.py +0 -0
  135. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/openai/__init__.py +0 -0
  136. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/openai/client.py +0 -0
  137. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/openai/message_builder.py +0 -0
  138. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/framework_utilities/utils.py +0 -0
  139. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/knowledge_base.py +0 -0
  140. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/__init__.py +0 -0
  141. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/builder.py +0 -0
  142. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/constants.py +0 -0
  143. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/functions.py +0 -0
  144. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/infos.py +0 -0
  145. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/prompt.py +0 -0
  146. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/reference.py +0 -0
  147. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/schemas.py +0 -0
  148. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/service.py +0 -0
  149. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/language_model/utils.py +0 -0
  150. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/protocols/support.py +0 -0
  151. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/short_term_memory/__init__.py +0 -0
  152. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/short_term_memory/constants.py +0 -0
  153. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/short_term_memory/functions.py +0 -0
  154. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/short_term_memory/schemas.py +0 -0
  155. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/short_term_memory/service.py +0 -0
  156. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/smart_rules/__init__.py +0 -0
  157. {unique_toolkit-1.14.0 → unique_toolkit-1.14.2}/unique_toolkit/smart_rules/compile.py +0 -0
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.14.2] - 2025-10-08
9
+ - Add utilities for testing and fix external import issue
10
+
11
+ ## [1.14.1] - 2025-10-08
12
+ - Add utilities for testing
13
+
8
14
  ## [1.14.0] - 2025-10-07
9
15
  - Manipulate Metadata with knowledge base service
10
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: unique_toolkit
3
- Version: 1.14.0
3
+ Version: 1.14.2
4
4
  Summary:
5
5
  License: Proprietary
6
6
  Author: Cedric Klinkert
@@ -118,6 +118,12 @@ All notable changes to this project will be documented in this file.
118
118
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
119
119
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
120
120
 
121
+ ## [1.14.2] - 2025-10-08
122
+ - Add utilities for testing and fix external import issue
123
+
124
+ ## [1.14.1] - 2025-10-08
125
+ - Add utilities for testing
126
+
121
127
  ## [1.14.0] - 2025-10-07
122
128
  - Manipulate Metadata with knowledge base service
123
129
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "unique_toolkit"
3
- version = "1.14.0"
3
+ version = "1.14.2"
4
4
  description = ""
5
5
  authors = [
6
6
  "Cedric Klinkert <cedric.klinkert@unique.ch>",
@@ -0,0 +1,197 @@
1
+ import random
2
+ import string
3
+ from datetime import datetime
4
+ from typing import Any
5
+
6
+ from unique_toolkit.app.schemas import (
7
+ BaseEvent,
8
+ ChatEvent,
9
+ ChatEventAdditionalParameters,
10
+ ChatEventAssistantMessage,
11
+ ChatEventPayload,
12
+ ChatEventUserMessage,
13
+ EventName,
14
+ )
15
+ from unique_toolkit.app.unique_settings import UniqueSettings
16
+
17
+
18
+ def generated_numeric_string(length: int) -> str:
19
+ return "".join(random.choices(string.digits, k=length))
20
+
21
+
22
+ def generated_alphanumeric_string(length: int) -> str:
23
+ return "".join(random.choices(string.ascii_letters + string.digits, k=length))
24
+
25
+
26
+ def generated_chat_id() -> str:
27
+ return f"chat_{generated_alphanumeric_string(16)}"
28
+
29
+
30
+ def generated_assistant_id() -> str:
31
+ return f"assistant_{generated_alphanumeric_string(16)}"
32
+
33
+
34
+ def generated_user_message_id() -> str:
35
+ return f"msg_{generated_alphanumeric_string(16)}"
36
+
37
+
38
+ class TestEventFactory:
39
+ """Factory for creating test event objects with sensible defaults.
40
+
41
+ Simplifies test setup by providing convenient methods to generate
42
+ chat events, messages, and related objects for testing.
43
+ """
44
+
45
+ def __init__(self, settings: UniqueSettings | None = None) -> None:
46
+ self._settings = settings
47
+
48
+ def _get_user_id(self) -> str:
49
+ if self._settings is None:
50
+ return generated_numeric_string(16)
51
+ else:
52
+ return self._settings.auth.user_id.get_secret_value()
53
+
54
+ def _get_company_id(self) -> str:
55
+ if self._settings is None:
56
+ return generated_numeric_string(16)
57
+ else:
58
+ return self._settings.auth.company_id.get_secret_value()
59
+
60
+ def get_chat_event_user_message(
61
+ self,
62
+ text: str,
63
+ *,
64
+ created_at: datetime | None = None,
65
+ language: str = "DE",
66
+ original_text: str | None = None,
67
+ ) -> ChatEventUserMessage:
68
+ if created_at is None:
69
+ created_at = datetime.now()
70
+
71
+ return ChatEventUserMessage(
72
+ id=generated_user_message_id(),
73
+ text=text,
74
+ original_text=original_text or text,
75
+ created_at=created_at.isoformat(),
76
+ language=language,
77
+ )
78
+
79
+ def get_chat_event_assistant_message(
80
+ self, *, created_at: datetime | None = None
81
+ ) -> ChatEventAssistantMessage:
82
+ if created_at is None:
83
+ created_at = datetime.now()
84
+
85
+ return ChatEventAssistantMessage(
86
+ id=generated_assistant_id(), created_at=created_at.isoformat()
87
+ )
88
+
89
+ def get_chat_event_additional_parameters(
90
+ self,
91
+ *,
92
+ translate_to_language: str | None = None,
93
+ content_id_to_translate: str | None = None,
94
+ ) -> ChatEventAdditionalParameters:
95
+ return ChatEventAdditionalParameters(
96
+ translate_to_language=translate_to_language,
97
+ content_id_to_translate=content_id_to_translate,
98
+ )
99
+
100
+ def get_base_event(
101
+ self,
102
+ *,
103
+ event: EventName = EventName.EXTERNAL_MODULE_CHOSEN,
104
+ user_id: str | None = None,
105
+ company_id: str | None = None,
106
+ ) -> BaseEvent:
107
+ return BaseEvent(
108
+ id=generated_alphanumeric_string(16),
109
+ event=event,
110
+ user_id=user_id or self._get_user_id(),
111
+ company_id=company_id or self._get_company_id(),
112
+ )
113
+
114
+ def get_chat_event_payload(
115
+ self,
116
+ *,
117
+ name: str,
118
+ description: str,
119
+ user_message_text: str,
120
+ user_message_created_at: datetime | None = None,
121
+ user_message_language: str = "DE",
122
+ user_message_original_text: str | None = None,
123
+ assistant_message_created_at: datetime | None = None,
124
+ configuration: dict[str, Any] | None = None,
125
+ chat_id: str | None = None,
126
+ assistant_id: str | None = None,
127
+ ) -> ChatEventPayload:
128
+ if chat_id is None:
129
+ chat_id = generated_chat_id()
130
+
131
+ if assistant_id is None:
132
+ assistant_id = generated_assistant_id()
133
+
134
+ assistant_message = self.get_chat_event_assistant_message(
135
+ created_at=assistant_message_created_at or datetime.now()
136
+ )
137
+ user_message = self.get_chat_event_user_message(
138
+ text=user_message_text,
139
+ created_at=user_message_created_at or datetime.now(),
140
+ language=user_message_language,
141
+ original_text=user_message_original_text,
142
+ )
143
+ return ChatEventPayload(
144
+ name=name,
145
+ description=description,
146
+ configuration=configuration or {},
147
+ chat_id=chat_id,
148
+ assistant_id=assistant_id,
149
+ user_message=user_message,
150
+ assistant_message=assistant_message,
151
+ )
152
+
153
+ def get_chat_event(
154
+ self,
155
+ *,
156
+ name: str,
157
+ event_name: EventName = EventName.EXTERNAL_MODULE_CHOSEN,
158
+ description: str,
159
+ user_message_text: str,
160
+ user_message_created_at: datetime = datetime.now(),
161
+ user_message_language: str = "DE",
162
+ user_message_original_text: str | None = None,
163
+ assistant_message_created_at: datetime | None = None,
164
+ configuration: dict[str, Any] | None = None,
165
+ chat_id: str | None = None,
166
+ assistant_id: str | None = None,
167
+ user_id: str | None = None,
168
+ company_id: str | None = None,
169
+ version: str = "1.0",
170
+ ) -> ChatEvent:
171
+ if chat_id is None:
172
+ chat_id = generated_chat_id()
173
+
174
+ if assistant_id is None:
175
+ assistant_id = generated_assistant_id()
176
+
177
+ payload = self.get_chat_event_payload(
178
+ name=name,
179
+ description=description,
180
+ user_message_text=user_message_text,
181
+ user_message_created_at=user_message_created_at,
182
+ user_message_language=user_message_language,
183
+ user_message_original_text=user_message_original_text,
184
+ assistant_message_created_at=assistant_message_created_at,
185
+ configuration=configuration or {},
186
+ chat_id=chat_id,
187
+ assistant_id=assistant_id,
188
+ )
189
+ return ChatEvent(
190
+ id=generated_alphanumeric_string(16),
191
+ event=event_name,
192
+ user_id=user_id or self._get_user_id(),
193
+ company_id=company_id or self._get_company_id(),
194
+ payload=payload,
195
+ created_at=int(datetime.now().timestamp()),
196
+ version=version,
197
+ )
File without changes